[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 09/06 09:50 / Filesize : 348 KB / Number-of Response : 1020
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

オブジェクト指向システムの設計



1 名前:デフォルトの名無しさん [2016/05/19(木) 22:07:47.87 ID:9fCVrsOw.net]
手順とかノウハウとか語りたい

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 名前:過去ログ ★ [[過去ログ]]
■ このスレッドは過去ログ倉庫に格納されています






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](;´∀`)<348KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef