[表示 : 全て 最新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]
手順とかノウハウとか語りたい

384 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 17:20:38.57 ID:WwOYSBmy.net]
>>376
まだ理解してないのか?

思考ロジックに必要なのはアルゴリズムであって
設計じゃない。

思考ロジックの中に設計はないって言ってるのに、
その設計を聞かれても、設計はないって答えるしかないだろw

385 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 17:20:58.83 ID:WENufHUB.net]
>>370
半分同意なんだけど
MVCフレームワーク使ったらクラスまわりの設計不要はそのとおり、
しかしだとするとこのスレは何を語るスレなのか
>>1の真意を知りたいわ

386 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 17:23:11.96 ID:EaQ4G/f7.net]
将棋は例が悪いよ
もっと万人が完成形を一致できるものじゃないと
将棋は何もやらないとテトリスみたいに詰め込むと短く終わるタイプじゃん

387 名前:デフォルトの名無しさん [2016/05/22(日) 17:23:20.30 ID:sxeEi6BC.net]
>>375
あのさあ…、将棋ゲームはやったことないの?
相手がこうさしたら、こっちはこう指して、こうなると悪くなるから、こっちの手を選ぼう
ってロジックの話よ。

電王戦の将棋ソフトって言っても全然伝わらないもんなの??

388 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 17:25:13.14 ID:WwOYSBmy.net]
>>378
むしろ、なんで1つのクラスにしないのかわからんのだが?
(2次元配列クラスぐらいなら言ったよ?)

お前、設計をしなくていい部分を無理やり設計しようとしてるから
わけわからんことになってるんだろw

アルゴリズムをクラスにするのは、
上で書いた思考ロジックを切り替えやすくする
将棋ソフトウェアのフレームワークを俺が設計したから。

思考ロジックの "中" には設計は不要で、
思考ロジックの "外" に設計を行うことで
簡単に思考ロジックを切り替えられるようにする。

業務システムも、通常は業務ロジック部分を作るのだから設計は不要。
設計とはこういうこと。

389 名前:デフォルトの名無しさん [2016/05/22(日) 17:25:50.40 ID:sxeEi6BC.net]
>>381
他にいい例があるなら出してよ。
抽象的な議論だとくだらない言い争いになって不毛だから具体例で語りたい。

将棋ソフトはプログラマならイメージできると思って出したんだけど。

390 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 17:26:08.32 ID:WwOYSBmy.net]
>>382
> 相手がこうさしたら、こっちはこう指して、こうなると悪くなるから、こっちの手を選ぼう
> ってロジックの話よ。

だから、何度も言うように設計はいらねーよな?

391 名前:デフォルトの名無しさん [2016/05/22(日) 17:27:28.13 ID:sxeEi6BC.net]
>>383
「将棋ソフトウェアのフレームワークを俺が設計したから」
!???
何言ってんだろ。

392 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 17:27:50.06 ID:WENufHUB.net]
>>376
あ、なるほど、ようやく意図を理解した
しかしやはり例が難しすぎるね
桂オブジェクト、銀オブジェクト、飛車オブジェクト、角オブジェクトなどに
今後どう動けばより有利になるかの計算メソッドが書いてあり、
それを自分と相手の持ち駒分を
アルゴリズムが入ったロジッククラスに食わせて、、、
あー、俺には無理だわw



393 名前:デフォルトの名無しさん [2016/05/22(日) 17:29:57.58 ID:sxeEi6BC.net]
>>385
で、完成したコードはどういうクラス構成になってんの?

394 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 17:30:55.61 ID:WwOYSBmy.net]
>>386
日本語もわからんのかw

思考ロジックを切り替えなくていいなら、
わざわざ「思考ロジックを切り替えやすくする
将棋ソフトウェアのフレームワーク」を設計する必要はない。

そこまで来るとアルゴリズムクラスすら必要ない。
一枚岩に埋め込んじゃえばいい。

でも俺だったら(俺の設計の話を聞いたんだろ?)
思考ロジックを切り替えられるようにするから、
その部分(思考ロジックの外)は設計するって言ったんだが。

お前、やらなくてい仕事をやってるだけじゃねーの?w
設計がいらないものを、むりやり設計しようとしているようにしか見えない。

395 名前:デフォルトの名無しさん [2016/05/22(日) 17:31:47.21 ID:sxeEi6BC.net]
>>385
>>388は完成させろってことじゃないから。
現時点でどんなクラス構成になりそうだと考えてるの?って質問な。
頭の中に方向性がなきゃコーディングを開始すんのは無理だろ?

