- 1 名前:デフォルトの名無しさん [2016/05/19(木) 22:07:47.87 ID:9fCVrsOw.net]
- 手順とかノウハウとか語りたい
- 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 名前:過去ログ ★ [[過去ログ]]
- ■ このスレッドは過去ログ倉庫に格納されています
|

|