1 名前:デフォルトの名無しさん [2016/05/19(木) 22:07:47.87 ID:9fCVrsOw.net] 手順とかノウハウとか語りたい
2 名前:デフォルトの名無しさん mailto:sage [2016/05/19(木) 22:30:15.79 ID:7RT/6RIS.net] まず服を脱ぎます
3 名前:デフォルトの名無しさん mailto:sage [2016/05/19(木) 23:11:13.52 ID:DISKdlQR.net] パンツを脱いだプログラマ
4 名前:デフォルトの名無しさん mailto:sage [2016/05/19(木) 23:13:39.91 ID:QjLNgnwx.net] >>1 ノウハウや成果物は20年前と比べて随分と公開されていると思うが。 スモールオブジェクトプログラミングとかGRASPとかエクササイズ等等。
5 名前:デフォルトの名無しさん mailto:sage [2016/05/19(木) 23:14:14.30 ID:P4wIeaTA.net] デザインパターンを研究しろ。 ■■■■ 糸冬 了 ■■■■
6 名前:デフォルトの名無しさん mailto:sage [2016/05/19(木) 23:19:53.32 ID:QjLNgnwx.net] 今の時代、冗談抜きで語る事はないよ。国内の有識者がまとめた資料(SlideShare等)を 読むだけ。
7 名前:デフォルトの名無しさん [2016/05/20(金) 01:27:57.35 ID:0eowHHkD.net] 実務での設計・構築経験がある奴はいないのか? 誰かがこう言ってるじゃなくて、経験談を語り合いたい。
8 名前:デフォルトの名無しさん mailto:sage [2016/05/20(金) 06:37:23.45 ID:A9KUpz/E.net] 経験談を語る=有識者がこう言ったという事を蒸し返すだけだけど。
9 名前:デフォルトの名無しさん mailto:sage [2016/05/20(金) 06:46:44.02 ID:A9KUpz/E.net] 後、今はこの手の話題はTwitterの方が向いている。 2chは発言の質が玉石混合であんまり参考にならない。昔は いろいろスレが立っていたが。 ちなみにドメインモデル周りの成果物は機密保持の関係上、 あまり表に出てこないかな。
10 名前:デフォルトの名無しさん mailto:sage [2016/05/20(金) 08:18:55.59 ID:fT3/H/UL.net] ドメインモデルの進化系がマイクロサービスだと思っている
11 名前:デフォルトの名無しさん mailto:sage [2016/05/20(金) 09:38:37.61 ID:ezy2NA/m.net] >>10 進化系というかDDDでいうところの境界づけられたうんちゃらをマイクロサービスとして分離する基準にするとちょうどいいってだけだよね。 最近の小規模プロジェクトでもマイクロサービスを気軽に導入しちゃう雰囲気は謎。マイクロサービスをOOPとかと同列のソフトウェアデザインと考えている人が多いからなのか。
12 名前:デフォルトの名無しさん [2016/05/20(金) 11:45:46.78 ID:0eowHHkD.net] 本に書いてある指針に沿ってやってみても役に立つ部分と足りない部分がある。 実体験と本を読んだだけとは大きな違い。 例えば、オブジェクトの抽出はどうやってる? 仕様書から名詞を洗い出すとか言われることが多いけど、 すべての名詞がオブジェクトに対応する訳じゃない。 オブジェクトとする基準とかレベルとかどんな感じでやってる?
13 名前:デフォルトの名無しさん mailto:sage [2016/05/20(金) 12:59:06.12 ID:tPlPBHxz.net] 分かりやすい名前をつければ、後は大した問題ではない
14 名前:デフォルトの名無しさん [2016/05/20(金) 13:01:40.82 ID:0eowHHkD.net] そんなんでシステムが構築できると思ってるのか?
15 名前:デフォルトの名無しさん mailto:sage [2016/05/20(金) 13:42:47.84 ID:jCV1qcCq.net] 確かに 全ての変数に分かりにくい名前をつける事を強要された挙句 その名前をデータベースと言う名の紙の辞書に登録しなきゃならないっていう環境で起こる問題に比べたら 大した問題じゃないよな
16 名前:デフォルトの名無しさん mailto:sage [2016/05/20(金) 13:42:47.94 ID:xL1EKSbm.net] サルでも解るように教えてくれ
17 名前:デフォルトの名無しさん mailto:sage [2016/05/20(金) 13:44:27.63 ID:jCV1qcCq.net] >>16 考えるな、感じろ 直感と経験からオブジェクトにするものとクロージャにするものとを区別していけば 大きく間違えることはそんなに無い
18 名前:デフォルトの名無しさん [2016/05/20(金) 13:47:05.45 ID:0eowHHkD.net] 直感と経験って説明できないときに都合よく使う言葉だよなあ。 そんなんじゃ判断はばらばらになって品質が安定しない。 だからプロセスとか指針が重要なんだが。
19 名前:デフォルトの名無しさん mailto:sage [2016/05/20(金) 13:54:08.42 ID:jCV1qcCq.net] 例えば飛行機の制御プログラムを組むとして、 そのプロセスやら指針やらはサルでも分かるようにきちんと説明できるの?
20 名前:デフォルトの名無しさん [2016/05/20(金) 13:55:31.32 ID:0eowHHkD.net] サルでも分かるようにってのは俺の書き込みじゃないから知らんけど ある程度の知識がある奴が理解できる指針は提示する必要があるだろ。
21 名前:デフォルトの名無しさん mailto:sage [2016/05/20(金) 13:57:21.26 ID:jCV1qcCq.net] もう一点。 複数のプロダクトの設計段階での判断がプロダクト毎に異なる事と、 それらプロダクトの品質とは関係あるの?
22 名前:デフォルトの名無しさん mailto:sage [2016/05/20(金) 13:59:42.00 ID:jCV1qcCq.net] >>20 うん、必要があるか、無いか、で言ったら必要あるよね。 それが実行可能かどうかについて訊いたんだけどね。
23 名前:デフォルトの名無しさん [2016/05/20(金) 14:03:06.56 ID:0eowHHkD.net] お前が指針を提示できないことは分かったからいいよ。 まともな本を読んでりゃ指針が書かれていることくらい分かるから。
24 名前:デフォルトの名無しさん mailto:sage [2016/05/20(金) 14:07:35.14 ID:6MfCjgLg.net] >>13 正解。設計と同じぐらい大事。 現場ではエンジニアが自由に名前決めすぎ。
25 名前:デフォルトの名無しさん mailto:sage [2016/05/20(金) 14:08:53.28 ID:jCV1qcCq.net] 君が「本に書かれてるから絶対に正しいんだ」って姿勢を見せるのは結構な事だけど 質問に対する答えとして不適切な事を言っておきながら答えたことにするのは人間としてどうかと思うよ。 ちなみに 直感と経験、を具体的に言うと 動作の主体になって、状態を持つものはオブジェクト 動作の客体にしかならないものはクロージャ みたいな感じに分けてるよ。 直感的でしょ?
26 名前:デフォルトの名無しさん [2016/05/20(金) 14:14:49.64 ID:0eowHHkD.net] >>25 本に書かれている指針を理解したうえで、実際のプロジェクトに適用したときの 経験について語ってくれってこと。どうして分からないかなあ…。 オブジェクトとクロージャの区別に拘るのは違和感があるんだけど開発言語は何? 言語によってはその区別が重要なんだろうか。
27 名前:デフォルトの名無しさん mailto:sage [2016/05/20(金) 14:19:58.58 ID:jCV1qcCq.net] >>26 まずその本とやらの題名なりamazonのurlなりを具体的に示して欲しいかな? 本によって言ってることまちまちだしね。 趣味でx86_64アセンブリとLispを少々
28 名前:デフォルトの名無しさん [2016/05/20(金) 14:24:17.23 ID:0eowHHkD.net] 本によってまちまちだからこそ、実際に使ってみてどうだった?って感想が 聞きたいんだけど。 趣味レベルってことで納得。 Lispだとクロージャの役割が大きいのかなあ。 業務システムの設計・構築経験がある人の体験談を聞きたい。
29 名前:デフォルトの名無しさん mailto:sage [2016/05/20(金) 14:28:12.35 ID:jCV1qcCq.net] > Lispだとクロージャの役割が大きいのかなあ。 というかクロージャを拡張したら割と簡単にオブジェクトが作れるから そこまでする必要があるかどうかで自然とオブジェクトにするかどうかが決まる感じ ところでこれ設計の話?それとも実装の話?
30 名前:デフォルトの名無しさん [2016/05/20(金) 14:31:52.11 ID:0eowHHkD.net] 設計の話だけど、構築するために設計するんだから構築段階で設計の品質が実体化するとも言える。 実装を無視した設計はあり得ないから、実装も設計に関係する。
31 名前:デフォルトの名無しさん mailto:sage [2016/05/20(金) 14:32:58.18 ID:wXLR68d1.net] >>1 おれもそもそもOOPのメリットが分からん OOPでうまくつくっていける奴は関数型でも 手続き型言語でもそれなれにやっていけそうだが
32 名前:デフォルトの名無しさん [2016/05/20(金) 14:41:33.00 ID:0eowHHkD.net] >>31 どの設計手法を使うにしても基礎は共通してるからある手法できれいな設計ができれば 他の手法を使うときも正しい使い方ができると思う。 手続き型よりもオブジェクト指向のほうが構成要素の区切りが明確になりやすいのがメリットだと思う。 関数型の設計手法はどんなものか分からないや。
33 名前:デフォルトの名無しさん mailto:sage [2016/05/20(金) 14:42:40.60 ID:jCV1qcCq.net] OOPって要するに分割統治をアグレッシブにやってるだけと違うの?
34 名前:デフォルトの名無しさん mailto:sage [2016/05/20(金) 15:06:25.53 ID:xWTkKLUb.net] OOPスパゲッテー依存で後で泣く インターフェース クラス ウーーーーー もう少しいい言語設計を
35 名前:デフォルトの名無しさん [2016/05/20(金) 15:42:04.87 ID:0eowHHkD.net] >>34 それは設計が悪い。
36 名前:デフォルトの名無しさん [2016/05/20(金) 15:42:33.48 ID:0eowHHkD.net] 言語設計じゃなくてシステム設計が悪い。
37 名前:デフォルトの名無しさん mailto:sage [2016/05/20(金) 17:57:03.05 ID:xL1EKSbm.net] OOPダメみたいな流れはどうして? JavaやC#どっぷりのオレは、生きていけないの?
38 名前:デフォルトの名無しさん mailto:sage [2016/05/20(金) 18:03:59.50 ID:JTjd3aWK.net] OOPはモジュール作成者にメリットはあっても 利用者にはメリットはないんだよ
39 名前:デフォルトの名無しさん [2016/05/20(金) 20:52:17.59 ID:0eowHHkD.net] >>37 オブジェクト指向をきちんと活用するのは難しいからじゃね。 素人には理解できない。 まちがった使い方をする。 間違ってるのは素人の俺じゃなくてオブジェクト指向だ。 って流れだと思う。
40 名前:デフォルトの名無しさん [2016/05/20(金) 20:55:01.79 ID:0eowHHkD.net] >>38 システムの改修が容易だというのは利用者にとってもメリットだな。 システムの改修を容易にできるだけの洗練された設計が実現できていることは少ないから オブジェクト指向のメリットを実感できない設計が多いのかもしれないけど。 オブジェクト指向が悪いんじゃなくて、設計者が要求されるレベルに達していないことが多いだけ。
41 名前:デフォルトの名無しさん mailto:sage [2016/05/20(金) 21:00:29.42 ID:fT3/H/UL.net] 利用者にメリットがないとか言ってるやつに限って OCPすら満たしてないシステム作ってそう
42 名前:デフォルトの名無しさん mailto:sage [2016/05/20(金) 21:13:45.60 ID:JHcTy9r/.net] 関数型の匿名関数に積極的に名前を付けていくとOOPになる感じ
43 名前:デフォルトの名無しさん mailto:sage [2016/05/20(金) 21:49:33.16 ID:lJQ06Hkz.net] OOPは悪くはないけどメリット少ない 親クラスを継承する必要性も少ないし DBのSELECT結果をオブジェクトに入れる必要もない
44 名前:デフォルトの名無しさん [2016/05/20(金) 21:52:47.80 ID:0eowHHkD.net] >>43 継承を推奨してる設計指針なんて見たことないけど。 オブジェクト指向設計について語りたいならまともな本を読んでからにしようぜ。
45 名前:デフォルトの名無しさん mailto:sage [2016/05/20(金) 21:54:23.51 ID:fT3/H/UL.net] >>43 継承と移譲について理解しようね
46 名前:デフォルトの名無しさん mailto:sage [2016/05/20(金) 22:19:45.27 ID:5OAEQxQd.net] 継承はアンチパターン
47 名前:デフォルトの名無しさん mailto:sage [2016/05/20(金) 22:39:20.85 ID:lJQ06Hkz.net] >>44 推奨とか知らんけど実際の現場では継承されまくってるだろ >>45 理解してるから言ってる。基本継承は不要。移譲だけでいいぐらい
48 名前:デフォルトの名無しさん [2016/05/20(金) 22:43:46.88 ID:0eowHHkD.net] >>47 継承を利用すべきじゃない場面でも継承が利用されているのは問題であるってほとんどの本に書いてあるぞ。 まともな本すら読まずに間違った設計をしているからメリットを実感できないだけで設計者のレベルが低いだけ。
49 名前:デフォルトの名無しさん mailto:sage [2016/05/20(金) 22:48:17.41 ID:lJQ06Hkz.net] >>48 じゃああんたが言ってることと俺が言ってることは同じじゃんか 何で俺は噛み付かれたんだ
50 名前:デフォルトの名無しさん [2016/05/20(金) 22:50:13.54 ID:0eowHHkD.net] >>47 継承を利用すべきじゃない場面でも継承が利用されているのは問題であるってほとんどの本に書いてあるぞ。 まともな本すら読まずに間違った設計をしているからメリットを実感できないだけで設計者のレベルが低いだけ。
51 名前:デフォルトの名無しさん [2016/05/20(金) 22:51:14.89 ID:0eowHHkD.net] >>49 ×OOPはメリット少ない ○バカな設計者が設計するシステムはダメ 全然違う。
52 名前:デフォルトの名無しさん mailto:sage [2016/05/20(金) 22:53:29.65 ID:ALiU1X8u.net] こういう展開は今まで何度も何度も見たが 「OOPのメリットはこれとこれとこれだ!」 という歯切れのいい意見を一度として聞いたことが無い
53 名前:デフォルトの名無しさん [2016/05/20(金) 22:54:45.09 ID:0eowHHkD.net] >>52 >>32 ほとんどの本にこういったことが書かれているし、実感としても合ってる。
54 名前:デフォルトの名無しさん mailto:sage [2016/05/20(金) 22:59:42.47 ID:5OAEQxQd.net] SOLIDしやすいのがメリット
55 名前:デフォルトの名無しさん mailto:sage [2016/05/20(金) 23:17:55.91 ID:Zd4GCHrY.net] 継承はアンチパターンと思うのはまだ恵まれている方だ。俺は継承をしてくれなくて困ることの方が多い。コピペの嵐ぱない。
56 名前:デフォルトの名無しさん [2016/05/20(金) 23:23:18.18 ID:Ykc02+7p.net] それはオブジェクト指向とか以前の話だわ
57 名前:デフォルトの名無しさん mailto:sage [2016/05/20(金) 23:25:43.35 ID:5OAEQxQd.net] コピペと継承関係ねえぞ
58 名前:デフォルトの名無しさん [2016/05/20(金) 23:27:16.59 ID:0eowHHkD.net] >>57 親クラスに一回記述すれば済むのに 別々のクラスの両方に同じコードが書かれているってことだろ。
59 名前:デフォルトの名無しさん mailto:sage [2016/05/20(金) 23:48:05.55 ID:5OAEQxQd.net] いやだからそれ継承どうこうじゃねえよ
60 名前:デフォルトの名無しさん [2016/05/20(金) 23:52:47.17 ID:0eowHHkD.net] >>59 お前が言いたいことはみんな分かってるだろうから会話の流れも読もうぜ。
61 名前:デフォルトの名無しさん mailto:sage [2016/05/21(土) 00:07:02.79 ID:q2Zh6d9K.net] >>49 > 何で俺は噛み付かれたんだ そこにお前がいるから(名言)
62 名前:デフォルトの名無しさん mailto:sage [2016/05/21(土) 00:07:37.44 ID:RrD1FkH/.net] >>59 お前の存在自体がアンチパターンだなwww
63 名前:デフォルトの名無しさん mailto:sage [2016/05/21(土) 00:09:06.75 ID:hclWowah.net] >>58 親クラスは便利物置場じゃないからな
64 名前:デフォルトの名無しさん [2016/05/21(土) 00:14:14.80 ID:Dey5A/Jl.net] オブジェクト指向設計の経験がある奴はおらんのか?
65 名前:デフォルトの名無しさん mailto:sage [2016/05/21(土) 00:17:03.45 ID:hclWowah.net] 実装レベルの設計なんか必要ないでしょ。 設計が必要なのは業務ロジックまで。 実装レベルの設計が必要なのは 相当プログラマーのレベルが低い場合のみ。
66 名前:デフォルトの名無しさん [2016/05/21(土) 00:24:35.47 ID:Dey5A/Jl.net] 実装レベルの設計って曖昧だけど クラスと公開されたメソッドは決める必要がある。 で、それを決めるためにはクラス間の関連を考える必要がある。 ってなるとそれなりに詳細に設計することになるが。
67 名前:デフォルトの名無しさん mailto:sage [2016/05/21(土) 00:27:38.10 ID:pCEMwj0Q.net] 個人で開発してるならいらんかも知らんけど チームで実装する場合はクラス図とシーケンス図ぐらいは必要じゃね まぁ個人でやる場合も10年後にメンテする人のために残しといた方がいいけどな 10年もたてば実装した本人も忘れてるだろ
68 名前:デフォルトの名無しさん mailto:sage [2016/05/21(土) 00:27:53.71 ID:q2Zh6d9K.net] >>65 > 設計が必要なのは業務ロジックまで。 業務ロジックの設計って 具体的にどんなことや?
69 名前:デフォルトの名無しさん mailto:sage [2016/05/21(土) 00:34:44.35 ID:sajHzwwt.net] そこらへんはシステムの特性やエンジニアの質など様々な要因で変わるから永遠に議論が終わらない話題だね。
70 名前:デフォルトの名無しさん [2016/05/21(土) 00:36:09.71 ID:Dey5A/Jl.net] >>68 >>65 がどういう意味で書いたのかは知らんが、要件定義的な作業は必要だろ。 UMLで言えばスイムレーンに分けたアクティビティ図を書くとか。
71 名前:デフォルトの名無しさん [2016/05/21(土) 01:06:07.75 ID:Dey5A/Jl.net] >>69 しかし、実際のプロジェクトでは何らかの基準で決める訳でルールは必要。 ルールもなしに場当たり的に決めているならお話にならない。
72 名前:デフォルトの名無しさん mailto:sage [2016/05/21(土) 09:34:19.36 ID:4qmWB+Wj.net] >>71 お前は何がしたいんだ? 研究したいなら大学に行くといいよ 現実では直感と経験でだいたい全部決めてる。 実装する時には例えばGoogleのスタイルガイドに合わせるとか、 既存のコードから空気読むとか、 何らかのルールがあるのは確かだけど 設計の段階でそんなこと言ってたらプロジェクトは進まない。
73 名前:デフォルトの名無しさん mailto:sage [2016/05/21(土) 09:51:01.31 ID:zSvCOHYP.net] >>67 資料より対話の方が大事 図や文章はあくまで補助のメモ書きだね
74 名前:デフォルトの名無しさん mailto:sage [2016/05/21(土) 10:22:35.74 ID:hclWowah.net] >>67 シーケンス図は業務で必要だね クラス図は今まで一度も必要になったことがない クラス図が必要なほど複雑なクラス構成にすること自体間違ってると思う >>72 直感と経験で決めるやつがリーダーで チーム内の統一までやってくれればいいんだけどね 1メンバーがマイルールで直感と経験で独断で決めるのはどうかと思う チーム内にルールは必要だし、大学とか研究とかは関係ない
75 名前:デフォルトの名無しさん [2016/05/21(土) 10:28:49.34 ID:Dey5A/Jl.net] >>72 だから、実際のプロジェクトでは決めるんだから何らかの基準で判断してるんだろ。
76 名前:デフォルトの名無しさん [2016/05/21(土) 10:30:45.98 ID:Dey5A/Jl.net] >>73 資料がないと改修で泣くよ。
77 名前:デフォルトの名無しさん mailto:sage [2016/05/21(土) 10:31:01.96 ID:4qmWB+Wj.net] >>74 誰が一人で設計すると言ったね 要件と要求を元に設計は成される物だから、当然複数人で話し合って物事は決まっていく。 その中で、経験上これはこうした方が良い気がする、とか 直感的にこれはまずいんじゃねーかと思う、とか そういう話なんだが。 もしかして君は複数人で設計した事が一度も無いの?
78 名前:デフォルトの名無しさん mailto:sage [2016/05/21(土) 10:32:32.20 ID:4qmWB+Wj.net] >>75 実際のプロジェクト毎にその基準が変わるから ある一つのプロジェクトについて「これはこうだったあれはああだった」って言っても 意味が無いんだよ。
79 名前:デフォルトの名無しさん [2016/05/21(土) 10:32:37.55 ID:Dey5A/Jl.net] >>74 クラス図が必要なほど複雑なクラス構成にすること自体間違ってると思うってのは 簡単なシステムしか作ってないからそんなこと言うんだろな。
80 名前:デフォルトの名無しさん [2016/05/21(土) 10:34:45.75 ID:Dey5A/Jl.net] >>78 説明できるだけの経験がない、しっかりした基準がないてきとーな判断をしてる。 どっちかだろ?
81 名前:デフォルトの名無しさん mailto:sage [2016/05/21(土) 10:37:30.66 ID:4qmWB+Wj.net] >>80 そこまで他人をこき下ろす以上は、君はそういった経験が豊富なんだよね? ちょっと語ってくれないか。 君が経験したプロジェクトに基づいて、どういう手法を採用し、どういう問題が起きたか。
82 名前:デフォルトの名無しさん mailto:sage [2016/05/21(土) 10:38:13.47 ID:q2Zh6d9K.net] どういう手法? 人海戦術とノミニケーションだろwwww
83 名前:デフォルトの名無しさん [2016/05/21(土) 10:42:52.87 ID:Dey5A/Jl.net] >>81 会話の内容からしてお前よりははるかにあるだろう。 俺の経験はちょっとずつ出してる。 他の人の経験を聞きたいから、自分の考えを一方的に語りたくない。
84 名前:デフォルトの名無しさん mailto:sage [2016/05/21(土) 10:45:22.63 ID:4qmWB+Wj.net] >>83 そうともさ 俺は20代なんだから君のほうが経験が豊富かも知れないけど、それが何だと言うんだ で、俺は君の経験を聞きたいんだけど? どんどん語ってくれよ。
85 名前:デフォルトの名無しさん mailto:sage [2016/05/21(土) 10:47:07.78 ID:q2Zh6d9K.net] >>84 お前も少ない経験でいいから語れよw お前がどこの誰か特定できるように 細かくな。
86 名前:デフォルトの名無しさん [2016/05/21(土) 10:48:18.26 ID:Dey5A/Jl.net] >>84 プロジェクトを進めるためには決めなければいけないんだから そのときにどいうい基準で決めるのがいいんだろうか?って考える癖を付けると実力が上がる。 実際、決めなきゃ進まないんだから決めているのにある選択をした理由をちゃんと考えて記録しないのは だめなプロジェクトで良くみる。
87 名前:デフォルトの名無しさん mailto:sage [2016/05/21(土) 11:08:42.80 ID:zSvCOHYP.net] >>76 資料無いと泣くようなシステムから脱却したいね
88 名前:デフォルトの名無しさん [2016/05/21(土) 11:09:50.85 ID:Dey5A/Jl.net] >>87 どうやって?
89 名前:デフォルトの名無しさん mailto:sage [2016/05/21(土) 11:12:20.08 ID:4qmWB+Wj.net] >>85 おーけい。 ある会社のインターンでの話なんだが Google Chromeって名前のWebブラウザあるだろ? あいつがメモリをバカ食いするのは当時でも有名でね。 どのモジュールがどのくらいメモリを食っていて、どれだけ無駄が出ているかってのを調べるために コンパイラを改造する仕事を割り当てて貰ったんだ。 コンパイラを改造して、コンパイル時に適切なコードを差し込むことによって Chrome自体のコードを改変せずにメモリの詳細な統計データを得ることが出来るようになる事が目的だった。 実際にはChromeじゃなくてオープンソースのChromiumの方だけどな。 果たして、それは上手く行かなかった。 というのも、オブジェクト間に参照のループがあったり 同じクラスから別の意味を持つクラスが派生してたりして Chromium全体が密結合になっており、 「どのクラスのインスタンスがどれだけメモリを食っているか」という情報はあまり役に立たなかったんだ。 結論:オブジェクト指向設計を下手に導入すると、メンテナンス性が下がる
90 名前:デフォルトの名無しさん mailto:sage [2016/05/21(土) 11:12:22.49 ID:zSvCOHYP.net] >>88 美しいコードを書けってこと 結局のところそれだけなんだよね
91 名前:デフォルトの名無しさん [2016/05/21(土) 11:14:11.26 ID:Dey5A/Jl.net] >>89 Javaで書かれてる?
92 名前:デフォルトの名無しさん [2016/05/21(土) 11:15:01.57 ID:Dey5A/Jl.net] >>90 コメントは書く?
93 名前:デフォルトの名無しさん mailto:sage [2016/05/21(土) 11:16:06.62 ID:hclWowah.net] ここにいるやつらは2chでまで設計議論するような勤勉なやつらだから 書くコードはみんな美しいだろうな それをチーム内に統一するのがなかなか難しいんだよ ルール作っても守らないやつは守らないし そもそも勤勉なやつのほうが少ないから勤勉なやつにいつも負荷かかる
94 名前:デフォルトの名無しさん mailto:sage [2016/05/21(土) 11:16:39.20 ID:4qmWB+Wj.net] >>91 c++03で書かれてた
95 名前:デフォルトの名無しさん [2016/05/21(土) 11:18:54.32 ID:Dey5A/Jl.net] >>94 C++は知らないけどメモリの状態を出力する機能くらいあるだろ? それ使えば一発だったな。
96 名前:デフォルトの名無しさん mailto:sage [2016/05/21(土) 11:20:45.55 ID:4qmWB+Wj.net] >>93 うちの場合、c++なら Makefileにcpplint.pyによるチェックが書かれてて Googleのスタイルガイドから逸脱したコードはそもそもコンパイルできないようにしてる。
97 名前:デフォルトの名無しさん mailto:sage [2016/05/21(土) 11:22:33.52 ID:zSvCOHYP.net] >>92 コードで意図を表明出来ない場合にのみ書く
98 名前:デフォルトの名無しさん mailto:sage [2016/05/21(土) 11:22:
] [ここ壊れてます]
99 名前:43.32 ID:4qmWB+Wj.net mailto: >>95 そんな機能無かったよ? 精々がdlmallocをtcmallocに置き換えて、いつどれだけメモリが確保されたか調べれる程度。 [] [ここ壊れてます]
100 名前:デフォルトの名無しさん [2016/05/21(土) 11:25:54.47 ID:Dey5A/Jl.net] >>98 その機能がC++にないとは思えないけどなあ。 Javaにはある。
101 名前:デフォルトの名無しさん mailto:sage [2016/05/21(土) 11:26:55.23 ID:zSvCOHYP.net] c++ってメタデータ無いのにそんな分析できるのか
102 名前:デフォルトの名無しさん [2016/05/21(土) 11:27:47.25 ID:Dey5A/Jl.net] >>97 言語の標準ライブラリにもマニュアルが添付されてるけどそれについては?
103 名前:デフォルトの名無しさん mailto:sage [2016/05/21(土) 11:29:03.59 ID:4qmWB+Wj.net] >>101 関数にコメント書くことと、コードにコメント書くことは違うと思うの。
104 名前:デフォルトの名無しさん mailto:sage [2016/05/21(土) 11:30:35.57 ID:4qmWB+Wj.net] >>98 どうしてc++にそういった機能があると思えるんだ?
105 名前:デフォルトの名無しさん mailto:sage [2016/05/21(土) 11:33:32.42 ID:hclWowah.net] >>96 ああ、そういうのいいね java+eclipseならcheckstyleプラグインがあってあれも悪くなかった いまのプロジェクトはPHPなのでまじカオス 途中から入ると改善しようにも限界がある
106 名前:デフォルトの名無しさん mailto:sage [2016/05/21(土) 11:33:48.04 ID:4qmWB+Wj.net] >>98 じゃなくて>>99 だったね。 視力落ちたかな
107 名前:デフォルトの名無しさん mailto:sage [2016/05/21(土) 11:36:02.84 ID:xO6NCrBP.net] ドキュメントとコメントはまた別やで
108 名前:デフォルトの名無しさん [2016/05/21(土) 11:36:18.20 ID:Dey5A/Jl.net] >>103 そんな機能もないの?って感じだから。
109 名前:デフォルトの名無しさん mailto:sage [2016/05/21(土) 11:38:51.76 ID:xO6NCrBP.net] >>89 継承は糞 だな
110 名前:デフォルトの名無しさん mailto:sage [2016/05/21(土) 11:39:02.19 ID:4qmWB+Wj.net] >>107 つまり直感ってことね。 その直感は誤りだよ。
111 名前:デフォルトの名無しさん [2016/05/21(土) 11:42:08.97 ID:Dey5A/Jl.net] >>109 C++は知らないって言ったろ。 Javaだったら当然の機能だからほんとにないとは思えなかった。
112 名前:デフォルトの名無しさん mailto:sage [2016/05/21(土) 11:44:15.31 ID:4qmWB+Wj.net] >>110 Javaに特有の機能が他の言語に無いとは本当に思えなかった、なんて思ってるとは今でも信じられないよ。 アセンブリ言語をやると良いよ。 そうすれば君に足りない知識や経験が得られるだろうから。
113 名前:デフォルトの名無しさん mailto:sage [2016/05/21(土) 11:45:38.42 ID:q2Zh6d9K.net] >>89 お前のレスの内容からわかるのは こういうことだ。 1. Chrome(chromium)はオブジェクト指向を導入している。 その理由が何かはわからないが、開発者は天才集団だ。 オブジェクト指向を導入することが成功への近道であると 天才集団が判断したに違いないし、実際に成功している。 2. お前はChromiumの改造に失敗した。 天才集団が作ったソースコードを修正する技術力がなかった。 お前のレスからわからないこと 1. Chromiumがオブジェクト指向だったからわからなかったと言っているが、 オブジェクト指向以外で作られたChromium(もちろんそんなものはないが)を お前がメンテナンスできたわけじゃないので、オブジェクト指向が原因とは断定できない。 まず話を整理した。反論があるのならどうぞ?
114 名前:デフォルトの名無しさん [2016/05/21(土) 11:47:36.21 ID:Dey5A/Jl.net] >>111 アセンブリ言語くらい知ってるけど。 ちなみにgprofは使わなかった理由は? gprofはC++でも使えるだろ?
115 名前:デフォルトの名無しさん mailto:sage [2016/05/21(土) 11:48:04.13 ID:RrD1FkH/.net] >>110 おばかwww
116 名前:デフォルトの名無しさん mailto:sage [2016/05/21(土) 11:55:52.40 ID:xEB5od3W.net] >ID:Dey5A/Jl 仮想マシンで無駄なオーバーヘッド垂れ流しの高級言語と一緒にするな どうせならC++はスレ違いと主張しろ
117 名前:デフォルトの名無しさん mailto:sage [2016/05/21(土) 11:56:37.92 ID:4qmWB+Wj.net] >>112 最初のは1行目だけは合ってるな。 何をどう曲解したらその後ろが読み取れたのかが分からんのだけど Chrome/Chromiumはメモリをバカ食いしてswapを浪費し結局遅くなるという点で失敗してる というニュアンスの事を言ったつもりだし オブジェクト指向導入が成功への近道だなんて一言も言ってない。 天才集団云々についてはソースきぼん 二つ目は概ね正しい。俺にはChromiumとそれに使われるコンパイラ(clangだった)を 同時に魔改造するだけの技術力は無かった。 んでもって、俺が言ったのは正しくは 下手くそなオブジェクト指向設計を行った結果密結合になり、 根幹となる部分を書き換えるような改造が困難になった、ということで オブジェクト指向設計全体を否定してはいなに。
118 名前:デフォルトの名無しさん [2016/05/21(土) 12:00:05.18 ID:Dey5A/Jl.net] >>115 C++はメモリ解法が組み込まれた?みたいなことを噂で聞いた気がするから オブジェクトを把握してるのかと思ってたんだけどなあ。 C++について話すのはスレと違うから止めるわ。
119 名前:デフォルトの名無しさん mailto:sage [2016/05/21(土) 12:00:14.12 ID:4qmWB+Wj.net] >>113 gprof? 勿論使ったけど、思ったような情報が集められなかったんだ。 そんな事より、アセンブリ言語を知ってるなら メモリにどの種類のオブジェクトがどれだけ乗ってるかを調べるのは難しいことだって事くらい常識だろ?
120 名前:デフォルトの名無しさん mailto:sage [2016/05/21(土) 12:04:18.12 ID:4qmWB+Wj.net] ところで c++はマルチパラダイム言語で、勿論オブジェクト指向も含む っていう主張はこのスレでは通らない感じ?
121 名前:デフォルトの名無しさん [2016/05/21(土) 12:04:56.21 ID:Dey5A/Jl.net] >>118 お前が言ってることが本当なら C++はオブジェクト指向を十分活用できる実装になっていないって俺は評価する。 アセンブリとJavaじゃ全然違う。
122 名前:デフォルトの名無しさん mailto:sage [2016/05/21(土) 12:07:12.55 ID:4qmWB+Wj.net] >>120 そうかい。 全然違うからこそ、学ぶ価値が有るよって言ってるんだけど。 ちなみにc++に於けるGCは普通はリファレンスカウントのみです。 スコープから外れた次点でデストラクタが走るっていう機構を利用してる。
123 名前:デフォルトの名無しさん [2016/05/21(土) 12:10:29.05 ID:Dey5A/Jl.net] >>121 だからアセンブリ知ってるって言ってるだろ。読んで。 スレと違うからもっと語りたいならスレ立てるなりふさわしいスレに移ってやろう。
124 名前:デフォルトの名無しさん mailto:sage [2016/05/21(土) 12:14:07.97 ID:4qmWB+Wj.net] >>122 知ってるって言ってる割に知ってるなら当然ある筈の知識が欠落してるようにしか見えないから 敢えて言ってるんだけどね。 Java使えます!オブジェクト?知りません!みたいな感じ?
125 名前:デフォルトの名無しさん [2016/05/21(土) 12:15:40.19 ID:Dey5A/Jl.net] >>123 他のスレを立てるなりしてくれりゃ相手してやるよ。 このスレではスルーするから。
126 名前:デフォルトの名無しさん mailto:sage [2016/05/21(土) 12:16:35.00 ID:GoMclkdv.net] オブジェクトちんこはオワコン
127 名前:デフォルトの名無しさん mailto:sage [2016/05/21(土) 12:17:05.21 ID:4qmWB+Wj.net] なんでそう偉そうなのさ? echo.2ch.net/test/read.cgi/tech/1314502612/l50
128 名前:デフォルトの名無しさん [2016/05/21(土) 12:18:49.57 ID:Dey5A/Jl.net] >>126 >>112 の内容で語りたいんだろ? アセンブリのスレは違う。
129 名前:デフォルトの名無しさん mailto:sage [2016/05/21(土) 12:21:19.22 ID:4qmWB+Wj.net] >>127 俺が語りたいのは、 こんなプロジェクトをやりました オブジェクト指向設計は上手くやりましょう って話だぞ? お前があまりにも無知だからアセンブリスレで勉強したら良いと思ってそのスレを挙げたんだけど。
130 名前:デフォルトの名無しさん mailto:sage [2016/05/21(土) 12:29:14.18 ID:q2Zh6d9K.net] >>116 つまり単にお前の技術力が低くて、 技術力が低いがゆえにオブジェクト指向をディスってるわけね? Chromeと同等の、ブラウザをオブジェクト指向を使わずに もっとシンプルに、(お前は実装できる力がないのは分かってるから) もっとシンプルに実装しているやつを持ってこいよ。 今のままではお前が複雑なシステムを メンテする力がないってことしかわからない。 オブジェクト指向をディスるなら、サンプルじゃない程度の規模で ほぼ同じものを別の方法で作ったものを持って事ないと 全然比較にならない。 お前オブジェクト指向が〜といってるだけで、比較を何もしていない。
131 名前:デフォルトの名無しさん mailto:sage [2016/05/21(土) 12:34:27.23 ID:4qmWB+Wj.net] >>129 > 技術力が低いがゆえにオブジェクト指向をディスってるわけね? 違う。 オブジェクト指向設計をディスってる訳じゃなくて、下手くそな設計をディスってる。 思い込みを捨ててよく読みなおして欲しいな。 > Chromeと同等の、ブラウザをオブジェクト指向を使わずに > もっとシンプルに、(お前は実装できる力がないのは分かってるから) > もっとシンプルに実装しているやつを持ってこいよ。 なにをもって「同等の」と言うかにも依るんだけど、lynxならその条件を満たすんじゃない? Googleのトップページがきちんと見れる位にはW3CやECMAに良く対応してるし。 lynx.browser.org/
132 名前:デフォルトの名無しさん [2016/05/21(土) 12:36:31.08 ID:Dey5A/Jl.net] >>116 正しい設計をしなきゃいけないって結論なんだろ? だから正しい設計をするための指針が必要って話。 「既存のコードから空気読んで」なんて言ってたらいい設計にならない。
133 名前:デフォルトの名無しさん mailto:sage [2016/05/21(土) 12:38:33.81 ID:4qmWB+Wj.net] >>131 設計と実装をごっちゃにしてないか? 俺が「既存のコードから空気を読んで」って言ったのは、その直前の文からも分かるように ifと(の間にスペースを入れるかどうか、とかそのレベルの話をしたんだが。
134 名前:デフォルトの名無しさん mailto:sage [2016/05/21(土) 12:39:00.03 ID:q2Zh6d9K.net] >>130 技術力が低いとお前自身が認めてるのに、 そのお前が下手と言っても意味はない。 たとえば将棋で、なんでこんな手を指すのだ?って 名人の対局を見ていっているようなものだ。 お前が理解できていない。 lynxはJavaScriptすら搭載されてないので同等とみなせない なにをもって「同等の」にこだわるのなら、 お前がこれから一ヶ月の間、仕事(学校?)中も含めて 一日中それ過ごせるブラウザだ。
135 名前:デフォルトの名無しさん mailto:sage [2016/05/21(土) 12:40:20.10 ID:q2Zh6d9K.net] >>131 > 正しい設計をしなきゃいけないって結論なんだろ? 後から読むときに読みやすくて、 後から拡張するときに書きやすくするため だから既存のコードから空気を読みやすくするために、 正しい設計をする。
136 名前:デフォルトの名無しさん [2016/05/21(土) 12:41:30.36 ID:Dey5A/Jl.net] >>132 指針やルールなしに直感と経験でてきとーに決めた結果だめな設計になる。 ダメな設計はダメだってお前も認めているんだろ? だったら正しい設計をできるようにするにはどうすればいいと思ってんの?
137 名前:デフォルトの名無しさん mailto:sage [2016/05/21(土) 12:41:43.67 ID:4qmWB+Wj.net] >>133 > 技術力が低いとお前自身が認めてるのに 言ってないし、認めてもいない。 Chromiumやclangを魔改造するだけの技術力は無かった、と過去形で言ったに過ぎない。 > 一日中それ過ごせるブラウザだ。 その条件ならlynxで十分だね。
138 名前:デフォルトの名無しさん mailto:sage [2016/05/21(土) 12:42:24.07 ID:q2Zh6d9K.net] > その条件ならlynxで十分だね。 ほう。じゃあGMailやGoogle Mapを見るときはどうするの?
139 名前:デフォルトの名無しさん mailto:sage [2016/05/21(土) 12:43:09.36 ID:q2Zh6d9K.net] > Chromiumやclangを魔改造するだけの技術力は無かった、と過去形で言ったに過ぎない。 今は技術力があることをを証明してないし、 毎度毎度、こいつは何も証明していない。 自分の感想を言ってるに過ぎない。 技術力がないことだけは真実だろう。
140 名前:デフォルトの名無しさん mailto:sage [2016/05/21(土) 12:43:21.58 ID:4qmWB+Wj.net] >>137 メールはmewがあるし、地図なんて街を歩けばそこらに有るだろ?
141 名前:デフォルトの名無しさん mailto:sage [2016/05/21(土) 12:44:59.69 ID:q2Zh6d9K.net] >>139 つまりそういうことだよw お前は使わない。使わないから そんな機能があることを想定しない。 そんな機能がないことを前提として設計を考えている。 だからもっとシンプルに書けるはずだと言っているが無理。 つまり、お前の世界が狭いために、 それだけの設計をしている理由がわからないし、 いざその設計を前にすると、お前は何もできなかった。 井の中の蛙ってやつだよw
142 名前:デフォルトの名無しさん mailto:sage [2016/05/21(土) 12:45:45.19 ID:4qmWB+Wj.net] >>138 そんなに証明に拘るなら、今趣味でOS書いてっからそれを読んでみてよ。 どのくらい低レベルな技術力かわかるから。 https://github.com/pixie-grasper/operating-system
143 名前:デフォルトの名無しさん mailto:sage [2016/05/21(土) 12:46:04.92 ID:q2Zh6d9K.net] >>141 低レベルと理解したw
144 名前:デフォルトの名無しさん mailto:sage [2016/05/21(土) 12:47:57.47 ID:q2Zh6d9K.net] おっと、間違えた 技術力が低いと理解したw
145 名前:デフォルトの名無しさん mailto:sage [2016/05/21(土) 12:50:15.82 ID:4qmWB+Wj.net] >>140 つまりどういうこと? 君が「ブラウザ」にメールと地図とその他ありとあらゆる機能、例えば電話なんかを搭載しないと気が済まないのかも知れん。 それは結構な事なんだけど、ブラウザってのはそもそも https://ja.wikipedia.org/wiki/%E3%82%A6%E3%82%A7%E3%83%96%E3%83%96%E3%83%A9%E3%82%A6%E3%82%B6 より引用すると 『大まかに言うと、ウェブブラウザは3つの部分から構成される。 1. URI, HTTP 等に基き、サーバと通信してリソースを取得する、HTTP ユーザエージェントの部分。 2. 取り寄せた資源をその種類 (HTML/XHTML/XML, 文書、画像等)に応じて解析する構文解析の部分。 3. 構文解析の結果を基に文字や画像を適切に配置し、あるいは文字の大きさを調整したり色を付けるなどして最終的に人間の為の表示を行う描写の部分。』 こういうものだろ? 何でメールを開くのにブラウザを使わなきゃならないんだ?
146 名前:デフォルトの名無しさん mailto:sage [2016/05/21(土) 12:52:45.65 ID:q2Zh6d9K.net] > 君が「ブラウザ」にメールと地図とその他ありとあらゆる機能、例えば電話なんかを搭載しないと気が済まないのかも知れん。 ブラウザにGmailや地図機能が搭載されてると思ってるのか? こいつ本気で世界が狭いぞwww
147 名前:デフォルトの名無しさん [2016/05/21(土) 12:52:55.78 ID:Dey5A/Jl.net] オブジェクト指向設計の話に戻れよ。 関係ない話して>>135 をスルーすんな。
148 名前:デフォルトの名無しさん mailto:sage [2016/05/21(土) 12:55:56.13 ID:4qmWB+Wj.net] >>146 すまんね。 えーと、何の話だっけ? そうそう、正しい設計をするにはどうすれば良いか、だったね。 直感と経験で適当な設計をすれば良いんじゃないの? 適当:ある性質・状態・要求などに、ちょうどよく合うこと。ふさわしいこと。
149 名前:デフォルトの名無しさん [2016/05/21(土) 12:57:31.54 ID:Dey5A/Jl.net] >>147 それができていないから困ったんだろ?
150 名前:デフォルトの名無しさん mailto:sage [2016/05/21(土) 12:58:17.08 ID:4qmWB+Wj.net] >>148 適当でない設計が成されてたから、困ったね。
151 名前:デフォルトの名無しさん [2016/05/21(土) 13:00:59.05 ID:Dey5A/Jl.net] >>149 Googleでもできていないのにお前は直感と経験で正しい設計ができるって自信の根拠は? お前は経験が不足していることも認めているから、直感だけだな。 そんなんで間違えないとは思えないだろ?
152 名前:デフォルトの名無しさん mailto:sage [2016/05/21(土) 13:01:29.28 ID:q2Zh6d9K.net] 設計なんて作るもので変わるものなのに、 単純な機能しか想定できてないやつに、 Chromeの設計をごちゃごちゃいう資格はねーよ。
153 名前:デフォルトの名無しさん mailto:sage [2016/05/21(土) 13:10:37.89 ID:4qmWB+Wj.net] >>150 Google ChromeやChromiumの設計にはGoogleは関与していないんですがそれはそれとして 適当でない設計だったら設計しなおせばいいんじゃないの? 設計し直す事によってノウハウも貯まるんだし。 >>151 君が、使いもしない機能のために設計を複雑化させる人だという事は分かった。 俺はlynxとchromiumを同じだけ使った訳じゃないけど、俺にとってはどちらも不便じゃなかった。 ただそれだけの事実をどうして捻じ曲げて解釈するのかね。
154 名前:デフォルトの名無しさん [2016/05/21(土) 13:15:07.48 ID:Dey5A/Jl.net] >>152 矛盾してるなあ。 「下手な設計のせいでだめなシステムになる」 「適当でない設計だったら設計しなおせばいい」 ダメな設計なのに修正できてないシステムが存在するのはどうして? 理由くらい想像つかない?
155 名前:デフォルトの名無しさん mailto:sage [2016/05/21(土) 13:16:45.12 ID:q2Zh6d9K.net] >>152 「想定」っていうのは、お前がお前自身で使うことを想定しろって話じゃない。 他人が使う機能を想定しろ。 どうしてお前はいつも、お前の中の世界だけで 物事を考えてるんだ?w
156 名前:デフォルトの名無しさん mailto:sage [2016/05/21(土) 13:23:26.36 ID:4qmWB+Wj.net] >>153 > ダメな設計なのに修正できてないシステムが存在するのはどうして? 何が自明じゃないのかが分からないんだけど 実装した「後」に設計を変更したら違う実装が必要になるよね? 同じ実装を使いまわしてる以上は、設計の大幅な修正は出来ないよ。 逆に、設計を修正したいのなら実装は捨てる勢いじゃないと。 派閥や権力の問題でそれが出来ないから、そういったシステムが存在するのでは?
157 名前:デフォルトの名無しさん mailto:sage [2016/05/21(土) 13:23:53.70 ID:4qmWB+Wj.net] >>154 アスペだからさ。
158 名前:デフォルトの名無しさん [2016/05/21(土) 13:25:02.03 ID:Dey5A/Jl.net] >>155 つまり「適当でない設計だったら設計しなおせばいい」というのは現実的じゃないと認めると?
159 名前:デフォルトの名無しさん [2016/05/21(土) 13:25:16.60 ID:W+CoeO47.net] OOPは甘え
160 名前:デフォルトの名無しさん mailto:sage [2016/05/21(土) 13:28:33.55 ID:4qmWB+Wj.net] >>157 何か飛躍してる気がする 設計が適当かどうかは設計の段階で判別すべき問題であって、 駄目な設計の元で実装を与えたらそりゃそんなシステムが作られるよねって事を言いたいんだけど・・・・・・ 設計が適当かどうかの判別が出来ない人間が営業やってるってそ
161 名前:なに変な仮定かな。 [] [ここ壊れてます]
162 名前:デフォルトの名無しさん [2016/05/21(土) 13:34:12.37 ID:Dey5A/Jl.net] >>159 設計がダメだとダメなシステムができるってことは最初から分かってるから何度も言わなくていいよ。 だから、「正しい設計をする必要があるんだろ?」って聞いたら 「だめな設計ならしなおせばいいから問題ない」みたいなことをお前が言い出したから意味不明。 何が言いたいんだか明確に。
163 名前:デフォルトの名無しさん [2016/05/21(土) 13:36:12.26 ID:W+CoeO47.net] >>160 君はウォーターフォールとスパイラルの違いすら理解出来ていないのか
164 名前:デフォルトの名無しさん [2016/05/21(土) 13:37:41.47 ID:Dey5A/Jl.net] >>161 スパイラルなら設計指針がいらないとでも?
165 名前:デフォルトの名無しさん mailto:sage [2016/05/21(土) 13:42:03.68 ID:4qmWB+Wj.net] >>160 確かに、間の話をすっ飛ばすと意味不明だな。 >>131 で君は > だから正しい設計をするための指針が必要って話。 こう書いたけど、俺はどちらかと言うと、 派閥や権力なんかの問題で正しい設計を妨害されるのでなければ、 指針なんか無くてもそのうち正しい設計にたどり着けるだろうっていう楽観論を持ってる。 設計を一人でやるのでなければね。 一人で設計するのであれば、確かに指針は必要だと思うよ。
166 名前:デフォルトの名無しさん [2016/05/21(土) 13:48:13.84 ID:Dey5A/Jl.net] >>163 経験のない奴がやれば間違った設計をすることはお前も認めたんだけど。 だから「間違った設計をしたら直せばいい」って流れだろ。 自分の書き込みに沿って話せよ。 で、言ってることがぶれてて分からん。分かるように書いてくれ。
167 名前:デフォルトの名無しさん mailto:sage [2016/05/21(土) 13:50:59.11 ID:q2Zh6d9K.net] 間違った設計はなくても、設計が変わることはある。 一度作ったソフトウェアがバージョンアップしないと言うのなら別だけど、 ブラウザのようなものは、設計は常に変わっていく。 だめだから変わるんじゃない。 いいものから更にいいものに変わるんだよ。 何が正しい設計? そんなものバージョンアップで変わるに決まってる。 最初から未来の設計をしてはいけない。
168 名前:デフォルトの名無しさん mailto:sage [2016/05/21(土) 13:52:49.78 ID:4qmWB+Wj.net] >>164 ちょっと待った。 そんな事俺認めてたっけ?
169 名前:デフォルトの名無しさん mailto:sage [2016/05/21(土) 13:54:12.61 ID:q2Zh6d9K.net] バージョンアップで設計が変わるということがどういうことかというと、 バージョンアップで搭載される機能によって、正しい設計は変わるということ。 つまり搭載される機能を把握してないと、正しい設計はわからない。 ここで、ブラウザにどんな機能が搭載されているかを 把握してないようなやつが、Chromeの設計をディスった所で 的外れでしか無い。 「お前はこういう設計になってる理由が分かってない」の一言で一蹴できる話。 そこまで考えられないから、技術力が低いといわれている。
170 名前:デフォルトの名無しさん [2016/05/21(土) 13:54:38.15 ID:Dey5A/Jl.net] >>166 どっかで認めていたはずだけど、逆に経験がない設計者が最初から正しい設計ができると思ってんの?
171 名前:デフォルトの名無しさん mailto:sage [2016/05/21(土) 13:57:33.25 ID:q2Zh6d9K.net] lynxとChromeを同等の機能を持ったブラウザという認識しか出来ないやつに、 どんな機能を満たすために設計すればいいかなんて答えられるわけないし、 lynxで十分な機能だと思ってるやつが、Chromeの設計をディスった所で 「必要とされる機能」を理解してないやつの考えとしか思われない。
172 名前:デフォルトの名無しさん mailto:sage [2016/05/21(土) 13:59:49.12 ID:4qmWB+Wj.net] >>168 経験があろうがなかろうが最初から正しい設計なんてそうそう出来ない。 そして、最初から正しい設計が出来るって事と、 正しい設計がそのうち出来るって事は明確に違う。 もしかして、設計は上書き不能なデバイス上で行う類のものだったりするの?
173 名前:デフォルトの名無しさん [2016/05/21(土) 14:01:49.63 ID:4qmWB+Wj.net] >>169 その「同等」の要件に、俺が、不自由しない事って指定したのは君(>>133 )なんだが。
174 名前:デフォルトの名無しさん [2016/05/21(土) 14:04:12.14 ID:Dey5A/Jl.net] >>170 「最初から正しい設計なんてそうそう出来ない」「そのうち正しい設計になる」 ってその間プロジェクトはどうなってるのかな? 業務システムの開発プロジェクトに参加した経験ないだろ?
175 名前:デフォルトの名無しさん mailto:sage [2016/05/21(土) 14:05:02.11 ID:4qmWB+Wj.net] >>172 設計フェーズ中ですな。
176 名前:デフォルトの名無しさん mailto:sage [2016/05/21(土) 14:06:24.85 ID:q2Zh6d9K.net] >>171 > その「同等」の要件に、俺が、不自由しない事って指定したのは君(>>133 )なんだが。 その質問の本当の狙いは、お前がブラウザの機能として 想定しているものが、大幅に狭いってことを明らかにするためだよw 見事お前はlynxで機能として十分だと言ってくれたわけで、 お前にそう言わせることが、その質問の俺の勝利条件w 設計というものは、必要な機能によって何が正しいかが変わるものので、 その必要な機能を把握してないやつに正しい設計はわからないし、 正しい設計がわからないやつが
177 名前:Chromeの設計をディスることは出来ない。 [] [ここ壊れてます]
178 名前:デフォルトの名無しさん [2016/05/21(土) 14:06:26.42 ID:Dey5A/Jl.net] >>173 設計フェーズはいつ終わるんだ? 期間はどのくらい? 業務システムの開発プロジェクトに参加した経験ないだろ、は?
179 名前:デフォルトの名無しさん mailto:sage [2016/05/21(土) 14:07:38.65 ID:q2Zh6d9K.net] >>172 > 「最初から正しい設計なんてそうそう出来ない」「そのうち正しい設計になる」 > ってその間プロジェクトはどうなってるのかな? その質問に意味はあるのか? どのフェーズでも同じことだろ 「最初から正しい要求なんてそうそう出来ない」「そのうち正しい要求になる」 「最初から正しい仕様なんてそうそう出来ない」「そのうち正しい仕様になる」
180 名前:デフォルトの名無しさん mailto:sage [2016/05/21(土) 14:08:47.42 ID:q2Zh6d9K.net] >>175 > 設計フェーズはいつ終わるんだ? > 期間はどのくらい? 終るタイミングや期間は、他のフェーズと同じ考え方だろ。 要求フェーズはいつ終るんだ? 期間はどのくらい? お前が業務システムに参加しているならば 答えられるはずだ。
181 名前:デフォルトの名無しさん [2016/05/21(土) 14:09:04.62 ID:Dey5A/Jl.net] >>176 実際のプロジェクトの経験があれば質問の意味は分かるだろ?
182 名前:デフォルトの名無しさん mailto:sage [2016/05/21(土) 14:09:39.96 ID:4qmWB+Wj.net] >>174 「本当の狙い」だなんて後出しされても知らんよ。 >>175 高々半年やそこらだろ。 そして「業務システムの開発プロジェクト」とやらに参加したことは確かに無いが、 それを確認して君に何の利益があるんだい?
183 名前:デフォルトの名無しさん mailto:sage [2016/05/21(土) 14:09:51.70 ID:q2Zh6d9K.net] >>178 質問の意味ならばお前もわかってるはずだ。 自分の質問に、自分で答えられるはずだよな? まずお前の場合でいいから、 答えを言ってみてはどうだ?
184 名前:デフォルトの名無しさん mailto:sage [2016/05/21(土) 14:11:47.99 ID:q2Zh6d9K.net] >>179 > 「本当の狙い」だなんて後出しされても知らんよ。 意味わからん。 お前を罠にハメたってだけだが?w 最初から「お前の技術力が低いから、Chromeの設計をディスってるんだな」って 思ったから、うまく誘導して、お前の技術力が低い根拠を、お前自身に言わせただけ。 お前の想定する範囲が狭いことがわかったので、 お前にChromeの設計はできん。設計できんやつがあれこれ言った所で 何の説得力もない。
185 名前:デフォルトの名無しさん mailto:sage [2016/05/21(土) 14:13:45.30 ID:4qmWB+Wj.net] >>181 人を罠にはめて笑うのって本当にそれだけで楽しいの? 不思議な人。
186 名前:デフォルトの名無しさん [2016/05/21(土) 14:14:42.87 ID:Dey5A/Jl.net] >>179 務システムの開発プロジェクトに参加したことがないと確認して話が噛み合わないのが納得。 設計に続く構築フェーズの人の手配は数ヶ月前からやる必要があるから 設計フェーズの期間は事前に決まってる。 で、その期間で完成したものが設計フェーズの成果物。 その後に修正しないってことはないけど、構築が始まっちゃってるんだから 簡単に変更できるものじゃない。 だから、「そのうち正しい設計になる」みたいな発想はおかしい。 それと完成したシステムの設計を変更するってことは構築もやり直すんだから これまた困難なこと。
187 名前:デフォルトの名無しさん mailto:sage [2016/05/21(土) 14:20:51.60 ID:4qmWB+Wj.net] >>183 つまり、君の質問は 「理論的に、正しい設計をするにはどうなっていなければならないか」 ではなく 「正しい設計を期限内に完了させるにはどうすれば良いか」 という事? ごめん、その質問なら俺には答えられないわ。 マ板でやれ。
188 名前:デフォルトの名無しさん mailto:sage [2016/05/21(土) 14:23:53.36 ID:q2Zh6d9K.net] >>182 > 人を罠にはめて笑うのって本当にそれだけで楽しいの? 笑ってない。 お前が間違っていると主張している。 で、その主張の根拠を集めたに過ぎない。 所詮お前は、設計に必要な機能の想定の時点で出来てない。
189 名前:デフォルトの名無しさん [2016/05/21(土) 14:24:16.67 ID:Dey5A/Jl.net] >>184 開発期間に制約がないプロジェクトって謎過ぎて…。 個プロジェクトにおける設計指針について語りたいから人の趣味レベルなら好きにしてよ。
190 名前:デフォルトの名無しさん mailto:sage [2016/05/21(土) 14:24:25.73 ID:zSvCOHYP.net] >>101 そのライブラリには誰にでも数回の操作でアクセスできるソースコードとユニットテストは無いの? ドキュメントが正しいってどうやって確かめてるのかな?
191 名前:デフォルトの名無しさん mailto:sage [2016/05/21(土) 14:24:52.96 ID:q2Zh6d9K.net] >>183 期間内に正しい設計にすればいいんだよw 要求フェーズでも同じことだろ。
192 名前:デフォルトの名無しさん mailto:sage [2016/05/21(土) 14:25:19.45 ID:4qmWB+Wj.net] >>185 へーwww 笑ってないんだwww もうちょっと具体的に言ってくれない?ww
193 名前:デフォルトの名無しさん [2016/05/21(土) 14:27:20.91 ID:Dey5A/Jl.net] >>187 ドキュメントが必要だと言語の開発者も認めていることはスルーかな?
194 名前:デフォルトの名無しさん [2016/05/21(土) 14:28:36.75 ID:Dey5A/Jl.net] >>188 そりゃそうだろ。当然のこと。
195 名前:デフォルトの名無しさん [2016/05/21(土) 14:29:51.35 ID:Dey5A/Jl.net] >>187 コードのコメントとテストが不要なんて言ってないし。もちろんそれも必要。
196 名前:デフォルトの名無しさん mailto:sage [2016/05/21(土) 14:35:31.86 ID:4qmWB+Wj.net] ところで、>>Dey5A/Jlはプログラム技術板の住民に何を求めてたんだろう。
197 名前:デフォルトの名無しさん mailto:sage [2016/05/21(土) 14:36:22.78 ID:q2Zh6d9K.net] >>189 何度も具体的に言ったが? 最初から「お前の技術力が低いから、Chromeの設計をディスってるんだな」って 思ったから、うまく誘導して、お前の技術力が低い根拠を、お前自身に言わせただけ。 具体的にいって欲しいならこれに過去レスの内容を肉付けするだけだけど。 最初から「お前の技術力が低いから、Chromeの設計をディスってるんだな」って思った。 技術力が低いことを直接認めさせようとしても無理だろう。だから間接的に攻めよう。 実際にブラウザを作るのは労力がかかるから技術があってもやりたくない。 Chromeの設計をディスるならば、他のブラウザを知ってるはずだ。 それを持ってきてもらう。ただし同等の機能を搭載しているのが条件だ。 といったらlynxを持ってきた。これは使える。lynxとChromeが持っている機能は明らかに違う。 lynxで出来ないGmailやGoogle Mapのことについてどう考えているのかを聞いてやろう。 (続く)
198 名前:デフォルトの名無しさん [2016/05/21(土) 14:36:44.78 ID:Dey5A/Jl.net] >>193 プログラム技術はプロジェクト経験者がいないと思ってるのかな?
199 名前:>>194の続き mailto:sage [2016/05/21(土) 14:36:54.49 ID:q2Zh6d9K.net] そしたらそんなことはブラウザではやらないと言った。 これは決め手になる。つまりはそういう用途で使うことを想定してないということだ。 「技術力が低い」理由の一つは「想定能力が低い」ことでもある。 今までの話から、ブラウザの機能として想定しているものがlynx程度だって判明している。 設計はどんな機能を搭載するかで決まるものだから、その機能すら想定してないやつには 正しい設計など出来ない。よってこいつにChromeの設計をディスる能力はない
200 名前:デフォルトの名無しさん [2016/05/21(土) 14:39:37.89 ID:4qmWB+Wj.net] >>195 そうではなく、上流工程のノウハウを持つ人材ってどのくらい見てるのかなって疑問に思っただけ。
201 名前:デフォルトの名無しさん mailto:sage [2016/05/21(土) 14:41:34.89 ID:4qmWB+Wj.net] >>194 その「同等」の定義によると、GMailやらGoogle Mapsやらは使えなくても良い事になってる。
202 名前:デフォルトの名無しさん [2016/05/21(土) 14:41:37.38 ID:Dey5A/Jl.net] >>197 単なる疑問なのに他行けとか言っちゃうのはやめようね。
203 名前:デフォルトの名無しさん mailto:sage [2016/05/21(土) 14:43:32.77 ID:4qmWB+Wj.net] >>199 そういう風に解釈したなら謝るよ、ごめんよ。
204 名前:デフォルトの名無しさん mailto:sage [2016/05/21(土) 14:44:24.02 ID:q2Zh6d9K.net] >>198 それはお前が使う場合の想定の話だろ? 自分専用ツールでもない限り、 想定っていうのは他人が使うことを想定しなければいけない。 ここで明らかにしたかったのはお前の想定能力 お前の想定ではGMailやらGoogle Mapsやらは使えなくても良い事になっている。 そういう人にChromeに設計はできない。 という話をしている。
205 名前:デフォルトの名無しさん [2016/05/21(土) 14:45:27.96 ID:Dey5A/Jl.net] >>200 いえいえ。
206 名前:デフォルトの名無しさん mailto:sage [2016/05/21(土) 14:47:09.27 ID:zSvCOHYP.net] >>190 標準ライブラリは変化が小さく安定してるからね 詳細なドキュメントやコメントを書く余裕がある(価値があるなしは置いておいて) しかし変化の激しいビジネスドメインで同じことをやろうとしてもコードとドキュメントやコメントの同期が追いつかない だからドキュメントやコメントではなくコードとユニットテストが大切なんだ
207 名前:デフォルトの名無しさん mailto:sage [2016/05/21(土) 14:47:09.39 ID:4qmWB+Wj.net] >>201 > それはお前が使う場合の想定の話だろ? そりゃそうだが、アスペに何言ってるの? > お前がこれから一ヶ月の間、仕事(学校?)中も含めて > 一日中それ過ごせるブラウザだ。 こう言ったから、その条件ならlynxも含まれるね!って言ったんだけど。 https://ja.wikipedia.org/wiki/%E3%82%A2%E3%82%B9%E3%83%9A%E3%83%AB%E3%82%AC%E3%83%BC%E7%97%87%E5%80%99%E7%BE%A4
208 名前:デフォルトの名無しさん mailto:sage [2016/05/21(土) 14:51:05.77 ID:q2Zh6d9K.net] >>204 そこは重要なところか?w > その「同等」の定義によると、GMailやらGoogle Mapsやらは使えなくても良い事になってる。 と言ってしまった、お前の想定能力の低さに なんの関係があるんだ?w
209 名前:デフォルトの名無しさん [2016/05/21(土) 14:52:37.29 ID:Dey5A/Jl.net] >>203 変化しているならなおさらドキュメントがないと影響範囲とか変更履歴の確認とか大変。 概要くらいはドキュメントに書こう。 お前も実際のプロジェクトでの経験はない人?
210 名前:デフォルトの名無しさん mailto:sage [2016/05/21(土) 14:53:38.93 ID:4qmWB+Wj.net] >>205 全て重要な事だろ。何言ってんだ? 君の言う「同等」の定義によると、「俺が」「一ヶ月」使えるなら同等だって事なんだろ? その意味で、lynxもGoogle Chromeも同等のWebブラウザだぞ?
211 名前:デフォルトの名無しさん mailto:sage [2016/05/21(土) 14:58:53.23 ID:q2Zh6d9K.net] >>207 お前にとっては重要な事なんだなw 俺にとってはChromeのオブジェクト指向による設計を お前がディスってるのは、単にお前の技術力が低いだけってことを 証明できればそれで十分なんだよ。 で実際証明された。そしてここはお前が反論できない部分でもある。 想定能力の低さによる判断の一つの例が > 「俺が」「一ヶ月」使えるなら同等だって事なんだろ? だからねw
212 名前:デフォルトの名無しさん mailto:sage [2016/05/21(土) 15:00:45.44 ID:q2Zh6d9K.net] あ、そうかあんたはアスペでしたねw 同等のブラウザの話をしてるんだから、 Chromeの代わりに一ヶ月同じように使うっていうのは 当たり前の前提条件ですよ。
213 名前:デフォルトの名無しさん mailto:sage [2016/05/21(土) 15:02:29.73 ID:4qmWB+Wj.net] >>208 想定能力が低いって意味が、アスペルガー症候群に於ける認知能力の特異性について指しているなら、 俺の想定能力が低いのは正しい。 で、アスペルガー症候群って知ってる? あと、技術力が低い事と想定能力とやらが低い事の間には正の相関があるの?
214 名前:デフォルトの名無しさん mailto:sage [2016/05/21(土) 15:04:53.28 ID:4qmWB+Wj.net] >>209 君は>>133 で書いてる。 > なにをもって「同等の」にこだわるのなら、 > お前がこれから一ヶ月の間、仕事(学校?)中も含めて > 一日中それ過ごせるブラウザだ。 つまり、君にとって、「同等の」の定義は、俺が一ヶ月使えるブラウザだって事だ。 それを後から「当たり前の前提条件ですよ」と言ってひっくり返すのは宜しくないな。
215 名前:デフォルトの名無しさん mailto:sage [2016/05/21(土) 15:05:58.61 ID:q2Zh6d9K.net] > で、アスペルガー症候群って知ってる? なんだ? 自分から自分でアスペって言い出したのは なんでだって思ったら、アスペの特徴のうち 優れた点だけを抜き出して、 俺は優れているんだって言うつもりかな? アスペルガー症候群? 知らないなぁ。 説明して見せてw その説明によっては、君は単なるバカでアスペじゃないかもねw
216 名前:デフォルトの名無しさん mailto:sage [2016/05/21(土) 15:06:47.38 ID:q2Zh6d9K.net] >>211 つまり、lynxは同等のブラウザじゃないってこと?w
217 名前:デフォルトの名無しさん mailto:sage [2016/05/21(土) 15:07:40.84 ID:4qmWB+Wj.net] >>212 アスペの特徴のうち劣ってる点を前面に出しているんだけど、日本語読めてる? 説明はWikipediaに丁寧に書かれてるから省くよ。スレ違いだしね。
218 名前:デフォルトの名無しさん mailto:sage [2016/05/21(土) 15:08:37.71 ID:4qmWB+Wj.net] >>213 「同等」の定義にもよる。
219 名前:デフォルトの名無しさん mailto:sage [2016/05/21(土) 17:04:25.49 ID:uPXSQ8F/.net] ある言語の言語仕様がクソだとか あるコンパイラの実装がクソだとか 初心者ってのはとにかくそれを言いたがる 無邪気にそれを言いたがる
220 名前:デフォルトの名無しさん mailto:sage [2016/05/21(土) 17:15:38.68 ID:jm0r3P4w.net] レス9で懸念した通りになったな。ネタスレに振り切らないと荒れるだけ。 こういうのはTwitterのような業界有名人同士がテンポ良く議論しないとあ んまり為にならない。
221 名前:デフォルトの名無しさん [2016/05/21(土) 17:53:28.24 ID:Dey5A/Jl.net] 業界有名人同士のTwitterって…。
222 名前:デフォルトの名無しさん mailto:sage [2016/05/21(土) 18:26:36.65 ID:J4qAac+5.net] スレタイからかけ離れた煽り合戦になってるな 良いオブジェクト指向設計は何かを 議論するスレかと思ってたが
223 名前:デフォルトの名無しさん [2016/05/21(土) 18:37:45.87 ID:Dey5A/Jl.net] 経験者が予想以上に少ないのかねえ。
224 名前:デフォルトの名無しさん mailto:sage [2016/05/21(土) 19:48:31.27 ID:zSvCOHYP.net] >>206 変化があるたびにコメントとドキュメントを直していたらコストは3倍になる 実際は同期が取れているかのチェックなどでさらに工数が増える これは許容できないコストだよ
225 名前:デフォルトの名無しさん mailto:sage [2016/05/21(土) 20:22:38.39 ID:Ox0LpmWi.net] ドキュメントは自動生成だろ
226 名前:デフォルトの名無しさん [2016/05/21(土) 20:45:52.79 ID:Dey5A/Jl.net] >>221 ドキュメントすらないシステムを理解して改修する手間よりずっと少ないじゃん。 そもそも客からドキュメントの提出を求めて来るだろ。 趣味じゃなく実業務のプロジェクトやってことあるのか? 趣味でやってるなら趣味でやってるって書いてくれよ。 それならそれに合わせて緩く対応するから。
227 名前:デフォルトの名無しさん [2016/05/21(土) 20:46:46.87 ID:Dey5A/Jl.net] >>222 設計書がなけりゃ何見て作るんだろ?
228 名前:デフォルトの名無しさん mailto:sage [2016/05/21(土) 21:09:25.89 ID:zSvCOHYP.net] >>223 システムを理解するにはメモ書き程度の資料と綺麗なコードがあれば充分 大人の事情でドキュメントを作る事はあっても役にたつなんて本気で思ってるうちはアマチュアだよ
229 名前:デフォルトの名無しさん mailto:sage [2016/05/21(土) 21:11:26.64 ID:xm4TkEYQ.net] ドキュメントを書かない奴はレベルが低い
230 名前:デフォルトの名無しさん [2016/05/21(土) 21:16:44.29 ID:Dey5A/Jl.net] >>225 ふーん。どういうプロセスでオブジェクト指向設計をやってるのか語ってくれ。
231 名前:デフォルトの名無しさん mailto:sage [2016/05/21(土) 21:19:21.49 ID:ycaEwNI1.net] >>218 どういう実務経歴の人がどういう観点から発言しようとしてるのか 明確にしないと説得力なんか全然出ない。 てなるとある程度名と実績の知れた人、自己責任で過去に関わった案 件の内容を差し障りのない範囲で公開できる人(=業界有識者、オピニオンリー ダー)に限定されてしまうな。 ここまでくどく書く必要があるかどうかわからんが、極端な話、ソーシャル アプリと原発制御システムとでは開発手法が全然違うしな。なんで、同じ土俵で 議論なんてできるわけない。ブログに書くゆるふわ日記と隙のない法務文書を書 くぐらい違う。
232 名前:デフォルトの名無しさん [2016/05/21(土) 21:25:36.87 ID:Dey5A/Jl.net] >>228 相手の発言内容から参考になるかならないか自分で判断できるだろ。 日本人のオピニオンリーダーとやらのつぶやきよりも原著を読んだほうがよっぽど信頼できるし。 2ちゃんなんだから誰が発言したかじゃなくていろんな意見を聞きたいってとこだな。 今のところ、実体験の裏付けがあると思える書き込みはほとんどないのは残念だけど。
233 名前:デフォルトの名無しさん mailto:sage [2016/05/21(土) 21:28:16.08 ID:ycaEwNI1.net] >>229 煽り口調で書き込みされた時点で信用もクソもないと思うけど。 少なくとも議論する気なんてないよね?
234 名前:デフォルトの名無しさん [2016/05/21(土) 21:32:06.53 ID:Dey5A/Jl.net] >>230 プロセスなんていらない、文書なんていらない、なんて書き込みされてりゃ呆れるだろ。 で、Twitterがいいと思うなら勝手にTwitter使ってやってりゃいいじゃん。 わざわざスレに来て書き込むのは無意味すぎて不快。
235 名前:デフォルトの名無しさん mailto:sage [2016/05/21(土) 21:40:10.70 ID:zSvCOHYP.net] >>227 DDD
236 名前:デフォルトの名無しさん [2016/05/21(土) 21:52:07.81 ID:Dey5A/Jl.net] >>232 体験談を語って欲しいもんだ。
237 名前:デフォルトの名無しさん mailto:sage [2016/05/21(土) 22:04:24.15 ID:a4jHAOFt.net] >>233 1) 語れるほどの実体験を持つ者はこのスレにはいない 2) いたとしても、それを無料で語ってくれる者はいない
238 名前:デフォルトの名無しさん [2016/05/21(土) 22:18:00.97 ID:Dey5A/Jl.net] >>234 語れない、語りたくないなら書き込まないでいいから。 そもそも2ちゃんに書き込んだって一円にもならないんだから嫌なら書き込むなw
239 名前:デフォルトの名無しさん mailto:sage [2016/05/21(土) 23:13:38.33 ID:hclWowah.net] >>222 お客さん向けの設計書の納品でjavadoc送りつける人かな? >>225 お客さんがいるシステムを作ったことない人かな?
240 名前:デフォルトの名無しさん mailto:sage [2016/05/21(土) 23:39:12.12 ID:sajHzwwt.net] 予想通りに自分の環境を前提にした正しさを押し付けあって不毛な議論が続くスレに!最高だぜ!
241 名前:デフォルトの名無しさん mailto:sage [2016/05/21(土) 23:55:43.52 ID:zSvCOHYP.net] ドキュメント厨の最後の砦はいつも御客様なんだよな ドキュメント自体の有用性を説明する事にはいつも失敗している 情けない連中だよ
242 名前:デフォルトの名無しさん [2016/05/21(土) 23:57:30.93 ID:Dey5A/Jl.net] >>238 ドキュメントがいらないって言ってるプロセスの提唱者がいるもんなら教えてくれ。 それとプロジェクトでの実体験はいつになったら語ってくれんの?
243 名前:デフォルトの名無しさん [2016/05/22(日) 00:00:37.02 ID:sxeEi6BC.net] >>238 前もって言っとくと ドキュメントがいらないと 詳細なドキュメントがいらないケースもある って主張は違うから。 詳細なドキュメントがいらないケースもあるって主張をしたいなら、そんなことはみんな知ってる。
244 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 00:21:40.24 ID:WwOYSBmy.net] あと、ドキュメントっていうのは、README.mdや ソースコードのリポジトリに含めたテキストファイルでもいい。
245 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 00:25:24.91 ID:dTyROPbW.net] ドキュメントがいらないと主張する人だって、生存期間が長く 一定の規模を超えるプロジェクト(他にも色んな条件はあるけど)には メモ書き程度の資料では対応出来ないことを知っている。 逆に、ドキュメントが必要だと主張する人だって、使い切りで 数キロにも満たないソフトウェアにドキュメントが不要な場合も あることは知っているはず。 この問題は魔法の言葉で片付けられる。 ケースバイケース。
246 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 00:34:36.57 ID:WENufHUB.net] >>242 正解。 問題はどう考えても前者なのに ドキュメント書きたがらない自称スーパープログラマー様。 こういう輩の存在がデスマーチの遠因。
247 名前:デフォルトの名無しさん [2016/05/22(日) 00:37:59.86 ID:sxeEi6BC.net] オブジェクト指向設計で想定してる典型的なプロジェクトくらい分かってるもんだと思ってたけど 複数人が関わる業務システムの開発プロジェクトって前提で語ろうぜ。 個人の趣味レベルならドキュメントいらないなんて語られても話が混乱するだけ。 体験談を語ってくれるならそれはありがたいけど、個人でやった場合だと明記してくれ。
248 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 00:48:43.39 ID:mLM/Nu20.net] マジでアマチュアばかりなのかここ コードが最も正確なドキュメントってことにまだ気付いてないのか なぜすでにある情報を複数箇所に劣化コピーしただけのゴミをありがたがるのか あぁもしかしてコード読めない人達でしたか?
249 名前:デフォルトの名無しさん [2016/05/22(日) 00:51:23.21 ID:sxeEi6BC.net] >>245 チームで開発するとき、お前の考えをチームメンバーと共有する必要があるんだけど どうやってんのかな? 開発が終わって運用チームに引き渡すときドキュメントを求めれるけどどうしてるの? 運用後の改修のたびにすべてのコードをチェックさせるのかな? 実体験があるとは思えないんだけど、違うなら回答して。
250 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 00:59:11.29 ID:mLM/Nu20.net] >>246 知識共有はメモ書きとモデルのイラストと対話だ 何度も言ってるだろバカが 逆に聞くがお前んとこじゃチームとの協調が必要な部分でクソの役にも立たんドキュメント渡すだけなのか? そりゃ失敗するわけだよ
251 名前:デフォルトの名無しさん [2016/05/22(日) 01:05:50.60 ID:sxeEi6BC.net] >>247 対話はその場にいないメンバーには伝わらない、忘れる、誤解する。 絵を描く必要があると認識してるんだから、描いた絵を残さないと後工程のメンバーが困る。 ソースだけじゃ伝達できないって認めてるじゃんw 設計の共有は文書+ミーティング。当たり前じゃん。
252 名前:デフォルトの名無しさん [2016/05/22(日) 01:08:07.29 ID:sxeEi6BC.net] >>247 開発が終わって運用チームに引き渡すときドキュメントを求めれるけどどうしてるの? 運用後の改修のたびにすべてのコードをチェックさせるのかな? についてはスルーかなぁ? 実際のプロジェクトでは重要なことなんだけど。
253 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 01:14:34.16 ID:mLM/Nu20.net] >>248 メモ書きやモデルはコードを書く過程で使うだけの中間生成物でしかない コードができればモデルを最も明確に表したドキュメントはコードそのものになる 中間生成物は時間とともに劣化するので害悪になる前に破棄しなければならない 後の行程に引き継ぐなんてもってのほか 横着していらん問題を持ち込むな 知識伝達は面と向き合って対話で行うんだよ その場に居ないから伝わらないなんて調整力の無さの言い訳をするな 支障が出るほど連日居ないゴーストメンバーなんて存在しねえよ
254 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 01:15:14.13 ID:mLM/Nu20.net] >>249 ユニットテストも知らないのか
255 名前:デフォルトの名無しさん [2016/05/22(日) 01:16:23.86 ID:sxeEi6BC.net] >>250 実際のプロジェクトの経験ないだろ?
256 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 01:17:12.92 ID:mLM/Nu20.net] >>252 お前がな
257 名前:デフォルトの名無しさん [2016/05/22(日) 01:21:10.56 ID:sxeEi6BC.net] >>253 客との合意を文書にしないってありえないから妄想語るのもいい加減にしようぜ。 バカもここまで来ると笑っちゃう。 客とも口頭で合意して終わりなんだ?? んーーー、どうなのお?
258 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 01:21:41.95 ID:WENufHUB.net] >>245 みたいなのが一番アマチュア 一人で何か作らせるにはいいが チームではスタンドプレーが多く使い物にならない >知識伝達は面と向き合って対話で行うんだよ はい、完全な炎上原因 こんな現場たくさん見てきたわ
259 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 01:27:01.44 ID:WENufHUB.net] >>250 実際に顧客と話をする営業やPMにソース読ませるの?馬鹿馬鹿しい
260 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 01:29:31.11 ID:mLM/Nu20.net] やれやれだ お前らはもう一生間違ってるドキュメントの更新に時間使ってろよ うちは客がリアルタイムに必要とするモノを作る もうそれでいいだろう 住み分けって大事だよホント
261 名前:デフォルトの名無しさん [2016/05/22(日) 01:32:47.40 ID:sxeEi6BC.net] >>257 客の要求を確認するのにも文書が必要なんだけど お前の顧客は口頭だけのあいまいな説明で納得してくれるし 求めている機能と違うとか言い出さない妄想上の存在なんだろうな。
262 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 01:34:21.91 ID:mLM/Nu20.net] >>256 ソースも読めない営業と仕事してんのか 優れたコードは素人でも部分的にソースを読めるもんだぞ 逆に素人がみても全くわからんようなコード書くから無意味なドキュメントがないと安心できなくなってるんだろうな
263 名前:デフォルトの名無しさん [2016/05/22(日) 01:35:55.78 ID:sxeEi6BC.net] >>259 笑わせに来てるだろw
264 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 01:39:45.41 ID:SSySxKMQ.net] >>259 これはさすがに苦しい言い分だと思うが…… printf("hello world\n"); これすらわからねえなんてザラじゃね?
265 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 01:40:32.08 ID:mLM/Nu20.net] >>258 文章がいかに曖昧なものか理解してない時点で素人丸出しだな ブツとして無意味と思いつつ形式的に書いて渡す事はあれどそれを真面目に解釈してモノを作るなんてバカな真似はアマチュアで卒業しとけよ システム開発ってのは進路調整の連続なんだよ ドキュメントの更新日がちょっと古かったらもう信用できない どのみち直接対話で確認を取りに行くしかない
266 名前:デフォルトの名無しさん [2016/05/22(日) 01:42:37.38 ID:sxeEi6BC.net] >>262 お前の目的は何なんだよww さすがに釣りだろ?
267 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 01:55:46.57 ID:mLM/Nu20.net] >>261 苦しくないって 例えばこんなコードは素人にゃわけわからん int x = 0; for(i = 0; i < len(a); ++i) x += a[i][IDX_UP] * a[i][IDX_PRC]; でも素人でもこれは理解できる 購入品リスト.合計金額() 客と密接に対話して作りあげたモデルから生成されるコードは客でも読める というか素人でも読めるように書くためのモデリングとコーディングがOOPの真髄だろ
268 名前:デフォルトの名無しさん [2016/05/22(日) 01:58:22.26 ID:sxeEi6BC.net] >>264 漢字オブジェクト名www
269 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 01:58:50.19 ID:mLM/Nu20.net] >>263 ドキュメント文化をやめてほしい 少なくとも疑問を持ってほしいだけだよ もし業界全体で馬鹿馬鹿しいドキュメント文化から解脱できたなら それはいったいどれだけの国益になるか そこを考えてほしいんだ
270 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 01:59:51.63 ID:mLM/Nu20.net] >>265 もしかしておじいちゃん?
271 名前:デフォルトの名無しさん [2016/05/22(日) 02:02:04.15 ID:sxeEi6BC.net]
272 名前:="../test/read.cgi/tech/1463663267/266" rel="noopener noreferrer" target="_blank">>>266 楽しませてもらってるけどスレと関係ない目的だから別のスレ立ててやってもらえるかな。 [] [ここ壊れてます]
273 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 02:03:26.44 ID:mLM/Nu20.net] >>268 関係はあるだろう さっきも言ったがOOPの真髄はドキュメント不要論にリンクするんだからさ
274 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 02:03:45.85 ID:WwOYSBmy.net] 客がドキュメントを読むんだよ。 知らないのか? 客がドキュメントを読むんだよ。
275 名前:デフォルトの名無しさん [2016/05/22(日) 02:05:22.19 ID:sxeEi6BC.net] >>269 頼むからそんなとんでも理論で絡んで来ないで。 お前は自分のスレを立てるに足る逸材だから。
276 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 02:15:56.49 ID:mLM/Nu20.net] >>270 客がドキュメント読みたきゃ読めばいい 客が客の時間使ってドキュメントを読もうがサボって漫画を読もうがそれは客の勝手だ だけどこっちの開発はそれじゃ進まねえんだよ
277 名前:デフォルトの名無しさん [2016/05/22(日) 02:20:15.89 ID:sxeEi6BC.net] >>272 客の期待通りの設計になっているかを確認するためにもドキュメントを作成する。 なんとそのドキュメントがメンバー間で理解を共有するための役にも立ってしまう。 すごいじゃん。
278 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 02:25:01.82 ID:WwOYSBmy.net] ドキュメントを読む時間 × メンバーの数 = コスト
279 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 02:29:51.66 ID:mLM/Nu20.net] >>273 ドキュメントを正確に書ける保証はない 客がドキュメントを正確に読める保証はない 保証はないと言ったが実際には正確でないほうが多い 本当の意味で客が期待する設計はドキュメントからは生まれない お互いが認識するモデルをすり合わせるために対話の時間をいかに多くとるかで決まる
280 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 02:33:12.47 ID:mLM/Nu20.net] ましてや開発メンバー全員が同じ文章から同じ意図を読み取るなど夢のまた夢
281 名前:デフォルトの名無しさん [2016/05/22(日) 02:37:48.99 ID:sxeEi6BC.net] >>275 口頭じゃ後から確認できないんだから文書として残す必要があるよね。 ってことなんだけど、こいつはそんなちゃちな世界には生きてないんだろうな。 もう頼むからこのスレから巣立って。
282 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 02:43:09.84 ID:WENufHUB.net] >>259 本当馬鹿馬鹿しいな おまえの会社はソース読めるエンジニア上がりの営業かもしれんが 他行ったらそんな俺ルール通用しないからな >>266 個人的希望をばら撒くスレじゃねーから >>274 口伝のほうがコストかかるだろ そもそもユニットテスト推奨してるやつが 口伝推奨するとか矛盾もいいとこ
283 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 05:16:18.29 ID:PykTFw3U.net] 口伝する人がいない。いなくなってしまった。
284 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 05:17:10.39 ID:WwOYSBmy.net] 結局ソースコードを読むのが 一番コストがかからない
285 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 06:36:24.05 ID:OmI05SCB.net] なんでおまえらってオブジェクト指向が理解できないとOOPは甘えとか言って投げ出すの?マジで馬鹿なの?マジでタヒぬしかないの?
286 名前:デフォルトの名無しさん [2016/05/22(日) 10:29:24.79 ID:sxeEi6BC.net] 何をコーディングするか設計するのが設計なのにコードを読めってアホ過ぎる…。 うざいから素人は書き込むなよ。
287 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 10:41:33.67 ID:vKoFE7Z9.net] 死守すべき拠点・砦・戦線に当たる部分はドキュメントすべき それ以上細かいのはいらない
288 名前:デフォルトの名無しさん [2016/05/22(日) 10:48:03.65 ID:sxeEi6BC.net] ドキュメントの範囲は好きにしていいから、どうやって設計するか語ろうぜ。 設計プロセスについて語れる奴はいないの?
289 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 11:42:56.90 ID:0426LZJd.net] 設計もTDDさえしてればなんとかなるんだよなあ
290 名前:デフォルトの名無しさん [2016/05/22(日) 11:47:16.20 ID:sxeEi6BC.net] 具体的な話なしに略語しか書けない奴って経験があるように感じさせないんだよなあ。
291 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 11:50:37.50 ID:0426LZJd.net] TDDをご存じない?
292 名前:デフォルトの名無しさん [2016/05/22(日) 11:51:57.78 ID:sxeEi6BC.net] 経験ないと具体的な話はできないからなあ。
293 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 11:54:53.76 ID:EaQ4G/f7.net] >>282 俺もそう思う 何を何のために設計してるのかと それを知りたければソースコードを読めって破綻してる じゃソースコードは何を実現するためのソースなのかと? 不具合もソースがそうだからそれが正しいとか言っちゃうのか?
294 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 11:56:01.52 ID:EaQ4G/f7.net] 設計書書かない奴は書き込み禁止 だって設計してないじゃん
295 名前:デフォルトの名無しさん [2016/05/22(日) 12:35:41.84 ID:sxeEi6BC.net] >>290 ほんとな。 オブジェクト指向設計について語ろうってスレにわざわざ書き込む意味が分からん。 興味がない、語る内容がないなら書き込む必要ないのに。
296 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 12:39:57.00 ID:WwOYSBmy.net] >>289 > 何を何のために設計してるのかと > それを知りたければソースコードを読めって破綻してる 概要をつかむためだよ。 だから設計書には概要しか書かれない。 実際の詳細はソースコードを読めになるのは当たり前。
297 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 12:42:21.47 ID:WwOYSBmy.net] 設計書は概要をつかむためで概要しかかかれないのだから 当然、設計書に書かれたものから、ソースコードを生成できるわけじゃない。 設計書は方針、こんな感じにしてくださいねっていうもの。 設計書を見て書くというのは、設計書に反しないように作るってことであって 設計書をソースコードに翻訳する作業じゃない。 そして往々にして、実際にソースコードを書いてると、 設計に問題が出てくる。 この時設計書も直さないといけない。
298 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 12:59:08.54 ID:vqfBgWhe.net] >>277 何度言えばわかるのかなぁ 事後ならコードというその時点で最も信頼できる読みやすいドキュメントがあるだろう >>278 文章のほうが遥かに高くつく あんたもプロになればわかるけど設計書なんて1回書いたきりで終わりになんかならねえのよ 口頭ならミーティング1セッションで終わるやりとりがドキュメントだと何回ものファイル更新・交換になってしまう あぁいちおうお前もバカそうだから念押しするがこれ設計〜製造の話な 後に残す文章はコードがあるからまた別の話だ
299 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 13:02:48.15 ID:JErM/sdi.net] 日本語で書かれた設計書で概要をつかんで、ソースコードを書くフェーズは、”詳細設計”なんです。 単に、日本語で書かれた設計書をソースコードに単純翻訳しているのではありません。 「ソースコードを書く」=「詳細設計」なんです。 だから、実際にソースコードを書いていると、詳細設計的に問題が発生して書き直しとなるし、場合によっては一つ前の日本語で書かれた設計書まで戻って直す必要も出てきます。
300 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 13:03:07.84 ID:vqfBgWhe.net] >>280 正解 加えて言えば読めるコード書けないバカが日本語なら書けると勘違いしてドキュメントという幻想にすがりつく 馬鹿馬鹿しいよ あいつらの書いたドキュメントなんてテストしてないスクリプトへのリプレースみたいなもんだ 読みやすくなるどころか開発言語より読みにくくなってる 読みにくいだけならまだしも開発言語で書いたコードと平気で剥離する
301 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 13:05:39.79 ID:vqfBgWhe.net] >>282 >>289 設計するためにコードを読むんじゃない 設計するためにモデリングするんだよ そしてモデリングの過程でコードを書くんだ 順番を間違えるな
302 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 13:13:22.82 ID:WENufHUB.net] >>294 君が作ったソースの中身を説明するためにミーティング開催するの? ドキュメント書かないわ、人件費の意識ないわ、終わってるな
303 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 13:28:40.61 ID:k1JTbXad.net] じゃあ製造に失敗しないパーフェクトな設計書って具体的に何が書いてあるの?
304 名前:デフォルトの名無しさん [2016/05/22(日) 13:44:35.01 ID:sxeEi6BC.net] >>297 そんな言い合いしてても無意味だから設計のプロセスについて語ろうぜ。 どんな手順でやってて、それぞれのステップの成果物は?
305 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 13:51:29.86 ID:WwOYSBmy.net] >>300 成果物なんて後から出てくるもの。 まずはステップの目的を考えなさい。
306 名前:デフォルトの名無しさん [2016/05/22(日) 13:56:34.04 ID:sxeEi6BC.net] >>301 ステップのゴールを決めるのがプロセスなんだけど…。 めんどくさいから素人は書き込むなよ。
307 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 14:02:56.02 ID:6l64NX2q.net] コード=ドキュメントってのは理想ではあるんだが コードってのはこう動くってことしか書いてなくて、しかも実装者以外の人間が欲しい情報よりも粒度が細かい。 あと、その裏にある開発者の意図やシステム特有の事情とかは書かれないしコメントで補完するにも限界がある。 一方でドキュメントを手で作成しても改訂のたびに修正する労力と修正後にソースと同期をとる労力がバカにならないし 大量にドキュメントを書いてもそんなの見ない、見ようと思っても索引や検索が不十分で探し廻らなきゃならないで 結局知ってそうな人に聞くのが早い、ドキュメントの利点なんて新しく加入した人への説明を(形式上)省けるくらいの利点しかない、 てなことになる。 なので現実的な最適解としては、できるだけコードからリバースして「必要な情報だけ」を自動的に抽出する、 そのためのツールを用意し、また抽出しやすいようなコードを書く、それでは作成できないけど本当に必要なものは手で作成する、 て辺りになるんじゃないかと思う。 で必要な情報てのは、画面とか機能とかサブシステムとかの一覧とそれらの間のI/F詳細くらいで、 それ以上はソース読めでいいように思う。
308 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 14:07:39.59 ID:WwOYSBmy.net] >>302 ステップの目的を成果物生成にしてはいけない。 そんなことをやると理由はないけど作りました。 作って終わり、使われないものが出来上がるだけ。
309 名前:デフォルトの名無しさん [2016/05/22(日) 14:13:48.86 ID:sxeEi6BC.net] >>304 開発プロセスの本くらい読みなよ。 まともな開発プロセスならステップと成果物が決まってるから。 そんなことすら知らない素人のくせに知ったかぶりすんなよ。 ちょっと勉強したらどんだけ恥ずかしい書き込みしてるか分かるから。
310 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 14:14:28.75 ID:WENufHUB.net] >>304 成果物なしでどうやってプロセスの完了を判断する? ソースコードも成果物だし、 成果物のチェックはどんなプロセスでも必要だよ
311 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 14:19:58.15 ID:vKoFE7Z9.net] これだけ延々と中身の無いレスを垂れ流す奴が書くドキュメントを読まされるという苦行
312 名前:デフォルトの名無しさん [2016/05/22(日) 14:29:28.77 ID:sxeEi6BC.net] コードだけでいいって言ってる奴がしつこく書き込む矛盾なw ドキュメントの範囲は好きにしていいからプロセスについて語ってくれって言ってんだけどなあ。
313 名前:4qmWB+Wj mailto:sage [2016/05/22(日) 14:34:56.12 ID:Pvh7yqZB.net] (..´・ω・).oO(今日も伸びてんなぁ
314 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 14:37:04.55 ID:WwOYSBmy.net] >>305 > まともな開発プロセスならステップと成果物が決まってるから。 それはまともじゃない開発プロセスか、 お前が読み間違ってるだけだな。 読むといいよw www.jaspic.org/event/2005/SepgJapan/presentations/5A1.pdf 俺がいいたいことが書いてあった。 d.hatena.ne.jp/Mic_K/20100516 CMMIの教本(PDFが配布されてますね)には、いろいろと”典型的な作業成果物”や”サブプラクティス”なんていろいろ書いてます。 が、そんなことはどうでもいい。参考にもなりません。 そんなことよりも、 そのプロセスエリアが「本質的に」何をすべきと主張しているかをじっくりと「考える」ことが大事。 そして、自分たちの組織文化的にどういうことがそれに当てはまるか「解釈」することがもっと大事。 バカなCMMI推進者たちは、すぐに文字通りにやろうとします。考えもせず。 これこそ、「形骸化のはじまり!」 「制度化」というCMMIでよく出てくる言葉の意味を理解してません。 逆説的ですが、「CMMIをやろうとすればするほど、CMMIを実装できない」 というジレンマに陥ります。 なぜか? かんたん。「CMMIの本質を理解してないから?」 そもそも、組織のみんなは日々の業務を一生懸命こなしてます。日々、大小さまざまな改善を積み重ねてませんか? なのに、CMMIでプロセス改善しよう、って言ったって、「いや、今だって改善してるけど?」的な議論になります。 つまり、CMMIなんて所詮枝葉、形つまり、方法論にすぎないのに、方法論の実装を目的にしちゃうCMMI推進者が「ガン」なわけですね。
315 名前:デフォルトの名無しさん [2016/05/22(日) 14:40:22.53 ID:sxeEi6BC.net] >>310 いろんなメンバーがかかわるプロジェクトでプロセスがないってねえ…。 ま、>>291 だな。 不要って思うなら使わなきゃいいじゃん。
316 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 14:42:17.90 ID:6l64NX2q.net] 他人の作業を自動化・効率化するプログラムを作っているはずなのに 自分の作業の自動化・効率化を(自分の頭で)考えないで人力でなんとかする(しろ) って人が結構いるよなぁ
317 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 14:47:32.63 ID:EaQ4G/f7.net] >>308 でも彼の理論で言うと もういきなりソースコード組むしかないよね ファイルフォーマットも通信プロトコルもDBのテーブルも後から付いてくる心配するな! 突っ切れ! 筋肉でプログラミングするタイプかな?
318 名前:デフォルトの名無しさん [2016/05/22(日) 14:50:18.38 ID:sxeEi6BC.net] >>313 プロセスのステップが明らかになればそこもはっきりすると思ってさ。 お互いの頭の中にぼんやりとしたイメージしかない状態で設計から構築に進むって プロセスがまったく想像できないから詳しく語って欲しいじゃん?
319 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 15:09:12.83 ID:EaQ4G/f7.net] >>314 多分こちらが疑問に思ってるようなことは 彼にとっては「そんなのキーボードに手を置けばゴーストが囁くだろ常考」の一言なんだよ そして粘土をこねるように彫刻を刻むように手を入れてって納期が来たらそこで完成 恐らくそんな開発を言ってる 受け取った客が検収すると不具合ばっかりで使い物にならないケース
320 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 15:11:50.07 ID:SSySxKMQ.net] プロセスでふと思ったけど まあ前提として要件がそこそこ決まってるとして オブジェクトの洗い出しみたいなことするよね でまあデザインパターンあたりかじってりゃ たとえばここはテンプレートメソッドでがちがちにしちゃろーとか ストラテジーにしてゆるーくしちゃろーとか なんだけど その判断のプロセスは自分でもわからんな 言語化できてねえ
321 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 15:13:18.77 ID:SSySxKMQ.net] っつーか言語化できたら本書いて一儲けできそうだなwww
322 名前:デフォルトの名無しさん [2016/05/22(日) 15:17:51.26 ID:sxeEi6BC.net] >>316 オブジェクトの洗い出しって具体的にどんな感じでやってる? 特に機能的なオブジェクトの洗い出しはアバウトにやってて、もうちょっと何かないかなあって感じてて。
323 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 15:24:46.95 ID:SSySxKMQ.net] >>318 俺もその辺が明確にできればなーって期待してこのスレみてる アプローチ方法的にはなんかER図作るときみたいになっちゃってるかもしんない 最初にエンティティ出してそれに振る舞いついたらオブジェクトみたいな うん、うまく言語化できんやっぱり 上級者に期待だわ
324 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 15:27:46.05 ID:k1JTbXad.net] 設計書厨はまず設計書に書く内容をここで言ってみな 話はそれからだろう
325 名前:デフォルトの名無しさん [2016/05/22(日) 15:32:18.74 ID:sxeEi6BC.net] >>319 俺もER図書いてエンティティを洗い出すな。 そこからクラス図を書く感じ。 エンティティ的なクラスを決める基準はかなり明確なんだけど機能的なクラスは難しいよな。 デザインパターンを考えながらなんとなく決めてるけど、判断に悩むことが多い。 要件定義から設計へ移行する辺りの明快な指針があんまりないんだよなあ。
326 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 15:32:30.31 ID:WwOYSBmy.net] > うん、うまく言語化できんやっぱり そういや中二病っぽく「言語化」とか言ってる アニメか漫画があったよな。 それのパクリかw
327 名前:デフォルトの名無しさん [2016/05/22(日) 15:33:49.99 ID:sxeEi6BC.net] 要件定義から設計ってより構築の手前の具体的な設計の辺りかな。
328 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 15:34:57.20 ID:WwOYSBmy.net] >>321 > 俺もER図書いてエンティティを洗い出すな。 俺は、rails generateでモデルを作るな。 そのコード上の定義からER図は rails-erdでモデルを 変更するたびに自動的に生成される。 見方を変えれば、コードを使ってER図を書いているだけ。 やってることは、あんたと一緒でそれがより効率的になっただけだね。 マウスでポチポチやらないで、コードを書くだけだから楽だよ。 修正履歴もわかるしね。
329 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 15:35:56.44 ID:WwOYSBmy.net] ちなみに、モデルっていうのはクラスだから Rubyコードを使ってER図を書くと同時にクラスも作れる。
330 名前:デフォルトの名無しさん [2016/05/22(日) 15:38:48.31 ID:sxeEi6BC.net] >>324 そこは好きなツールを使えばいいと思う。 それより設計指針的な話で、どういう基準でクラスを選択するかを聞きたい。
331 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 15:39:06.09 ID:WwOYSBmy.net] rails-erdの動画があったよw Create an ERD in Rails in under 30 seconds. https://www.youtube.com/watch?v=SETJf4cB_NU
332 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 15:43:24.37 ID:WwOYSBmy.net] >>326 大概はモデルクラスだろ? 画面があれば、コントローラクラスが必要になる。 機能はメソッドだから機能ごとにクラスは作らない。 やることってその程度じゃね?
333 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 15:44:05.88 ID:JaLdteXY.net] >>321 悩んでる時点でもうアウトだ
334 名前: 幾ら悩んでも明確な答えは出てこない そんなフワッとした状態で設計書という名の便所の落書きを幾らかいてもなにも進展しない 結果はコードを書くしかないんだよ コードを実際に書けば次にどうするかの指針が見えてくる 基本中の基本だわな [] [ここ壊れてます]
335 名前:デフォルトの名無しさん [2016/05/22(日) 15:49:05.35 ID:sxeEi6BC.net] >>328 業務的の機能のきれいな構成だな。
336 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 15:50:23.31 ID:SSySxKMQ.net] >>321 機能的なクラスって少し掘り下げて教えて欲しい 〜Utilityとか〜Helperとかの名前で実装する類のもの? だとすると設計段階では洗い出さないかな……
337 名前:デフォルトの名無しさん [2016/05/22(日) 15:51:55.61 ID:sxeEi6BC.net] >>329 設計が決まってないのにどんなコードを書くのかな? おおまなか設計がなくちゃコード書けない。
338 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 15:53:09.10 ID:WwOYSBmy.net] > デザインパターンを考えながらなんとなく決めてるけど、判断に悩むことが多い。 デザインパターンを考えながら決めるのレベルで まだ初心者なんだよな。 俺がデザインパターンを知ったのはもう15年ぐらい前になるけど、 その時の感想は、みんな(本の作者)も同じこと考えてるなぁ〜。 俺が考えた「アレ」をこんなに体系的にまとめてくれて嬉しいわ。だった。 幾つか自分で同じようなものを実装したこともあったしね。 デザインパターンの解説にも書いてあるけど、 新しい何かではなくて、過去の人が考えていたことに名前をつけてまとめただけ。 だから俺の場合、作るときにああすれば良いんじゃね?って思いついて、 その後にデザインパターン本みて抜けや考慮漏れなどを補強する感じ。
339 名前:デフォルトの名無しさん [2016/05/22(日) 15:54:42.20 ID:sxeEi6BC.net] >>331 だいたいデザインパターンが扱ってるレベルのクラスと想定して欲しい。 業務ルールをチェックする機能をどうするかとか。
340 名前:デフォルトの名無しさん [2016/05/22(日) 15:56:32.49 ID:sxeEi6BC.net] >>333 デザインパターンのそんな当たり前の説明をドヤ顔でされても…。
341 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 15:58:10.11 ID:WwOYSBmy.net] >>334 > 業務ルールをチェックする機能をどうするかとか。 Railsだとバリデーションを使う。 基本的なのはあるが、特殊な業務ルールであれば カスタムバリデータを自作すればいい。 railsguides.jp/active_record_validations.html 標準のやり方がってそれに従えばクラスが出来上がるので クラスをどうするか?とかを意識することは少ない。
342 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 15:58:39.18 ID:WwOYSBmy.net] >>335 当たり前の説明をしただけだけど、 何か気に触ったの?w
343 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 16:01:24.72 ID:SSySxKMQ.net] >>334 難しい例だね……ちょっと実装よりというか たいがいフレームワークで作られちゃってるというか 例に出してくれたバリデーションまわりって設計段階ではやっぱり洗い出さないなあ 要件みてこんなバリデーションいるよねー、程度 で、たいがいフレームワークにバリデーションの仕組みあるから やっぱり自力で洗い出さない…… 複雑なバリデーション作るにしてもフレームワークの流儀に沿うだけだしね 派生してちょろちょろ処理書いて決められたreturnするってだけの
344 名前:デフォルトの名無しさん [2016/05/22(日) 16:03:43.19 ID:sxeEi6BC.net] >>336 クラス内で完結しないチェックもできんの? 複数のクラスを参照することが必要な場合はどうするのかとか?
345 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 16:06:23.48 ID:JaLdteXY.net] >>332 理解力ねえなあ コード書きながら考えるんだよ 具体的なコードがあるから この方向性はダメだなとか これは行けそうだとか これがありならこっちはどうだとか 思考が展開していく 簡単な話だろ 設計書屋さんって1手目から最後まで読み切ってから1手目を打とうとしてるんだよね そんなんでうまくいくわけないでしょ
346 名前:デフォルトの名無しさん [2016/05/22(日) 16:09:12.64 ID:sxeEi6BC.net] >>338 税制の変更やら社内ルールの変更やらは想定される訳で その場合の変更に対応できるきれいなデザインって何だろうっていつも悩む。 モデルとか画面の設計はわりと簡単で、業務ロジックの設計・構築がメインじゃない。 設計段階で洗い出さないならいつ設計するんだ? 設計と構築の区切りをどこまで明確にしてるか分からないけど、コーディングの前に 設計する必要はあるじゃん。
347 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 16:16:53.72 ID:JaLdteXY.net] >>339 このレベルで偉そうにしてたのか
348 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 16:18:54.34 ID:WwOYSBmy.net] >>339 複数のクラスを参照することが必要ならば、 参照すればいいだけだろう?参照するしかないし。 そんなのデザインパターンがでるまでもない。
349 名前:デフォルトの名無しさん [2016/05/22(日) 16:20:48.62 ID:sxeEi6BC.net] >>343
350 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 16:23:08.82 ID:WwOYSBmy.net] >>344 それって、ぐうの音も出ないって意味?
351 名前:デフォルトの名無しさん [2016/05/22(日) 16:27:04.89 ID:sxeEi6BC.net] ちょうど今電王戦見てるから将棋ソフトで考えてみるとさ。 駒クラスがあって王・飛車とかは駒のサブクラスにしようかって感じだろ。 盤面情報と思考ロジックはどんな感じのクラスにするのがいいだろう?
352 名前:デフォルトの名無しさん [2016/05/22(日) 16:28:08.95 ID:sxeEi6BC.net] >>345 失礼。クリックミス。
353 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 16:28:29.75 ID:JaLdteXY.net] >>345 このid sexさんはちょっと昔ながらの人なんだろうね 基本的なフレームワークの扱いもロクに知らんって露呈してしまった おそらく設計書(笑)ばっかり書いてて最近の開発現場の常識知らないんだろうな おそらくもうすぐ定年だろう かわいそうだからあんまりいじめてやらんといて
354 名前:デフォルトの名無しさん [2016/05/22(日) 16:29:56.23 ID:sxeEi6BC.net] >>345 失礼。クリックミス。
355 名前:デフォルトの名無しさん [2016/05/22(日) 16:30:23.58 ID:sxeEi6BC.net] >>348 具体例を出したからお前の実力を見せ付けて欲しいな。
356 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 16:37:00.58 ID:WwOYSBmy.net] フレームワーク=設計だと考えればいいよ。 デザインパターンっていうのは設計するときに必要なものだけど、 フレームワーク作っている側がデザインパターンを使って設計してる。 こっちは、足りない部分を埋めるだけ。 もちろん、基礎知識としてデザインパターンは必要。 フレームワークに足りない部分を拡張するときには必要になる。 だけど定型的なそんな処理で設計なんて考える必要はない。 フレームワークを導入した時点でほとんどが終わっている。
357 名前:デフォルトの名無しさん [2016/05/22(日) 16:40:12.95 ID:MeU4g4+w.net] sexじゃなくてsxeやん
358 名前:デフォルトの名無しさん [2016/05/22(日) 16:41:15.97 ID:sxeEi6BC.net] >>351 ややこしい業務ロジックが色々あるときはどうしてる?
359 名前:デフォルトの名無しさん [2016/05/22(日) 16:44:19.40 ID:sxeEi6BC.net] >>351 具体例があったほうが分かりやすいから将棋ソフトの例で考えてみてよ。 思考ルーチンは定跡+何らかのロジックがあるし、思考ルーチンのどんどん改修されるとして。 ロジックの細かい部分は俺も知らないし、大まかな構成で十分。
360 名前:デフォルトの名無しさん [2016/05/22(日) 16:47:39.90 ID:WF/9GeMl.net] まあそんな熱くなるなってw
361 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 16:51:47.45 ID:EaQ4G/f7.net] 俺は要件定義で 対象のシステムの構成図 ユースケース図 機能一覧 画面一覧 説明書 まで書く 設計書は頭に構成図貼り付けて 機能一覧に基づいて機能毎に 概要、機能詳細、画面詳細、データフロー、シーケンス図、ログ、メッセージ、ファイルフォーマット、テーブルetc を書く 基本的にはログやメッセージみたいな共通部分以外で 機能より細分化したクラスは作らない
362 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 16:53:43.65 ID:WwOYSBmy.net] >>353 > ややこしい業務ロジックが色々あるときはどうしてる? ややこしい業務ロジックなどない。っていうのが答え。 処理が多くて面倒くさいだけだろう? もしくは設計が必要な部分(フレームワーク)と 設計が必要ないような些細な部分が、ごちゃまぜになってる。 フレームワークを使ってなさそうだし、綺麗に分離できてないんだろう。 ちなみに「設計が必要ないような些細な部分」といったが この部分が重要ではないという意味じゃないぞ。 むしろ顧客にとっては(当然だが汎用的なフレームワークより) この部分の方にこそ価値があって重要な部分。 重要だからこそ、出来る限り汎用的な部分をそぎ落として 改修が入るコードのみにする。そこまで削ぎ落とすから設計なんぞ不要。 フレームワークを使うことで設計はどこかの誰かがやってくれるから 通常の開発で設計なんぞ、終わってることだから、やらない。 あんたは、この改修が入る部分と設計が必要な部分をあわせたままやってるから、 ロジックの改修時に設計をどうするかって話がでてくる。
363 名前:デフォルトの名無しさん [2016/05/22(日) 16:54:30.16 ID:sxeEi6BC.net] 具体例を出したら途端に書き込みが減ったけど考えてくれてるかな? 盤面をクラスとして作るべきか、思考ルーチンの中で使われる情報に過ぎないのか? って疑問がまず出てくるけどどう判断する?
364 名前:デフォルトの名無しさん [2016/05/22(日) 16:56:03.51 ID:sxeEi6BC.net] >>357 将棋ソフトの例で一緒に考えよう。 実際にきれいな考え方を示してくれたら素直に認めるから。
365 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 16:59:15.28 ID:WwOYSBmy.net] >>354 > 具体例があったほうが分かりやすいから将棋ソフトの例で考えてみてよ。 将棋ソフトで設計が必要なのは、まずインターフェース部分。 コマの配置データから、盤面の画像を配置すればいいだけ。 ここは思考ルーチンの改修とは全く別の話だから、 思考ルーチンの改修時に触らなくていいように分離する。 ということで、インターフェース部分の設計は終わり。 思考ルーチンの改修時に考えなくていい。 他に何を設計するんだ? あとは単なるアルゴリズムだけだろう。 やるとしてもデータを所持して、思考ルーチンを呼び出すだけの 単純なインターフェースを考えればおしまい。
366 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 16:59:59.08 ID:WENufHUB.net] rails含めてMVCフレームワークで事足りる案件なら すでに構成が確定してるから クラス設計とかクラス図とか全く必要ないよな 俺は未だにクラス図が必要になるケースがわからん 科学計算とか人工知能とかそちら方面かな?
367 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 17:02:51.37 ID:WENufHUB.net] プロセスの成果物については考え方違うが>>351 は同意だわ
368 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 17:03:39.39 ID:WwOYSBmy.net] >>358 > 盤面をクラスとして作るべきか、思考ルーチンの中で使われる情報に過ぎないのか? > って疑問がまず出てくるけどどう判断する? 何度も同じような指摘をしてる気がするけど、 お前は役割の分離ができていない。 それらをの、改修が入る部分と設計が必要ない部分を合わせたままやってるから ロジック(思考ルーチン)の改修時に設計をどうするかって話が出てきてる。 盤面なんて、コマの配置データさえあれば、再現できるだろ。 最悪文字だけのアスキーアートでもいい。 もしこれをアニメーションバリバリの3Dで表現しようと思ったら 設計が必要になるだろうけど、それはあくまでUIレベルの話。 思考ルーチンのことなんか考慮する話じゃない。
369 名前:デフォルトの名無しさん [2016/05/22(日) 17:04:12.31 ID:sxeEi6BC.net] >>360 電王戦は見てない人か? こっちの説明不足だったけど棋譜をやり取りするインタフェースがあれば UIはなくてもいいとする。 棋士の指した定跡とか駒の配置とかを元に手を決める思考ロジックがメイン。 基本はありえる手をたくさん読んで、なんらかの基準で点数をつけて、 最適な手を選択する。
370 名前:デフォルトの名無しさん [2016/05/22(日) 17:06:42.51 ID:sxeEi6BC.net] >>363 反応がないから話のきっかけとして書いた。 お前が違う考え方をするならお前の考える設計を出してよ。
371 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 17:06:55.21 ID:WENufHUB.net] 将棋ソフトってコア部分のアルゴリズムを一人か数人の天才が作ってそうで チーム開発とか設計の議論には向いてなさそう
372 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 17:07:48.31 ID:WwOYSBmy.net] >>364 盤面をクラスとして作るべきかなんていい出したのはお前だろ? 思考ロジックに必要な盤面のデータなんて 単なる2次元配列で十分だろ。 あえてクラスを持ち出すならば、 2次元配列クラスを作ればおしまい。 こんなの考えるまでもない。設計なんて呼べるほどのものじゃない。 片手間で簡単に書ける程度。
373 名前:デフォルトの名無しさん [2016/05/22(日) 17:08:33.88 ID:sxeEi6BC.net] >>366 設計って言い方が曖昧だったな。 きれいなクラス構成を考えて欲しい。 ステップとかの話じゃない。
374 名前:デフォルトの名無しさん [2016/05/22(日) 17:10:20.90 ID:sxeEi6BC.net] >>367 俺の考えと違うならお前の考えを出してって言ったろ。 将棋ソフトを構成するクラスは何? スレでやり取りする内容だから厳密に詳細まで落とせないのは分かってるけど ある程度のイメージがつかめるレベルで頼む。
375 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 17:12:08.26 ID:WwOYSBmy.net] つーか、なんで思考ロジックって言ってるのに クラスとか設計が出てくるのか? システムっていうのは設計が必要な部分と 設計が必要ない部分に分けろよ。 そして普段は設計が必要ないようにしろよ。 そうやってるから俺は普段設計なんてしなくていいって言ってるわけで、 それはフレームワークがすでにやってくれてるからって話なんだが。 将棋ソフトで必要になる設計は、思考ロジック部分の外側だ。 仮に思考ロジックを入れ替えることが可能な "設計" の 将棋ソフトがあれば、各自が将棋ソフトを作ること無く、 ロジック部分に専念できるだろ。 フレームワーク導入っていうのはそういうこと。
376 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 17:12:10.64 ID:EaQ4G/f7.net] 俺だったら将棋クラス1つかな
377 名前:デフォルトの名無しさん [2016/05/22(日) 17:13:27.05 ID:sxeEi6BC.net] >>367 別の人と勘違いした。 盤面情報ってのは現在の盤面、何手か先の盤面の話。 どうやって持つかは設計によるけど情報としては必要だろ。
378 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 17:14:36.63 ID:WwOYSBmy.net] >>369 > 将棋ソフトを構成するクラスは何? 将棋ソフトをどうするかで変わる。 作りたい機能によって設計は変わるからだ。 今は、思考ロジックを改修するって話しか出てないから、 思考ロジッククラスと、それ以外のクラス(UI担当クラス)しか言うべきことはない。 ちなみにUI担当クラスは、アスキーアートでやるなら 1クラスで十分だからな。
379 名前:デフォルトの名無しさん [2016/05/22(日) 17:16:25.55 ID:sxeEi6BC.net] >>370 画面と簡単なロジックしかないシステムばかりじゃないぞ。 設計もなしに開発できるほど将棋ソフトが簡単だとは思えないけどどうやって開発すんの?
380 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 17:17:48.33 ID:WwOYSBmy.net] >>372 > 盤面情報ってのは現在の盤面、何手か先の盤面の話。 何手か先って未来の情報なんてわかるかよw 先を読んだ結果(つまりキャッシュ)の話でもしてるのか? そんなの思考ロジックによって違うのだから、 思考ロジックとは別のクラスにすることはできん。 盤面情報をもった汎用的なキャッシュクラスというのであれば 2次元配列で十分だろ。 あえてクラスにするならば、2次元配列クラスだw
381 名前:デフォルトの名無しさん [2016/05/22(日) 17:19:25.70 ID:sxeEi6BC.net] >>373 思考ロジックの構成なんて俺も知らないから考えてってお題を出してる。 説明がないって言われても困るわ。 業務システムだって担当したことない業界のシステムを設計することだってあるんだから 将棋ソフトなんてむしろイメージしやすいだろ。 細かい点で揚げ足取るつもりはないから設計の腕を見せてくれ。
382 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 17:19:25.93 ID:WwOYSBmy.net] >>374 お前、将棋のAIのアルゴリズムが難しい話と ソフトウェア設計の難しさをごっちゃにしてるだろw 業務ロジックでも同じ間違いしてたよな? 業務ロジックがややこしくても、 設計自体は単純。 殆どが汎用的なフレームワークで終る程度。
383 名前:デフォルトの名無しさん [2016/05/22(日) 17:20:29.91 ID:sxeEi6BC.net] >>377 え?アルゴリズムクラス1つの設計にしちゃうの?w
384 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 17:20:38.57 ID:WwOYSBmy.net] >>376 まだ理解してないのか? 思考ロジックに必要なのはアルゴリズムであって 設計じゃない。 思考ロジックの中に設計はないって言ってるのに、 その設計を聞かれても、設計はないって答えるしかないだろw
385 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 17:20:58.83 ID:WENufHUB.net] >>370 半分同意なんだけど MVCフレームワーク使ったらクラスまわりの設計不要はそのとおり、 しかしだとするとこのスレは何を語るスレなのか >>1 の真意を知りたいわ
386 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 17:23:11.96 ID:EaQ4G/f7.net] 将棋は例が悪いよ もっと万人が完成形を一致できるものじゃないと 将棋は何もやらないとテトリスみたいに詰め込むと短く終わるタイプじゃん
387 名前:デフォルトの名無しさん [2016/05/22(日) 17:23:20.30 ID:sxeEi6BC.net] >>375 あのさあ…、将棋ゲームはやったことないの? 相手がこうさしたら、こっちはこう指して、こうなると悪くなるから、こっちの手を選ぼう ってロジックの話よ。 電王戦の将棋ソフトって言っても全然伝わらないもんなの??
388 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 17:25:13.14 ID:WwOYSBmy.net] >>378 むしろ、なんで1つのクラスにしないのかわからんのだが? (2次元配列クラスぐらいなら言ったよ?) お前、設計をしなくていい部分を無理やり設計しようとしてるから わけわからんことになってるんだろw アルゴリズムをクラスにするのは、 上で書いた思考ロジックを切り替えやすくする 将棋ソフトウェアのフレームワークを俺が設計したから。 思考ロジックの "中" には設計は不要で、 思考ロジックの "外" に設計を行うことで 簡単に思考ロジックを切り替えられるようにする。 業務システムも、通常は業務ロジック部分を作るのだから設計は不要。 設計とはこういうこと。
389 名前:デフォルトの名無しさん [2016/05/22(日) 17:25:50.40 ID:sxeEi6BC.net] >>381 他にいい例があるなら出してよ。 抽象的な議論だとくだらない言い争いになって不毛だから具体例で語りたい。 将棋ソフトはプログラマならイメージできると思って出したんだけど。
390 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 17:26:08.32 ID:WwOYSBmy.net] >>382 > 相手がこうさしたら、こっちはこう指して、こうなると悪くなるから、こっちの手を選ぼう > ってロジックの話よ。 だから、何度も言うように設計はいらねーよな?
391 名前:デフォルトの名無しさん [2016/05/22(日) 17:27:28.13 ID:sxeEi6BC.net] >>383 「将棋ソフトウェアのフレームワークを俺が設計したから」 !??? 何言ってんだろ。
392 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 17:27:50.06 ID:WENufHUB.net] >>376 あ、なるほど、ようやく意図を理解した しかしやはり例が難しすぎるね 桂オブジェクト、銀オブジェクト、飛車オブジェクト、角オブジェクトなどに 今後どう動けばより有利になるかの計算メソッドが書いてあり、 それを自分と相手の持ち駒分を アルゴリズムが入ったロジッククラスに食わせて、、、 あー、俺には無理だわw
393 名前:デフォルトの名無しさん [2016/05/22(日) 17:29:57.58 ID:sxeEi6BC.net] >>385 で、完成したコードはどういうクラス構成になってんの?
394 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 17:30:55.61 ID:WwOYSBmy.net] >>386 日本語もわからんのかw 思考ロジックを切り替えなくていいなら、 わざわざ「思考ロジックを切り替えやすくする 将棋ソフトウェアのフレームワーク」を設計する必要はない。 そこまで来るとアルゴリズムクラスすら必要ない。 一枚岩に埋め込んじゃえばいい。 でも俺だったら(俺の設計の話を聞いたんだろ?) 思考ロジックを切り替えられるようにするから、 その部分(思考ロジックの外)は設計するって言ったんだが。 お前、やらなくてい仕事をやってるだけじゃねーの?w 設計がいらないものを、むりやり設計しようとしているようにしか見えない。
395 名前:デフォルトの名無しさん [2016/05/22(日) 17:31:47.21 ID:sxeEi6BC.net] >>385 >>388 は完成させろってことじゃないから。 現時点でどんなクラス構成になりそうだと考えてるの?って質問な。 頭の中に方向性がなきゃコーディングを開始すんのは無理だろ?
396 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 17:31:59.74 ID:EaQ4G/f7.net] 業務フローも含めた勤怠管理システムとかお題として優秀だと思う
397 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 17:33:26.59 ID:WENufHUB.net] >>391 言い争いが終わらないからお題変えたほうが有益だね 勤怠管理程度だと逆にMVCの一言で設計終わっちゃうがw
398 名前:デフォルトの名無しさん [2016/05/22(日) 17:34:07.26 ID:sxeEi6BC.net] >>389 思考ロジックを切り替えられるようにするから、 その部分(思考ロジックの外)は設計する ってのはどんな感じになるのか教えてくれ。 「俺はすごいんだー」って主張してるだけで何も出てこないんじゃさあ。 出てくれば素直にお前を評価するから。 出て来なきゃ口だけだなとw
399 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 17:34:29.93 ID:WwOYSBmy.net] >>388 クラス構成だろ? クラスの実装じゃなくて。 今まで出てる要件の将棋ソフトのクラス構成なら、 UIクラスと思考ロジッククラス程度で終わりだろ。 UIを3Dにして商用ゲームっぽくするならば、 UIを作り
400 名前:竄キいように、将棋盤クラス、 コマクラスとか作るけどな。 あと思考ロジックをネットワークを使って複数台で分散処理させるならば、 (汎用の)計算処理分散のための設計も入れるだろうな。 それ以外に必要な設計なんか思いつかん。 [] [ここ壊れてます]
401 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 17:35:36.39 ID:WwOYSBmy.net] >>393 > 思考ロジックを切り替えられるようにするから、 > その部分(思考ロジックの外)は設計する > ってのはどんな感じになるのか教えてくれ。 ストラテジーパターンでいいやん。 こんなん数秒で思いつくレベルやでw
402 名前:デフォルトの名無しさん [2016/05/22(日) 17:37:06.43 ID:sxeEi6BC.net] >>392 勤怠管理はまあそうだけど、もっとややこしい業務システムもある。 株売買とかも分析があってややこしいとか。 でも、それより将棋のほうがみんな分かっていいだろ。 複雑なロジックを含むシステムなのは共通してる。
403 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 17:38:09.35 ID:WwOYSBmy.net] 数秒もいらんか? 前提知識として、将棋を知ってるから、 ソフトウェア化って聞いただけで 思考ロジックを切り替えられる設計は思いついてる。 仮に将棋を知らなかったとしたら、 将棋のルールを聞いてる途中で思いつく。 考えてください → 数秒後 → 考えつく。じゃなくて 将棋のルールを聞いてる途中で答えが出てる。
404 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 17:38:45.08 ID:8h3SPrnH.net] いや〜勉強になります アルゴリズムのデザインにシステムの設計なんて関係ない アルゴリズムが確定したあと初めてオブジェクト指向を待つ言語でどう詳細な設計に落とすかってことなんだ アルゴリズムを実装するのに適した処理系があればそっちでやれって
405 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 17:39:44.42 ID:WwOYSBmy.net] >>398 今の将棋の話で、アルゴリズムを確定させたか?w アルゴリズムを確定させない状態で、 アルゴリズムを切り替えやすくするための 設計の話をしていたはずなんだがwww
406 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 17:39:53.11 ID:WENufHUB.net] >>396 将棋は難しすぎると思うけどなあ じゃあ叩き台としてどんなクラスが必要か出してみてよ 俺は>>387 で適当に考えたけど挫折したよ
407 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 17:40:47.45 ID:EaQ4G/f7.net] >>392 もちろん月次の勤怠報告書も各PCから出力できる 休日や休み時間、有給半休設定も設定可能 予定表機能もあって受付のねーちゃんがそれ見て在籍確認ができる って程度ならあまり溢れず 設計書が必要なレベルではないだろか?
408 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 17:40:51.87 ID:6l64NX2q.net] >>360 >他に何を設計するんだ? 将棋のルールを表現するモジュールが欲しいな。 これは変わらないものだし、ユーザ入力も思考ルーチンでもチェックに 利用できるようになっていると嬉しい。 あとソフトウェア内部での盤面や指し手についてのデータ構造だな。 プレイの間だけデータを持ってればいいのかセーブ・ロードが必要なのか Redo/Undoが欲しいかなどの要求が考えられるから、それらに対応できるような 構造になってると嬉しい。 で、それらをモジュールとして分割するかレイヤとして分割するかだな。 で、そこまで決まると将棋のAIのロジックはデータ構造上のデータの変更のロジックに 容易に変換できるようになる。つまり>>377 とかで言ってるフレームワークってことだね。 で、こういったことをコードを書きながら頭の中でやるかメモ書きでやるか、 それとも設計書に書いてからやるかって話だけど、いずれにしても仕事としてやる以上は やったことを評価と保守ができる形で残さないといけない。
409 名前:デフォルトの名無しさん [2016/05/22(日) 17:45:25.74 ID:sxeEi6BC.net] >>394 ロジックが1つのクラスってのは違うだろうな。 局面:駒の位置、指せる手、駒の当たり、など 局面の点数化:持ち駒、駒の働き、囲い、駒の位置、など 手を考えるロジック:定跡との比較、候補手の選択、分岐の選択、捨てる手の選択、など とかいくつかの機能に分かれているのに全部1つのクラスってだめだろ。 局面を管理してる部分は局面の点数化と手を考えるロジックが変わっても変更する必要はない とかあるだろうし。 設計ってそういうことを考える作業なのに全然できてないなあ。
410 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 17:45:51.18 ID:WwOYSBmy.net] × 将棋のルールを表現するモジュールが欲しいな。 ○ 将棋のルールを表現したデータが欲しいな。
411 名前: > これは変わらないものだし、ユーザ入力も思考ルーチンでもチェックに > 利用できるようになっていると嬉しい。 関係ないものを混ぜるな。 役割は分離させろ > あとソフトウェア内部での盤面や指し手についてのデータ構造だな。 > プレイの間だけデータを持ってればいいのかセーブ・ロードが必要なのか > Redo/Undoが欲しいかなどの要求が考えられるから、それらに対応できるような > 構造になってると嬉しい。 そんなの一瞬で思いつちゃったw 棋譜データを記録すれば再現できる。 ['7六歩', '8四歩', '6六歩', '6二銀', ・・・] こんな感じだな。 [] [ここ壊れてます]
412 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 17:46:53.68 ID:EaQ4G/f7.net] 将棋の思考ルーチンなんて rand()% 動かせる駒の数 rand()% 置ける場所の数 の2行で十分
413 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 17:47:15.33 ID:WwOYSBmy.net] >>403 お前センス無いんじゃね? 1つのクラスでいいよ。 共通化するにしても、2つだな。 1つのベースクラスに、それらのデータを入れておき、 継承したクラスで、ロジックだけを実装する。 こんなの設計と呼べるレベルじゃない。一瞬で思いつく。
414 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 17:48:23.90 ID:vKoFE7Z9.net] 棋譜と手・盤面の評価値の読み書きとかリプレイとか必要だな 評価値のパラメータやアルゴリズムを差し替えて比較・統計する機能もほしいな
415 名前:デフォルトの名無しさん [2016/05/22(日) 17:48:31.84 ID:sxeEi6BC.net] >>401 簡単なパターンを考えてみるのも有益かもな。 そっちもやってみる? 同時並行でやるとごちゃごちゃになるかなあ?
416 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 17:49:31.44 ID:WwOYSBmy.net] よく読んだら、>>403 って1機能=1クラスにしようとしてるのか? あほだなぁw 関数で済むものを、デザインパターンに当てはめて 複数のクラスにしようとしてるから わけわからんことになってるんだろうな。
417 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 17:49:38.59 ID:WENufHUB.net] >>401 もちろん業務に関する設計書はひととおり必要 要件定義から画面設計、テーブル設計などいるだろうね でもこのスレって「オブジェクト指向システムの設計」だから 業務の設計よりももっと技術寄りのクラス設計などを語る目的なのかなと
418 名前:デフォルトの名無しさん [2016/05/22(日) 17:49:49.83 ID:sxeEi6BC.net] >>406 あー、そういうレベルね。 了解w 具体例を出して正解だった。
419 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 17:51:02.87 ID:WwOYSBmy.net] >>407 機能はたくさん欲しいのはわかったw 設計は、機能の多さとは比例しない。 棋譜データクラス(さっきから2次元配列クラスと読んでるもの)を 作ってそれらのメソッドを実装しろ。
420 名前:デフォルトの名無しさん [2016/05/22(日) 17:52:51.72 ID:sxeEi6BC.net] >>409 1機能1クラスなんて言ってないからちゃんと読もうね。 で、俺を批判するのに頑張るよりお前の考えるクラス構成を出したほうがよっぽど評価されるぞ。 頑張れ!
421 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 17:53:50.83 ID:WwOYSBmy.net] >>411 そうしない理由を聞きたいんだが?w お前は理由もなく、設計と評して、 過剰なモジュール分割をしようとしているに過ぎない。 目的が設計になってる。 だから設計が必要だって結論になってる。 俺はこんな部分に設計はいらないと最初から言ってる。 だから設計が出ないのは当たり前。 設計というのはフレームワーク部分に使うものなんだよ。 通常の開発はフレームワークを使うから、設計はほぼ不要になる。 一体俺からなにを聞こうとしてるんだ? 最初から無いと言ってるだろ。 無いと言ってるのに、無いに等しい物を言ったら、そのレベルとか心外だわw
422 名前:デフォルトの名無しさん [2016/05/22(日) 17:54:20.75 ID:sxeEi6BC.net] 機能が拡張しそうな箇所を意識して設計するのも設計上の大切な指針だね。
423 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 17:56:04.18 ID:WwOYSBmy.net] >>413 > で、俺を批判するのに頑張るよりお前の考えるクラス構成を出したほうがよっぽど評価されるぞ。 すでに出しただろ? 将棋のAIのアルゴリズムが難しいからと言って ソフトウェアの設計も難しくなるわけじゃない。 将棋の設計は簡単。ほんの少ししか無い。 だからほんの少ししか言えることはない。 お前は、むやみに複雑にしているようだがなw 自分で機能をあれこれ言って、 それを自分で設計できないでいるんだろ? お前が、自分で出した機能を設計できない時点で そこに設計はないという証拠になってるんだがw
424 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 17:56:41.71 ID:WwOYSBmy.net] >>415 > 機能が拡張しそうな箇所を意識して設計するのも設計上の大切な指針だね。 だから思考ロジック部分を分離しただろw
425 名前:デフォルトの名無しさん [2016/05/22(日) 17:57:12.46 ID:sxeEi6BC.net] >>414 > そうしない理由を聞きたい ストラテジーパターンとか適用できそうだね。 > 設計はいらない >>390
426 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 17:57:57.65 ID:WwOYSBmy.net] >>418 > ストラテジーパターンとか適用できそうだね。 それ俺が言ったセリフだwww パクるなよwww
427 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 17:58:01.83 ID:6l64NX2q.net] >>404 変わらないもの共用化できるものは分離して共通化した方がいいだろ >そんなの一瞬で思いつちゃったw 棋譜データを記録すれば再現できる。 それをどこにどう持たせるの? あとそれをどう決めてもいいけど、どう決めたかを自分にも他人にもわかる形で 残さないといけないね。単純でコード見ればわかるってんならそれでもいいけど。
428 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 17:59:25.73 ID:WwOYSBmy.net] あ、もしかして > 1つのベースクラスに、それらのデータを入れておき、 > 継承したクラスで、ロジックだけを実装する。 これがストラテジーパターンになってるの気づいてないの?
429 名前:デフォルトの名無しさん [2016/05/22(日) 17:59:46.97 ID:sxeEi6BC.net] >>417 >>407 はどう考慮したんだ? そもそも機能拡張がありそうな点を意識するって知ってた? 実力を証明するには設計案を提示するしかないぞ。
430 名前:デフォルトの名無しさん [2016/05/22(日) 18:01:00.43 ID:sxeEi6BC.net] >>421 >>403 に 局面を管理してる部分は局面の点数化と手を考えるロジックが変わっても変更する必要はない とかあるだろうし。 って書いてあげたのに…。
431 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 18:04:19.72 ID:WwOYSBmy.net] >>420 > 変わらないもの共用化できるものは分離して共通化した方がいいだろ そのための設計って単純だよな? > それをどこにどう持たせるの? 少なくとも思考ロジック部分じゃないな。 どの将棋ソフトウェアでも共通で使えるものなんだから。 だから今の話、思考ロジック部分の設計(?)には登場しない。 将棋ソフトフレームワークと呼べるものを作って、 対局データを記録できる機能があるならば、 対局クラスとかの中だろう。 で、やっぱり思考ロジックの "外" の話なんだよ。
432 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 18:06:05.23 ID:WwOYSBmy.net] >>423 > 局面を管理してる部分は局面の点数化と手を考えるロジックが変わっても変更する必要はない 局面を管理してる部分は2次元配列クラスだと言ったんだがw 局面をもっと便利に管理したいならば、 この2次元配列クラスを拡張してメソッドでも追加しろよw この程度の話、設計と呼べるレベルじゃないよ。 え?普通そうするよね? レベルの話だ。
433 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 18:06:17.27 ID:6l64NX2q.net] >>424 ああ、思考ロジックの中の話なんか 思考ロジックを外と分離するための話かと思ってた
434 名前:デフォルトの名無しさん [2016/05/22(日) 18:11:47.45 ID:sxeEi6BC.net] >>425 将棋のルール的なロジック 駒がどこに効いてるか? 駒が移動できる場所は? 駒の位置は? と 点数化 手の選択 を一緒くたにしちゃうのは汚いクラス設計だとしか思わん。 お前は機能の違いについてセンスがまったくないから これ以上話しても無駄だからもういいや。 少しはましな設計を思いついたら書き込んでくれ。
435 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 18:14:56.13 ID:WwOYSBmy.net] >>427 だから、ベースクラスを継承すればいいっていっただろ。 なんでこの程度のことを大げさに考えてるんだ?
436 名前:デフォルトの名無しさん [2016/05/22(日) 18:18:27.84 ID:sxeEi6BC.net] >>428 ベースクラス?? そんなのどこにあんの? クラス構成聞いてるのに出てないのに突然持ち出されてもさあ…。 ごちゃごちゃ言い訳してる暇があるならまともなクラス構成を提示しろ。 提示できないのに「俺はすごいぞお」って言い張っても滑稽。
437 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 18:21:40.13 ID:WwOYSBmy.net] > ベースクラス?? > そんなのどこにあんの? >>406 にあるけど・・・?
438 名前:デフォルトの名無しさん [2016/05/22(日) 18:23:12.23 ID:sxeEi6BC.net] 話は戻るけど ちょうど今電王戦見てるから将棋ソフトで考えてみるとさ。 駒クラスがあって王・飛車とかは駒のサブクラスにしようかって感じだろ。 盤面情報と思考ロジックはどんな感じのクラスにするのがいいだろう? ってどうなんだろう? こんな感じのところと将棋ソフトで言えば手の思考ロジックの分割みたいな 領域で悩むことが多い。
439 名前:デフォルトの名無しさん [2016/05/22(日) 18:26:05.60 ID:sxeEi6BC.net] >>430 ??? だから>>427 の機能が全部ぶちこまれたクラスがあんでしょ? 違うなら違うで何を考えているのか明示しないとお前の考えてることなんて分かるかよ。 実際のプロジェクトでもドキュメントがなきゃこんな感じになって ぐだぐだになるから設計書が必要だと実感できてよかったな。
440 名前:デフォルトの名無しさん [2016/05/22(日) 18:28:39.50 ID:sxeEi6BC.net] >>431 間違った。 具体的な質問はこっちだった。 盤面をクラスとして作るべきか、思考ルーチンの中で使われる情報に過ぎないのか? って疑問がまず出てくるけどどう判断する? 違うクラス構成でもいいけど。
441 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 18:29:02.46 ID:WwOYSBmy.net] うーん、こういうのも経験の違いってことなのかな。 どうも ID:sxeEi6BC って 最初から、完全なものを作らないとだめって思ってるみたい。 要求に対して変化させる能力(仕様変更能力)がないんじゃないか? 一番プレーンな状態からやって、○○したくなったら それにあわせて変化させれば良いんだよ。 最初から必要になるかわからないものまで作る必要はない。 (ただし考慮は必要。考えるだけでやらなくていい) 思考ロジックの話でも、最初はクラス一つでいいだろ。 で、あとから共通化がどうとか言ってきたから、 俺は、ベースクラスにまとめれば?って答えた。 それだけのことだよ。後から何か言われたら、それに対応させて変化さえればいい。 それができないのはいろんなものを一緒くたにしてやろうとしてるからで 俺は役割に応じて分ける(最初から分けるのではなくて、分けていく)って 考え方をしてるので、大幅な設計変更は発生しない。 ただ単に実現したいことを実現するシンプルな方法(これを正しく判断できるのが経験なのだろう)を 選んでいくだけのことなのに。さっきから「そうするだけじゃん」の連続だよw
442 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 18:30:13.36 ID:WwOYSBmy.net] >>432 > だから>>427 の機能が全部ぶちこまれたクラスがあんでしょ? だからなんの理由で分けるんだよw 「役割」考えれば、一つにするのが正しいだろ。 まったく最初から複雑にしてるんじゃねーよ。
443 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 18:30:39.58 ID:JaLdteXY.net] 少し目を離してるうちにレス番進みすぎだろ この短い間にもこれだけの応酬があったってことか やっぱりシステム開発には対話が必要なんだな 横着してドキュメントで済ませようとすると破綻する事がよくわかった
444 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 18:32:15.49 ID:EaQ4G/f7.net] まあ、ドキュメントを書かないと意思の疎通はできんよね 複数のクラスがあるとしてソースを見る人間と いやいやこんなもんクラス1つで十分ですよって人間と 混ざって開発することもあんだしね
445 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 18:32:23.86 ID:WwOYSBmy.net] >>433 どっちでも良い。最初はシンプルに作れ。 後で機能が欲しくなったことを想定してるのなら、その機能を言え。 その機能を実現するように変えるだけだからさ。 クラス設計なんて条件で変わるものなのに、 後出しで条件加えんなよ。 仕様としては単に将棋出来ればいいだけだろ?
446 名前:デフォルトの名無しさん [2016/05/22(日) 18:34:07.77 ID:sxeEi6BC.net] >>434 >>390 同じことを何度も言わせるな。 どうしようもない設計からスタートさせてくれって言う設計者はいらない。 >>435 こりゃだめだw
447 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 18:34:18.62 ID:EaQ4G/f7.net] >>438 ちなみに実際の開発で後出しかどうかなんてドキュメントも書いてないのに 主張できんの?
448 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 18:36:52.59 ID:8h3SPrnH.net] よく判らんけど将棋のコマに主体性があればクラスなりオブジェクトなり構成できると思うけど 将棋のコマって全体を表現するときの1要素、データに過ぎないじゃないの コマの状態や全体を評価して処理するのは別のプログラムーアルゴリズム コマが主体性をもって勝手に無双するなら関係があるかも知れないけど コマの種類ー行動範囲ー状態(手ゴマ、版面での位置、成金など)の一覧で表現できる単純な1要素 肝は、それら要素を含む版面全体を評価処理する部分じゃないか 版面のリストデータを評価する関数部分かな
449 名前:デフォルトの名無しさん [2016/05/22(日) 18:38:05.06 ID:sxeEi6BC.net] >>438 これが後出しってさあ…。 まず、>>358 で将棋ソフトって言われたら簡単に予測できる。 実際の客なんてこっちが聞かなきゃ説明しないことなんて山ほどあるぞ。 もう語れば語るほど経験のなさが露呈するだけだからやめとけ。
450 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 18:39:04.38 ID:WwOYSBmy.net] >.437 > 複数のクラスがあるとしてソースを見る人間と > いやいやこんなもんクラス1つで十分ですよって人間と そんなふうに考えてるやついないぞw 実際には複数のクラスに分かれているのを見て、 拡張性を考えた設計だなって読み取れる人と なんでそうなってるのかわからない。 分ける理由もわからない。っていう技術力の低いやつだけだ。
451 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 18:40:13.61 ID:WwOYSBmy.net] >>439 > どうしようもない設計からスタートさせてくれって言う設計者はいらない。 シンプルな設計からスタートさせてくれって話なんだが? なんでシンプル=どうしようもない設計なんだ? 根本的にお前おかしい。 世の中のありとあらゆるソフト見てみろよ。 最初はどれもシンプルだろ。
452 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 18:41:15.88 ID:WwOYSBmy.net] >>442 > で将棋ソフトって言われたら簡単に予測できる。 じゃあ、将棋ソフトっていうからさ、 予測してみ。 もちろん実際の客(俺)が考えてるものの予測だ。 余計なもの作るなよw
453 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 18:42:12.34 ID:WwOYSBmy.net] >>441 > 将棋のコマって全体を表現するときの1要素、データに過ぎないじゃないの 普通はその通り。 俺からすれば、普通そうするよね?の当たり前の連続でしか無い。 これを設計なんて感じたこともねーわw
454 名前:デフォルトの名無しさん [2016/05/22(日) 18:42:22.89 ID:sxeEi6BC.net] >>441 駒の動けるマスとか成りルールとかはクラスに持たせてもいい気がするなあ。 たいした情報じゃないからクラスにするまでもないけど。 ルールをどうやってクラスに割り当てるかも悩ましいな。 実装方法の候補はいくつか簡単に思いつくけど、どれを選択するかの基準は難しい。
455 名前:デフォルトの名無しさん [2016/05/22(日) 18:42:52.06 ID:sxeEi6BC.net] たいした情報じゃないからクラスにするまでもないのかもしれないけど。
456 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 18:45:23.45 ID:WwOYSBmy.net] >>447 だからそんなの将棋ソフトの機能に合わせて ごく普通に作ればいいだけだろw 今は超シンプルな将棋ソフトの話なんだから 複雑なクラスにする必要はない。 機能が増えたらそれを実現するように変えればいいだけ。 最初っからいろいろやろうとするから お前は混乱して、何も手を付けられなくなってるんだよ。
457 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 18:48:50.87 ID:WENufHUB.net] 勝つまで言い争いをやめないID:sxeEi6BCもどうかと思うけど ID:WwOYSBmyが逃げ回ってるようにしか見えないね 将棋ソフトって考慮時間が必要なくらい中身が複雑なものだから ベースクラスと継承クラスの2つのシンプル実装で済むはずがない 将棋に勝つソフトではなくて ルール通りにコマを進めるソフトぐらいならそれでもできるかもしれんが…
458 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 18:49:31.70 ID:8h3SPrnH.net] クラスにして楽なのは、何らかのデータを保持させて シンプルな問い合わせで有益な回答がもらえる状態 今回の将棋の場合、コマの種類ごとにクラスとオブジェクトを作って 版面データに配置して、飛車さん何処に動けますか?、何かコマは取れますか? 次の一手で取られるような危険な状態ですか?って問い合わせて その情報を利用して版面全体を評価判断するプログラムーアルゴリズムが別途必要 だけど、この処理にコマのクラスとかは必須ではない 版面データを一桝ずつ調べて評価しても別にかまわない
459 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 18:51:31.18 ID:6l64NX2q.net] 設計の話をしているのかプロセスの話をしているのか。 設計の話をしているなら最終的な結果をある程度イメージしたクラス構造を提示してって話になるが、 プロセスの話をしているなら、将棋のAIなんてロジックによって処理の内容もデータの持たせ方も 変わる可能性があるから、設計やドキュメント作成をしっかりやろうとすると戻り作業の負荷が大きくなるので >>434 でいいってことになる。
460 名前:デフォルトの名無しさん [2016/05/22(日) 18:53:08.67 ID:sxeEi6BC.net] >>451 書かれている内容は同意なんだけどどちらかの方法を選択するわけじゃん。 そのときの指標ってどんなんだろ?って話がしたい。 将棋の場合に限定せずに、例えばそんな場合にって感じで。
461 名前:デフォルトの名無しさん [2016/05/22(日) 18:55:00.41 ID:sxeEi6BC.net] >>452 俺はクラス構成について意見聞きたい。 そう書いたのは流れたんだろうけど。
462 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 19:11:48.08 ID:8h3SPrnH.net] クラスをデザイン、インスタンスを作ってデータを大量に食わせて 内部関数に知的判断をさせて答えを取り出す 小さな知的データベースみたいな振る舞いをさせた時が使うとき一番楽ができる struct の内部手続きの管理を容易にするのがクラスだって部分に焦点を当てると クラス内部のメンバ変数を利用した処理で知的判断が完結できる場合だと思う アルゴリズムーデータ構造ー>プログラム この関係がクラス内で完結する場合 一番力を発揮するんじゃないかな C++始めて2週間だけど言ってみるw
463 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 19:13:56.11 ID:fKm+A9/1.net] 将棋AIは自社で作れないのでここは外部サービスになる 自社で作成しなければならない部分は将棋盤のMVCと将棋AIサービスのACLだけ この案件は規模が小さすぎるから設計するまでもなくフレームワークを使って手短に仕上げて終わりかな
464 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 19:21:02.25 ID:WwOYSBmy.net] >>450 > 将棋ソフトって考慮時間が必要なくらい中身が複雑なものだから 竹内関数も考慮時間が必要なぐらいですが、 設計は難しいですか? なんで再帰処理に時間がかかるだけなのに 設計の話が出てくるんだよw
465 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 19:21:47.06 ID:WwOYSBmy.net] >>454 > 俺はクラス構成について意見聞きたい。 だからクラス構成は搭載する機能によって変わってくる。 今はシンプルな機能でいいって話なんだから、クラス構成もシンプル。 何度も言わせんな。
466 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 19:27:38.99 ID:WENufHUB.net] >>457 都合のいいとこだけ切り取るなよ ユーザーに勝つアルゴリズムを ベースクラスと継承クラスの2つだけで実装できんの? 1クラスに何十万行書くつもりかな?
467 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 19:28:21.77 ID:fKm+A9/1.net] >>454 >>456 が答え AIサービスの内部の話をしてるなら クラスもOOPも使われない、が答え 何故なら遅いから
468 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 19:32:21.96 ID:WwOYSBmy.net] ここまでの流れでよく分かったろ? あいつは将棋の思考ロジックの設計はどうすればいんだ?って うんうんうなってばかりで、何も作れていない。 必要な理由もないくせに、小さなクラスに分けようとしている。 一方俺はシンプルな 1クラスから初めて、後出しで条件が出るたびに その条件をみたすように、バージョンアップし続けていっている。
469 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 19:35:11.10 ID:WwOYSBmy.net] >>459 実装できるだろ?
470 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 19:43:42.95 ID:WwOYSBmy.net] 「ユーザーに勝つアルゴリズム」をクラス2つで実装できんの?とか 言ってる時点で、普通の人は違和感持つよね? その言い方だと、ユーザーに負けるアルゴリズムならば、 クラス2つで実装できる思ってるように聞こえる。 ユーザーに勝つかどうかは評価関数(繰り返すけど関数な)の 出来で決まるので、クラスの中の一関数にすぎない。 またコードが長ければ、ユーザーに勝てるとか思っていそう。 コードの長さと強さは関係ない。
471 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 19:57:01.68 ID:EaQ4G/f7.net] >>444 それじゃ見積れないじゃん 今回の開発ですけど全部でどのくらいかかりますか? 概算でいいんでお願いします
472 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 20:05:41.89 ID:WwOYSBmy.net] >>464 話がめんどくさくなりそうなので あんたがこの話に同意すると言ってからねw プログラマが知るべき97のこと.com/エッセイ/見積りとは何か xn--97-273ae6a4irb6e2hsoiozc2g4b8082p.com/%E3%82%A8%E3%83%83%E3%82%BB%E3%82%A4/%E8%A6%8B%E7%A9%8D%E3%82%8A%E3%81%A8%E3%81%AF%E4%BD%95%E3%81%8B
473 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 20:07:14.83 ID:WwOYSBmy.net] >>464 もう一つ。 開発の見積もりとスケジュール管理 見積もりとスケジュールとコミットメントは違う techlife.cookpad.com/entry/2016/04/06/100000
474 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 20:11:54.86 ID:EaQ4G/f7.net] >>465 他人のドキュメントが出てきちゃったぞ(笑)
475 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 20:12:46.40 ID:WwOYSBmy.net] 信頼できるソースを持ってくると、 他人のドキュメントとかいい出すやつかw
476 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 20:18:21.48 ID:EaQ4G/f7.net] >>468 読んでないけど お客さんにもそれ読ませて合意取ってるの?
477 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 20:18:56.63 ID:WwOYSBmy.net] >>469 お前に読めって言ってるんだけど?w
478 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 20:20:20.00 ID:EaQ4G/f7.net] >>470 なんで? 設計書書かないでやるのにそんなの必要ないじゃん
479 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 20:21:47.98 ID:SSySxKMQ.net] >>341 なんかめっちゃ進んでるwww > 税制の変更やら社内ルールの変更やらは想定される訳で そういう類
480 名前:なら設定ファイルなりイベントテーブルなり……オブジェクト指向とは別のところでどうにかするかな アルゴリズム云々は大量に出てると思うけどストラテジーを真っ先に考えると思うよ > 設計段階で洗い出さないならいつ設計するんだ? バリデーションの例での話だけど バリデーションの為のオブジェクト洗い出しなんてしないなあ なぜならフレームワークで基底を提供してるから [] [ここ壊れてます]
481 名前:デフォルトの名無しさん [2016/05/22(日) 21:33:06.14 ID:sxeEi6BC.net] >>472 将棋ソフトのクラス構成って例で考えてみてよ。 業務システムの設計で悩むところとだいたい同じようなことは出てくるから。
482 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 21:46:19.29 ID:bOnbURFw.net] ドキュメントのいるいらない話と設計のいるいらない話がやけに盛り上がってるけどスレチっていう。
483 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 21:53:33.02 ID:SSySxKMQ.net] >>473 ゲームマスター……どこにどの駒があるとかどっちの番とかコントロールするやつ ビュー……UI担当 思考……たぶんコンピューターの強さ別に思考ルーチン考える(か、深さを変える程度かどっちか) ストラテジーするのは思考のところ あんま練ってないから抜け漏れあるだろうけどぱっと考えておおまかにこんなもんじゃないかな 将棋だと後からプレイヤーが3人になるとか10×10になるとか駒の種類が増えるとかないから……
484 名前:デフォルトの名無しさん [2016/05/22(日) 21:57:19.19 ID:sxeEi6BC.net] >>475 思考部分がメインになるけどどう構成する?って疑問。 将棋ソフトについては観戦してちょこっとネットを読んだ程度で詳しくはないけど 将棋のルール 候補手の分岐 点数評価 駒の情報 盤面の情報 とかはあるでしょ。
485 名前:デフォルトの名無しさん [2016/05/22(日) 21:59:56.19 ID:sxeEi6BC.net] 思考部分は定跡を考慮したり、 駒の配置を元に点数を評価したり、 詰み専用のルーチンがあったり、 パラメータを調整したり、 評価の際に考慮する要素を変えてみたり、 今は実現してるソフトはないみたいだけどディープラーニングを実装したり と頻繁に改修されている模様。
486 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 22:03:46.50 ID:SSySxKMQ.net] 思考部分ってアルゴリズムをどうするかって話であって OOPの設計とは違う話ではないかな?
487 名前:デフォルトの名無しさん [2016/05/22(日) 22:06:26.17 ID:sxeEi6BC.net] >>478 思考部分をどのようなクラスで構成するかって考えるのはオブジェクト指向設計だろ。
488 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 22:12:39.67 ID:SSySxKMQ.net] >>479 構成はストラテジーパターンと思ってるよ easyレベルの思考パターン、normalレベルの思考パターン……みたいな感じ 逆に聞くけど 将棋のルールオブジェクト、候補手のオブジェクト、点数評価オブジェクト……みたいなのを作るの?
489 名前:デフォルトの名無しさん [2016/05/22(日) 22:14:07.31 ID:sxeEi6BC.net] 駒が何種類かあって 動きのルールがあって 盤面に配置されていて 配置された駒が動けるマスがあって 駒の配置とかを見て点数をつけて ってのを 複数の商品があって 工場や倉庫があって 社内ルールがあって 流通があって 注文があって 最適な生産計画を立てる みたいな話に置き換えれば思いっ切り業務システム。 業務より将棋のほうがみんな分かっているし、 顧客のルールのヒアリングとかする必要もないから将棋で考えてると思えば 十分現実的に有益な例と言える。
490 名前:デフォルトの名無しさん [2016/05/22(日) 22:21:13.03 ID:sxeEi6BC.net] >>480 そこまで具体的になっていないから他の人の考えを聞きたいってレベル。 機能的には 駒クラスと盤面クラス(データの集合でクラスにする必要はないかもしれない) 盤面クラスから合法手を抜き出す処理 抜き出した候補手を絞る処理 候補手を動かしてみた盤面を点数化する処理 最高点の手を選択 かなあと。多少漏れはあるかもしれないけど。 で、ルールについては駒クラスに一部持たせることもできるけど ルールはまとめてどこがで持たせたほうがすっきりする気もするなあってぼんやり。 合法手を出す部分は手を考える部分とは関係なく共通だから 思考ルーチンのクラスとは分けたほうがいいだろうな。 って程度。
491 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 22:21:22.93 ID:SSySxKMQ.net] >>481 これは>>480 への回答……ではないよね 俺は現実的でないとも無益だとも主張してないので 俺の質問は>>481 が設計者なら 将棋のルールオブジェクト、候補手のオブジェクト、点数評価オブジェクト……みたいなのを作るの? ちょっと変えて どんな風に作るの? でもいいけど
492 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 22:21:45.17 ID:SSySxKMQ.net] >>483 ごめん>>482 見る前に書いたから見なかったことにして
493 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 22:25:17.11 ID:SSySxKMQ.net] >>482 具体的になってないっていってるのにこう言っていいかわからんけど クラスと処理が一緒に書かれてると 正直いまいちわからん >>473 の流れからクラス構成の話をしてるはずなので クラスと処理は明確に分けてくれると嬉しい
494 名前:デフォルトの名無しさん [2016/05/22(日) 22:28:36.60 ID:sxeEi6BC.net] >>485 そこは俺自身がつめられていない。 明確になっていないのが現状であるのと 自分の考えを言っちゃうと他の人のアイデアが出ににくくなりそうだから しばらく待ってみようとも思ってる。
495 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 22:31:43.20 ID:SSySxKMQ.net] >>486 なるほど了解 とりあえず俺は>>475 ってことで 他の人待ちになるよ
496 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 22:37:22.72 ID:hyVMxkhK.net] で、>>1 ―>>487 までのことをかる〜く理解するには何が必要?
497 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 22:43:46.32 ID:3jWKTqcS.net] 誰に合わせてレベルが下がってるのか知らんが デザパタという用語の飛び出し方と ストラテジーというパターンの居座り方が不思議 小学生が得意げに掛け算の七の段暗唱してみせてるような不気味さがある 小学生が持ち寄った安モンのプラモをいつまでも机に乗っけてる不気味さがある このゾッとする感じ分かる奴はROMってニヤニヤしてんだろうな
498 名前:デフォルトの名無しさん [2016/05/22(日) 22:45:11.25 ID:sxeEi6BC.net] >>488 ドキュメントなんて書く必要ないだろって主張する人がいた。 設計なんていらないって主張する人がいた。 肯定派と否定派で不毛な争いを続けた。 設計否定派「そんなのなくても設計できるんだ!」 だったら、不毛だから将棋システムのクラス構成をするってで考えてみようぜ。 >>346 >>431 あと、直近のレス10個くらい。 これでほぼ追いついた。
499 名前:デフォルトの名無しさん [2016/05/22(日) 22:47:07.15 ID:sxeEi6BC.net] >>489 こういう不毛なレスをする奴に送る言葉 「将棋ソフトの設計を提示してくれ」 できないならじゃまなだけだから黙ってて。
500 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 22:52:23.14 ID:hyVMxkhK.net] >>490 だな
501 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 23:35:43.97 ID:EaQ4G/f7.net] >>476 そんなとこメインに何の? 中身はどうあれ入力は将棋盤の現在の状況と両者の持ち駒とちょっとした設定(難易度とか?) 出力は次の一手って決定してるし 関数で中身が超絶長くてもクラス分ける必要は仕様によってはないと思うよ
502 名前:デフォルトの名無しさん [2016/05/22(日) 23:44:55.34 ID:sxeEi6BC.net] >>493 >>476 読んで1つのクラスにまとめるって違和感ある。 >>481 とかも読んで。 それでも全部1つのクラスにぶっこむって言うなら「あぁそう」って感じだ。 思うことはあるけど議論しても不毛だってこのスレで学んだから見解の相違ってことで。
503 名前:デフォルトの名無しさん mailto:sage [2016/05/23(月) 00:10:47.30 ID:oqijX3By.net] 451で思ったのは、例えば 駒の動きのバリエーションが100パターン以上あるとか もしくは仕様変更で追加されたり、局面により動的に動きが変わったり といったことが頻発する場合にはオブジェクトに債務を任せるってのは有効だと思われる。 将棋くらいルールが固定されているものを取り扱っても 設計の善し悪しって意味を持たない気がするよ。
504 名前:デフォルトの名無しさん [2016/05/23(月) 00:14:58.15 ID:qUt6/ya8.net] >>495 そこは>>453 あと>>477
505 名前:デフォルトの名無しさん [2016/05/23(月) 00:19:18.67 ID:qUt6/ya8.net] あとは駒や盤面をクラスにするかどうかはさておき それらを保持するためのデータ集合は必要だし、 それらを参照するロジック郡があることは確実。 その場合のきれいな構成はどうなるって話。 オブジェクトにしない設計選択するからって機能的に独立している部分も含めて すべてを1つにつなげるのがきれいな設計だとは俺は思わない。
506 名前:デフォルトの名無しさん [2016/05/23(月) 00:20:52.30 ID:qUt6/ya8.net] オブジェクト指向以前の設計だって機能的に独立している部分はモジュールに分離することが推奨されていた。
507 名前:デフォルトの名無しさん mailto:sage [2016/05/23(月) 00:36:52.91 ID:oqijX3By.net] >>497 適当に作ってもこの場合、そこまで汚くはならんだろう。 逆に駄目な設計例を紹介する方が難しいんじゃないか。 何度も言うけど将棋くらい盤面、駒、ルールが固定されているものを例に 設計の善し悪しを語るのはあんま筋が良くないように思う。
508 名前:デフォルトの名無しさん [2016/05/23(月) 00:40:16.62 ID:qUt6/ya8.net] 将棋ソフトが単純だと思ってるならその前提が俺とは違うんだろうね。 複雑なシステムを1つのクラスにまとめるのがいい設計だと思ってるなら 俺の知ってるオブジェクト指向設計とは違うな。
509 名前:デフォルトの名無しさん mailto:sage [2016/05/23(月) 00:56:16.41 ID:wJJwI8Yd.net] 複数人で開発してもうまくいかない類のもの 設計も必要と思えない
510 名前:デフォルトの名無しさん mailto:sage [2016/05/23(月) 01:17:43.31 ID:2wwYSKoz.net] >>500 どう考えても将棋ソフトは単純だろw
511 名前:デフォルトの名無しさん mailto:sage [2016/05/23(月) 01:19:28.34 ID:2wwYSKoz.net] >>481 > 最適な生産計画を立てる > みたいな話に置き換えれば思いっ切り業務システム。 なんで全く関係ない話を置き換えてるんだ?w
512 名前:デフォルトの名無しさん mailto:sage [2016/05/23(月) 01:20:59.57 ID:2wwYSKoz.net] >>495 > 将棋くらいルールが固定されているものを取り扱っても > 設計の善し悪しって意味を持たない気がするよ。 その通り。 ルールが固定されているものなのに、 それを業務システムの規模と同一視して 複雑な設計を作り出す バァカ(笑)がいる。
513 名前:デフォルトの名無しさん mailto:sage [2016/05/23(月) 01:21:26.32 ID:DQBja8MH.net] MaxFlow書けば一発みたいなシステムだなw
514 名前:デフォルトの名無しさん [2016/05/23(月) 01:29:00.13 ID:qUt6/ya8.net] ID:2wwYSKozは昨日さんざん喚いていた奴だろ。 相手にするのは不毛だと分かったから頑張って書き込んでもらってもスルーするのであしからず。
515 名前:デフォルトの名無しさん mailto:sage [2016/05/23(月) 03:34:57.55 ID:7DLF1n9w.net] 将棋ソフトの人間同士が対局する前提ならシンプル コンピューター将棋の思考ルーチンをなにを使いどう実装するのかは別の話 ここら辺はマジ難しい部分 この難しい評価関数の構造に対してのオブジェクトのクラス構造を語るのは 騙るに等しい無為な行為 クラスの要件定義?を書き上げていくといきなりどう実装するか これでよいのか判断できなくなっていきなり脳みそ爆発じゃないの この場合の評価方法って膨大な組み合わせから条件事に状態を抽出 その集合へ評価関数で比較の為に数値化(この数値化の基準が凄く難しい肝の部分) これを盤面全体かつ何手先まで計算するのかって事でここら辺に膨大な 処理速度なり消費メモリーなりのリソースが必要
516 名前:デフォルトの名無しさん mailto:sage [2016/05/23(月) 07:54:00.86 ID:RiQgyPKS.net] ゲーム開発者居ないのか ボードゲームにOOPとかどんだけだよ
517 名前:デフォルトの名無しさん mailto:sage [2016/05/23(月) 08:42:24.80 ID:bDXz1lkX.net] ゲーム開発にOOPぶち込むのやめてください死んでしまいます
518 名前:デフォルトの名無しさん [2016/05/23(月) 09:18:47.98 ID:KJgou+2q.net] 駒クラスみたいに全ての各駒クラスが実装するものはクラスじゃなくてインターフェースにするべきだし もっと言うなら駒みたいに種類が限られてるいるものは列挙型にするべきだろう 関数型にしよう(提案)
519 名前:デフォルトの名無しさん mailto:sage [2016/05/23(月) 09:31:33.26 ID:2wwYSKoz.net] >>509 ゲーム開発にOOPを入れるのは常識なんだが。 思考ロジック(評価関数)の中身をOOPにするとかは意味不明
520 名前:デフォルトの名無しさん mailto:sage [2016/05/23(月) 09:54:28.34 ID:KJgou+2q.net] というかゲーム作るのに使う言語は大体OOPだと言う Rustとか使うんならOOPじゃなくていいし(Rustの型システムは独特だから関数型と言っていいのかもわからんけど)
521 名前:デフォルトの名無しさん mailto:sage [2016/05/23(月) 10:09:17.37 ID:bDXz1lkX.net] ゲーム作るのに使う言語ってアセンブリとかCとかじゃないの?(すっとぼけ)
522 名前:デフォルトの名無しさん [2016/05/23(月) 11:29:21.76 ID:qUt6/ya8.net] 将棋ソフトのクラス設計が不適切って言うなら 複数の商品があって 工場や倉庫があって 社内ルールがあって 流通があって 注文があって 最適な生産計画を立てる ってシステムのクラス構成を書いてくれ。 生産計画について知らないならググって自分で理解してくれ。 分からないことを調べるのは設計者として当然のこと。 完全な正解なんて求めていないし、要件については一般的と思われるもので 適宜補完してくれていいから。 生産計画なんて調べたくないって言うなら将棋ソフトで考えような。
523 名前:デフォルトの名無しさん [2016/05/23(月) 11:37:07.78 ID:qUt6/ya8.net] 将棋ソフトのロジックをオブジェクトにしないっていうなら そういう選択をしてもらってもいいけど、その場合の設計・システム全体の構成は どうなるのか提示してくれ。 機能的に独立している部分が完全に密結合した設計じゃだめだろ。 オブジェクト指向以前から機能的に独立している部分はモジュールに分離することが推奨されていた。 それと、 思考部分は定跡を考慮したり、 駒の配置を元に点数を評価したり、 詰み専用のルーチンがあったり、 パラメータを調整したり、 評価の際に考慮する要素を変えてみたり、 今は実現してるソフトはないみたいだけどディープラーニングを実装したり と頻繁に改修されていることも考慮した設計にしてくれ。 これは電王戦も見ていたら開発者が言っていたことなんで事実。
524 名前:デフォルトの名無しさん [2016/05/23(月) 11:44:28.52 ID:qUt6/ya8.net] 思考ルーチンについては https://ja.wikipedia.org/wiki/Bonanza#.E6.80.9D.E8.80.83.E3.83.AB.E3.83.BC.E3.83.81.E3.83.B3 に説明があったからイメージできない人は読んでみてくれ。 もちろんこれを実装する処理フローなんて不要で、情報とロジック群の構成を 設計として整理してくれれば十分。
525 名前:デフォルトの名無しさん [2016/05/23(月) 11:50:00.86 ID:qUt6/ya8.net] 思考ロジックをオブジェクトにしないならしないでいいけど それならオブジェクトを使わない思考ロジックを設計を書いてくれ。 オブジェクト指向設計じゃなくても「思考ロジックがあります。以上」なんてあり得ないから。 昨日から言ってるんだけど「思考ロジックはオブジェクトじゃない」 って言ってる奴がいるので分かりやすくもう一度。
526 名前:デフォルトの名無しさん mailto:sage [2016/05/23(月) 11:53:16.96 ID:DQBja8MH.net] こいつ議論する気ないだろ 宿題でもやってもらおうと思ってんのか?
527 名前:デフォルトの名無しさん [2016/05/23(月) 11:55:13.23 ID:qUt6/ya8.net] >>518 設計できない、興味ないならやらないでいいんだよ。 お互い関わりたくないからわざわざ来んなよ。うっぜー。
528 名前:デフォルトの名無しさん mailto:sage [2016/05/23(月) 12:04:07.88 ID:wJJwI8Yd.net] そしたら将棋ソフトの設計というスレタイで作り直しなよ それだったら俺も最初から見に来なかったわ
529 名前:デフォルトの名無しさん mailto:sage [2016/05/23(月) 12:14:49.83 ID:RiQgyPKS.net] 設計してやってもいいが金は誰が出すんだ?
530 名前:デフォルトの名無しさん [2016/05/23(月) 12:34:01.34 ID:qUt6/ya8.net] >>520 オブジェクト指向設計についての話題なら大歓迎だぜ。 指針とか経験とかいい本とか。 ドキュメントは不要、設計プロセスは不要、とかスレと関係ない書き込みをしつこく する奴がいて役立つ情報がまったく得られないから設計スキルが低いだけの奴との無駄なやり取りを 避けるためにこうした経緯。
531 名前:デフォルトの名無しさん [2016/05/23(月) 12:35:12.57 ID:qUt6/ya8.net] >>521 興味がある人だけやってくれ。
532 名前:デフォルトの名無しさん mailto:sage [2016/05/23(月) 15:48:51.47 ID:0LMZvZN5.net] >>509 ゲーム開発こそOOP無いと死んでしまいます。 継承も移譲も必要
533 名前:デフォルトの名無しさん mailto:sage [2016/05/23(月) 15:53:56.75 ID:KJgou+2q.net] (継承すると仮想関数テーブル使って遅いから)死ぬ 静的ディスパッチ使えみたいな人かも知れん
534 名前:デフォルトの名無しさん mailto:sage [2016/05/23(月) 18:09:38.65 ID:8ShGEso2.net] >>522 まるで自分はスキル高いみたいな言い方だね
535 名前:デフォルトの名無しさん mailto:sage [2016/05/23(月) 18:30:21.54 ID:bDXz1lkX.net] 将棋AIに興味があるんだけど 金は誰が出してくれるんだ?
536 名前:デフォルトの名無しさん [2016/05/23(月) 19:35:13.90 ID:qUt6/ya8.net] >>526 「俺のほうがすごいー!」みたいなくだらない言い争いをする気はないから 設計に自信あるならきれいなクラス構成を作って見せて。
537 名前:デフォルトの名無しさん [2016/05/23(月) 19:36:48.86 ID:qUt6/ya8.net] >>527 上位入賞すればニコニコから賞金もらえるぞ。 興味あるなら設計を考えるところからスタートだ。
538 名前:デフォルトの名無しさん mailto:sage [2016/05/23(月) 21:08:34.53 ID:tNl+V9er.net] >>517 > 思考ロジックをオブジェクトにしないならしないでいいけど > それならオブジェクトを使わない思考ロジックを設計を書いてくれ。 > オブジェクト指向設計じゃなくても「思考ロジックがあります。以上」なんてあり得ないから。 じゃあ模範例を言ってくれ。 俺からすれば、思考ロジックの設計?何いってんの?状態なんだよ。 聞いているのがアルゴリズムなら意味はわかる。だが設計とか意味不明。 将棋の思考ロジックは再帰の連続だろうから、近しい例で再帰を使った二分探索とかどうだ? 二分探索の設計とやらをお前が言ってくれ。ついでにオブジェクト指向で設計してもいいぞ。 そうすればお前が何を求めているかがわかる。
539 名前:デフォルトの名無しさん mailto:sage [2016/05/23(月) 22:12:51.54 ID:xFXxeOBl.net] 自分は何も出さずに人には出せと言う 出せばここダメあれダメと得意気にダメ出し もっと建設的なお話しはできないのかね
540 名前:デフォルトの名無しさん mailto:sage [2016/05/23(月) 22:25:01.38 ID:k9BlaHRb.net] なんか複雑なクラス構成じゃなきゃいかんという思い込みが強いのだと思う
541 名前:デフォルトの名無しさん mailto:sage [2016/05/23(月) 23:23:30.08 ID:MlMGnhEf.net] >>531 無理ですよ 発言内容を見れば素人とわかります
542 名前:デフォルトの名無しさん [2016/05/24(火) 00:02:49.39 ID:6RFz1ZJQ.net] >>533 くそみたいな設計しか提示できない素人が偉そうにw
543 名前:デフォルトの名無しさん [2016/05/24(火) 00:11:33.80 ID:6RFz1ZJQ.net] >>531 クラスが不要だと思うならクラスを使わない設計をしてくれって何回言えば分かるんだ? >>530 >思考ロジックの設計?何いってんの?状態なんだよ。 将棋ソフトの設計はあなたに任された。 構築は数人のチームでやる。(数人いらないってなら1人でもいいけどとにかく別の人。) ってケースで想定してくれ。 設計したらお客さんに見せて確認して、構築チームに回す訳だ。 その設計書に将棋ソフトを構成する機能を書いて、 主要なクラスないしモジュールを書くのは常識。 まさかすべてのコードを1つの巨大ファイルに押し込むつもりじゃないだろ?
544 名前:デフォルトの名無しさん [2016/05/24(火) 00:12:58.09 ID:6RFz1ZJQ.net] >>531 じゃなくて>>532 だった。
545 名前:デフォルトの名無しさん mailto:sage [2016/05/24(火) 00:17:34.70 ID:yaJTawf0.net] 将棋ソフトなんて難しすぎて無理だよ もちろん金積めばできるけど 掲示板の書き込みで片手間でできるレベルではない
546 名前:デフォルトの名無しさん [2016/05/24(火) 00:19:52.06 ID:6RFz1ZJQ.net] >>530 >>531 模範解答を出せという気持ちは分かるけど これまで提示された設計じゃレベルが低過ぎて会話しても 何も得るものがないと思う。 実際のプロジェクトで客に設計書を提出した経験がある奴はいないだろ? 自分の設計スキルが最高だとは思ってないから、 俺より設計スキルを持った人が登場してくれてささっと素敵な構成を提示してくれるなり 指針を提示してくれるのを待ちたい。
547 名前:デフォルトの名無しさん [2016/05/24(火) 00:28:56.57 ID:6RFz1ZJQ.net] >>537 将棋ソフトから離れて有益な会話が始まるなら理想だし、そうなって欲しいとは思ってるけど 具定例がないと抽象的で無意味な議論に戻る気がするなあ。 有益な会話が始まったら将棋ソフトのことなんて忘れてもらっていいけど。 あと、難しいって言うけどあんまり単純だったらそもそも悩まないじゃん。 将棋ソフトにこだわりはないから他に適切な例があればそっちで考えてもらえばいいと思うけど何かある?
548 名前:デフォルトの名無しさん [2016/05/24(火) 00:32:46.56 ID:6RFz1ZJQ.net] いきなり完成するのは難しいならまずはモデルクラスから考えてみるのはどうだろ。 メモリとかパフォーマンスはいったん忘れて設計したらどうなるだろ?
549 名前:デフォルトの名無しさん mailto:sage [2016/05/24(火) 00:39:17.52 ID:24rCrc9d.net] >>537 駒は代数的データ型使おう 盤は単純に配列かMapでいいべ UIはオブジェクト指向が良さそう(適当) そういえばここで言われてるドキュメントってjavadocみたいなやつ? ドキュメント要る派VS要らない派(コードが成果物)がどの範囲までをドキュメントと呼んでるのかわからん >>537 将棋AIは難しいけど逆にAI以外は難しくないから(グラフィック凝らない限り) いっそオセロとかにするとスゲー簡単になるなー
550 名前:デフォルトの名無しさん mailto:sage [2016/05/24(火) 00:49:07.65 ID:iG1UUWT4.net] 本気で議論したいなら まず自分が作ってみて こんなんなったがどう思うよ ってやった方がいいんじゃね?
551 名前:デフォルトの名無しさん [2016/05/24(火) 00:50:35.99 ID:6RFz1ZJQ.net] >>541 難しい場合は論理的な設計から始めることが一般的に推奨されている。 論理的とは代数的データ型やらMapやらの実装寄りのことは忘れて システムの構成要素とその関係を考えること。 駒、駒が動けるマス、盤面、盤面ごとの合法手みたいな情報がいろいろあるけど それらの情報の関係とか何がクラスで何が属性なのかとかをはっきりさせる。 一般的な開発プロセスではMapとかを考え出すのはその後。 (違うプロセスがあるならそれでやってもらって結果を提示してね。) ドキュメントは基本は文章と図。 実際のプロジェクトならお客さんにヒアリングしながら確認する必要があるから お客さんも理解できるもの。 コードが完成してない状態でプロジェクトメンバーにも見せるから コードはその時点ではないし。
552 名前:デフォルトの名無しさん [2016/05/24(火) 00:57:32.21 ID:6RFz1ZJQ.net] >>542 まあねえ。 様子見ながら考える。 正直なところ、>>358 とか、>>431 とかみたいに悩むポイントを提示しつつ いろんな意見を聞きながら進めたかったんだけど、反応がほとんどなかった一方で 「思考ロジックはクラスじゃない」だの「将棋ソフトはおかしい」だの一部の連中が騒ぐから だったらお前らの考えを言えよってなったのはある。 >>358 とか、>>431 とかについて意見交換できるならやりたいぞ。
553 名前:デフォルトの名無しさん [2016/05/24(火) 01:00:51.27 ID:6RFz1ZJQ.net] 「思考ロジックはクラスじゃない」って考えは否定はせんな。 ただ、それにしたって設計は必要だからどんな設計になるかは考える必要があって 思考ロジックはクラスじゃないから設計いらないみたいな発想はおかしいと思う。 が正確だな。
554 名前:デフォルトの名無しさん mailto:sage [2016/05/24(火) 01:04:03.54 ID:KRMd4EzS.net] 取り立てて機能のない将棋ソフトに 設計なんか必要だと思うほうが間違ってるよね こんなのz80でだって動くんやで 豪勢なのは思考ルーチンだとしても将棋ソフト本体への入出力が決まってる以上複雑にはならんね
555 名前:デフォルトの名無しさん [2016/05/24(火) 01:06:59.17 ID:6RFz1ZJQ.net] >>546 いつもの人だねw 煽り抜きで質問なんだが、モジュールに分けない一枚岩の巨大単一ソースコードにするつもりなの?
556 名前:デフォルトの名無しさん mailto:sage [2016/05/24(火) 01:19:38.22 ID:KRMd4EzS.net] >>547 今出てる内容ならそれでも十分なんですよ ちなみに俺は設計書書けよ派だけどね 将棋とかゲームのプログラムって大事なのは状態遷移の方だからね ビジネスアプリでよく使うものは尽く役に立たない
557 名前:デフォルトの名無しさん [2016/05/24(火) 01:23:01.35 ID:6RFz1ZJQ.net] >>548 ボナンザのソースは何行くらいなのかぐ
558 名前:ぐってみたら2〜3万行だとさ。 http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1448320344 これを1ファイルにぶち込むのは普通じゃあない。 [] [ここ壊れてます]
559 名前:デフォルトの名無しさん mailto:sage [2016/05/24(火) 01:40:19.17 ID:24rCrc9d.net] >それらの情報の関係とか何がクラスで何が属性なのか クラスって言葉の時点で代数的データ型と同じくらいには実装よりな気がするが。。 後 例が将棋って言っても駒の動きなのかAIなのか AIだと範囲が広すぎ&専門的すぎて例になりにくいし UIにしても話の焦点がずれる気がするから 将棋のロジックの論点にしようか? webアプリなのか顧客がいる業務系なのかで設計やドキュメントの意味合いも変わると思うが
560 名前:デフォルトの名無しさん mailto:sage [2016/05/24(火) 01:45:49.17 ID:TKpsNxtt.net] >>535 > クラスが不要だと思うならクラスを使わない設計をしてくれって何回言えば分かるんだ? 自分は何も出さずに人には出せと言う 出せばここダメあれダメと得意気にダメ出し
561 名前:デフォルトの名無しさん mailto:sage [2016/05/24(火) 01:46:42.61 ID:TKpsNxtt.net] >>535 > クラスが不要だと思うならクラスを使わない設計をしてくれって何回言えば分かるんだ? クラスが不要なんじゃなくて設計が不要。 何回言えばわかるんだ?
562 名前:デフォルトの名無しさん mailto:sage [2016/05/24(火) 01:50:13.69 ID:TKpsNxtt.net] >>549 > ボナンザのソースは何行くらいなのかぐぐってみたら2〜3万行だとさ。 > detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1448320344 > これを1ファイルにぶち込むのは普通じゃあない。 1ファイルって言ってるのは、思考ロジックだけの話だっただろ? すり替えんなよw
563 名前:デフォルトの名無しさん mailto:sage [2016/05/24(火) 01:58:43.29 ID:TKpsNxtt.net] Bonanza のソースによると readme.txt に思考部ってのが書いてあって、 > sikou.dll Bonanza 思考部 DLL ファイル このdllを作るのが、sikou.c (とそのヘッダファイル)の 1ファイルからなってるじゃねーかwww
564 名前:デフォルトの名無しさん [2016/05/24(火) 02:14:51.13 ID:DBnZJSfL.net] そもそもクラスにすんなよ インターフェースにしろよ
565 名前:デフォルトの名無しさん mailto:sage [2016/05/24(火) 09:18:09.69 ID:kp/L/pO1.net] まあ1ファイルでも複数クラスが定義されてることもあるし…
566 名前:デフォルトの名無しさん mailto:sage [2016/05/24(火) 09:33:17.14 ID:TKpsNxtt.net] それを言ったらCの時点でクラスは無いんだけどなw それに思考ロジックなんて速度が重要なんだから、 一々内部でメソッド呼び出すとかやりたくないな。 やりたいやつはやってもいいけど、やりたくないやつは 内部で最適化する。 コマの配置や動きのデータも最適化するだろうから、 汎用化にこだわる所じゃない。 よって思考ロジック内部は自由。 設計を作れと言うのなら、設計がない(自由)が この場合の優れた設計だろうw
567 名前:デフォルトの名無しさん [2016/05/24(火) 11:26:21.90 ID:6RFz1ZJQ.net] >>553 将棋ソフトを構成するクラスを提示してくれって言ってるが。 >>482 とか、モジュールとかしつこいほど繰り返しても分からないお前って…。 設計について何も分かってないんだからアホな書き込みはすんな。 書き込みたいなら「分からないから質問させて:ってトーンで書き込め。
568 名前:デフォルトの名無しさん [2016/05/24(火) 11:29:58.50 ID:6RFz1ZJQ.net] >>555 そういう議論はいいね。 駒の種類が変わらないのにインタフェースにすべき理由はあるかな?
569 名前:デフォルトの名無しさん [2016/05/24(火) 11:31:37.26 ID:6RFz1ZJQ.net] >>556 システムのすべてのクラスを1つのファイルに書き込みのが望ましいとでも?
570 名前:デフォルトの名無しさん [2016/05/24(火) 11:39:57.64 ID:6RFz1ZJQ.net] >>557 客に設計を依頼されて、開発チームに「自由に作って」ってさあ…。 設計者と開発者が別れている実プロジェクトを想定しような。 >>535 で言ったし、実際のプロジェクトなら当たり前のことだから 普通の経験を想定して考えろ。 >>514 も読めないのか? 自分が知ってる業務システムの設計を提示してくれもいいぞ。 ×設計いらない ○設計できません なのは分かってるから、書き込まないでいいよ。 何度も同じことを繰り返すのが面倒だから設計いらないって書き込みは今後はすべてスルーするから。
571 名前:デフォルトの名無しさん [2016/05/24(火) 11:46:53.22 ID:6RFz1ZJQ.net] 念のため、>>515 もな。 クラスを使わない→設計いらないにはならないから。 常識すら知らない素人の相手はこれでおしまい。
572 名前:デフォルトの名無しさん mailto:sage [2016/05/24(火) 13:45:02.78 ID:rb+ApEGm.net] なんか、将棋AIで盛り上がっているようだけど、 Bonanzaでいえば、手筋を決めるのは全幅探索だよ。 でも、本当に全幅したら、制限時間収まらないから、 探索木を刈り込んで、選択の範囲を限定してやる。 その限定方法に、王を含む要の3駒の位置関係関係から導きさされる値をしきい値にしているということだよ。 Bonanzaって思考ルーチンが公開されているハズだから、落として読んでみればw
573 名前:デフォルトの名無しさん mailto:sage [2016/05/24(火) 13:58:42.06 ID:iG1UUWT4.net] 将棋AIで盛り上がってるんじゃないと思うよたぶん 俺の見た感じだと (1) public class ShikouA implements IShikou { public Object tsugi_no_itte(Object param) { // 次の一手を考えるアルゴリズム書く } } の1クラスでいい派と (2) public class Rule { } public class Kouho { } public class TensuHyoka { } public class Banmen { } みたいにできるんじゃねーのという>>1 の構図なだけでAIの中身は話してないと思う
574 名前:デフォルトの名無しさん mailto:sage [2016/05/24(火) 14:06:07.08 ID:uyx/y43g.net] いい加減お題が悪いんだから引っ込めろよ ゲームPGが設計書なんて書かないのはゲームが状態遷移のお化けだから 状態遷移がメインになる時は資料が役に立ちにくい
575 名前:デフォルトの名無しさん [2016/05/24(火) 18:58:04.32 ID:6RFz1ZJQ.net] >>565 >>514
576 名前:デフォルトの名無しさん [2016/05/24(火) 19:03:58.90 ID:6RFz1ZJQ.net] >>564 違うだろ。 クラスを分けないにしても設計はないと構築できないって言ってる。 実際のプロジェクトだったら設計書ができて時点で客が確認する。 それを構築チームが読む。 ってやるだろ。 なんで分からないのか不思議。 真剣に疑問なんだが、実際のプロジェクトがそうなってることを知らないのか? それと、俺は実装する設計が(2)になるなんて言ってない。 最終的な構成がすぐに出ないならまずは論理設計からするのが基本って言った。
577 名前:デフォルトの名無しさん [2016/05/24(火) 19:18:16.62 ID:6RFz1ZJQ.net] 質問なんだけど、実際のプロジェクトで設計書を作って客に提出したことが ある奴で将棋ソフトの構成案を書き込んだって奴いるの? いたらレス番を教えてくれ。
578 名前:デフォルトの名無しさん mailto:sage [2016/05/24(火) 20:14:51.18 ID:TKpsNxtt.net] >>561 > 客に設計を依頼されて、開発チームに「自由に作って」ってさあ…。 だから質問したよね? なんで答えないの? 模範例として二分探索の設計とはどういうものかを答えろって。
579 名前:デフォルトの名無しさん mailto:sage [2016/05/24(火) 20:19:38.66 ID:TKpsNxtt.net] >>568 二種類の人間しかいないよw 一つは、(将棋ソフトの中の一部分の)思考ロジックには設計と呼べるようなもの必要ない。 あえて言うならば、思考ロジック内部では、クラスなど何も作らないという設計。 もし追加でなんか要望があるのなら、それに合わせて何か作るかもしれないが、 現時点では要望無いから一番シンプルな設計=クラスなし。 これが俺が言ってること。 そしてもう一つは、思考ロジックにも設計がいるんだ。 駒が何種類かあるのをクラス化して、 動きのルールをクラス化して 盤面に配置をクラス化して 配置された駒が動けるマスをクラス化して 駒の配置とかを見て点数をつけるクラスを作って そうやって、思考ロジックを作るべきなんだ。 でも俺にはそれをどうすればいいかわからない。 誰かおしえてくれ! って言ってる無意味に複雑にして何も出来ない、お前w
580 名前:デフォルトの名無しさん [2016/05/24(火) 20:21:59.63 ID:6RFz1ZJQ.net] >>569 >>538 >>544 現時点で具体的になってないのはすでに書いた通り。 だから、迷う点について意見交換しながら進めようとしている。 反応が全然ない。 一人で考えて設計案を出すことはできること、それならスレでやる意味ないじゃん。 設計案を何も出さないことについてはバカにしてるけど、設計のアイデアに対しては肯定的な レスを返してるつもりだけど。
581 名前:デフォルトの名無しさん mailto:sage [2016/05/24(火) 20:22:53.94 ID:TKpsNxtt.net] >>571 > 設計案を何も出さないことについてはバカにしてるけど そうか。じゃあお前の設計案は? ムダに複雑にすることかい?w
582 名前:デフォルトの名無しさん mailto:sage [2016/05/24(火) 20:24:47.16 ID:TKpsNxtt.net] 模範例として二分探索のお前の設計をいえって 言ってるのに、逃げてばっかりなんだよなw
583 名前:デフォルトの名無しさん [2016/05/24(火) 20:25:08.60 ID:6RFz1ZJQ.net] >>569 あと、二分探索自体の設計なんて求めていない。 思考ロジックの処理フローとかはいらないって書いたじゃん。 駒の配置を読み込んで、内部の実装(書く必要のない)で点数化して、 最適な手を選ぶって大きな流れを構成するクラスないしモジュールの構成。
584 名前:デフォルトの名無しさん mailto:sage [2016/05/24(火) 20:25:28.59 ID:ya5FB131.net] こんなところでグダグダ言ってないで 早く社会に出て仕事すればスキルは身に付くと思うよ いきなり実装レイヤの話から入らないで まずは概要と仕様を決めないとね
585 名前:デフォルトの名無しさん mailto:sage [2016/05/24(火) 20:26:34.82 ID:TKpsNxtt.net] >>574 > あと、二分探索自体の設計なんて求めていない。 だから俺が求めてるんだよってw 二分探索アルゴリズムも 将棋の思考アルゴリズムも一緒。 俺の答えは、二分探索アルゴリズムも将棋の思考アルゴリズムも 設計と呼べるものは(現時点では)いらない。
586 名前:デフォルトの名無しさん mailto:sage [2016/05/24(火) 20:28:04.81 ID:TKpsNxtt.net] > 駒の配置を読み込んで、内部の実装(書く必要のない)で点数化して、 > 最適な手を選ぶって大きな流れを構成するクラスないしモジュールの構成。 駒の配置・・・2次元配列 点数化・・・計算関数 最適な手を選ぶ・・・戻り値 ほっほっほwww なんでこんなのをクラスにしないといかんのやwwww
587 名前:デフォルトの名無しさん [2016/05/24(火) 20:28:27.44 ID:6RFz1ZJQ.net] >>572 オブジェクト指向システムの設計について話そうってスレなんだから >>544 に対する見解を聞かせてくれ。 例を出したのもそれが目的。
588 名前:デフォルトの名無しさん [2016/05/24(火) 20:29:17.01 ID:6RFz1ZJQ.net] >>577 >>562
589 名前:デフォルトの名無しさん mailto:sage [2016/05/24(火) 20:31:17.27 ID:TKpsNxtt.net] >>578 オブジェクト指向とは関数(思考ロジック)をオブジェクト指向に変えるものではなくて、 関数を取り巻く世界を扱うものだ。ドアホw 将棋ソフトで言えば、思考ロジック・・・を取り巻く世界、 つまり複数あるかもしれない思考ロジックを入れ替えやすくしたり、 配置データを3Dオブジェクトで表現したり、 そういう、関数(思考ロジック)と関数(その他の処理)を 分類して扱いやすくするものだ。 たとえばフレームワークと呼べる部分がオブジェクト指向だ。 ま、お前、経験足りないってことだなw
590 名前:デフォルトの名無しさん mailto:sage [2016/05/24(火) 20:32:20.22 ID:TKpsNxtt.net] >>579 だから2次元配列の設計というのがどういうものかを言えって。 逃げるな卑怯者。 逃げるな卑怯者。 それに合わせて思考ロジックの設計を答えてやんよwww
591 名前:デフォルトの名無しさん mailto:sage [2016/05/24(火) 20:33:33.14 ID:TKpsNxtt.net] まーちーがーえーたーwww >>579 だから二分探索の設計というのがどういうものかを言えって。 逃げるな卑怯者。 逃げるな卑怯者。 それに合わせて思考ロジックの設計を答えてやんよwww
592 名前:デフォルトの名無しさん [2016/05/24(火) 20:53:10.15 ID:6RFz1ZJQ.net] ID:TKpsNxttは専門学校の学生?
593 名前:デフォルトの名無しさん mailto:sage [2016/05/24(火) 21:02:34.83 ID:i9YaiJfL.net] だめだこりゃ この>>1 議論する能力がない
594 名前:デフォルトの名無しさん mailto:sage [2016/05/24(火) 21:08:39.75 ID:i9YaiJfL.net] >>567 >実際のプロジェクトだったら設計書ができて時点で客が確認する。 この子、客にクラス図みせるのか まあ下請なら仕方ないか
595 名前:デフォルトの名無しさん mailto:sage [2016/05/24(火) 21:11:09.24 ID:TKpsNxtt.net] >>583 違うけど俺が専門学校の学生かどうかと、 お前が二分探索の設計を答えないことに どう関係があるんだ?w 俺が何者であろうと、お前は二分探索の設計を 答えることが出来るはずだ。 答えない代わりに、そういうレスをすることで 反論(?)した気になろうとしてるんだろうが、無駄無駄w
596 名前:デフォルトの名無しさん mailto:sage [2016/05/24(火) 21:17:39.14 ID:i9YaiJfL.net] >>586 あんまりいじめてやるなよ
597 名前:デフォルトの名無しさん mailto:sage [2016/05/24(火) 21:18:27.86 ID:KRMd4EzS.net] >>582 題材が悪すぎるよ どう考えても関数1つで十分 入力は盤の情報と自分と相手の持ち駒ぐらいだし 出力は次の一手オンリー こんなんじゃ設計書いんないね のいい例みたいになってる こういう時に挙げる題材が悪いってのは要は経験が足りないんだろ 少なくとも通信やDBを絡ませるようなもんを出せば資料作んなきゃねって 話になったじゃん バーカ
598 名前:デフォルトの名無しさん [2016/05/24(火) 21:27:49.83 ID:6RFz1ZJQ.net] >>585 どんな構成になるか説明を求められたとき、お前は何を見せるんだ?
599 名前:デフォルトの名無しさん mailto:sage [2016/05/24(火) 21:29:47.19 ID:i9YaiJfL.net] >>588 582に言うことか?
600 名前:デフォルトの名無しさん mailto:sage [2016/05/24(火) 21:31:31.83 ID:i9YaiJfL.net] >>589 この子、人に物を尋ねる基本的なマナーももちあわせてないのか まあ仕方ないか
601 名前:デフォルトの名無しさん [2016/05/24(火) 21:32:03.67 ID:6RFz1ZJQ.net] >>586 >>571 で回答したとおり、そもそも意見交換しようってスレなんだから意見交換しようぜ。 設計について会話する気がないならスレにいる意味ねえだろ。 設計について会話が成立しないのは学生っぽいなあって思って。 あんまり必死気に書き込んでたから雑談でもしてやるかと思ったけどスルーしたほうが良かったな。
602 名前:デフォルトの名無しさん [2016/05/24(火) 21:33:32.81 ID:6RFz1ZJQ.net] >>591 質問じゃねえからw 「何言ってんだこいつ?」ってのをやんわり言ったんだよ。
603 名前:デフォルトの名無しさん [2016/05/24(火) 21:37:36.56 ID:6RFz1ZJQ.net] >>588 適切な題材があるなら出せばいいじゃん。 他の例ある?あるならその設計について語ってくれ。って何度か書き込んでる。
604 名前:デフォルトの名無しさん [2016/05/24(火) 21:41:00.13 ID:6RFz1ZJQ.net] 「俺のほうがスキルある」って主張したい奴がたくさんいるみたいだけど 設計を書けばみんな認めてくれるよ! 俺は最初の取っ掛かりは考えて会話の糸口は出した。 何も出していないお前ら。 どっちが無能かは明らかじゃん。 批判してる暇があったら少しは建設的なことやってくれ。 俺が反論できないくらいの設計指針なり、なんかのシステムの設計なりを見せてくれよ。
605 名前:デフォルトの名無しさん [2016/05/24(火) 21:56:38.92 ID:DBnZJSfL.net] お前が消えればいいんやで どうみても適当でない例を引っ張なくてもいいし
606 名前:デフォルトの名無しさん mailto:sage [2016/05/24(火) 21:59:45.35 ID:TKpsNxtt.net] >>592 そんなのはいいからさ、 二分探索の設計はどうしたの? 会話が成立してないのは、俺の投げたボールを お前が投げ返さないからじゃん。
607 名前:デフォルトの名無しさん mailto:sage [2016/05/24(火) 22:01:11.19 ID:TKpsNxtt.net] >>595 恥ずかしいセリフだな > 「俺のほうがスキルある」って主張したい奴がたくさんいるみたいだけど > 設計を書けばみんな認めてくれるよ! > > (そういったら、言い出しっぺの俺に設計を答えろって言われるだろ? > それは困るから) > > 俺は最初の取っ掛かりは考えて会話の糸口は出した。 >
608 名前:デフォルトの名無しさん mailto:sage [2016/05/24(火) 22:07:20.85 ID:ya5FB131.net] >>595 君のその「高圧的な態度」が問題なんだと思うよ そんな調子じゃ建設的な話なんてできるわけないでしょw
609 名前:デフォルトの名無しさん mailto:sage [2016/05/24(火) 22:12:13.61 ID:iG1UUWT4.net] これはさすがに香ばしい 将棋のクラス構成クレクレ(>>368 ,388,390,413,454など) ↓ 思考ルーチンなんて1クラスになるしクラス図とか不要だろ(複数) ↓ Bonanzaみろよ。1クラスとか普通じゃないだろ(>>549 ) ↓ 実際1ファイルになってました やはりまず>>1 が考えたクラス構成を出して こんなんだけどどう思うよってやらんと 議論は絶対進まないと思うぞ
610 名前:デフォルトの名無しさん mailto:sage [2016/05/24(火) 22:40:15.63 ID:B8/5s3nv.net] 「エリック・エヴァンスのドメイン駆動設計」 みたいに貨物システム考えてみるか? あれなんかよくわからんのだけれど。。
611 名前:デフォルトの名無しさん [2016/05/24(火) 23:31:04.66 ID:6RFz1ZJQ.net] >>600 >実際1ファイルになってました Bonanzaは50ファイルくらいあるらしいけどw
612 名前:デフォルトの名無しさん [2016/05/24(火) 23:36:24.44 ID:6RFz1ZJQ.net] オブジェクト指向システムの設計について語る気ないのにしつこく書き込む連中の気が知れない。 「スキルがあるんだー」って主張してるみたいだからオブジェクト指向について少しは語れよ。
613 名前:デフォルトの名無しさん [2016/05/24(火) 23:37:48.35 ID:6RFz1ZJQ.net] >>601 それでもいいぞ。 どんなシステムなのか概要とか要件とか説明頼む。
614 名前:デフォルトの名無しさん mailto:sage [2016/05/24(火) 23:58:18.37 ID:24rCrc9d.net] >>604 なんでお前が割り込んでくるの
615 名前:デフォルトの名無しさん mailto:sage [2016/05/24(火) 23:58:32.22 ID:iG1UUWT4.net] >>602 思考ルーチンのことな 総ファイルじゃなくて
616 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 00:00:48.81 ID:9xysTXwv.net] >>603 いやだからまず>>1 が始めろってば > 「スキルがあるんだー」って主張してるみたい みんながそうなんだーということにしたいのだろうが こんな主張してるの >>522 ,595 だけじゃね? 少なくとも俺はそう思ってない
617 名前:デフォルトの名無しさん [2016/05/25(水) 00:14:42.01 ID:FG6PmAiu.net] >>606 今どきのソフトはちゃんと分離されているようだから読んでおいて。 yaneuraou.yaneu.com/2015/11/16/%E5%B0%86%E6%A3%8B%E3%82%BD%E3%83%95%E3%83%88%E3%82%82%E5%88%86%E6%A5%AD%E3%81%AE%E6%99%82%E4%BB%A3%E3%81%AB%E7%AA%81%E5%85%A5%EF%BC%9F/ https://github.com/HiraokaTakuya/apery/tree/master/src 事前に知っていた訳じゃないけど普通に考えてそうだわな。
618 名前:デフォルトの名無しさん [2016/05/25(水) 00:22:11.48 ID:FG6PmAiu.net] >>607 そっかそっか。それなら一緒に考えようぜ。 >>544 についてコメント欲しい。 あるいは別の進め方とか別の疑問とかでもいいし。
619 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 00:36:52.35 ID:9xysTXwv.net] >>609 これで何回目になるかわからんが別の進め方 >>1 がまず書いて これどうよって進めないとだめだって
620 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 00:37:39.73 ID:5QI4GMUE.net] 設計の段階で悩むのは要求仕様が将棋ソフトっていう超ザックリだから 仕様をもっと詰めなきゃ設計に着手すべきじゃない
621 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 01:00:24.20 ID:kC1gn4Wj.net] >>611 将棋ソフトじゃねーぞw 思考ロジックだけの話だ。 これを設計しろとかのたまう。 じゃあ同じような例で二分探索の設計を言ってみろと聞くと 話題のきっかけを与えた俺は答えなくていいとか言うようなことを言って 逃げる逃げるw
622 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 01:21:13.25 ID:favsXrk5.net] 手 getNextMove(現棋譜, 対局時計); みたいなインターフェースを用意して、好きなように内部を実装すれば良いのでは? ・・・と思った俺は話についていけてない?
623 名前:デフォルトの名無しさん [2016/05/25(水) 01:21:30.67 ID:FG6PmAiu.net] >>610 質問してるのはまじめな質問だからレスがないなら進める意味がないと感じてる。 とは言え何か欲しいんだろうからざっと考えたER図を。 ちょっと考えただけなので漏れや間違いもあるだろうから改善点の指摘は歓迎だ。 https://drive.google.com/file/d/0B2NKffVh2tpqV1E4SnhSYzh5MVU/view KomaTypeは駒の種類。駒の動きの情報も含めている。 Komaは盤面上にある駒。 Banmenは局面。 Moveはその局面で指すことができる手。 実際は手によって盤面が進むんだけど、そこをどうするかは決めてない。 あと、盤面で指せる手×指した盤面で指せる手×…というように盤面が増えるんだけど その関係をどう持つかは決めてない。 なんとなく整理を始めようってくらいなので進めながらいろいろ修正する。 最初のたたき台ってことで。 反応があれば次はモデルクラスを考えてみる。 ちなみにオンラインでチャートが書けるサイトを見つけて書いてるけど https://www.draw.io/ 操作方法は良く分からない。 リレーションの1:Mとか必須かどうかとかはおかしいかもしれないけど 細かい部分は気にしないでくれ。
624 名前:デフォルトの名無しさん [2016/05/25(水) 01:29:02.28 ID:FG6PmAiu.net] >>611 電王戦に出るソフトって以上のことはイメージないぞ。 要件はここにPDFがあった。 denou.jp/tournament2015/rule.html
625 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 01:36:24.48 ID:9xysTXwv.net] >>614 とりあえず乙 反応なくても恨んでくれるなよwww 主張的にFuとかKeimaとかのクラス作るのだろうと予想してたけど外れた KomaTypeやKomaは内部でめっちゃif文分岐しそうだな
626 名前:デフォルトの名無しさん [2016/05/25(水) 01:39:41.54 ID:FG6PmAiu.net] >>616 保持すべきデータの整理だからクラスの手前。 クラスは最初は分けた設計にすると思うよ。 途中でまとめたり、そもそもクラスじゃないってなるかもしれないけど 設計の最初はきっちりクラスを作ったほうが機能漏れが減ると思う。
627 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 01:39:45.11 ID:9xysTXwv.net] あとそのツールは知らんが クラス図描くならcacooとかどうよ
628 名前:デフォルトの名無しさん [2016/05/25(水) 01:41:53.66 ID:FG6PmAiu.net] >>618 ほー、そんなのもあるんだ。 クラス図を書くことになったら両方試して使いやすいほうを選ぶ。
629 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 02:26:37.41 ID:favsXrk5.net] >>614 おー乙 俺は・・・盤面の評価の仕方はおろか将棋のルールさえ良く知らない、という現実に気づいたから不貞寝する
630 名前:デフォルトの名無しさん [2016/05/25(水) 09:00:39.59 ID:nXtYFHtE.net] 将棋だとルール複雑or知らない人もいるから まだオセロの方がいいだろ なんで将棋を例に出したん
631 名前:デフォルトの名無しさん [2016/05/25(水) 09:20:06.31 ID:FG6PmAiu.net] >>621 この前の週末に電王戦をやってたから。
632 名前:デフォルトの名無しさん [2016/05/25(水) 09:23:00.16 ID:FG6PmAiu.net] >>621 あとは業務システムよりは知ってる奴が多くて分かりやすいから。 ちなみにオセロだと派生クラスとかの話は出なそうだな。
633 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 09:31:16.83 ID:kC1gn4Wj.net] >>621 将棋のルール複雑か? 手数が膨大で処理がかかることと、 複雑さは別問題。 駒の動き+手駒 = 再帰処理する上での枝の数と考えれば 後は再帰と評価関数じゃん?
634 名前:デフォルトの名無しさん [2016/05/25(水) 09:31:22.01 ID:FG6PmAiu.net] ERを修正。 盤面上にある駒には成ってる駒と成ってない駒があるのと 駒ごとに成れる成れないがあるので、それを追加。 https://drive.google.com/file/d/0B2NKffVh2tpqV1E4SnhSYzh5MVU/view?usp=sharing
635 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 09:35:18.26 ID:kC1gn4Wj.net] >>625 KomaType(苦笑) データベースでもいるんだわ。 データが増減するわけでもないのに、値と名前の 対応表テーブルを作り出してデータベースに入れるやつ。 データベースアクセス無いと名前が取り出せないw えとな、こういうのは定数としてコード上に defineでもしてればいいのよ。
636 名前:デフォルトの名無しさん [2016/05/25(水) 09:39:04.05 ID:FG6PmAiu.net] >>626 あ、また来たw ちがう設計の仕方があるならそれでやって見せてくれ。 お前「それは間違ってる」 俺「それだけじゃ無意味だから正しいやり方とかアイデアは?単にケチつけたいだけじゃんw」 お前「…」 何回同じこと言われれば分かるんだろ。
637 名前:デフォルトの名無しさん [2016/05/25(水) 09:41:09.56 ID:FG6PmAiu.net] あと、データベース作るってことじゃないから。 データを整理するって書いたじゃん。 データを整理する別の手法があるなら教えてね。 設計しないで構築できちゃうって主張したいみたいだからdefineを書いてくれてもいいよ。
638 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 10:08:40.60 ID:r8UScIDo.net] お題「1から100までの数のうち、3の倍
639 名前:数ならFizzを、5の倍数ならBuzzを、15の倍数ならFizzBuzzを、それ以外ならその数を出力するシステムを作りなさい」 よーしまずは設計からだ!与えられた数に対して何かするクラスConsumerと、1から100の数を出力するGeneratorが要るな! Fizzを出力するクラスはConsumerを継承させよう!同じ方法でBuzzもFizzBuzzも作ろう! どれにも共通する振る舞いは「それ以外の数ならその数を」という部分だな!これはConsumerに書こう! 1. Fizz => Buzz => FizzBuzzと継承させたらロジックを複雑にしなくて済むしコピペコードも無い!OOPは最高や! 2. 問題になるのはGeneratorから与えられた数をどのConsumerに渡すか、だな!じゃあConsumerManagerを作って、こいつに管理させよう! 見通しが良くなったし後から拡張も簡単にできるな!OOPは最高や! 末路→https://github.com/EnterpriseQualityCoding/FizzBuzzEnterpriseEdition [] [ここ壊れてます]
640 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 10:58:41.63 ID:OQdKu81q.net] >>626 DBアクセスはキャッシュの仕方で軽減できるな どうぶつ将棋や摩訶大将棋に拡張したり、I18n対応を考えるなら、ラベルをDBに持っとくのは悪くないと思う
641 名前:デフォルトの名無しさん [2016/05/25(水) 11:09:06.28 ID:FG6PmAiu.net] そう言や定跡データは必要だな。 BonanzaとかAperyとかはたぶんフラットファイルで持ってるんだろうけど 俺だったらDBに格納しちゃうな。 業務システム系やってるとデータはDBに格納して操作したほうが楽ってなっちゃうわ。 ってことで、定跡DBの設計って観点から考える必要が出てきた。
642 名前:デフォルトの名無しさん [2016/05/25(水) 11:10:17.24 ID:FG6PmAiu.net] 定跡ってか、過去の棋譜データだな。
643 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 13:45:46.81 ID:Rwgeje6L.net] よいよ、将棋AIを作るスレになってきたのw
644 名前:デフォルトの名無しさん [2016/05/25(水) 15:24:30.40 ID:FG6PmAiu.net] まあね。 >>358 とか、>>431 とかについて話すのが目的だから将棋ソフトはそのきっかけってだけなんだけどさ。 将棋ソフトについても設計の手順はどうするのがいいとか、 俺は業務システムの開発経験しかないからゲームやってる人達のプロセスを聞きたいとか 設計がらみの話題について語れる人が来てくれるといいけど。
645 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 18:54:37.16 ID:5WrCkf94.net] クラスの中のプライベートメソッドってどういう時に使うの? クラスが肥大化したとき?
646 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 19:14:40.11 ID:driOGhFD.net] 肥大したコードの整理 何度も呼ばれる処理を切り出して再利用 特異な事をしているという表明 お好きにどうぞ
647 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 19:25:19.33 ID:5WrCkf94.net] なるほどサンクス
648 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 19:56:03.70 ID:OXIFfwZq.net] エ口巨乳とパコリwwwwwwwwwwwwwwww ccdotcc.altiusinc.com/3769
649 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 20:03:23.09 ID:VNiDmyVP.net] >>629 面白いw Star 5,292 なのは、同感する奴も多いんだろう。 Fork 288 ってのは意味不明だが。(さすがにForkする必要はない) Javaなのはやはりというべきか。>>1 もJava屋だし。
650 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 20:16:03.29 ID:kC1gn4Wj.net] >>627 > ちがう設計の仕方があるならそれでやって見せてくれ。 だから定数としてdefineすればいいって言ってるじゃん? なんで読めないのかな? 自分が望む答えじゃないと無視するタイプ?w
651 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 20:18:32.97 ID:kC1gn4Wj.net] >>634 > I18n対応を考えるなら なんで世の中のi18nの対応がデータベースに保存するんじゃなくて gettextやymlを使った翻訳の仕組みがデフォルトだと思ってるんだよw オレオレで仕組みを作るんじゃなくてフレームワークなどの ごく当たり前のやり方を使えばいいんやで?
652 名前:デフォルトの名無しさん [2016/05/25(水) 20:18:56.00 ID:FG6PmAiu.net] >>640 それじゃ要件をまったく満たせていないからやり直し。 ER図を読めれば足りないことくらい分かるんだけどなあ。
653 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 20:21:03.58 ID:6PTcoeR/.net] 棋譜再現プレイヤーとしても機能するようにするならどう設計する?
654 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 20:22:55.79 ID:kC1gn4Wj.net] >>631 > 業務システム系やってるとデータはDBに格納して操作したほうが楽ってなっちゃうわ。 楽? 変数のほうが楽だろ? 「楽」っていうのは意味が二通りあって、 「実装するのが楽」と「学習するのが楽」がある。 後者はようするに、新しいこと覚えたくないーとか、 連想配列を知った人が、適当な場合でもないのに、なんでも連想配列使って実装する。 学習するのが面倒で、やっとのことで覚えたら、そればっかり使おうとする人。 「DBに格納して操作したほうが楽」っていうのは、もちろん後者だろうな。 実装が楽じゃなくて、覚えなくていいから楽という意味で使っている。 思えばお前のやり方もそうなんだよ。 クラスを知ってしまった。これ以上新しいことを知りたくない。 だから適当な場合でもないのに、クラスばっかり使おうとしている。
655 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 20:23:34.56 ID:kC1gn4Wj.net] >>642 > それじゃ要件をまったく満たせていないからやり直し。 満たしていない部分がどこかを答えてみ。 お前の考えなんてわからんよw
656 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 20:24:57.76 ID:kC1gn4Wj.net] >>641 は>>630 あて。 何で間違えたんだろ?
657 名前:デフォルトの名無しさん [2016/05/25(水) 20:26:33.41 ID:FG6PmAiu.net] >>645 盤面・手の情報をどうやって保持すんのよ? ERに明示されているのに分からないって…。
658 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 20:29:19.24 ID:kC1gn4Wj.net] >>647 盤面の情報なら、二次元配列で持てるだろ? 手の情報ってなんだ? 駒の動きか? そんなのswichで種類を分岐して、動かせる場所を列挙すればいいだけだろう?
659 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 20:30:35.43 ID:kC1gn4Wj.net] >>647 あ、今気づいたけど、お前、連想配列(ハッシュ)を知らんだろ?
660 名前:デフォルトの名無しさん [2016/05/25(水) 20:31:04.99 ID:FG6PmAiu.net] >>648 他の人が分かるように明確に書こうね。 お前は設計書の書き方をしらないみたいだからコードで書いてくれる。
661 名前:デフォルトの名無しさん [2016/05/25(水) 20:36:21.84 ID:FG6PmAiu.net] ちなみにコードで書けってのは全部は求めてないから。 Cで言うところのヘッダファイルの内容でいいぞ。 どうやって保持しようとしてるのか第三者にもちゃんと伝わる形で書けってこと。 設計を書けるなら設計でもいいぞー。
662 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 20:37:04.26 ID:kC1gn4Wj.net] >>650 switch(koma) { case KEIMA: 次に動ける箇所(複数)にコマを動かして評価関数呼び出し }
663 名前:デフォルトの名無しさん [2016/05/25(水) 20:38:47.79 ID:FG6PmAiu.net] >>652 しょぼっw まさかこれで終わりじゃないよな??
664 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 20:39:47.00 ID:kC1gn4Wj.net] >>6
665 名前:53 ムダに複雑にするなよw. お前、手段が目的にすり替わってるぞ。 沢山コードかくことが、ちゃんと仕事した証拠なんだって 思ってるだろw [] [ここ壊れてます]
666 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 20:40:58.77 ID:kC1gn4Wj.net] いつも通りだけど、レスの内容がおかしんだよなw 正しいか間違っていからじゃなくて、 しょぼいかどうかw
667 名前:デフォルトの名無しさん [2016/05/25(水) 20:42:29.45 ID:FG6PmAiu.net] >>654 これで第三者がお前の考えを理解して構築できるようになると考えているならとんでもなくおめでたい。 客にこんなの出したら呆れられて「もう来ないでいいよ」って言われる。
668 名前:デフォルトの名無しさん [2016/05/25(水) 20:43:25.03 ID:FG6PmAiu.net] >>655 どういう構成を想定してるのか全然伝わらない。
669 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 20:44:08.66 ID:kC1gn4Wj.net] >>630 > どうぶつ将棋や摩訶大将棋に拡張したり、 YAGNI https://ja.wikipedia.org/wiki/YAGNI "You ain't gonna need it"[1]、縮めて YAGNI とは、機能は実際に必要となるまでは追加しないのがよいとする、エクストリーム・プログラミングにおける原則である。 理由 YAGNI原則を提唱する人々は、その理由として以下を挙げている。 ・後で使うだろうという予測の元に作ったものは、実際には10%程度しか使われない。したがって、それに費やした時間の90%は無駄になる[2]。 ・余計な機能があると、仕事が遅くなり、リソースを浪費する[2]。 ・予期しない変更に対しては、設計を単純にすることが備えとなる。そして、必要以上の機能を追加すると、設計が複雑になってしまう[2]。 ・人生の時間は、貴重である。したがって、人間の能力は、ただコードを書くためではなく、現実の問題に集中するために使うべきである[3]。 ・結局は、その機能は必要ないかもしれない。もしそうなったら、あなたがその機能を実装するのに費やした時間も、他のみんながそれを読むのに費やした時間も、その機能が占めていたスペースも、すべて無駄になってしまうだろう[3]。 ・コードをすばやく実装するために最も良い方法は、あまりコードを書かないことである。そして、バグを減らすために最も良い方法も、あまりコードを書かないことである[3]。
670 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 20:44:55.61 ID:kC1gn4Wj.net] >>657 > どういう構成を想定してるのか全然伝わらない。 それはお前のER図の話だw 何を想定しているかわからないから、 そんなのいらんだろって言ってる。
671 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 20:45:40.89 ID:kC1gn4Wj.net] >>656 え?なんで?w いつもながら理由が書いてないなw
672 名前:デフォルトの名無しさん [2016/05/25(水) 20:46:43.66 ID:FG6PmAiu.net] >>659 ER図を理解できない奴発見wwww ERが分からないって言って出してきたのが、これ?? switch(koma) { case KEIMA: 次に動ける箇所(複数)にコマを動かして評価関数呼び出し } 笑わせよるわ〜www
673 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 20:49:13.86 ID:kC1gn4Wj.net] 将棋のルールを知っていれば当然わかると思うけど、 動ける場所はデータとして持たせることは難しいんだよな。 歩とか金とかならまだいいけど、 飛車とか角とか縦横または斜めのどこにでも動けるから この動きをデータとして持たせるのは不可能じゃないけど、 結局コードが必要になるので冗長
674 名前:デフォルトの名無しさん [2016/05/25(水) 20:49:27.02 ID:FG6PmAiu.net] >>660 お前が設計を分かってないとは感じていたけどここまで分かってないとは思ってなかったwww もう休んでいいぞ。 設計について語ろうってスレに書き込んじゃだめなレベルだから。
675 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 20:50:28.37 ID:kC1gn4Wj.net] >>661 お前、何一つ言い返していない。 俺がやったことを、単にお前が語ってるだけ。 それでお前はどうしたいんだ?
676 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 20:51:09.26 ID:kC1gn4Wj.net] >>663 > 設計について語ろうってスレに書き込んじゃだめなレベルだから。 って、それお前が沢山の人に言われたセリフだよなw
677 名前:デフォルトの名無しさん [2016/05/25(水) 20:57:18.51 ID:FG6PmAiu.net] switch(koma) { case KEIMA: 次に動ける箇所(複数)にコマを動かして評価関数呼び出し } を構築チームに渡せばお前の考えている構成が伝わると思ってる相手と 技術的な会話を成立させるのは無理だわ。 あー、ちなみにERはほんの最初だから。 設計の5%くらいは進んだかなあってレベル。 それも分かってなかったみたいだね。
678 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 20:57:36.43 ID:9xysTXwv.net] >>639 面白いよなwww さすがにソース全部見る気にはならんが インターフェースのなかの ストラテジーやらファクトリーやらビジターやら見てみて ようやるわ! って感じでうけたwww
679 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 20:59:24.44 ID:la8ZiYsl.net] >>652 はさすがにないわ 将棋を知らないのかもしれんがあまりにお粗末
680 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 22:06:55.68 ID:60iV75hD.net] DFSの再帰だってことぐらいはパッとわかるが
681 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 22:12:02.90 ID:FG6PmAiu.net] >>669 ID:kC1gn4Wjかなw
682 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 22:13:41.56 ID:60iV75hD.net] 違うよ
683 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 22:17:42.15 ID:FG6PmAiu.net] >>671 どこから再帰を見出したのが謎過ぎるw
684 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 22:19:58.55 ID:60iV75hD.net] ゲーム木の処理だったらDFSかBFSでしょ キューに入れないで関数呼び出してるから再帰かと
685 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 22:25:15.21 ID:FG6PmAiu.net] >>673 そうかそうか。 突っ込みどころ満載のなんちゃってコードについてもっと語り合って楽しみたいんだけど 他の人の迷惑になるから心残りだけどおしまいにするよ。 まじで楽しませてもらったw
686 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 22:25:22.62 ID:7yHwSTAr.net] www.geocities.jp/bonanza_shogi/#news とりあえずここから bonanza のソース取ってきて、 src/client/evaluate.c でも読んでみたらいい。
687 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 22:29:11.19 ID:FG6PmAiu.net] >>675 Bonanzaの設計はひどいって聞いたから読むならAperyだな。 でも、将棋ソフトを作りたいんじゃないから。 将棋ソフトを例に、システムを設計するにあたって抱く疑問点に対する一般的な指針を語りたいんだ。
688 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 22:37:37.91 ID:60iV75hD.net] 普通にMVCでCにゲームループでMに盤面持ってればいいじゃん
689 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 22:38:35.12 ID:fBBvLnfI.net] そういう考え方がすでに駄目なんだよきっと だってそもそもいい設計って何? どうなれば満足なの?
690 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 22:39:36.05 ID:60iV75hD.net] 要求仕様によってはMVCすら必要ないな
691 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 22:41:35.38 ID:fBBvLnfI.net] 将棋なんて 俺が刺した瞬間にCPU側が指し終わってるぐらいで丁度いい つまりクリックイベントと開始ボタンの処理だけで十分
692 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 22:42:53.48 ID:7yHwSTAr.net] >>676 だったら上記のソースの駄目なところと それをどのように改善すべきなのか言ってみたらいいだろう。 てかこのくらいのコードも読めないならそもそも話にならんと思うんだが。。
693 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 22:44:20.19 ID:FG6PmAiu.net] >>681 そこまで言うならどういう構成になってるのか読んで理解してアップすればいいじゃん。
694 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 22:46:51.60 ID:7yHwSTAr.net] 話にならん。。 ここまで手取り足取り要求されるのはかなわんわ。。
695 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 22:50:20.97 ID:FG6PmAiu.net] >>683 は?俺からは一度も要求してないが。 お前は簡単に読めちゃうって言ったんだからだったら読めばってだけ。 俺はそもそも仕様書書くべきって考えだから。
696 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 22:53:53.99 ID:fBBvLnfI.net] 将棋.exe起動→駒配置→俺のターン!→駒選択(クリックイベント処理) →駒移動(クリックイベント処理) 勝利判定→敵のターン!→敵思考ルーチン処理 →敵駒選択→敵駒移動→勝利判定→俺のターン!→以下ループ 勝利判定したら→結果表示→もう一度やる?→Yes:駒配置に戻る→No:将棋.exe終了 できた!
697 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 23:00:09.81 ID:FG6PmAiu.net] >>685 ほうほう。多少違ってるけどまずまず。 後手のケースもある。 人のターンの最中もソフトは思考を続ける。
698 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 23:04:17.28 ID:fBBvLnfI.net] >>686 後手のケースは敵のターンから始めるだけだ exeの起動パラメータに「うんこ」っていれると後手になる
699 名前: [] [ここ壊れてます]
700 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 23:05:30.70 ID:FG6PmAiu.net] >>685 勝利判定の位置も思考して初めて勝利判定できるからちょっとおかしいな。
701 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 23:06:08.87 ID:60iV75hD.net] 設計いらんかったなw
702 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 23:06:16.40 ID:VNiDmyVP.net] とりあえずC/C++派は傍観でいいんじゃないか? 一流()のJava屋の設計()を見せてもらおう。 ShogiEnterpriseEdition()ができそうだし。 あと俺もC++派でJavaはやったこと無いんだが、 取り急ぎ確認した結果、お前らが空回りしている理由は分かるから、それは言っておく。 それは、JavaがC--だからだ。用語の対比は以下。 C++: グローバル = Java: クラスにしてシングルトン C++: enum = Java: クラスにしてfinal指定(継承禁止のconst static) C++: define = 同上。 つまりC++の方がより詳細に記述できる。(C++の記述力の方が完全に上) だからお前らがdefineとかenumだーとか言っても、それはJava屋にとっては全部「クラス」になっちゃうわけ。 つまり、Java屋でしかない奴(>>1 )は、C++の精度では議論不可能なんだよ。だから空回りする。 まあそれ以上に>>1 が無知かつ無能なのは事実だが。 俺個人の意見はポロポロ出ている意見と同じ物も多々あるけど、 >>1 はそれを全否定しているのだから、ここはとりあえず放置しかないだろ。
703 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 23:08:11.77 ID:FG6PmAiu.net] >>690 論理設計を知らないんだね…。
704 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 23:08:59.99 ID:fBBvLnfI.net] >>688 いいや合ってるはずだ
705 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 23:09:26.74 ID:60iV75hD.net] >>690 プリミティブ型(int, long, etc)のvectorは羨ましい あとpairとかつまりstd最高
706 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 23:10:00.78 ID:60iV75hD.net] >>693 stlねw
707 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 23:11:58.52 ID:FG6PmAiu.net] >>692 そうか? それなら勝利判定と思考ルーチンの関係がはっきりしないからかもしれん。 ロジック部分の設計はまったく未着手だからこれからか。
708 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 23:13:00.88 ID:uKYFBn7C.net] >>614 Moveってのは自分の手番でさせる手を洗い出して格納するって事? それって必要?
709 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 23:15:28.62 ID:fBBvLnfI.net] >>695 勝利判定って王をとったかどうかですよ
710 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 23:16:24.59 ID:FG6PmAiu.net] >>696 データを整理するためにER図を使っただけ。 >>628 で「データを整理する別の手法があるなら教えて」って書いたのはそういうのもある。 ただ、>>631 があるから過去の棋譜はDBに格納する方針にした。
711 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 23:19:38.28 ID:FG6PmAiu.net] >>697 あー、そういうこと。 電王戦見てたら棋士は勝つ見込みがなくなったら投了するんだと。 ソフトは逃げる手がなくなるくらいまで続けるけど、王を取られるとこまではやらない。 まあ、そこは単なる将棋のルールなんでどういう意図で設計したかは了解した。
712 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 23:26:27.98 ID:uKYFBn7C.net] >>698 いやいやいや ER図なんだからDBに保存されるデータ構造だよね 多分やりたい事はクラス図なんじゃないの
713 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 23:28:05.15 ID:VNiDmyVP.net] >>693 あるように見えるけど、 これは<T>ではなく<E>となっているのは、プリミティブは駄目でオブジェクトだけって事? それもよく分からん仕様だな。しかも今まで改修されていないのも謎。 ArrayListも<E>だね。 https://docs.oracle.com/javase/jp/6/api/java/util/Vector.html https://docs.oracle.com/javase/jp/6/api/java/util/Arrays.html https://docs.oracle.com/javase/jp/6/api/java/util/ArrayList.html 標準に入るかどうかは別として、C++の場合は勝手ライブラリが対応したりするものだけど、 Javaはそういうの禁止なんだっけ? なお完全にスレチなので、続きはJavaスレでということならこちらも移る。
714 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 23:29:15.28 ID:driOGhFD.net] プレイヤーどものresignイベントや盤面のmovedイベント、時計のtimeupイベントを監視して、必要に応じて終局処理するとかじゃ駄目?
715 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 23:29:50.65 ID:FG6PmAiu.net] >>700 やりたいことは保持すべきデータの整理。 UMLではクラス図を使うのは知ってるんだけど、データ構成の明確な指針が書かれた本とかある? データベースの表設計は正規化のルールがかなりきっちりあるからそれを守れば 誰が設計してもほぼ同じ形になる。 業務システムならどうせ表に格納するってこともあるからERからやっちゃうんだよねえ。 実際どうなんだろうと思ってはいるんだけど。
716 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 23:34:56.63 ID:FG6PmAiu.net] >>702 実際の終了条件はいくつかあるからそうだろうね。 二歩とかもあるもんな。
717 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 23:37:00.20 ID:uKYFBn7C.net] >>701 EやTは総称型(ジェネリック)を表してるだけで別に意味はなくてXでもAでもなんでもいい プリミティブ型は指定できないけどAutoBoxingされるから利用上はプリミティブが使える
718 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 23:44:52.07 ID:9xysTXwv.net] お、なんか活発になってるな
719 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 23:45:42.01 ID:VNiDmyVP.net] >>705 > AutoBoxing サンクス。まあ普通はそうだよな。それで大して問題にならないだろうし。
720 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 23:47:32.64 ID:QzZ3vWh9.net] オブジェクト指向をまともにやると、頭が悪くなるよ データの整合性の管理はうまくいくんだけど・・・ 複数のオブジェクトにまたがる処理をどのクラスに書こうかと悩んで どれか一つのクラスに押し込んだり または、元は一連の一つながりの処理だったものを分断して彼方此方にちりばめたり もともとの発想がね、オブジェクト中心ってのが、なんか、バカっぽいでしょ オブジェクトは何か物体感があるから、それ中心で考えるのは子供でも理解できてわかりやすいけど 世の中大人の世界はそんな発想で動いてないからねぇ 目に見えない何かのほうが重要だったり
721 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 23:49:10.47 ID:FG6PmAiu.net] >>708 オブジェクトをちゃんと理解していないからオブジェクト指向をバカにするのはやめましょう。 「使いたくない」ってだけなら個人のご自由にどうぞ。
722 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 23:58:14.27 ID:FhH1DHd+.net] >>703 だから保持ってのがアプリが終わっても保持なのか実行中だけ必要なのかが考えられてないんじゃないの? アプリが終わっても必要なのって棋譜データだけなんじゃない アプリ実行中に必要なデータはクラス図で書いて、処理間の受け渡しはデータフロー図で書いて、受け渡しの情報として足りてるかを判断しながら設計サイクル回せばええんでないの 正規化とか落とし込み以前の考察を吹っ飛ばしてら感が否めない
723 名前:デフォルトの名無しさん mailto:sage [2016/05/26(木) 00:00:24.78 ID:0AsVpwBA.net] 盛り上がってまいりました。
724 名前:デフォルトの名無しさん [2016/05/26(木) 00:01:34.72 ID:Xc1/bPBx.net] >>710 いや俺のなかじゃ区別できてるよ。 まあ、そこは言い争ってもしょうがないので話題を少し変えると、 @将棋ソフトの設計をオブジェクト指向でやるとしてどういうステップでやる? Aクラスに分けるときの方針は?明確な指針を探しているんだけど見つけられていない。
725 名前:デフォルトの名無しさん [2016/05/26(木) 00:10:48.99 ID:Xc1/bPBx.net] >>710 もっと具体的に言うと例えば駒クラスを作ってそのサブクラスとして王クラス、飛車クラス、…と作ることも可能だし、 駒は情報として使うだけでクラスは必要ないって考え方もある。 手についても同じようにクラスにするかしないかどっちもあり得る。 そういうときにどのような構成にするかどうやって判断すべきだろう?
726 名前:デフォルトの名無しさん [2016/05/26(木) 00:12:03.37 ID:Xc1/bPBx.net] そういう意味じゃ盤面もそうだな。
727 名前:デフォルトの名無しさん mailto:sage [2016/05/26(木) 00:15:25.90 ID:y/d2Tqn1.net] いい設計の基準がないんだよな だからいくら議論しても無駄なんだよな 自分の発言を正当化するためにいろんな基準をその時々で変えるんだよな 俺は資料とソースを一致させるための設計であると思ってる 別に構造がクソでも資料と一致していれさえすればいい だから設計書のないソースは評価できない いいも悪いもよくわからない 何を基準に何のために設計したのかわからない 資料に表現しやすいソースであるべきだし ソースを追える資料であるべきだと思う 俺はね
728 名前:デフォルトの名無しさん [2016/05/26(木) 00:16:44.44 ID:Xc1/bPBx.net] >>715 ID:FhH1DHd+じゃないよな?
729 名前:デフォルトの名無しさん mailto:sage [2016/05/26(木) 00:17:46.75 ID:y/d2Tqn1.net] >>716 idなんか見てる奴は素人
730 名前:デフォルトの名無しさん [2016/05/26(木) 00:18:46.69 ID:Xc1/bPBx.net] >>717 プロは何で確認すんだよw 分かりにくいからはっきり答えろ。
731 名前:デフォルトの名無しさん mailto:sage [2016/05/26(木) 00:25:44.91 ID:J6SaR2wI.net] いい加減順序がおかしいことに気付け ⑴要件を定義する → ⑵設計の方針を決める → ⑶設計する いきなり設計しろ設計しろとか言ってるわりに方針が見つからないとか馬鹿げてるし 将棋ソフトも要件決めてない(もしくは提案者の頭の中にしかない)から 思考ルーチン単体なのか将棋ソフト全体なのかすらも話題が定まってない グダグダでどうにもならない悪い見本にしかなってない
732 名前:デフォルトの名無しさん mailto:sage [2016/05/26(木) 00:28:15.06 ID:Xc1/bPBx.net] >>719 要件>>615 将棋ソフト全体
733 名前:デフォルトの名無しさん mailto:sage [2016/05/26(木) 00:45:23.61 ID:UZPGQYZs.net] >>712 結局は以下の繰り返しでしょ 1. 自分の手番でさせる駒と位置のリストを出す 2. リストから1つ選んでさす 3. 相手の手番でさせる駒と位置のリストを出す 4. 相手がさす 5. 相手の指し手がリストにあるか判断 っで、最初は2の実装はリストの先頭の手を返すように作り、後で勝てる指し手を判断するロジックに変える 5も同じで、相手の指し手の評価をするロジック後で追加する そん次は2手3手先読みして勝てる判断の制度を上げるために4の処理を3で出したリストで片っ端に当てはめて2手3手先の組み合わせを評価する なんて事してると組み合わせが多すぎるので悪手の組み合わせは評価しないとかふるいをかけるって感じで精度を上げていくけど、1から5のインターフェースは一貫して変わらない様にするならどーする?って考えるのが設計なんじやないかな
734 名前:デフォルトの名無しさん mailto:sage [2016/05/26(木) 00:48:45.72 ID:UZPGQYZs.net] id見てるみたいだけど俺はFhH1DHd+なw
735 名前:デフォルトの名無しさん [2016/05/26(木) 00:49:43.97 ID:Xc1/bPBx.net] >>721 ID:FhH1DHd+だったら明記してくれ。 話が続いていない気がするんだけどよく分からん。
736 名前:デフォルトの名無しさん [2016/05/26(木) 00:53:34.08 ID:Xc1/bPBx.net] >>721 同じ人なのか? Aクラスに分けるときの方針は? について話したいから戻っていい? >>713 と>>714 についてはどう思う。 かっちりした明確な基準はないならないでいいんだけど回答欲しい。 探しても見つけられていないから知ってたら知りたい。
737 名前:デフォルトの名無しさん [2016/05/26(木) 00:58:55.60 ID:Xc1/bPBx.net] ちなみに>>721 はそうだとは思うけど緩いじゃん。 設計中に出てくる個々の疑問を決定する際の明確に指針になるかというと ならないと思う。 俺自身もそれとそんなに変わらない程度の指針に基づいて決定してるんだけど 誰が設計してもある程度同じものができる指針ってないもんかねえって思ってる。
738 名前:デフォルトの名無しさん mailto:sage [2016/05/26(木) 02:26:59.05 ID:mpyGJ1z1.net] >>713 , 724 クラスを作る作らないの判断基準、将棋の駒は良くわからんが・・・ 「通貨オブジェクト」とか参考にならないかな? 【実装】 通貨記号Enumと価格BigDecimalで別々に扱っていたのを一つのイミュータブルなクラスにまとめる。 加減算と乗除算メソッドがあり、加減算は同通貨とのみ可能、乗除算は数値とのみ可能とする。 【効果】 不用意なデータ破壊(JPYとUSDを足した等)の危険が減る。 通貨の振る舞いを通じて、プロジェクトメンバーの業務知識が向上する。 もちろん、採用するかの判断は別。 「並の人間がこんなアホな加算などするはずがない。面倒くさい事すんなよ。」とは俺も思う。
739 名前:デフォルトの名無しさん mailto:sage [2016/05/26(木) 05:27:22.00 ID:bwhpCAq0.net] 将棋ソフトという例が悪いのは、CPUの思考ルーチンが将棋ソフトのキモで、それ以外の処理は瑣末なことだと理解しているのかな。 現在の盤面(持ち駒含む)を入力を盤面として、指し手を出力として返す関数以外に力を入れる必要性は無い。 「どうぶつ将棋や軍人将棋などのルール変更に対応できるようにしたい」とか「過去の棋譜データを表示できるようにしたい」とかいう要請を入れない限り、 上にあったようなER図とか過去の棋譜データをDBに格納するとかの設計は思考ルーチンの足かせになるし、無駄になる。 「思考ルーチンは書けないけど些末事は任せろ!」と本質の邪魔しかしない設計をしてる奴を何と呼ぶか、俺は知ってるぞ。
740 名前:デフォルトの名無しさん mailto:sage [2016/05/26(木) 06:11:02.88 ID:UjMbTLsx.net] 将棋ソフトの内容は、ほぼ評価関数のロジックだけ。 オブジェクト指向とは、あまり関係がない
741 名前:デフォルトの名無しさん mailto:sage [2016/05/26(木) 07:24:48.28 ID:c+TCNzeK.net] >>658 YAGNI原則のプログラミングスタイルが取りやすい言語もしくはToolはなに? C++のクラスを書く前のクラスの要件定義と必要なメンバ関数、メンバ変数を書き出して 少しずつ実装すると頭がスッキリした感じでコードが書けるのだけど >>662 コマのデータを全部持つのじゃなく抽象化して、取り出した後、次の動作で移動可能な座標の 配列を作ってそれを評価するの 歩ー>成金?−>一歩前or金と同じ範囲 みたいに これを一盤面分作って、一手先を計算評価する それを繰り返し〜n手先の評価点も元に次の挙動を決める 恐ろしい計算量だね
742 名前:デフォルトの名無しさん mailto:sage [2016/05/26(木) 07:29:56.12 ID:c+TCNzeK.net] >>690 うすうす気がついていたけど、そうなんだ(ギャーーーー悲鳴
743 名前:デフォルトの名無しさん mailto:sage [2016/05/26(木) 07:35:50.77 ID:c+TCNzeK.net] 昔、読み下しの困難なスパゲティプログラムって揶揄があったんだけど C++のクラスって表現できる内容に厳しい縛りとか制限がないから アホが作ったプログラムー>スパゲティ 同class->収拾の付かない理解不能な何かになる
744 名前:デフォルトの名無しさん mailto:sage [2016/05/26(木) 08:29:42.66 ID:6psiGDvx.net] 良スレと思ったら将棋糞スレだった
745 名前:デフォルトの名無しさん mailto:sage [2016/05/26(木) 10:21:56.92 ID:mpyGJ1z1.net] ごちゃごちゃした要素があれば、オブジェクト指向の意味が出てくるかもしれん 課金スタイル考えよーぜ 謝罪文の掲載、アイテムの無効化、購入者抽出、アイテムの使用された対局の抽出、お詫びメールの送信、補填処理、省庁/監査対応etc... いろんなオペレーションに対応できる、そんな設計が必要になるぞ
746 名前:デフォルトの名無しさん mailto:sage [2016/05/26(木) 10:57:47.33 ID:GCo9DDJM.net] 将棋プロジェクト オブジェクト指向より関数型のほうが絶対綺麗になりそう
747 名前:デフォルトの名無しさん [2016/05/26(木) 11:12:52.45 ID:Xc1/bPBx.net] >>726 なるほど! 確かに複数の属性が不可分一体となってある要素を構成しているような場合は それらの値をオブジェクトにまとめるべきなんだろう。 となると、手は動かす駒、動かす先、成るかならないか、がまとまって初めて手になるんだから オブジェクトとするのが自然だな。 盤面も同じようにすべての駒が配置された状態を表すんだからやっぱりオブジェクトにすべきだろう。 さらに言えばマスも縦と横の両方が合わさっているからオブジェクトにするのがよいのかなあ。
748 名前:デフォルトの名無しさん [2016/05/26(木) 11:17:52.52 ID:Xc1/bPBx.net] 盤面をオブジェクトにするのはパフォーマンス的にどうなんだろうと 思って多少抵抗があったんだけど、まずは本来オブジェクトにすべきものは オブジェクトにした設計を完成させるのが良い気がしてきた。 パフォーマンスなどの考慮した加工は後の段階からすればいいこと。
749 名前:デフォルトの名無しさん [2016/05/26(木) 11:22:11.08 ID:Xc1/bPBx.net] >>734 実際の構成がイメージできるように、もうちょっと具体的にならんだろうか?
750 名前:デフォルトの名無しさん [2016/05/26(木) 11:29:07.18 ID:Xc1/bPBx.net] >>733 将棋は十分ごちゃごちゃしてると思うが。 実際考え出したら思ってた以上に複雑だった。 簡単っていうなら設計を提示してみ。 >>652 を見てからは、設計が単純って言ってる奴は設計のことを分かってないだけ じゃないかと思ってしまう。
751 名前:デフォルトの名無しさん [2016/05/26(木) 11:36:16.69 ID:Xc1/bPBx.net] >>729 駒がうごけるマスのデータをどう持つかはまだ決まってない。 駒によって動けるマスが違うってことをERに忘れることがないように明記しておいた。 データ的に言えば駒に依存して動きが決まるんだからまさに駒の属性情報。 設計の最初は実装をあまり気にせずに業務(将棋?)的に求められる要件を整理するのが基本だ。
752 名前:デフォルトの名無しさん [2016/05/26(木) 11:36:51.89 ID:Xc1/bPBx.net] 駒によって動けるマスが違うってことを忘れることがないようにERに明記しておいた。
753 名前:デフォルトの名無しさん mailto:sage [2016/05/26(木) 11:56:46.07 ID:EltQ4sqz.net] >>736 オブジェクトじゃなかったらなんなの?
754 名前:デフォルトの名無しさん mailto:sage [2016/05/26(木) 11:59:47.73 ID:GCo9DDJM.net] >>693 同じJVM言語のscalaでもプリミティブがオブジェクトでタプルもあるべ javaさんがちょっとアレなだけ >>737 要件があんま定まってないので明確な事はいえないが オブジェクト同士のメッセージパッシングを使うオブジェクト指向よりも パーサーコンビネーターなんかもそうだけど データを定義して 参照透過な関数にそれを食わせるっていう関数型の方が将棋にあってるんじゃないか
755 名前:デフォルトの名無しさん mailto:sage [2016/05/26(木) 12:05:05.28 ID:Xc1/bPBx.net] >>741 コレクションとか、配列とか。 電王戦に出場しているソフトは配列に格納してるソフトが多いんじゃないかと 勝手に予想ていたけど。
756 名前:デフォルトの名無しさん mailto:sage [2016/05/26(木) 12:07:55.61 ID:Xc1/bPBx.net] >>742 具体的にどこにどうやって適用しようとしているのか明示してもらわないことにはなんとも…。 電王戦に出場している人はあの要件で理解しているんだから要件は十分明確になってるだろ。
757 名前:デフォルトの名無しさん mailto:sage [2016/05/26(木) 12:17:50.31 ID:GCo9DDJM.net] >>743 コレクションはオブジェクトだし オブジェクト指向言語なら配列も大抵オブジェクト と思ったがc++は配列がオブジェクトじゃないのか
758 名前:デフォルトの名無しさん mailto:sage [2016/05/26(木) 12:26:17.14 ID:c+TCNzeK.net] 素人のオレが適当に書いて混乱させてやろかww 脳ミソ爆発だぜww
759 名前:デフォルトの名無しさん mailto:sage [2016/05/26(木) 12:34:34.63 ID:GCo9DDJM.net] >c++は配列がオブジェクトじゃないのか 自レス 最近だとstd::arrayがあるな
760 名前:デフォルトの名無しさん [2016/05/26(木) 12:38:37.91 ID:GCo9DDJM.net] >>744 評価関数の中身のアルゴリズムは具体的には全くわからんからこれ以上はなんとも(パターンマッチ便利だよくらい) 指摘している人がいるが将棋はオブジェクト指向の設計練習として適してないだろ 難しいのは評価関数でオブジェクト指向の良さが生かされないし 例ならオセロでいいし オブジェクト指向の良さが現れてるのは言語はcだけどLinuxのVFSとかだな c++やjavaで設計しなおしてみればおもろいかも
761 名前:デフォルトの名無しさん mailto:sage [2016/05/26(木) 12:45:03.84 ID:2tD7owQ3.net] 単に次の手を求めていくだけのAIならOOPは悪手 盤面データを評価するのにオブジェクトアクセスはオーバーヘッドが大きすぎる 駒オブジェクトなどもってのほか そもそも評価するだけなら将棋のルールモデルを再現する必要もない 対戦型のゲームならViewの制御などが絡みだすからOOPを検討し始めても良い しかし将棋モデルそのものは依然としてシンプルな構造と処理になるためOOPの恩恵は小さい 実装にオブジェクトライブラリを使ういわゆるベターC的なものになる
762 名前:デフォルトの名無しさん mailto:sage [2016/05/26(木) 12:50:39.24 ID:2tD7owQ3.net] 後は将棋にオレオレ要素を付けたしまくったジャパニーズテレビゲーム的な将棋なら話は別だね 仕様が未確定だから無限に規模が大きくなる可能性がある OOPを採用するメリットは大きい
763 名前:デフォルトの名無しさん [2016/05/26(木) 12:54:10.09 ID:Xc1/bPBx.net] オブジェクト指向じゃない場合の設計は? 繰り返すと「クラスを使わない」と「設計いらない」は違うから。 >>515 ロジックをどんなモジュールに分割して盤面や手の情報をどう持たせるかは興味ある。 オブジェクトを使わない場合でもちゃんと設計していれば機能単位が明確になっているはずだから見せて欲しい。 >>745 盤面オブジェクトというものがあるかって話。
764 名前:デフォルトの名無しさん mailto:sage [2016/05/26(木) 13:05:46.65 ID:GCo9DDJM.net] >>751 なんで将棋にそこまでこだわるのか分からないけど 設計はほぼ評価関数のアルゴリズムでそしてそれはここで設計するものでもない 設計の例として不適でしょって事 例としてはコレクション、VFSとかゲームとか色々あるのに なんで将棋なんだ
765 名前:デフォルトの名無しさん mailto:sage [2016/05/26(木) 13:07:08.63 ID:GCo9DDJM.net] 後 webアプリとかでもいいし
766 名前:デフォルトの名無しさん [2016/05/26(木) 13:09:24.57 ID:Xc1/bPBx.net] オセロとかVFSとかの設計案を作ってここに貼り付けてもらうのは歓迎だ。 興味ある人は会話してもらっていいし。 俺も「オセロ」がいい」とか「VFSがいい」ってだけじゃご自由にどうぞとしか思わないけど 実際の設計案とかが出てくれば意見交換したい。
767 名前:デフォルトの名無しさん mailto:sage [2016/05/26(木) 13:16:43.54 ID:UN7L7nZy.net] OOP設計について語りたいなら「あっち向いてホイ」で良いと思う。 「じゃんけん」だけだと単純だと思って
768 名前:デフォルトの名無しさん mailto:sage [2016/05/26(木) 13:22:24.03 ID:FhkcWQBY.net] OOPで表すとこんな感じか? それぞれのモジュールの内部実装は、専門の担当者が頭をひねって、責務を全うするよう頑張れば良い 『状態』 盤面、持ち駒▲△、時計、を表現 内部状態の変化時にイベントを投げる 『プレイヤー』 ゲーム中に▲△の2インスタンス それぞれ独立したプロセスで動く 『状態』を監視する 『状態』のmoveとresignを呼んで良い 責務ではないが、ゲームの勝利を目指す 『審判』 独立したプロセスで動く 『状態』を監視する 状態変化を元に、反則/適正や勝敗/続行を判定し、必要なら終局処理する 『記録係』 独立したプロセスで動く 『状態』お監視する DBなりファイルなり、好きなように棋譜や時間を書き込む
769 名前:デフォルトの名無しさん mailto:sage [2016/05/26(木) 14:24:38.83 ID:bwhpCAq0.net] 将棋を指すプログラムを作成しろってお題と、将棋というゲームをモデル化しろってお題を一緒くたにしてないか。 前者は「次の一手を決めるアルゴリズム」が主眼で、その他のコードはアルゴリズムの実装を邪魔してはいけない。 肝心の中身を議論しないまま設計しろって話なら、「盤面を如何にコンパクトに表現するか」くらいしか設計できない。 POJOでも無い限り、メソッドやらvtableやらの保持にスペース使うんだから駒オブジェクトなんて論外だってすぐ分かる。 だから将棋の例は不適。 後者は実務じゃなくてお遊びの話、「自動車をJavaで表してみよう」というレベルなんだから、>>1 の求める議論にならない。 だから将棋の例は不適。 同様の話でオセロも不適。
770 名前:デフォルトの名無しさん [2016/05/26(木) 15:01:47.14 ID:Xc1/bPBx.net] >>756 考慮時間の消費とかは業務系だと見落としそうな点だね。 状態、プレイヤー、審判、記録係やらがクラスなのか属性なのか抽象的なのか 分からないんだけど、クラスとのマッピングをでき
771 名前:黷ホ頼む。 ゲームの設計だと当たり前なのかもしれんけど疎いもんで。 [] [ここ壊れてます]
772 名前:デフォルトの名無しさん [2016/05/26(木) 15:11:16.14 ID:Xc1/bPBx.net] >>756 思考部の設計についてはもう少し具体化して考えたい。 @合法手生成 盤上の駒のリストから 駒が動けるマスを洗い出す。 A動かした局面を点数化 盤上の駒の価値とか配置によって局面を点数化する。 評価の内部ロジックはブラックボックスにするしかないけど、盤面情報をもとに なんらかの基準で点数化して点数を返すという入出力情報のやり取りは設計の範囲とする。 B自分の手、相手の手と読みを進める。 手と盤面が増えるなり変更するなりして進むのをどのように保持するかも設計の範囲とする。 C読む手の選択 すべての手を同じ深さまで読むんじゃなくて、良さそうな手を選んで深く読んで 最終的に指す手を選んでいるらしい。 既に読んだ手の点数とかを元に候補手を絞る処理。 内部ロジックが分からないとはっきりしないところは出てくると思うけど、 駒、ルール、盤面、手の関連性をどのように保持するかがイメージできるレベルまではやりたい。
773 名前:デフォルトの名無しさん [2016/05/26(木) 15:12:45.82 ID:Xc1/bPBx.net] BとCの内部実装もブラックボックスだな。 入力、出力はある程度想定できるのでそこは設計する。
774 名前:デフォルトの名無しさん mailto:sage [2016/05/26(木) 17:51:52.03 ID:VUxKytQY.net] イベントソーシングの実装方法を教えてください
775 名前:デフォルトの名無しさん mailto:sage [2016/05/26(木) 19:52:32.19 ID:y/d2Tqn1.net] >>685 は完璧だろ?
776 名前:デフォルトの名無しさん [2016/05/26(木) 23:01:03.81 ID:Xc1/bPBx.net] 過去の棋譜情報のDBを設計してみた。 https://drive.google.com/file/d/0B2NKffVh2tpqZ2pPcEg3VGVxYWc/view?usp=sharing Moveは実際に指された手。 Boardはそのときの局面。初形も格納する想定。 Komaは駒の配置。 手ごとの局面を格納しないでも再現できるんだけど、棋譜の分析とかするときは 局面データも格納しておいたほうがよさそうだから格納してみた。 Bonanzaは過去の棋譜の局面を見て、駒同士の位置関係の点数を設定したとどこかで聞いたから なんとなく意識してみた。
777 名前:デフォルトの名無しさん mailto:sage [2016/05/26(木) 23:16:46.39 ID:OguWhub7.net] >>763 そのツールもうちょっとでかい図 というかでかいフォントにならんもんかね ブラウザーでズームしてもズームしてくれんし
778 名前:デフォルトの名無しさん [2016/05/26(木) 23:21:56.50 ID:Xc1/bPBx.net] >>764 俺も初めて使ったから分からんなあ。 手間だけどダウンロードしてちょ。
779 名前:デフォルトの名無しさん [2016/05/26(木) 23:26:45.04 ID:Xc1/bPBx.net] と思ったらダウンロードできないのか? 画像の大きさを大きくできるのかなあ。
780 名前:デフォルトの名無しさん mailto:sage [2016/05/26(木) 23:28:48.84 ID:HSSLi9RU.net] 将棋ってぶっ殺すフィールド構築合戦だからな ぶっ殺すフィールドの形が似てたら大体思考ルーチンも似たようなもん ただ、飛車と角が絡むとこの前提が覆るムズイので考えない ぶっ殺すフィールド 金の移動範囲に歩置くじゃん、したらその歩をとったら 金に取られるからふには手を出せない 金を殺さないと歩は取れない 金の範囲に銀置いて銀の範囲に馬置いて馬の範囲に飛車置いて これがぶっ殺すフィールド この範囲に相手の王を誘いこんだら勝ち ってのが将棋aiの基本知識
781 名前:デフォルトの名無しさん [2016/05/26(木) 23:30:05.02 ID:Xc1/bPBx.net] 画像に出力できた。 https://drive.google.com/file/d/0B2NKffVh2tpqd0ZOQ2RQWm9fdlU/view?usp=sharing どうだろ?
782 名前:デフォルトの名無しさん mailto:sage [2016/05/27(金) 00:13:38.01 ID:3vZSRhu5.net] 何でオブジェクト指向のスレなのにDBの設計したいと思ったの?
783 名前:デフォルトの名無しさん mailto:sage [2016/05/27(金) 00:17:00.75 ID:miERtZSj.net] オブジェクト指向の設計というか将棋を業務系システム風に設計してみたら っていうifになってる
784 名前:デフォルトの名無しさん mailto:sage [2016/05/27(金) 00:19:22.93 ID:/D1WPrTe.net] >>769 >>703 近辺
785 名前:デフォルトの名無しさん mailto:sage [2016/05/27(金) 00:20:44.77 ID:/D1WPrTe.net] >>770 >>634
786 名前:デフォルトの名無しさん mailto:sage [2016/05/27(金) 00:42:25.57 ID:miERtZSj.net] >>772 >>757
787 名前:デフォルトの名無しさん [2016/05/27(金) 00:51:50.14 ID:/D1WPrTe.net] >>773 また同じ奴か…。 >>754 話したい話題とか例があるなら歓迎だから自由にやって。
788 名前:デフォルトの名無しさん mailto:sage [2016/05/27(金) 00:57:05.93 ID:miERtZSj.net] >>773 「また」って誰の事を指してるか知らんが >>757 じゃないぞ
789 名前:デフォルトの名無しさん mailto:sage [2016/05/27(金) 03:16:41.27 ID:o12ObYVU.net] >>760 ブラックボックスって誰に対して? >>763 なぜ棋譜って言う標準フォーマットがあるのにそれを崩すんだ? 棋譜データベースが世にあるんだからそれをそのまま使えないのはありえない
790 名前:デフォルトの名無しさん mailto:sage [2016/05/27(金) 06:17:55.52 ID:/J9GvUBV.net] >>776 局面があれば、もちろん棋譜は生成できるけど 棋譜だけじゃ、局面を自由に行き来(ランダムアクセス)できないからだろ?
791 名前:デフォルトの名無しさん mailto:sage [2016/05/27(金) 11:40:24.39 ID:o12ObYVU.net] ER図なんだからDBに保存する情報は棋譜だけでしょって話 そこから局面をメモリ上に展開すればいいでしょ
792 名前:デフォルトの名無しさん mailto:sage [2016/05/27(金) 12:15:00.09 ID:kDtxcipC.net] 理研の税金無駄使い、954万円高級家具カッシーナ・イクスシーの指定購入も大問題 : 千日ブログ 〜雑学とニュース〜 1000nichi.blog73.fc2.com/blog-entry-7696.html 税金の無駄遣い?STAP細胞関連経費1億4500万円 小保方晴子氏の検証実験参加は不要だったで書いた理研の税金の無駄使い。 実は小保方晴子さんらのSTAP細胞関連だけでなく、別の問題にも触れられていました。扱いが小さかったんですけど、こちらもすごく問題だと思います。 (中略) ●本来なら大問題である税金の無駄遣い この高級家具の件は、小保方晴子さんが買ったのでは?と、STAP細胞疑惑のときにいっしょに話題になったものです。しかし、すぐに東大教授になった別の方のところで購入したものだと、断定されていました。 違っていたら困りますし、名前を出しちゃうとあれかな?と思うので書きませんが、「カッシーナ・イクスシー 東大教授」あたりで検索すると簡単に出ます。もうあだ名が「カッシーナ」という感じになっていました。 「計288個の穴があること」など、実質的に特定のブランド以外を排除した購入など認められるはずがないものであり、本来なら非常に問題です。これは小保方さん問題以上に返金を求めやすくないですかね? マスコミはこっちの問題ももっと追求すべきだと思います。
793 名前:デフォルトの名無しさん mailto:sage [2016/05/27(金) 12:23:58.24 ID:IdMbq2Qb.net] そろそろ将棋ソフト開発スレにforkしたら? ここはOOP全般の議論をするスレだよ
794 名前:デフォルトの名無しさん [2016/05/27(金) 12:25:03.87 ID:/D1WPrTe.net] >>776 >ブラックボックスって誰に対して? 局面の点数化、深く読むべき手の選択を行うクラスないしモジュールの 内部実装を設計する必要はないって意味。 >>777 >>778 そうだよね。
795 名前:デフォルトの名無しさん mailto:sage [2016/05/27(金) 12:35:36.26 ID:/D1WPrTe.net] >>778 あれ、>>778 は>>776 と同じ人か。 テキストファイルはプログラムにとって操作しやすいものじゃないから。 例えば、5手まで進んだ局面で、過去にまったく同じ進行だった棋譜を抽出する って処理をどう実装するにはどうする? 棋譜のデータも大量にあるからメモリも意識した設計にする必要がある。
796 名前:デフォルトの名無しさん mailto:sage [2016/05/27(金) 12:55:12.02 ID:/D1WPrTe.net] >>780 OOPについての議論を開始してくれよ。 ただ、話をするきっかけがなかったときのスレの状態は>>490 だったからさあ。
797 名前:デフォルトの名無しさん mailto:sage [2016/05/27(金) 16:07:05.35 ID:QLoNZNQy.net] >>782 ? なぜテキストを操作する話になってるの? 棋譜の情報をtsv形式とかで事前にbulk insertしとくんじゃないの? ER図の話だったよね?
798 名前:デフォルトの名無しさん mailto:sage [2016/05/27(金) 16:23:50.72 ID:mSvZp4nB.net] 実は、皆プログラミングのレベルがたいしたことない件
799 名前:デフォルトの名無しさん [2016/05/27(金) 18:23:43.80 ID:/D1WPrTe.net] >>784 >>776 が言い出したことだが…。 >>776 なら想定している構成をまず提示してくれ。 >>776 じゃないなら俺に聞かれても分からない。
800 名前:デフォルトの名無しさん [2016/05/27(金) 18:32:09.95 ID:/D1WPrTe.net] >>785 天才プログラマのお前だったらどう構築するのか教えてくれるかな。 DBを知らないからDBが複雑だと思い込んでるだけの素人の違いを見せて欲しいなあ〜。
801 名前:デフォルトの名無しさん mailto:sage [2016/05/27(金) 19:38:50.01 ID:pLLsnEId.net] 意味がわからない
802 名前:デフォルトの名無しさん mailto:sage [2016/05/27(金) 20:35:36.67 ID:A2TIou2n.net] 棋譜データが何なのかご存じない?
803 名前:デフォルトの名無しさん [2016/05/27(金) 20:54:42.73 ID:/D1WPrTe.net] >>789 ご存じない? じゃねえよw
804 名前:デフォルトの名無しさん [2016/05/27(金) 20:57:31.88 ID:X8GqPxic.net] なにこいつ
805 名前:デフォルトの名無しさん mailto:sage [2016/05/27(金) 21:08:24.02 ID:YEqMRFcI.net] とっくにご存知なんだろ?
806 名前:デフォルトの名無しさん mailto:sage [2016/05/27(金) 21:29:12.31 ID:JwxL0I3t.net] スーパーコーダー人
807 名前:デフォルトの名無しさん mailto:sage [2016/05/27(金) 23:55:27.14 ID:go2H7GGI.net] 設計を教えてくれと言ってるやつが リーダーやるようなプロジェクトはこんなもんだろ
808 名前:デフォルトの名無しさん mailto:sage [2016/05/28(土) 06:04:52.94 ID:DfweNo3j.net] >>786 >>>784 >>>776 が言い出したことだが…。 >>>776 なら想定している構成をまず提示してくれ。 >>>776 じゃないなら俺に聞かれても分からない。 結局バカなんだな 将棋なんてやめでTODO管理アプリでも作ったらいいんじゃね
809 名前:デフォルトの名無しさん mailto:sage [2016/05/28(土) 10:01:09.70 ID:lKk9NsIN.net] オブジェクト指向ってのは、将棋や囲碁などのAI機能を駆使した、最先端のソフトを開発しやすくする面もあるかもしれない。 でも、そういうアルゴリズムを重視する世界においては、オブジェクト指向なんてドーデもいいレベルの話ではないかと思う。 オブジェクト指向は、「既存のパーツとか、フレームワークの利用をいかに楽にするか?」つまりは、DRY(Don't repeat yourself)を推進する目的が第一ではないかと思う。 継承機能などを使って、「ロジックなどの開発が楽になる」というよりも、「フレームワークとか○○を使えば、自分では、それを考えなくても、作らなくてもいい」ってほうが望ましいスタイルではないかと思う。 そして、それを推進する手法としては、たぶんオブジェクト指向も必要だけど、それだけでは、無理ってことだと思っている。 MITの先生が、「プログラミングは、新規開発の時代じゃあない。既存のものをいかに素早く組み合わせるかを教えたい」と言っているらしいけど、その方向性は、間違ってないという気がする。
810 名前:デフォルトの名無しさん mailto:sage [2016/05/28(土) 10:09:21.59 ID:O5lAFAJB.net] 前に出てた勤怠管理やTODO管理のテーブル設計を議論したほうが有益だろうな プロジェクトのほとんどはそこで決まるし
811 名前:デフォルトの名無しさん mailto:sage [2016/05/28(土) 11:38:35.56 ID:qmjd/mej.net] >>796 長文書くならもう少し推敲しろよ 小学生の読書感想文みたいだぞ
812 名前:デフォルトの名無しさん mailto:sage [2016/05/28(土) 12:59:02.84 ID:A5TNreIh.net] Foo : IFoo Bar : IBar Baz : IBaz Foo() Bar(IFoo) Baz(IFoo , IBar) 上のようなクラスとコントラクターがあります IFooはFooにIBarはBarにIBazはBazに解決されます 何も考えずにコンストラクタインジェクションツールを使うとBarに渡されるFooのインスタンスとBazに渡されるFooは別のインスタンスになります 同一のFooインスタンスを使ってBazをインスタンス化したい場合、一般的にはどういった手法を使うのでしょうか? Fooをシングルトンにする方法とBazの精製方法をコードで明示
813 名前:的に記述する方法は要件上使えません 使用しているツールはUnityContainerですができればより一般的な手法を知りたいです [] [ここ壊れてます]
814 名前:デフォルトの名無しさん mailto:sage [2016/05/28(土) 13:59:25.89 ID:fP0wQpWJ.net] BarzかBazrを作る インスタンスっていうんだから 紙に書いて実体を書けないとおかしい 強引にFooの実体を書こうとするとそれってBarzかBazrじゃね?ってなった
815 名前:デフォルトの名無しさん [2016/05/28(土) 17:33:38.76 ID:R1JSthfd.net] 将棋にオブジェクト指向設計を適用できないって主張してるバカは恥ずかしいから いい加減やめたほうがいいぞw コンポーネント、モジュールの設計を提示しろって言ってんのに何も提示しないし。 今夜か明日にコンポーネントをUMLで記述したものをアップする予定だから今のうちに考えておけよ。 >>652 並みに恥ずかしい書き込みをしてることにいい加減気付けよwwww バカどもの反応が今から楽しみ!
816 名前:デフォルトの名無しさん [2016/05/28(土) 17:38:29.41 ID:R1JSthfd.net] >>797 お前が始めりゃいいじゃん。 「○○のほうがいい」って言いうだけで具体的な話を何も進めないから会話が成立しないんだろ。
817 名前:デフォルトの名無しさん [2016/05/28(土) 17:45:14.88 ID:R1JSthfd.net] >>799 BarはFooを知ってるのにBaz(IFoo , IBar) で再度Fooを渡さないといけない理由が分からない。 どういうケースなのかイメージできるように具体的にならないんだろうか? 一般的にはBaz(IBar)にすると思う。
818 名前:デフォルトの名無しさん mailto:sage [2016/05/28(土) 18:24:36.48 ID:fP0wQpWJ.net] >>802 勤怠管理を出したのは俺だけど 将棋が題材としてクソ過ぎたので出しただけ 設計書書かないでプログラム組む奴は雑魚なので この話は発展させるつもりはない
819 名前:デフォルトの名無しさん mailto:sage [2016/05/28(土) 18:48:04.70 ID:R1JSthfd.net] >>804 将棋はクソって思うのは勝手だけど、話題は何も出さないって無能だなあ。 将棋ソフトから発展した会話をしてる人はいるんだからいちいちじゃまする必要ないだろ。 設計をやっているのに「設計書書かないプログラム組む奴は雑魚なので」って言ってるのも意味不明だし。 何度も言ってるけどオブジェクト指向設計関連で語りたい話題があるなら好きに語ればいいだけ。 他人のじゃまする暇があったらもっと生産的なことしようぜ。
820 名前:デフォルトの名無しさん mailto:sage [2016/05/28(土) 19:50:56.91 ID:hH79WOSS.net] まだやってたんかw。 素性の知らないもの同士が、成果物や開発対象、開発体制の情報開示をせずに 喧嘩腰でレスする時点でこういうオチになると思った。
821 名前:デフォルトの名無しさん mailto:sage [2016/05/28(土) 20:12:20.38 ID:dyQMlzBT.net] 設計書書かないでプログラム組むっていうのと対比させるなら 設計の前にすることすっ飛ばして良い設計も糞もないってことだよな
822 名前:デフォルトの名無しさん mailto:sage [2016/05/28(土) 20:47:19.10 ID:b4Z/BPeQ.net] >>800 すみませんよくわかりませんでした >>803 具体的にはUnitOfWorkパターンです スマホなのでタイピングを端折ってしまったのですが本当はクラスは4つ(業務ではもっと多い)あります DBセッション/トランザクション管理 DB : IDB Aリポジトリ RA : IRA Bリポジトリ RB : IRB UnitOfWork U : IU コンストラクタはそれぞれ U(IRA , IRB) RA(IDB) RB(IDB) DB() こうなってます ここでRAとRBは同じトランザクションで処理したいので同じDBインスタンスを注入したくなります
823 名前:デフォルトの名無しさん mailto:sage [2016/05/28(土) 21:15:12.20 ID:fP0wQpWJ.net] >>808 クソ設計じゃね? IDBゴミ箱に捨てちゃったらどうなるの?
824 名前:デフォルトの名無しさん mailto:sage [2016/05/28(土) 22:55:45.34 ID:vuHucEnZ.net] IDBを捨てられたRAとRBは挙動不審になる感じ? IDBの生存期間が永久だったらどうでもいいんじゃね? でも、いつでも死ぬぜRAとRBとは別のところでひっそりと息をひきとりましたとさ ってなるような構造なら参照保持やめろって思うわ
825 名前:デフォルトの名無しさん mailto:sage [2016/05/28(土) 23:07:57.42 ID:iUyRPTRl.net] >>810 各インスタンスの寿命はUと同期させたいです
826 名前:デフォルトの名無しさん mailto:sage [2016/05/28(土) 23:17:24.57 ID:lKk9NsIN.net] 複数DBのトランザクション処理って、分散トランザクションってことですね。 この方面から検討することが必要では?
827 名前:デフォルトの名無しさん mailto:sage [2016/05/28(土) 23:24:47.99 ID:z5GhiIYg.net] やっぱ具体的かつ現実的な質問があると捗るな
828 名前:デフォルトの名無しさん mailto:sage [2016/05/28(土) 23:41:45.93 ID:vuHucEnZ.net] なんでコンストラクタで渡すん? IDB太死んだら残されたRA子とRB子はどうしたらいいん?
829 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 01:00:47.21 ID:f/sZpflr.net] UnitOfWorkパターンやリポジトリ、厳密に適用されたオブジェクト指向がどんなものかわかってなくて申し訳ないんだけど・・・ 今通じるかわからなくて申し訳ないけど、少し前のJavaのSpring+Hibernateのように メタデータ利用して、フレームワークにトランザクション管理任せたらあかんの?
830 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 08:15:01.43 ID:2I7bmxM6.net] うまい例えになるかどうかわからないけど、オブジェクト指向を、お風呂場のいろんなパーツ、蛇口、浴槽、シャワー、ライトなどの構成パーツとしたら、JavaのSpring+Hibernateは、それらが組み合わせられたメーカー品のユニットバスってことではないかと思う。 パーツからユニットバスを完成させるには、それなりの設計が必要になるけど、それらが組み込み済みのユニットバスなら不要。 既製品が気に入らず、オリジナルのユニットバスが欲しい人は、パーツをうまく組み合わせる設計の知識と能力が要求される。 それが「各インスタンスの寿命はUと同期させたいです」なんて要望実現の部分に相当する。 そこは、オブジェクト指向とは別の知識・技術も必要。 それが無理な人は、JavaのSpring+Hibernate、あるいは同等品を探すほうが楽できるってことかな。
831 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 09:57:03.09 ID:f/sZpflr.net] なるほど、確かに既製品で間に合うならそうするよな その要件が他に出てこないシステムの特異点なら、コメントにしっかり残した上で、規約ぶっちぎって実現できる方法で実現すれば良いと思う
832 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 12:14:52.10 ID:1ogDAOAr.net] つまりDobon.netコピペが最強 こういうことだな
833 名前:デフォルトの名無しさん [2016/05/29(日) 13:18:42.71 ID:Cf71caC3.net] 将棋ソフトを構成するコンポーネントを整理した。 https://drive.google.com/file/d/0B2NKffVh2tpqUWNmbTl6MVBRVXc/view?usp=sharing KifuAnalyzerは過去の棋譜を分析して、駒の価値や駒の配置を点数化するためのパラメータを生成する。 MoveGeneratorは局面からルール上指すことが可能なすべての手を生成する。 MovePickerは合法手から深く読むべき手を選択する。 Evaluatorは局面を評価して点数化する。 MovePickerはEvaluatorが生成する点数を考慮するだろうし、 何手か先まで読むのにMoveGenerator→MovePicker→Evaluatorの処理をループするんだろうけど その辺りの整理は不十分かもしれない。 改善の余地はあると思うので、知見がある人の意見を聞きたい。
834 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 13:20:31.00 ID:uH1/jPAH.net] >>819 オブジェクト指向ではなくて手続き型の設計になってるなw
835 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 13:21:59.15 ID:1ogDAOAr.net] オブジェクト指向なんてゴミ みんなわかったね
836 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 13:22:24.27 ID:Cf71caC3.net] >>820 もっとオブジェクト指向な設計とは具体的には?
837 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 13:23:04.73 ID:Cf71caC3.net] ちなみにクラス設計はこれからだから。
838 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 13:25:54.19 ID:Cf71caC3.net] >>821 手続き型だとコンポーネント構成はどう設計するのかいい加減提示してくれよ。 提示してくれるなら比較できて参考になるから見たい。 提示できるならね。
839 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 13:30:29.53 ID:1ogDAOAr.net] 普通に上から下に流れる処理なのにオブジェクト単位に表現される悪夢
840 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 13:31:05.98 ID:GCrD5Cq5.net] 煽り耐性0やな いちいち反応するなってw
841 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 13:41:23.22 ID:Cf71caC3.net] >>826 ??? もっとオブジェクト指向な設計も手続き型の設計も見てみたいが。 口だけで何もない奴が書き込んでいると決め付けるのは良くない。
842 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 14:07:17.65 ID:uH1/jPAH.net] >>822 > もっとオブジェクト指向な設計とは具体的には? オブジェクト(データ)をメインに考えること
843 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 14:09:35.72 ID:GCrD5Cq5.net] 棋譜データはどこから持ってくるの? 最近、日本将棋連盟は棋譜の著作権を主張してるようだけど その辺はどうクリアするの?
844 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 14:10:21.15 ID:ks+EActS.net] OOPはむしろデータの実体を切り離せるところがメリットなのでは
845 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 14:13:34.46 ID:1ogDAOAr.net] >>830 オブジェクト指向じゃなくね?
846 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 14:16:05.87 ID:2I7bmxM6.net] >>819 たぶん、オブジェクト指向の前に、手続き型プログラミング、構造化プログラミング的な考え方によって大雑把にプログラムの全体構造を把握する設計ステップが入るのだと思う。 それが、この段階。 この段階から、しばらくは構造化プログラミングで設計とコーディングを進めてもいいし、オブジェクト指向をちょっと意識して進めてもいいのだと思う。 で、実際にコードを記述して、ちょくちょくテスト(=詳細設計)を進めていると、「これはオブジェクト指向の例題にあったような、あのパターンを使うとよさげかも?」なんてのに気づく。 そこで、今まで記述したコードを捨てて新規に作り直したり、あるいは作りかけのソースを修正する、もしくは、どっかから使えそうなフレームワークをコピペして活用するって流れになるのでは? そうしたとき、最初からオブジェクト指向を意識して作っていたほうが(経験上)修正量が少なくなる気がするし、そのとき、オブジェクト指向のメリットを実感することになるんだろうね。 また、オブジェクト指向でプログラムを作ろうとも、多くの場合、上から下に流れるような構成になると思う。
847 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 14:21:04.75 ID:ks+EActS.net] >>831 カプセル化すれば内部状態の物理的な実装は自由になる OOPの基本理念の1つ
848 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 14:46:06.53 ID:uH1/jPAH.net] >>819 が手続き型になってるというのは、 その図の四角が処理になっていて、図全体が情報の流れを 表しているからだよ。 オブジェクトっていうのは役目を四角にするので 情報の流れとは無関係。
849 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 14:58:27.22 ID:Cf71caC3.net] >>828 具体的に。
850 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 15:02:50.83 ID:Cf71caC3.net] >>832 だいたいの方向性は同意なんだけど >この段階から、しばらくは構造化プログラミングで設計とコーディングを進めてもいい は違和感があるなあ。 コーディングに行くのは方針が決まってからじゃないか? 構造化プログラミングでコーディングまで始まってるのにそこからブジェクト指向プログラムに切り替えるのは 工数がだいぶ無駄になるような。 その辺はどう考えているんだろ?
851 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 15:08:30.13 ID:uH1/jPAH.net] >>835 図の罫線に矢印を付けた時、 それが継承ではなくて情報の流れだなって 思ったらアウト。
852 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 15:08:35.66 ID:Cf71caC3.net] >>834 抽象的な言葉としては分かるんだが具体的にどうしたいのか分からないなあ。 www.dataio.comで図を書けるからできれば書いて欲しい。 無理ならコンポーネントとインタフェースだけでも列挙してもらえればだいたい分かるかと。
853 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 15:14:36.29 ID:uH1/jPAH.net] >>838 まず最初は全部一つにまとめろ。 その後に「何のために分離するのか」を書きながら 分離するといい。 分離する理由がないならば、それは分離しなくていい
854 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 15:33:37.25 ID:2I7bmxM6.net] >>836 >この段階から、しばらくは構造化プログラミングで設計とコーディングを進めてもいい は違和感があるなあ。 コーディングに行くのは方針が決まってからじゃないか? まあ、あのレベルの設計で、コーディングの方針が決まればいいけど、初めて作るたぐいのプログラムって、どう作ればいいか、よく分からないことが私の場合は、ちょくちょくある。 だから、イメージとしては、作りたいものの漠然としたイメージはあるけど、またはっきりしない状態で、材料となる粘土の塊をいじって、できた粘土の形を見て、そこから先を考えるって感じでプログラミングやっている。 たとえば、足だけ作ってみるとか、バストだけ作って、それを見て、次に作る部分を決めるみたいな・・・。 本来は、全体の方針を決めてからコーディングってのが正しいと思う。 でも、方針がなかなか決まらないときは、手を動かして、なにかしら動くものを作ると、「今日の成果はこれ!」って感じで気分が良くなる。 で、残りを頑張ろうって気力が沸いてくる。そして、オブジェクト指向で作っていると、各パーツの再利用が容易になる。 まあ、すべての人にこの方式を薦めるわけではない。
855 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 16:00:47.90 ID:uH1/jPAH.net] >>819 でおかしい所の一つはMoveGeneratorとかいうコンポーネントがある所 (MovePickerは存在自体が意味不明) なぜならば、移動できる場所は複数存在するが、思考ロジックによって その移動できる場所を解析する順番が違うからだ。 前提条件として、総当りでやると時間が足りない。 だから駒一つ一つすべての移動できる場所を解析するわけじゃない。 解析しない場所(後回しにする場所)などが存在する。 だから、思考ロジック自身が動く場所を知っているし、 解析する順番(評価関数で評価する順番)も知っている。 そして解析する順番というのは、過去の棋譜データから決まる(こともある) ディープラーニングなんかはそれ。 だからそれらを分離した所で、それらのコンポーネントを再利用することは出来ない。 もっとも過去の棋譜データを解析する処理は「思考」とは別のタイミング(対局前)に 行うことだから思考ロジックと分離するのは当たり前 (もちろん思考時には計算結果のみを利用し対局中に過去の棋譜データを解析するわけじゃない)
856 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 16:35:38.18 ID:vZz5+wdA.net] 結局、将棋の思考ロジックのような、時間もメモリも切り詰めなきゃダメなようなものに オブジェクト指向を持ち出すのが誤りってことだな 前々から言われていたことだが、不適切な題材だな やったとしても、「思考ロジック」っていう巨大な一つのクラスがほとんどのことを受け持つ いわゆるGodクラスになってしまうだろう それが一番早く動くなら、将棋にとってはそれが正義 しかも将棋のルールはほぼ固定されていると考えてよいから 変に柔軟性を与えて仕様変更に強くする意味もないしな パラメーターで対応すれば十分 動画のエンコーダーとかといっしょで、規格ものなんだよ 規格が決まっていて、速さや効率が求めらえるなら ハードコーディングも辞さない
857 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 16:38:53.32 ID:uH1/jPAH.net] こういう実時間が足りないタイプのアルゴリズムは データ構造まで工夫する必要があるからね。 いちいちメソッド呼んでデータを取ってきたりしない。 取ってくるにしても駒の動きなんて変わらないんだから 最初に一括して読み込めばいいしそれはファイルから読み込めばいい。 (その後内部で工夫されたデータ構造にして、あとは内部で完結させる)
858 名前:デフォルトの名無しさん [2016/05/29(日) 16:58:54.31 ID:hqWpcQ8C.net] vtable使うなんてもったいない世界だよなぁ
859 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 17:18:08.73 ID:nD7S98HF.net] 工数気にするならボナンザ使えば? 品質も良いと思うよ
860 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 17:48:41.04 ID:Cf71caC3.net] >>840 >あのレベルの設計で、コーディングの方針が決まればいいけど これについてはまだ設計の途中だからさ。現段階では決まってないけど設計が終わる頃には明確になってる。 まあ、設計段階ですべての問題を洗い出すことが難しいのは同意する。
861 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 17:54:21.52 ID:Cf71caC3.net] >>841 MoveGeneratorとMovePickerの役割はちゃんと説明してあるんだが…。 あと、どういう設計を想定しているのか分からない。 言ってる内容がエンドユーザの要件みたいで、設計者の設計じゃないように感じる。 考えてることを明確にするために設計者はモデリングを利用する訳で、設計者同士の会話は モデリングあるいはコンポーネント・クラスなどを明確にして記述して欲しい。
862 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 17:59:16.14 ID:Cf71caC3.net] >>842 何度も繰り返してるけど、時間もメモリも切り詰めた設計はどうなるか提示してくれ。
863 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 18:00:53.32 ID:Cf71caC3.net] >>845 将棋ソフトを作る気はないから。
864 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 18:09:36.48 ID:uH1/jPAH.net] >>847 > MoveGeneratorとMovePickerの役割はちゃんと説明してあるんだが…。 だからそれが意味不明だって。 お前のは、単に分けているだけで 分ける理由が存在していない。
865 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 18:10:53.57 ID:uH1/jPAH.net] >>848 > 何度も繰り返してるけど、時間もメモリも切り詰めた設計はどうなるか提示してくれ。 [ 思考ロジック ]
866 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 18:16:58.80 ID:uH1/jPAH.net] 思考ロジック以外の部分まで書いていいなら これでもいいがw [ 思考ロジック ] - [将棋UI] もう少し細かく言うのなら将棋の駒の配置は、 思考ロジックでも使うが将棋UIでも使う共通情報だから という理由で分離して [ 思考ロジック ] - [ 駒の配置データ ] - [将棋UI] 思考ロジックは、駒の配置データを参照して、駒の配置データを書き換えるという役目。 将棋UIは駒の配置データを参照して、それをUIとしてレンダリングする 将棋UI は更にその内部で、将棋盤オブジェクトや駒オブジェクトとして 2Dや3Dでレンダリングされるが、これは完全にUIの話で思考ロジックとは切り離すべき話だよねw オブジェクト指向で設計するならばこれぐらいの話だな。
867 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 18:21:29.72 ID:uH1/jPAH.net] 時間もメモリも切り詰めた設計っていうのもちょっと質問の意図が不明で 時間を切り詰めた実装でも、メモリを切り詰めた実装でも、 一台のマシンを使う実装でも、多数のマシンを使う実装でも 「どんな実装にも変更可能な設計」というのなら、これは設計なわけで正しい。 つまり × 時間もメモリも切り詰めた設計 ○ 時間もメモリも切り詰めた実装 時間やメモリを切り詰め ”られる" のは、それが可能なように設計で考慮するべきことだが 時間やメモリを切り詰め "る" のは設計で決めることじゃない。
868 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 18:27:50.97 ID:hqWpcQ8C.net] >>848 >何度も繰り返してるけど、時間もメモリも切り詰めた設計はどうなるか提示してくれ。 何度も言われてる気はするがほぼ思考ロジックの話になるからオブジェクト指向でやる意味なくね 具体的にどのアルゴリズムを選ぶか? それが「時間もメモリも切り詰めた設計」となる 振る舞いと実装の分離とかしないわけよ >>852 が言ってるようにオブジェクト指向でやる意味あるUIくらいだよ
869 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 19:05:09.06 ID:Cf71caC3.net] >>850 正しいと思う設計を具体的に示してくれ。 面倒くさくなってきたから明示できないならもういいよ…。
870 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 19:06:07.22 ID:uH1/jPAH.net] >>855 [ 思考ロジック ] 書いてあるよね? なんで見えてないの?
871 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 19:07:21.11 ID:uH1/jPAH.net] [ 思考ロジック ] ↑ 思考ロジックの正しい設計 [ 思考ロジック ] - [ 駒の配置データ ] - [将棋UI] ↑ UIまで含めた、将棋ソフトの正しい設計
872 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 19:08:04.03 ID:Cf71caC3.net] >>85 で、設計は?って聞かれると>>652 とか答えちゃう訳?w
873 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 19:10:04.28 ID:Cf71caC3.net] >>857 おっけ、おっけ。 設計に対する前提がかけ離れ過ぎてるから話しても無意味だと分かった。
874 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 19:12:52.55 ID:uH1/jPAH.net] >>652 はコード(実装)書けって書いてあるから 実装書いてあるだけだろw
875 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 19:13:21.23 ID:uH1/jPAH.net] >>859 結局、設計の話してもこうやって無視するわけだ? 逃げるな卑怯者
876 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 19:20:13.35 ID:Cf71caC3.net] >>861 率直に言うと、レベルが低過ぎてお話にならないと判断した。 将棋ソフトを設計しろって言われて [ 思考ロジック ] - [ 駒の配置データ ] - [将棋UI] だけ書いて完成したと思うのは>>652 並みのお粗末さだぞ…。 思考部分のコンポーネント図が間違っているというなら訂正したコンポーネント図を書けよ。 [ 思考ロジック ] - [ 駒の配置データ ] - [将棋UI] って何じゃそりゃ?
877 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 19:22:38.20 ID:uH1/jPAH.net] >>862 お粗末ってなんだ? 設計というのはシンプルにするものだ。 たくさん書けばいいってわけじゃねーぞw
878 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 19:23:38.63 ID:uH1/jPAH.net] だいたい、間違っていると思うならば、 お前こそ、間違ってる理由を言えよ。 お前が考えるさいきょうのせっけい(笑)の紹介じゃなくて、 何が間違っているのかを言えって。
879 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 19:25:48.76 ID:uH1/jPAH.net] 思考部分のコンポーネント図が間違っているというなら訂正したコンポーネント図を書けよ。 [ 思考ロジック ] ↑ 思考ロジックの正しい設計 何度も言ってる
880 名前:デフォルトの名無しさん [2016/05/29(日) 19:31:51.54 ID:nCNZLCDh.net] ID:Cf71caC3 もうほとんどあらしだな
881 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 19:45:13.81 ID:hqWpcQ8C.net] >>862 レベルが低い以前に話聞いてないじゃん 将棋の思考ロジックの設計なんかはもうアルゴリズムの設計とほぼ同じ 計算機科学の分野でしょ
882 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 20:19:13.03 ID:vZz5+wdA.net] ざっくりいうとさ、将棋の盤のデータは char ban[9][9]; こんなんで十分なわけでしょ これに相手と自分の持ち駒の配列を付け加えて あと少々何かあればそれで充分な世界 人によってはcharですらデカすぎるというかもしれない この時点でオブジェクト指向らしさは全然ないよね どちらかといえば画像処理とかに近いデータ構造 将来将棋が仕様変更して、いきなり金の振る舞いが変わるとか そういうことはあり得ないから、駒をオブジェクトにするとか意味不明なことはする必要ないし オブジェクト指向でよく言うような、仕様変更に強くするとか 継承とオーバーライドで差分プログラミングとか、全く関係ないよね だって、将棋のルール(仕様)は決まっているわけだからさ、仕様変更とか考えなくてよい むしろ実行時間や効率が問われているのだから 意味のない柔軟性を持たせる分のオーバーヘッドがもったいないし、必要もない
883 名前:デフォルトの名無しさん [2016/05/29(日) 20:30:30.60 ID:Cf71caC3.net] >>868 モジュール構成は? 相互の関係は? コンポーネント図を見ればどういう領域を整理しようとしているかくらい分かるだろ?
884 名前:デフォルトの名無しさん [2016/05/29(日) 20:32:05.69 ID:Cf71caC3.net] あと>>608 もな。
885 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 20:42:21.72 ID:f/sZpflr.net] 察して欲しかったら察してもらえるように言葉考えて伝えなよ。 業務プログラマなんだろ?
886 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 20:44:29.81 ID:uH1/jPAH.net] [ 思考ロジック ] ↑ 思考ロジックの正しい設計 [ 思考ロジック ] - [ 駒の配置データ ] - [将棋UI] ↑ UIまで含めた、将棋ソフトの正しい設計 > コンポーネント図を見ればどういう領域を整理しようとしているかくらい分かるだろ? これみて、どういう領域を整理しよとしているかわからないの?w
887 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 20:59:39.40 ID:1omdCt5G.net] 外とのインタフェースだけきめて内部はTDDすれば勝手に決まっていく派 最初から全部決めようなんて無理無理
888 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 21:03:08.22 ID:1mIQzqS0.net] AIモジュールはハードウェアも絡むからOOPはない 将棋ソフト全体をOOPで作ったとしてもAIモジュールとはだいぶ隔たりがあるよ ユーザーの入力した結果から低レベルな盤面データを生成して丸ごと渡すだけとかそんなレベル
889 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 21:13:37.84 ID:vZz5+wdA.net] いやだからさ、将棋ってのはルールが決まっているんだよ 歴史のあるゲームであって、いきなりルールが変わって金の動きが変わるとか そういったことは今の時点では全く考慮する必要がないわけだよ で、オブジェクト指向のメリットは、大体において仕様変更に強くすることなんだよ 仕様変更が全くないのであれば、どんな方法でどんな汚い書き方をしたって プログラマだってプロなんだから、書き上げることはできるんだよ ただ、突然の仕様変更は怖いよねって話で、そのためにオブジェクト指向にコストを掛けているわけじゃないですか その点、将棋はルールが決まっていて、仕様変更など気にする必要ないし むしろ実行速度が強さに直結していて、一手でも先を読んだ方が有利なわけだから 仮想関数なんかを使うオーバーヘッドがもったいないし その二つの面からオブジェクト指向である必要性が薄い題材 仮にオブジェクト指向で作ったとしても、仕様変更がないことが分かっているわけだから オブジェクト指向設計の腕の見せ所が全くないし、題材として不適切なんだよ 将来にわたって必要の無いであろう拡張性や柔軟性を持たせても、無駄が多いと言われるだけ 将棋のAIのアルゴリズムには大変興味深いものがあるとおもうが オブジェクト指向としては見るべき点が「全く」ない
890 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 21:32:59.51 ID:vZz5+wdA.net] つまりは、将棋AIをオブジェクト指向で作るにあたって、どんなに不味い設計をしたとしても 仕様変更が発生しない題材なわけだから、オブジェクト指向的に良いも悪いもなく、動けばOKだよねっていう話になる どんなに不味いオブジェクト指向の設計であっても、仕様変更さえなければ大体は問題にならない 当初の予定通り動く ついでに、将棋AIである以上は強くなくてはならない この強くなければならないという案件は、通常ではない 業務システムが他のシステムと喧嘩して勝っただの負けただの言わない 普通は仕様変更に強いように、拡張性があるように、プログラムを設計するし オブジェクト指向の設計の良し悪しもそこに集約されるわけだが 将棋AIは強さが求められているわけで、オブジェクト指向設計でいうところの 良し悪しとは違ったものが求められている しかも仕様変更がない、とくればハードコーディングも止む無しだろう
891 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 21:36:48.37 ID:JprInoKj.net] 暗黙のうちに拡張将棋が題材になってるんでしょうね ワープ駒とか二回倒さないと死なないとか 範囲攻撃とか装備とかアイテムとか擬人化とかイケメン武将とかキャラアドオンとかガチャとか課金とか マルチプラットフォーム対応もするしサービスとして長くメンテナンスし拡張を加えていく前提 当然AIもそれに対応しなければならないからゲームやアプリは良くモデル化されていなければならない
892 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 21:38:49.46 ID:uH1/jPAH.net] >>877 で、そんなことを言い出すと。 YAGNIだってとどめを刺すわけだw だからそうする目的を聞いている。目的がないのにわざわざ分割するのは、 必要だからやるのではなく、設計(?)をすること自体が目的になっている。
893 名前:デフォルトの名無しさん [2016/05/29(日) 21:47:24.89 ID:Cf71caC3.net] >>877 現実のプロジェクトなら設計者が設計書に記述するであろう内容についての前提が違うんだと思う。 「将棋ソフトを設計してくれ」って客に言われたら、オブジェクト指向だろうが、他の設計手法だろうが 構成を記述しないってことはあり得ないからさあ。 そこを分からない人に説明してもしょうがないことは分かったから流すようにする。 毎日IDが変わるから新しい人かもと思って対応していたけど、どうも同じ人みたいだし、 対応してもスレが汚れるだけだからスルーすべきだったと反省。
894 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 21:50:11.02 ID:uH1/jPAH.net] > 構成を記述しないってことはあり得ないからさあ。 構成は記述されてありますが? そもそも将棋ソフトを設計してくれって言われたら 思考ロジック部分だけを設計しませんよwww [ 思考ロジック ] - [ 駒の配置データ ] - [将棋UI] こんな感じで設計します。 当然、思考ロジック部分は一つです。 シンプルイズベスト。理由がなければ分割しない。
895 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 21:52:08.59 ID:uH1/jPAH.net] 「将棋ソフトを設計してくれ」って客に言われたら、 どんな仕様か詳しく聞きますね。 その上で必要なら、それを満たすように設計しますが、 あんたのように何も言ってないのに過剰な分割なんかしませんよwww
896 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 21:53:29.31 ID:1omdCt5G.net] 客の定義による ただ将棋ソフトで遊びたい人にとって内部設計なんてなんの意味もない 外部の人間が自分たちのソース引き継いでメンテするのが前提ってこと?
897 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 22:04:37.03 ID:qPPHNZFg.net]
898 名前:ogg vorbis形式のファイルを自前でデコードして再生するソフトを「設計」しろとか、 円周率を出すソフトを「設計」しろとか、 そういう類の無意味な題材だってことが理解できているのか心配になる。 動物とか自動車とかモデル化するだけの人なのかもしれんが。 [] [ここ壊れてます]
899 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 22:05:37.63 ID:uH1/jPAH.net] >>882 何を言ってるんだ? たとえばネット対戦をしたいって言えば それが出来るような設計にするだろ? 客の要求を聞いた上で、それを実現できるように設計する。 客がネット対戦をしたいって言ってもいないのに あらかじめ先手(笑)を打ってネット対戦機能をつけましたとか それは過剰な設計であり無駄なコストを発生させたに過ぎない。 だからいきなり設計すんなって言ってるんだよ。 客の要望を聞いて、必要であるという理由があれば それが可能なように設計すればいい。 だから、そうした理由を聞いてるのに、明確な理由もなくて、 そうするのがいいと思いましたーでやってるから馬鹿にされてるんだよ。
900 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 22:06:35.28 ID:1ogDAOAr.net] 別に思考ルーチンも学習機能なんて要件に上がってないしね ここで話せるのはここまでじゃん だから題材が悪いって俺が最初に言ったじゃん 基本的にオブジェクト指向ってz80で作れるものに威力を発揮しないんだよ 将棋ソフトなんて作ったこともないのに題材に選んだ奴責任とって腹切れ どうせ設計に必要な項目も他人に説明できないしできなかっただろ それは将棋ソフトの全容が他人に聞くまでもなく みんなある程度わかっちゃってるからなのさ
901 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 22:07:18.13 ID:+DJ914Ec.net] >>883 できるだけ抽象的に作ればいいと思ってる抽象馬鹿だと思われ。
902 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 22:09:35.02 ID:uH1/jPAH.net] >>883 ogg vorbis形式のファイルというのは、正確には音声ファイルフォーマットで Oggがコンテナ、Vorbisがコーデックという設計で、 元々内部の役割が分割されてるからちょっと違うけどねw
903 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 22:11:26.67 ID:uH1/jPAH.net] >>885 > 将棋ソフトなんて作ったこともないのに題材に選んだ奴責任とって腹切れ ↓こいつかな?w 346 名前:デフォルトの名無しさん[] 投稿日:2016/05/22(日) 16:27:04.89 ID:sxeEi6BC [38/89] ちょうど今電王戦見てるから将棋ソフトで考えてみるとさ。 駒クラスがあって王・飛車とかは駒のサブクラスにしようかって感じだろ。 盤面情報と思考ロジックはどんな感じのクラスにするのがいいだろう? 354 返信:デフォルトの名無しさん[] 投稿日:2016/05/22(日) 16:44:19.40 ID:sxeEi6BC [43/89] >>351 具体例があったほうが分かりやすいから将棋ソフトの例で考えてみてよ。
904 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 22:14:11.15 ID:auBo7N3K.net] スーパーエヴァンジェリストの僕がこのスレの混乱の原因を教えてあげよう ここには顧客ロールの担当者がいないのさ
905 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 22:17:37.23 ID:1ogDAOAr.net] 要件定義が曖昧なのに求めてる設計書のレベルが見合わないんだよね はじめの話で思考ルーチンが ディープラーニング当然でしょみたいな話になんて絶対ならないわけで
906 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 22:19:59.67 ID:+DJ914Ec.net] んでは OS の設計でもしてみるかい? Linux あたりと比較できるしいいんじゃないの? よりよいオブジェクト指向で設計してもらいたいですな。
907 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 22:24:35.04 ID:hqWpcQ8C.net] >要件定義が曖昧 これ 「将棋ソフト」を設計しろだと いきなり実装の話に入らざるを得ない
908 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 22:26:13.01 ID:uH1/jPAH.net] >>890 > 要件定義が曖昧なのに求めてる設計書のレベルが見合わないんだよね それもあるけど「何のためにそうしているか?」が存在しないんだよ。 いえばいいだけなのに、言わない。 そうするのが当然だって思い込んでる。
909 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 22:27:58.83 ID:uH1/jPAH.net] >>892 お題だから、いきなり実装の話に入ってもいいんだけどさ、 それならそれで、どういう「要件を想定した」っていうのを 明確に言わないといけない。 それを言わずに、なんかわけのわからん分割の仕方をしてるから 突っ込み入れられまくってるわけ。
910 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 22:33:44.93 ID:RrRCCmyQ.net] スレタイに沿ったオブジェクト指向の設計なら 将棋の駒はクラスで正解 しかし設計のきれいさではなく 処理速度を求めるなら構造化で書く 前提が違うのにみな上から目線で書きこむから ただ混乱するだけ やっぱ2ちゃんは雑談はともかく ちゃんとした議論に向かないな
911 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 22:35:40.39 ID:1ogDAOAr.net] 要件定義がグチャグチャだとダメだね 得に将棋ソフトなんて疑問が無いもん 勝手に作っちゃうでしょ そこは要件を出した方も悪いし聞かないまま進めちゃう方も悪いし
912 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 22:36:26.79 ID:uH1/jPAH.net] > 将棋の駒はクラスで正解 それはゲームとかで駒を 2Dや3Dでレンダリングする時の話だよw 思考ロジックの中でクラスにする理由はない charなりintなりの二次元配列に defineで定義した定数を入れれば十分
913 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 22:40:50.33 ID:RrRCCmyQ.net] >>897 処理速度を考慮しない前提で言うと それはオブジェクト指向じゃなくて 構造化の考えから抜け出せてない
914 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 22:45:42.31 ID:1ogDAOAr.net] ところで将棋ソフトにオブジェクト指向を適用するとダメだね 駒なんかクラスにされたらどう作ってもクソになっちまう
915 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 22:47:10.49 ID:1ogDAOAr.net] でもオブジェクト指向的に将棋の駒をクラスにするのは間違ってないと思うな つまりオブジェクト指向ってもしかして(笑)
916 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 22:49:05.67 ID:uH1/jPAH.net] >>898 それで理由は?
917 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 22:51:44.59 ID:uH1/jPAH.net] >>900 > でもオブジェクト指向的に将棋の駒をクラスにするのは間違ってないと思うな > つまりオブジェクト指向ってもしかして(笑) 最後まで書きなよw つまりオブジェクト指向ってもしかして、(思考ロジックの)将棋の駒を クラスにすることには役に立たない。 だろ? だから俺は最初から何のためにそれをクラスにするのかと聞いてるわけ。 する理由がある、つまり適切な場所をオブジェクト指向にして、 こんな関数レベルの思考ロジックをわざわざ無意味に分割するんじゃないって言ってるんソア。
918 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 22:52:01.50 ID:+DJ914Ec.net] >>898 抜け出す必要がない場面で無理に抜け出そうとする事がそもそもおかしい。 オブジェクト指向は万能ではない、処理フローがほとんど決まってるものに対しては不向き。
919 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 22:54:48.91 ID:vZz5+wdA.net] 構造体どころかintかcharの配列で良いって話 charでも何か勿体ないという人もいるかもしれない 画像なら、画像全体が何らかのオブジェクトでラップしてあるならわかるが 画像の1ピクセル1ピクセルを全てオブジェクトにする人はいない こんなものはデータで十分 構造体的発想を抜け出せないというのも意味不明 データで十分なものをオブジェクトにする方が 何も理解していないと言いたい
920 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 22:58:31.03 ID:1ogDAOAr.net] >>902 でもさ 全員の共通認識を一致しやすいって手法だろ? でもこの方法は将棋ソフトに関してははっきり言ってクソ どう作ってもクソにしかならない オブジェクト指向ってダメなのかもしれんね
921 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 22:59:10.96 ID:1omdCt5G.net] オブジェクト指向は万能じゃないよ
922 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 23:01:49.14 ID:vlcsE4Oa.net] >>904 うんうん。将棋のコマって 王将・玉将 金将 銀将 → 成銀 桂馬 → 成桂 香車 → 成香 飛車 → 竜王 角行 → 竜馬 歩兵 → と金 うまい具合に15種類なんだよねぇ。 4bitでじゅーぶんですよね。空白含めても。
923 名前:デフォルトの名無しさん [2016/05/29(日) 23:02:20.91 ID:Cf71caC3.net] 実力を示したいなら 「設計は>>652 」 「設計は思考ロジック!」 とか言ってないで、設計を提示すりゃいいじゃん。 設計書を書いたことなくて、書き方知らないんだからおとなしくしてりゃいいのに。 あと、要件についは十分説明したから読み直せ。 参加者はあれで読み取ってるんだから読み取れない自分が問題だといい加減気付けよ。
924 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 23:06:00.21 ID:RrRCCmyQ.net] >>901 仕様の変更や追加に強くなるから >>903 ある程度の規模になると必要がある >>904 >構造体的発想 構造化ね そりゃ速度が重要ならOOにはしないが 逆に複雑なもので多少のオーバヘッドを 犠牲にできるならOOの方が楽に組める
925 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 23:08:23.54 ID:hqWpcQ8C.net] >>908 実力を示すってのが意味不明だけど アルゴリズムの設計をすればいいのか? >MoveGenerator→MovePicker→Evaluator こんなの設計しても将棋には意味ないぞ
926 名前:デフォルトの名無しさん [2016/05/29(日) 23:10:51.26 ID:Cf71caC3.net] 簡単な部分だけをみて簡単だって言ってる奴が多いけど ソフト全体の構成がどうなるかを聞いている。 手が進むと局面が増えるのはどうやって管理する? 手と局面の関連付けは? 手の分岐もおそらく管理する必要がある。 手の生成、局面の評価、手の選択の機能の連携は? マルチスレッド対応もある。 などなど含めた全体の設計はどうなるんだろう?って話だ。
927 名前:デフォルトの名無しさん [2016/05/29(日) 23:14:39.98 ID:Cf71caC3.net] 「構造化で十分」って言うなら構造化による構成を提示して欲しいよな。 設計手法って問題を整理して、考えを明示して関係者と共有することが大きな目的であって 構造化だろうが、オブジェクト指向だろうが基本は一緒。 機能的な固まりをきれいに整理して、疎結合を実現するというのはどの手法でも目的になっているし。
928 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 23:14:43.33 ID:1ogDAOAr.net] >>911 あーまず要件を定義してからな
929 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 23:14:44.37 ID:hqWpcQ8C.net] >仕様の変更や追加に強くなるから 空気を読まずに言うと データ型(クラス)がどういうインターフェースを実装するのかってのを データ型の定義時に決めなきゃいけない静的型付けのOOPより データ型が実装しているインターフェースを後つけで拡張できる型クラスのほうが仕様の変更や追加に強いのではなかろうか つまり手続き型でオブジェクト指向で関数型なRust最強という事だ
930 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 23:17:54.53 ID:1omdCt5G.net] mixinか
931 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 23:17:56.58 ID:RrRCCmyQ.net] まあ将棋のルールは固定されてるから やはり処理速度がどうとか抜きにすれば OOより関数型が向いてるかもしれないね
932 名前:デフォルトの名無しさん [2016/05/29(日) 23:18:07.91 ID:Cf71caC3.net] >>914 言語的にそれを許されたからって楽になるものじゃない。 変更する前には設計して、変更して、テストしてってやるのはどんな言語でも一緒。 変更を楽にするのは正しい設計。
933 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 23:20:12.27 ID:1omdCt5G.net] 今回どんな変更があるのかが要件に入ってないんだよね
934 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 23:20:17.48 ID:hqWpcQ8C.net] >>911 簡単だと思わないしむしろ難しいと思うが しかし >手が進むと局面が増えるのはどうやって管理する? >手と局面の関連付けは? >手の分岐もおそらく管理する必要がある。 >手の生成、局面の評価、手の選択の機能の連携は? >マルチスレッド対応もある。 これももうアルゴリズムのお話でoopプログラミングの手法で解決するものではなないでしょう
935 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 23:23:30.65 ID:hqWpcQ8C.net] 追記 将棋みたいに計算機をガリガリ使う計算って 並列化にはcpuよりGPGPUを使うものだと思うんだけど そうするとますますオブジェクト指向の付け入る隙はなくなるなぁ
936 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 23:27:16.56 ID:hqWpcQ8C.net] ググってみるとクラスタリングか PC1台に限定する意味ないから当たり前だった
937 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 23:29:06.15 ID:1omdCt5G.net] 規模の話がでてたけど 別な視点で考えるとプログラマが10人いたとして 全員が一つのソースファイルを同時にプログラムすることはできないから どのように分割するか、という話になるのだろうか
938 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 23:29:20.83 ID:RrRCCmyQ.net] 計算速度と戦うタイプのソフトを作るのにOOは向いてない ターン制のRPGやカードゲームみたいなのの方が向いてる ゲームルールがすごい複雑でしかも仕様変更されうるもの
939 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 23:32:07.51 ID:E1aQWpks.net] 将棋ダメ オセロだめ トランプだめ テトリスだめ シューティングゲームもだめ PRGも作れません シミュレーションも無理です OS?無理ですね ドライバ?向いてません ミドルウェア?処理速度がー Web系?用途が違うんで 組み込み?ありえないでしょ
940 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 23:36:17.35 ID:1omdCt5G.net] Web系なんてほぼ全部MVCやん
941 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 23:38:45.16 ID:RrRCCmyQ.net] いやRPGやシミュレーションは作れるでしょ なぜ作れないと思い込んでいるのか?
942 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 00:09:08.89 ID:8pkfhQuv.net] 例にするRPGのルールを誰が決めるんだ? 非現実的なので却下。
943 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 00:09:39.22 ID:Fopy0H2h.net] >>926 ゲームは向いてない
944 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 00:25:30.42 ID:j9NktVXe.net] 3Dゲームで使われてるUnrealエンジンのAPIとかもろオブジェクト指向前提だが
945 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 00:25:41.59 ID:MwTEJuIp.net] ゲームは向いてないってのは、確かにそうかもしれない 特にアクションゲームは普通のアプリと比較しても オブジェクト同士の相互作用がとても多いし、プレイヤーもそれを求めてプレーしている以上 ゲームの面白さに直結しているので減らすわけにはいかない これをまともにオブジェクト指向の流儀にのっとって設計すると メッセージの投げ合いだらけになって、だれがどこで何をしているのかわからなくなって バギーになる可能性がある ところがオブジェクト指向が便利な場面もあるから、そのサジ加減が難しい題材という意味では 非常に良いかもしれないが、将棋以上に荒れるのは必須 荒れない範囲で書くなら、大きく分けて ・描画エンジン ・サウンドエンジン ・物理エンジン ・入力処理 ・ロジック処理 ここまでは問題ないだろうが、ここから先の細かいことを言い出すと荒れる 描画エンジンとサウンドエンジンと物理エンジンと入力処理に関しては、わりと決まりきったことを機械的にするだけなので 問題ないだろうが、ロジック処理はかなり個性が出るというか荒れる
946 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 00:30:09.97 ID:AVs/GCxh.net] 夢は語るが 現実を逃避する オブジェクト指向?
947 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 00:34:19.68 ID:j9NktVXe.net] でもゲームエンジンなんて根底は ダブルディスパッチというかVisitorパターンでしょ
948 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 00:37:55.36 ID:ND1XxSGp.net] >>928 むしろゲームにこそ向いている
949 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 00:57:53.90 ID:RhU6P4T4.net] 規模というより粒度の問題。 荒い粒度でならオブジェクト指向するのは当然だろうけれど、細かい粒度でも同じ事やったら 明らかにオーバヘッドで性能がでない。 で、「粒度による」ってのが人それぞれというか経験的なものでしかないので 共有が難しいってこと。
950 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 02:24:41.28 ID:ewV/OC7O.net] >>905 > どう作ってもクソにしかならない > オブジェクト指向ってダメなのかもしれんね そういう結論に持っていこうとする 意図があからさま過ぎたが、正体ばらしたかw
951 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 02:25:30.03 ID:ewV/OC7O.net] >>909 > 仕様の変更や追加に強くなるから どういった理由で? 特定の場合にしか当てはまらない設計をすることは 仕様の変更や追加に弱くなる。
952 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 02:30:01.13 ID:ewV/OC7O.net] 例の奴の設計がクソだっていうのは、 役割の分担じゃなくて、 処理の分担になっているって所。 こいつは恐らく検索処理はどんなものであっても 検索処理コンポーネントにまとめるに違いない。
953 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 03:08:47.31 ID:MwTEJuIp.net] 俺的には処理の分担で良いと思うがな もっと言えば機能の分担で良いと思う
954 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 03:12:13.65 ID:ewV/OC7O.net] それでいいよ。オブジェクト指向的に言えば 一つのクラスの中で処理(メソッド)を2つに分ける。 どうせ思考ロジックなんてデータ構造も必要な処理も そのロジックに最適化された形で決まるんだから、 それらは「思考ロジック」という役割にまとめるしかない。
955 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 03:14:00.77 ID:ewV/OC7O.net] ちょっと訂正 それでいいよ。オブジェクト指向的に言えば 一つのクラスの中で処理(メソッド)を 幾つかに分ける。 別に2つに限定する必要はなかったねw
956 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 03:14:49.89 ID:MwTEJuIp.net] いやだから、思考ロジックという機能にまとめればよいのでは?
957 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 03:19:59.83 ID:ewV/OC7O.net] >>941 だから最初からそう言っている。 オブジェクト指向的に〜とかいう話をしてるから、 一つのクラスにするって話になるってだけ。 思考ロジック部分をインターフェースだけ決めて そのインターフェースを実装する形にすれば 思考ロジックを切り替えやすくなるからね。 と言っても「思考ロジックを切り替えられるようにする」という 要件は明確には出てない。これはこっちのギリギリの譲歩で 無理やりオブジェクト指向の枠内に入れただけ。 ゲームでは難易度調整で思考ロジックの切り替えは当然あるだろうし、 強いAIを作るための研究であっても、別々の思考ロジック同士を 戦わせるってことはあるだろうしさ。
958 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 08:11:02.74 ID:ekC4cwoE.net] 荒れるので要件の定義をせずに設計するの禁止
959 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 10:28:51.98 ID:rIAW5ZZo.net] >>819 これは流石にお粗末だと思うし、設計が未熟な新人ならもう少し謙虚になるべきだと思う
960 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 11:47:28.04 ID:8pkfhQuv.net] >>939 OCPに違反した劣悪な設計
961 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 11:58:04.55 ID:PEEN5NGh.net] OCPって広く長くリリースされてる有名ライブラリなら意味あるのかも知れないけど 規模も小さくプログラマの質も低いそこらのプロジェクトじゃ意味無いよな きっちり動くのだけ残すべきだし、継承なんて安易にするもんじゃない
962 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 12:04:11.10 ID:8pkfhQuv.net] 将棋ソフトにはオブジェクト指向が向かいない厨はAperyがオブジェクトを使っていることを知ったら 小便漏らして泣き出しちゃうの?
963 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 12:32:24.29 ID:ND1XxSGp.net] >>927 これはよく分からん スレで例にする話なら ドラクエとか既存のRPGでいんじゃね
964 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 12:59:01.99 ID:g392/VKX.net] 向かないのは、将棋ソフトじゃなく思考ロジックな すきあらば話をすり替えようとしてるの、 バレバレだw
965 名前:デフォルトの名無しさん [2016/05/30(月) 13:17:27.81 ID:8pkfhQuv.net] >>949 間違いを明確に指摘されても分からない突き抜けたバカ Aperyを確認したら
966 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 14:31:40.52 ID:23kor2oM.net] >>947 aperyのソース読んでねえなお前。 aperyのソースのうち、classは18個ある。ちなみにenumは22個。 classのうち継承を使っているのは4個で、親は全て標準ライブラリからのもの。 このうちメソッドを追加し
967 名前:ただけのものが3個。 virtualを使っているクラスはThreadのみで、実装も1つだけ。 メンバ変数として他のクラスを保持しているクラスはMovePickerのPositionのみ。 Positionクラスも含めその他の全ては構造体+メソッド。他のクラスも同様。 aperyはC++をbetter Cとして使っている。オブジェクト指向で設計したものではない。 具体的にはテンプレート、演算子のオーバーロード、クラスの使い方も構造体に付随する関数をまとめるというもの。 オブジェクト間の相互作用も無いしクラスの階層構造を使ったコードの再利用も外側のごく一部だけ。 ますます例として不適切だと分かるわな。 [] [ここ壊れてます]
968 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 14:44:44.86 ID:eYr/WPsF.net] apery読んでも手続きだなぁとしか思えん
969 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 14:57:17.60 ID:eYr/WPsF.net] https://github.com/HiraokaTakuya/apery/blob/master/src/position.cpp#L69 ここらへんなんてオブジェクト指向としてみたら糞だよね enumをswitchで判定してreturnで値を返すってのは パターンマッチって感じでむしろ関数型プログラミングに近い
970 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 15:26:25.89 ID:W9xaEvpV.net] いるよね。 switchをオブジェクトにしたがるやつ。
971 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 15:28:07.91 ID:3FEoI+9e.net] classを使えばOOP! ん〜学生さんは気楽でいいなぁ〜
972 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 15:30:09.07 ID:ekC4cwoE.net] ああ邪魔だな switchで書かれていれば一覧になっていて一目瞭然なのにワザとか馬鹿なのか知らないけど 抽象化されてて全部で何種類処理が分かれてるのか分からないの
973 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 15:39:10.62 ID:ILfmqIwk.net] このスレ面白いなw 次スレたつのかね
974 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 15:49:54.27 ID:cLUfCSU4.net] 何種類あるか意識する必要があるなら負け
975 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 16:48:44.47 ID:ekC4cwoE.net] >>958 どうやってテストしたのか言ってごらんよ
976 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 17:36:35.20 ID:8pkfhQuv.net] クラスは1つ、分けるのはおかしい!そもそもクラスじゃない!オブジェクト指向で設計するのは不可能! ってバカな主張はさすがにやめたんだw
977 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 17:40:07.46 ID:8pkfhQuv.net] >>951 オブジェクト指向で設計するのは無理って言ってた奴がオブジェクト指向のあるべき設計を語っちゃうって頭おかしんじゃね
978 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 17:51:47.74 ID:eYr/WPsF.net] 「オブジェクト指向とは何か」から認識合わせしなきゃならない感じ? 後 評価関数や定跡はバイナリで配布されてるからそこらへんがなんともいえない
979 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 17:54:05.34 ID:eYr/WPsF.net] >>961 >オブジェクト指向で設計するのは無理って言ってた奴がオブジェクト指向のあるべき設計 aperyはオブジェクト指向で書かれてないのでオブジェクト指向で設計したものではないって事ではないの?
980 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 18:02:17.22 ID:8pkfhQuv.net] >>963 モジュールにもクラスにも分ける必要はない、1つにまとめるのが最高の構成!!! だとさ
981 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 18:13:18.75 ID:ixAozmxi.net] apery見ろって言った自分のレスが的外れと分かって発狂したのか まるでアホの子供だな
982 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 18:25:45.94 ID:cZLZyxJT.net] で、結局OOPは必要なんだろう?
983 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 19:25:11.10 ID:+7J42eKt.net] 結局要件次第だから要件をキッチリ決めよう でもこのスレじゃ先走るバカがいるから決められない だから将棋ソフト開発スレを立ててじっくりやろうってところに落ち着いた感じかな
984 名前:デフォルトの名無しさん [2016/05/30(月) 19:27:28.87 ID:8pkfhQuv.net] >>967 要件が分からないバカ
985 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 19:35:00.08 ID:+7J42eKt.net] >>968 お?aperyのソースは読み終わった?宿題だからはやくやっとけよ
986 名前:デフォルトの名無しさん [2016/05/30(月) 19:38:36.35 ID:8pkfhQuv.net] >>969 電王戦の参加者はニコニコが書いた要件を理解して参加してるのにいまだに理解できない奴w
987 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 19:39:44.40 ID:eYr/WPsF.net] >>964 うーん会話がいまいち通じない
988 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 19:49:06.41 ID:eYr/WPsF.net] >電王戦の参加者 電王戦の参加者は機械学習や計算機科学についての知識がある人達だけど ここのスレにいる人たちは必ずしもそうじゃない
989 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 19:50:50.18 ID:ND1XxSGp.net] さすがにAperyが 2ちゃんのレベルで クラス1個とかやらないよな
990 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 19:52:15.30 ID:8pkfhQuv.net] >>972 理解力のなさが異常 ニコニコのルール・条件のどこが機械学習や計算機科学特有だと思ったのか?
991 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 19:58:45.90 ID:eYr/WPsF.net] >>974 人間に勝てる将棋AIを作るってのは普通に機械学習の知識がないと無理だと思うんだけど
992 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 20:00:14.80 ID:8pkfhQuv.net] >>975 コイツは理解力が異常なまでに欠如しているせいでいろいろ勘違いしてそう
993 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 20:03:26.56 ID:eYr/WPsF.net] >>976 将棋AIを作るんじゃなかった?
994 名前:デフォルトの名無しさん [2016/05/30(月) 20:07:26.50 ID:8pkfhQuv.net] >>977 やっぱりw
995 名前:デフォルトの名無しさん [2016/05/30(月) 20:09:51.65 ID:eYr/WPsF.net] >思考部分がメイン っていうのは共通認識だと思ってたんだけどな
996 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 20:12:45.47 ID:8pkfhQuv.net] >>979 要件を理解してるのに「結局要件次第だから要件をキッチリ決めよう」ってしつこく言ってたならバカ 電王戦の参加者は理解した要件を理解できないなら理解力の欠如
997 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 20:38:00.16 ID:eYr/WPsF.net] >>980 つまり将棋AIを作るって事では?
998 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 20:50:04.74 ID:ILfmqIwk.net] 暗黙的に「まともにプレイするに足る強さ」の思考ルーチン考える →ID:8pkfhQuv どういう思考ルーチンにするか明示されてないから決めよう →ID:eYr/WPsF なのかな?
999 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 20:51:12.69 ID:ILfmqIwk.net] バカCPUでいいならそれこそ合法手からランダムで選ぶのでもいいってことになるからねえ
1000 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 21:07:47.33 ID:j9NktVXe.net] 要件ってこれ? (必須機能) 第5条 参加ソフトは、次の各号に掲げる機能を持たなければならない。 一 任意の局面・手番・残り時間からの将棋の対局の開始と継続。 二 任意の時点での対局中断。 三 対局中の現在局面の表示。テキストでも良い。 四 第 19 条の規定による、1 手毎の消費時間の計測、及び累計消費時間の画面への表示。 五 1 手毎の指し手と消費時間の記録。対局中断時も、そこまでのすべての指し手と消費時間を取り出せなければならない。 六 CSA サーバプロトコル ver.1.1.3 に基づく、LAN による対局。 七 相手の指し手の手入力による対局。
1001 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 21:08:43.43 ID:j9NktVXe.net] (推奨機能) 第6条 参加ソフトは、次の各号に掲げる機能を持つことが推奨される。ただし、機能を持たないことによって不利になることはない。 一 千日手の検出。 二 LAN による通信で送受信した文字列の必要に応じた表示。 三 任意の局面・手番・残り時間からの LAN による通信での将棋の対局の開始と継続。 denou.jp/tournament2015/img/rule/denou_tournament_rule2015.pdf
1002 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 21:12:10.48 ID:ILfmqIwk.net] ID:j9NktVXe 有能
1003 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 21:17:26.56 ID:eYr/WPsF.net] >>982 いや俺は要件をきっちり決めようとは言ってないよ 機械学習とかAIについての知がない人達で将棋AIの設計なんて無理でしょって思ってるだけで >合法手からランダム ならいいけど
1004 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 21:19:03.79 ID:ILfmqIwk.net] >>987 勘違いごめん 回答ありがとう 理解した(つもりかもしれんけど)
1005 名前:デフォルトの名無しさん [2016/05/30(月) 21:27:46.75 ID:8pkfhQuv.net] >>987 だったら>>970 に対するレスのつけ方がおかしい 要件が不明瞭って言ってると受け止めるのが普通
1006 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 21:51:53.77 ID:ZWFY3jHL.net] >>985 誰が書いたか知らんが幼稚な表現が多い文章だなw 誰も校正しなかったんやろか
1007 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 22:22:43.38 ID:Usq7Wp/A.net] >>990 甲だの乙だの書いてあるのがお好き?
1008 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 22:47:26.31 ID:ZWFY3jHL.net] >>991 論文では使わない表現が多いやろ というか無理してる感がにじみ出てさむいわw きちんと書けないならもっとカジュアルに表現すれば 全体の統一感が出て少しはマシになると思うんやけどな
1009 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 22:53:57.20 ID:ewV/OC7O.net] aperyは将棋ソフトであり、今ここで話しているのは思考ロジック部分だけの話 aperyでも思考ロジックは1クラスだろw
1010 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 22:55:20.39 ID:8pkfhQuv.net] >>993 え?
1011 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 22:57:44.15 ID:j9NktVXe.net] 思考ロジックの話してるのは一人だけみたいだな
1012 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 22:58:42.79 ID:ewV/OC7O.net] 思考ロジックの話って最初から書いてあるけどなw なんか、わざとらしく話をすり替えようとしている臭がするなwww
1013 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 22:59:24.96 ID:8pkfhQuv.net] >>996 >>993 をごまかすなwww
1014 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 22:59:41.16 ID:miEVgFPq.net] 思考ロジック部分なんてクラス一つで十分
1015 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 23:00:22.80 ID:V8MlYic6.net] 思考ロジック部分なんてクラス一つで十分だし、 たとえば二分探索のロジックをクラスにして 分割するとか意味不明だろw
1016 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 23:00:45.60 ID:pXhtjcNw.net] >>997 必死すぎwwwwwwwwwwwwwwwwwwwwww
1017 名前:1001 [Over 1000 Thread.net] このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。 life time: 11日 0時間 52分 58秒
1018 名前:1002 [Over 1000 Thread.net] 2ちゃんねるの運営はプレミアム会員の皆さまに支えられています。 運営にご協力お願いいたします。 ─────────────────── 《プレミアム会員の主な特典》 ★ 2ちゃんねる専用ブラウザからの広告除去 ★ 2ちゃんねるの過去ログを取得 ★ 書き込み規制の緩和 ─────────────────── 会員登録には個人情報は一切必要ありません。 月300円から匿名でご購入いただけます。 ▼ プレミアム会員登録はこちら ▼ premium.2ch.net/ pink-chan-store.myshopify.com/
1019 名前:過去ログ ★ [[過去ログ]] ■ このスレッドは過去ログ倉庫に格納されています