396 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 17:31:59.74 ID:EaQ4G/f7.net]
業務フローも含めた勤怠管理システムとかお題として優秀だと思う

397 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 17:33:26.59 ID:WENufHUB.net]
>>391
言い争いが終わらないからお題変えたほうが有益だね
勤怠管理程度だと逆にMVCの一言で設計終わっちゃうがw

398 名前:デフォルトの名無しさん [2016/05/22(日) 17:34:07.26 ID:sxeEi6BC.net]
>>389
思考ロジックを切り替えられるようにするから、
その部分(思考ロジックの外)は設計する

ってのはどんな感じになるのか教えてくれ。
「俺はすごいんだー」って主張してるだけで何も出てこないんじゃさあ。
出てくれば素直にお前を評価するから。
出て来なきゃ口だけだなとw

399 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 17:34:29.93 ID:WwOYSBmy.net]
>>388
クラス構成だろ?
クラスの実装じゃなくて。

今まで出てる要件の将棋ソフトのクラス構成なら、
UIクラスと思考ロジッククラス程度で終わりだろ。

UIを3Dにして商用ゲームっぽくするならば、
UIを作り

400 名前:竄キいように、将棋盤クラス、
コマクラスとか作るけどな。

あと思考ロジックをネットワークを使って複数台で分散処理させるならば、
(汎用の)計算処理分散のための設計も入れるだろうな。

それ以外に必要な設計なんか思いつかん。
[]
[ここ壊れてます]

401 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 17:35:36.39 ID:WwOYSBmy.net]
>>393
> 思考ロジックを切り替えられるようにするから、
> その部分(思考ロジックの外)は設計する
> ってのはどんな感じになるのか教えてくれ。

ストラテジーパターンでいいやん。
こんなん数秒で思いつくレベルやでw

402 名前:デフォルトの名無しさん [2016/05/22(日) 17:37:06.43 ID:sxeEi6BC.net]
>>392
勤怠管理はまあそうだけど、もっとややこしい業務システムもある。
株売買とかも分析があってややこしいとか。
でも、それより将棋のほうがみんな分かっていいだろ。
複雑なロジックを含むシステムなのは共通してる。



403 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 17:38:09.35 ID:WwOYSBmy.net]
数秒もいらんか?

前提知識として、将棋を知ってるから、
ソフトウェア化って聞いただけで
思考ロジックを切り替えられる設計は思いついてる。

仮に将棋を知らなかったとしたら、
将棋のルールを聞いてる途中で思いつく。

考えてください → 数秒後 → 考えつく。じゃなくて
将棋のルールを聞いてる途中で答えが出てる。

404 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 17:38:45.08 ID:8h3SPrnH.net]
いや〜勉強になります
アルゴリズムのデザインにシステムの設計なんて関係ない
アルゴリズムが確定したあと初めてオブジェクト指向を待つ言語でどう詳細な設計に落とすかってことなんだ
アルゴリズムを実装するのに適した処理系があればそっちでやれって

405 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 17:39:44.42 ID:WwOYSBmy.net]
>>398
今の将棋の話で、アルゴリズムを確定させたか?w

アルゴリズムを確定させない状態で、
アルゴリズムを切り替えやすくするための
設計の話をしていたはずなんだがwww

406 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 17:39:53.11 ID:WENufHUB.net]
>>396
将棋は難しすぎると思うけどなあ
じゃあ叩き台としてどんなクラスが必要か出してみてよ
俺は>>387で適当に考えたけど挫折したよ

407 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 17:40:47.45 ID:EaQ4G/f7.net]
>>392
もちろん月次の勤怠報告書も各PCから出力できる
休日や休み時間、有給半休設定も設定可能
予定表機能もあって受付のねーちゃんがそれ見て在籍確認ができる
って程度ならあまり溢れず
設計書が必要なレベルではないだろか?

408 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 17:40:51.87 ID:6l64NX2q.net]
>>360
>他に何を設計するんだ?
将棋のルールを表現するモジュールが欲しいな。
これは変わらないものだし、ユーザ入力も思考ルーチンでもチェックに
利用できるようになっていると嬉しい。

あとソフトウェア内部での盤面や指し手についてのデータ構造だな。
プレイの間だけデータを持ってればいいのかセーブ・ロードが必要なのか
Redo/Undoが欲しいかなどの要求が考えられるから、それらに対応できるような
構造になってると嬉しい。

で、それらをモジュールとして分割するかレイヤとして分割するかだな。

で、そこまで決まると将棋のAIのロジックはデータ構造上のデータの変更のロジックに
容易に変換できるようになる。つまり>>377とかで言ってるフレームワークってことだね。

で、こういったことをコードを書きながら頭の中でやるかメモ書きでやるか、
それとも設計書に書いてからやるかって話だけど、いずれにしても仕事としてやる以上は
やったことを評価と保守ができる形で残さないといけない。

409 名前:デフォルトの名無しさん [2016/05/22(日) 17:45:25.74 ID:sxeEi6BC.net]
>>394
ロジックが1つのクラスってのは違うだろうな。

局面:駒の位置、指せる手、駒の当たり、など
局面の点数化:持ち駒、駒の働き、囲い、駒の位置、など
手を考えるロジック:定跡との比較、候補手の選択、分岐の選択、捨てる手の選択、など

とかいくつかの機能に分かれているのに全部1つのクラスってだめだろ。
局面を管理してる部分は局面の点数化と手を考えるロジックが変わっても変更する必要はない
とかあるだろうし。

設計ってそういうことを考える作業なのに全然できてないなあ。

410 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 17:45:51.18 ID:WwOYSBmy.net]
× 将棋のルールを表現するモジュールが欲しいな。
○ 将棋のルールを表現したデータが欲しいな。


411 名前:
> これは変わらないものだし、ユーザ入力も思考ルーチンでもチェックに
> 利用できるようになっていると嬉しい。
関係ないものを混ぜるな。
役割は分離させろ

> あとソフトウェア内部での盤面や指し手についてのデータ構造だな。
> プレイの間だけデータを持ってればいいのかセーブ・ロードが必要なのか
> Redo/Undoが欲しいかなどの要求が考えられるから、それらに対応できるような
> 構造になってると嬉しい。

そんなの一瞬で思いつちゃったw 棋譜データを記録すれば再現できる。
['7六歩', '8四歩', '6六歩', '6二銀', ・・・] こんな感じだな。
[]
[ここ壊れてます]

412 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 17:46:53.68 ID:EaQ4G/f7.net]
将棋の思考ルーチンなんて

rand()% 動かせる駒の数
rand()% 置ける場所の数

の2行で十分



413 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 17:47:15.33 ID:WwOYSBmy.net]
>>403
お前センス無いんじゃね?

1つのクラスでいいよ。
共通化するにしても、2つだな。

1つのベースクラスに、それらのデータを入れておき、
継承したクラスで、ロジックだけを実装する。

こんなの設計と呼べるレベルじゃない。一瞬で思いつく。

414 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 17:48:23.90 ID:vKoFE7Z9.net]
棋譜と手・盤面の評価値の読み書きとかリプレイとか必要だな
評価値のパラメータやアルゴリズムを差し替えて比較・統計する機能もほしいな

415 名前:デフォルトの名無しさん [2016/05/22(日) 17:48:31.84 ID:sxeEi6BC.net]
>>401
簡単なパターンを考えてみるのも有益かもな。
そっちもやってみる?
同時並行でやるとごちゃごちゃになるかなあ?

416 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 17:49:31.44 ID:WwOYSBmy.net]
よく読んだら、>>403って1機能=1クラスにしようとしてるのか?
あほだなぁw

関数で済むものを、デザインパターンに当てはめて
複数のクラスにしようとしてるから
わけわからんことになってるんだろうな。

417 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 17:49:38.59 ID:WENufHUB.net]
>>401
もちろん業務に関する設計書はひととおり必要
要件定義から画面設計、テーブル設計などいるだろうね

でもこのスレって「オブジェクト指向システムの設計」だから
業務の設計よりももっと技術寄りのクラス設計などを語る目的なのかなと

418 名前:デフォルトの名無しさん [2016/05/22(日) 17:49:49.83 ID:sxeEi6BC.net]
>>406
あー、そういうレベルね。
了解w

具体例を出して正解だった。

419 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 17:51:02.87 ID:WwOYSBmy.net]
>>407
機能はたくさん欲しいのはわかったw

設計は、機能の多さとは比例しない。
棋譜データクラス(さっきから2次元配列クラスと読んでるもの)を
作ってそれらのメソッドを実装しろ。

420 名前:デフォルトの名無しさん [2016/05/22(日) 17:52:51.72 ID:sxeEi6BC.net]
>>409
1機能1クラスなんて言ってないからちゃんと読もうね。

で、俺を批判するのに頑張るよりお前の考えるクラス構成を出したほうがよっぽど評価されるぞ。
頑張れ!

421 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 17:53:50.83 ID:WwOYSBmy.net]
>>411
そうしない理由を聞きたいんだが?w

お前は理由もなく、設計と評して、
過剰なモジュール分割をしようとしているに過ぎない。

目的が設計になってる。
だから設計が必要だって結論になってる。


俺はこんな部分に設計はいらないと最初から言ってる。
だから設計が出ないのは当たり前。

設計というのはフレームワーク部分に使うものなんだよ。
通常の開発はフレームワークを使うから、設計はほぼ不要になる。

一体俺からなにを聞こうとしてるんだ? 最初から無いと言ってるだろ。
無いと言ってるのに、無いに等しい物を言ったら、そのレベルとか心外だわw

422 名前:デフォルトの名無しさん [2016/05/22(日) 17:54:20.75 ID:sxeEi6BC.net]
機能が拡張しそうな箇所を意識して設計するのも設計上の大切な指針だね。



423 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 17:56:04.18 ID:WwOYSBmy.net]
>>413
> で、俺を批判するのに頑張るよりお前の考えるクラス構成を出したほうがよっぽど評価されるぞ。

すでに出しただろ?

将棋のAIのアルゴリズムが難しいからと言って
ソフトウェアの設計も難しくなるわけじゃない。

将棋の設計は簡単。ほんの少ししか無い。
だからほんの少ししか言えることはない。
お前は、むやみに複雑にしているようだがなw

自分で機能をあれこれ言って、
それを自分で設計できないでいるんだろ?
お前が、自分で出した機能を設計できない時点で
そこに設計はないという証拠になってるんだがw

424 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 17:56:41.71 ID:WwOYSBmy.net]
>>415
> 機能が拡張しそうな箇所を意識して設計するのも設計上の大切な指針だね。

だから思考ロジック部分を分離しただろw

425 名前:デフォルトの名無しさん [2016/05/22(日) 17:57:12.46 ID:sxeEi6BC.net]
>>414
> そうしない理由を聞きたい
ストラテジーパターンとか適用できそうだね。

> 設計はいらない
>>390

426 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 17:57:57.65 ID:WwOYSBmy.net]
>>418
> ストラテジーパターンとか適用できそうだね。

それ俺が言ったセリフだwww
パクるなよwww

427 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 17:58:01.83 ID:6l64NX2q.net]
>>404
変わらないもの共用化できるものは分離して共通化した方がいいだろ

>そんなの一瞬で思いつちゃったw 棋譜データを記録すれば再現できる。
それをどこにどう持たせるの?
あとそれをどう決めてもいいけど、どう決めたかを自分にも他人にもわかる形で
残さないといけないね。単純でコード見ればわかるってんならそれでもいいけど。

428 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 17:59:25.73 ID:WwOYSBmy.net]
あ、もしかして

> 1つのベースクラスに、それらのデータを入れておき、
> 継承したクラスで、ロジックだけを実装する。

これがストラテジーパターンになってるの気づいてないの?

429 名前:デフォルトの名無しさん [2016/05/22(日) 17:59:46.97 ID:sxeEi6BC.net]
>>417
>>407はどう考慮したんだ?
そもそも機能拡張がありそうな点を意識するって知ってた?

実力を証明するには設計案を提示するしかないぞ。

430 名前:デフォルトの名無しさん [2016/05/22(日) 18:01:00.43 ID:sxeEi6BC.net]
>>421
>>403
局面を管理してる部分は局面の点数化と手を考えるロジックが変わっても変更する必要はない
とかあるだろうし。
って書いてあげたのに…。

431 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 18:04:19.72 ID:WwOYSBmy.net]
>>420
> 変わらないもの共用化できるものは分離して共通化した方がいいだろ
そのための設計って単純だよな?

> それをどこにどう持たせるの?

少なくとも思考ロジック部分じゃないな。
どの将棋ソフトウェアでも共通で使えるものなんだから。

だから今の話、思考ロジック部分の設計(?)には登場しない。

将棋ソフトフレームワークと呼べるものを作って、
対局データを記録できる機能があるならば、
対局クラスとかの中だろう。

で、やっぱり思考ロジックの "外" の話なんだよ。

432 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 18:06:05.23 ID:WwOYSBmy.net]
>>423
> 局面を管理してる部分は局面の点数化と手を考えるロジックが変わっても変更する必要はない

局面を管理してる部分は2次元配列クラスだと言ったんだがw

局面をもっと便利に管理したいならば、
この2次元配列クラスを拡張してメソッドでも追加しろよw

この程度の話、設計と呼べるレベルじゃないよ。
え?普通そうするよね? レベルの話だ。



433 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 18:06:17.27 ID:6l64NX2q.net]
>>424
ああ、思考ロジックの中の話なんか
思考ロジックを外と分離するための話かと思ってた

434 名前:デフォルトの名無しさん [2016/05/22(日) 18:11:47.45 ID:sxeEi6BC.net]
>>425
将棋のルール的なロジック
駒がどこに効いてるか?
駒が移動できる場所は?
駒の位置は?



点数化
手の選択

を一緒くたにしちゃうのは汚いクラス設計だとしか思わん。
お前は機能の違いについてセンスがまったくないから
これ以上話しても無駄だからもういいや。
少しはましな設計を思いついたら書き込んでくれ。

435 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 18:14:56.13 ID:WwOYSBmy.net]
>>427
だから、ベースクラスを継承すればいいっていっただろ。

なんでこの程度のことを大げさに考えてるんだ?

436 名前:デフォルトの名無しさん [2016/05/22(日) 18:18:27.84 ID:sxeEi6BC.net]
>>428
ベースクラス??
そんなのどこにあんの?

クラス構成聞いてるのに出てないのに突然持ち出されてもさあ…。

ごちゃごちゃ言い訳してる暇があるならまともなクラス構成を提示しろ。
提示できないのに「俺はすごいぞお」って言い張っても滑稽。

437 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 18:21:40.13 ID:WwOYSBmy.net]
> ベースクラス??
> そんなのどこにあんの?

>>406にあるけど・・・?

438 名前:デフォルトの名無しさん [2016/05/22(日) 18:23:12.23 ID:sxeEi6BC.net]
話は戻るけど

ちょうど今電王戦見てるから将棋ソフトで考えてみるとさ。
駒クラスがあって王・飛車とかは駒のサブクラスにしようかって感じだろ。
盤面情報と思考ロジックはどんな感じのクラスにするのがいいだろう?

ってどうなんだろう?

こんな感じのところと将棋ソフトで言えば手の思考ロジックの分割みたいな
領域で悩むことが多い。

439 名前:デフォルトの名無しさん [2016/05/22(日) 18:26:05.60 ID:sxeEi6BC.net]
>>430
???
だから>>427の機能が全部ぶちこまれたクラスがあんでしょ?
違うなら違うで何を考えているのか明示しないとお前の考えてることなんて分かるかよ。

実際のプロジェクトでもドキュメントがなきゃこんな感じになって
ぐだぐだになるから設計書が必要だと実感できてよかったな。

440 名前:デフォルトの名無しさん [2016/05/22(日) 18:28:39.50 ID:sxeEi6BC.net]
>>431
間違った。
具体的な質問はこっちだった。

盤面をクラスとして作るべきか、思考ルーチンの中で使われる情報に過ぎないのか?
って疑問がまず出てくるけどどう判断する?

違うクラス構成でもいいけど。

441 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 18:29:02.46 ID:WwOYSBmy.net]
うーん、こういうのも経験の違いってことなのかな。
どうも ID:sxeEi6BC って
最初から、完全なものを作らないとだめって思ってるみたい。
要求に対して変化させる能力(仕様変更能力)がないんじゃないか?

一番プレーンな状態からやって、○○したくなったら
それにあわせて変化させれば良いんだよ。
最初から必要になるかわからないものまで作る必要はない。
(ただし考慮は必要。考えるだけでやらなくていい)

思考ロジックの話でも、最初はクラス一つでいいだろ。
で、あとから共通化がどうとか言ってきたから、
俺は、ベースクラスにまとめれば?って答えた。

それだけのことだよ。後から何か言われたら、それに対応させて変化さえればいい。

それができないのはいろんなものを一緒くたにしてやろうとしてるからで
俺は役割に応じて分ける(最初から分けるのではなくて、分けていく)って
考え方をしてるので、大幅な設計変更は発生しない。

ただ単に実現したいことを実現するシンプルな方法(これを正しく判断できるのが経験なのだろう)を
選んでいくだけのことなのに。さっきから「そうするだけじゃん」の連続だよw

442 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 18:30:13.36 ID:WwOYSBmy.net]
>>432
> だから>>427の機能が全部ぶちこまれたクラスがあんでしょ?

だからなんの理由で分けるんだよw

「役割」考えれば、一つにするのが正しいだろ。

まったく最初から複雑にしてるんじゃねーよ。



443 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 18:30:39.58 ID:JaLdteXY.net]
少し目を離してるうちにレス番進みすぎだろ
この短い間にもこれだけの応酬があったってことか
やっぱりシステム開発には対話が必要なんだな
横着してドキュメントで済ませようとすると破綻する事がよくわかった

444 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 18:32:15.49 ID:EaQ4G/f7.net]
まあ、ドキュメントを書かないと意思の疎通はできんよね
複数のクラスがあるとしてソースを見る人間と
いやいやこんなもんクラス1つで十分ですよって人間と
混ざって開発することもあんだしね

445 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 18:32:23.86 ID:WwOYSBmy.net]
>>433
どっちでも良い。最初はシンプルに作れ。

後で機能が欲しくなったことを想定してるのなら、その機能を言え。
その機能を実現するように変えるだけだからさ。

クラス設計なんて条件で変わるものなのに、
後出しで条件加えんなよ。

仕様としては単に将棋出来ればいいだけだろ?

446 名前:デフォルトの名無しさん [2016/05/22(日) 18:34:07.77 ID:sxeEi6BC.net]
>>434
>>390
同じことを何度も言わせるな。
どうしようもない設計からスタートさせてくれって言う設計者はいらない。

>>435
こりゃだめだw

447 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 18:34:18.62 ID:EaQ4G/f7.net]
>>438
ちなみに実際の開発で後出しかどうかなんてドキュメントも書いてないのに
主張できんの?

448 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 18:36:52.59 ID:8h3SPrnH.net]
よく判らんけど将棋のコマに主体性があればクラスなりオブジェクトなり構成できると思うけど
将棋のコマって全体を表現するときの1要素、データに過ぎないじゃないの
コマの状態や全体を評価して処理するのは別のプログラムーアルゴリズム
コマが主体性をもって勝手に無双するなら関係があるかも知れないけど
コマの種類ー行動範囲ー状態(手ゴマ、版面での位置、成金など)の一覧で表現できる単純な1要素
肝は、それら要素を含む版面全体を評価処理する部分じゃないか
版面のリストデータを評価する関数部分かな

449 名前:デフォルトの名無しさん [2016/05/22(日) 18:38:05.06 ID:sxeEi6BC.net]
>>438
これが後出しってさあ…。
まず、>>358
で将棋ソフトって言われたら簡単に予測できる。
実際の客なんてこっちが聞かなきゃ説明しないことなんて山ほどあるぞ。

もう語れば語るほど経験のなさが露呈するだけだからやめとけ。

450 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 18:39:04.38 ID:WwOYSBmy.net]
>.437
> 複数のクラスがあるとしてソースを見る人間と
> いやいやこんなもんクラス1つで十分ですよって人間と

そんなふうに考えてるやついないぞw
実際には複数のクラスに分かれているのを見て、
拡張性を考えた設計だなって読み取れる人と

なんでそうなってるのかわからない。
分ける理由もわからない。っていう技術力の低いやつだけだ。

451 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 18:40:13.61 ID:WwOYSBmy.net]
>>439
> どうしようもない設計からスタートさせてくれって言う設計者はいらない。

シンプルな設計からスタートさせてくれって話なんだが?

なんでシンプル=どうしようもない設計なんだ?

根本的にお前おかしい。
世の中のありとあらゆるソフト見てみろよ。
最初はどれもシンプルだろ。

452 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 18:41:15.88 ID:WwOYSBmy.net]
>>442
> で将棋ソフトって言われたら簡単に予測できる。

じゃあ、将棋ソフトっていうからさ、
予測してみ。

もちろん実際の客(俺)が考えてるものの予測だ。
余計なもの作るなよw



453 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 18:42:12.34 ID:WwOYSBmy.net]
>>441
> 将棋のコマって全体を表現するときの1要素、データに過ぎないじゃないの

普通はその通り。

俺からすれば、普通そうするよね?の当たり前の連続でしか無い。
これを設計なんて感じたこともねーわw

454 名前:デフォルトの名無しさん [2016/05/22(日) 18:42:22.89 ID:sxeEi6BC.net]
>>441
駒の動けるマスとか成りルールとかはクラスに持たせてもいい気がするなあ。
たいした情報じゃないからクラスにするまでもないけど。

ルールをどうやってクラスに割り当てるかも悩ましいな。
実装方法の候補はいくつか簡単に思いつくけど、どれを選択するかの基準は難しい。

455 名前:デフォルトの名無しさん [2016/05/22(日) 18:42:52.06 ID:sxeEi6BC.net]
たいした情報じゃないからクラスにするまでもないのかもしれないけど。

456 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 18:45:23.45 ID:WwOYSBmy.net]
>>447
だからそんなの将棋ソフトの機能に合わせて
ごく普通に作ればいいだけだろw

今は超シンプルな将棋ソフトの話なんだから
複雑なクラスにする必要はない。

機能が増えたらそれを実現するように変えればいいだけ。
最初っからいろいろやろうとするから
お前は混乱して、何も手を付けられなくなってるんだよ。

457 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 18:48:50.87 ID:WENufHUB.net]
勝つまで言い争いをやめないID:sxeEi6BCもどうかと思うけど
ID:WwOYSBmyが逃げ回ってるようにしか見えないね

将棋ソフトって考慮時間が必要なくらい中身が複雑なものだから
ベースクラスと継承クラスの2つのシンプル実装で済むはずがない
将棋に勝つソフトではなくて
ルール通りにコマを進めるソフトぐらいならそれでもできるかもしれんが…

458 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 18:49:31.70 ID:8h3SPrnH.net]
クラスにして楽なのは、何らかのデータを保持させて
シンプルな問い合わせで有益な回答がもらえる状態
今回の将棋の場合、コマの種類ごとにクラスとオブジェクトを作って
版面データに配置して、飛車さん何処に動けますか?、何かコマは取れますか?
次の一手で取られるような危険な状態ですか?って問い合わせて
その情報を利用して版面全体を評価判断するプログラムーアルゴリズムが別途必要

だけど、この処理にコマのクラスとかは必須ではない
版面データを一桝ずつ調べて評価しても別にかまわない

459 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 18:51:31.18 ID:6l64NX2q.net]
設計の話をしているのかプロセスの話をしているのか。

設計の話をしているなら最終的な結果をある程度イメージしたクラス構造を提示してって話になるが、
プロセスの話をしているなら、将棋のAIなんてロジックによって処理の内容もデータの持たせ方も
変わる可能性があるから、設計やドキュメント作成をしっかりやろうとすると戻り作業の負荷が大きくなるので
>>434でいいってことになる。

460 名前:デフォルトの名無しさん [2016/05/22(日) 18:53:08.67 ID:sxeEi6BC.net]
>>451
書かれている内容は同意なんだけどどちらかの方法を選択するわけじゃん。
そのときの指標ってどんなんだろ?って話がしたい。
将棋の場合に限定せずに、例えばそんな場合にって感じで。

461 名前:デフォルトの名無しさん [2016/05/22(日) 18:55:00.41 ID:sxeEi6BC.net]
>>452
俺はクラス構成について意見聞きたい。
そう書いたのは流れたんだろうけど。

462 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 19:11:48.08 ID:8h3SPrnH.net]
クラスをデザイン、インスタンスを作ってデータを大量に食わせて
内部関数に知的判断をさせて答えを取り出す
小さな知的データベースみたいな振る舞いをさせた時が使うとき一番楽ができる

struct の内部手続きの管理を容易にするのがクラスだって部分に焦点を当てると
クラス内部のメンバ変数を利用した処理で知的判断が完結できる場合だと思う

アルゴリズムーデータ構造ー>プログラム この関係がクラス内で完結する場合
一番力を発揮するんじゃないかな
C++始めて2週間だけど言ってみるw



463 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 19:13:56.11 ID:fKm+A9/1.net]
将棋AIは自社で作れないのでここは外部サービスになる

自社で作成しなければならない部分は将棋盤のMVCと将棋AIサービスのACLだけ

この案件は規模が小さすぎるから設計するまでもなくフレームワークを使って手短に仕上げて終わりかな

464 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 19:21:02.25 ID:WwOYSBmy.net]
>>450
> 将棋ソフトって考慮時間が必要なくらい中身が複雑なものだから

竹内関数も考慮時間が必要なぐらいですが、
設計は難しいですか?

なんで再帰処理に時間がかかるだけなのに
設計の話が出てくるんだよw

465 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 19:21:47.06 ID:WwOYSBmy.net]
>>454
> 俺はクラス構成について意見聞きたい。
だからクラス構成は搭載する機能によって変わってくる。
今はシンプルな機能でいいって話なんだから、クラス構成もシンプル。
何度も言わせんな。

466 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 19:27:38.99 ID:WENufHUB.net]
>>457
都合のいいとこだけ切り取るなよ
ユーザーに勝つアルゴリズムを
ベースクラスと継承クラスの2つだけで実装できんの?
1クラスに何十万行書くつもりかな?

467 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 19:28:21.77 ID:fKm+A9/1.net]
>>454
>>456が答え
AIサービスの内部の話をしてるなら
クラスもOOPも使われない、が答え
何故なら遅いから

468 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 19:32:21.96 ID:WwOYSBmy.net]
ここまでの流れでよく分かったろ?

あいつは将棋の思考ロジックの設計はどうすればいんだ?って
うんうんうなってばかりで、何も作れていない。
必要な理由もないくせに、小さなクラスに分けようとしている。

一方俺はシンプルな 1クラスから初めて、後出しで条件が出るたびに
その条件をみたすように、バージョンアップし続けていっている。

469 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 19:35:11.10 ID:WwOYSBmy.net]
>>459
実装できるだろ?

470 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 19:43:42.95 ID:WwOYSBmy.net]
「ユーザーに勝つアルゴリズム」をクラス2つで実装できんの?とか
言ってる時点で、普通の人は違和感持つよね?

その言い方だと、ユーザーに負けるアルゴリズムならば、
クラス2つで実装できる思ってるように聞こえる。

ユーザーに勝つかどうかは評価関数(繰り返すけど関数な)の
出来で決まるので、クラスの中の一関数にすぎない。

またコードが長ければ、ユーザーに勝てるとか思っていそう。
コードの長さと強さは関係ない。

471 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 19:57:01.68 ID:EaQ4G/f7.net]
>>444
それじゃ見積れないじゃん
今回の開発ですけど全部でどのくらいかかりますか?
概算でいいんでお願いします

472 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 20:05:41.89 ID:WwOYSBmy.net]
>>464
話がめんどくさくなりそうなので
あんたがこの話に同意すると言ってからねw

プログラマが知るべき97のこと.com/エッセイ/見積りとは何か
xn--97-273ae6a4irb6e2hsoiozc2g4b8082p.com/%E3%82%A8%E3%83%83%E3%82%BB%E3%82%A4/%E8%A6%8B%E7%A9%8D%E3%82%8A%E3%81%A8%E3%81%AF%E4%BD%95%E3%81%8B



473 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 20:07:14.83 ID:WwOYSBmy.net]
>>464
もう一つ。

開発の見積もりとスケジュール管理
見積もりとスケジュールとコミットメントは違う
techlife.cookpad.com/entry/2016/04/06/100000

474 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 20:11:54.86 ID:EaQ4G/f7.net]
>>465
他人のドキュメントが出てきちゃったぞ(笑)

475 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 20:12:46.40 ID:WwOYSBmy.net]
信頼できるソースを持ってくると、
他人のドキュメントとかいい出すやつかw

476 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 20:18:21.48 ID:EaQ4G/f7.net]
>>468
読んでないけど
お客さんにもそれ読ませて合意取ってるの?

477 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 20:18:56.63 ID:WwOYSBmy.net]
>>469
お前に読めって言ってるんだけど?w

478 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 20:20:20.00 ID:EaQ4G/f7.net]
>>470
なんで?
設計書書かないでやるのにそんなの必要ないじゃん

479 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 20:21:47.98 ID:SSySxKMQ.net]
>>341
なんかめっちゃ進んでるwww

> 税制の変更やら社内ルールの変更やらは想定される訳で

そういう類

480 名前:なら設定ファイルなりイベントテーブルなり……オブジェクト指向とは別のところでどうにかするかな
アルゴリズム云々は大量に出てると思うけどストラテジーを真っ先に考えると思うよ

> 設計段階で洗い出さないならいつ設計するんだ?

バリデーションの例での話だけど
バリデーションの為のオブジェクト洗い出しなんてしないなあ
なぜならフレームワークで基底を提供してるから
[]
[ここ壊れてます]

481 名前:デフォルトの名無しさん [2016/05/22(日) 21:33:06.14 ID:sxeEi6BC.net]
>>472
将棋ソフトのクラス構成って例で考えてみてよ。
業務システムの設計で悩むところとだいたい同じようなことは出てくるから。

482 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 21:46:19.29 ID:bOnbURFw.net]
ドキュメントのいるいらない話と設計のいるいらない話がやけに盛り上がってるけどスレチっていう。



483 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 21:53:33.02 ID:SSySxKMQ.net]
>>473
ゲームマスター……どこにどの駒があるとかどっちの番とかコントロールするやつ
ビュー……UI担当
思考……たぶんコンピューターの強さ別に思考ルーチン考える(か、深さを変える程度かどっちか)

ストラテジーするのは思考のところ

あんま練ってないから抜け漏れあるだろうけどぱっと考えておおまかにこんなもんじゃないかな
将棋だと後からプレイヤーが3人になるとか10×10になるとか駒の種類が増えるとかないから……

484 名前:デフォルトの名無しさん [2016/05/22(日) 21:57:19.19 ID:sxeEi6BC.net]
>>475
思考部分がメインになるけどどう構成する?って疑問。

将棋ソフトについては観戦してちょこっとネットを読んだ程度で詳しくはないけど

将棋のルール
候補手の分岐
点数評価
駒の情報
盤面の情報

とかはあるでしょ。






[ 続きを読む ] / [ 携帯版 ]

前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