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

321 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 15:13:18.77 ID:SSySxKMQ.net]
っつーか言語化できたら本書いて一儲けできそうだなwww

322 名前:デフォルトの名無しさん [2016/05/22(日) 15:17:51.26 ID:sxeEi6BC.net]
>>316
オブジェクトの洗い出しって具体的にどんな感じでやってる?
特に機能的なオブジェクトの洗い出しはアバウトにやってて、もうちょっと何かないかなあって感じてて。

323 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 15:24:46.95 ID:SSySxKMQ.net]
>>318
俺もその辺が明確にできればなーって期待してこのスレみてる

アプローチ方法的にはなんかER図作るときみたいになっちゃってるかもしんない
最初にエンティティ出してそれに振る舞いついたらオブジェクトみたいな

うん、うまく言語化できんやっぱり
上級者に期待だわ

324 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 15:27:46.05 ID:k1JTbXad.net]
設計書厨はまず設計書に書く内容をここで言ってみな
話はそれからだろう

325 名前:デフォルトの名無しさん [2016/05/22(日) 15:32:18.74 ID:sxeEi6BC.net]
>>319
俺もER図書いてエンティティを洗い出すな。
そこからクラス図を書く感じ。

エンティティ的なクラスを決める基準はかなり明確なんだけど機能的なクラスは難しいよな。
デザインパターンを考えながらなんとなく決めてるけど、判断に悩むことが多い。
要件定義から設計へ移行する辺りの明快な指針があんまりないんだよなあ。

326 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 15:32:30.31 ID:WwOYSBmy.net]
> うん、うまく言語化できんやっぱり

そういや中二病っぽく「言語化」とか言ってる
アニメか漫画があったよな。
それのパクリかw

327 名前:デフォルトの名無しさん [2016/05/22(日) 15:33:49.99 ID:sxeEi6BC.net]
要件定義から設計ってより構築の手前の具体的な設計の辺りかな。

328 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 15:34:57.20 ID:WwOYSBmy.net]
>>321
> 俺もER図書いてエンティティを洗い出すな。

俺は、rails generateでモデルを作るな。
そのコード上の定義からER図は rails-erdでモデルを
変更するたびに自動的に生成される。

見方を変えれば、コードを使ってER図を書いているだけ。
やってることは、あんたと一緒でそれがより効率的になっただけだね。
マウスでポチポチやらないで、コードを書くだけだから楽だよ。
修正履歴もわかるしね。

329 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 15:35:56.44 ID:WwOYSBmy.net]
ちなみに、モデルっていうのはクラスだから
Rubyコードを使ってER図を書くと同時にクラスも作れる。



330 名前:デフォルトの名無しさん [2016/05/22(日) 15:38:48.31 ID:sxeEi6BC.net]
>>324
そこは好きなツールを使えばいいと思う。
それより設計指針的な話で、どういう基準でクラスを選択するかを聞きたい。

331 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 15:39:06.09 ID:WwOYSBmy.net]
rails-erdの動画があったよw

Create an ERD in Rails in under 30 seconds.
https://www.youtube.com/watch?v=SETJf4cB_NU

332 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 15:43:24.37 ID:WwOYSBmy.net]
>>326
大概はモデルクラスだろ?

画面があれば、コントローラクラスが必要になる。
機能はメソッドだから機能ごとにクラスは作らない。

やることってその程度じゃね?

333 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 15:44:05.88 ID:JaLdteXY.net]
>>321
悩んでる時点でもうアウトだ

334 名前:
幾ら悩んでも明確な答えは出てこない
そんなフワッとした状態で設計書という名の便所の落書きを幾らかいてもなにも進展しない
結果はコードを書くしかないんだよ
コードを実際に書けば次にどうするかの指針が見えてくる
基本中の基本だわな
[]
[ここ壊れてます]

335 名前:デフォルトの名無しさん [2016/05/22(日) 15:49:05.35 ID:sxeEi6BC.net]
>>328
業務的の機能のきれいな構成だな。

336 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 15:50:23.31 ID:SSySxKMQ.net]
>>321
機能的なクラスって少し掘り下げて教えて欲しい
〜Utilityとか〜Helperとかの名前で実装する類のもの?

だとすると設計段階では洗い出さないかな……

337 名前:デフォルトの名無しさん [2016/05/22(日) 15:51:55.61 ID:sxeEi6BC.net]
>>329
設計が決まってないのにどんなコードを書くのかな?
おおまなか設計がなくちゃコード書けない。

338 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 15:53:09.10 ID:WwOYSBmy.net]
> デザインパターンを考えながらなんとなく決めてるけど、判断に悩むことが多い。

デザインパターンを考えながら決めるのレベルで
まだ初心者なんだよな。

俺がデザインパターンを知ったのはもう15年ぐらい前になるけど、
その時の感想は、みんな(本の作者)も同じこと考えてるなぁ〜。
俺が考えた「アレ」をこんなに体系的にまとめてくれて嬉しいわ。だった。
幾つか自分で同じようなものを実装したこともあったしね。

デザインパターンの解説にも書いてあるけど、
新しい何かではなくて、過去の人が考えていたことに名前をつけてまとめただけ。

だから俺の場合、作るときにああすれば良いんじゃね?って思いついて、
その後にデザインパターン本みて抜けや考慮漏れなどを補強する感じ。

339 名前:デフォルトの名無しさん [2016/05/22(日) 15:54:42.20 ID:sxeEi6BC.net]
>>331
だいたいデザインパターンが扱ってるレベルのクラスと想定して欲しい。
業務ルールをチェックする機能をどうするかとか。



340 名前:デフォルトの名無しさん [2016/05/22(日) 15:56:32.49 ID:sxeEi6BC.net]
>>333
デザインパターンのそんな当たり前の説明をドヤ顔でされても…。

341 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 15:58:10.11 ID:WwOYSBmy.net]
>>334
> 業務ルールをチェックする機能をどうするかとか。

Railsだとバリデーションを使う。
基本的なのはあるが、特殊な業務ルールであれば
カスタムバリデータを自作すればいい。
railsguides.jp/active_record_validations.html

標準のやり方がってそれに従えばクラスが出来上がるので
クラスをどうするか?とかを意識することは少ない。

342 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 15:58:39.18 ID:WwOYSBmy.net]
>>335
当たり前の説明をしただけだけど、
何か気に触ったの?w

343 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 16:01:24.72 ID:SSySxKMQ.net]
>>334
難しい例だね……ちょっと実装よりというか
たいがいフレームワークで作られちゃってるというか

例に出してくれたバリデーションまわりって設計段階ではやっぱり洗い出さないなあ
要件みてこんなバリデーションいるよねー、程度
で、たいがいフレームワークにバリデーションの仕組みあるから
やっぱり自力で洗い出さない……
複雑なバリデーション作るにしてもフレームワークの流儀に沿うだけだしね
派生してちょろちょろ処理書いて決められたreturnするってだけの

344 名前:デフォルトの名無しさん [2016/05/22(日) 16:03:43.19 ID:sxeEi6BC.net]
>>336
クラス内で完結しないチェックもできんの?
複数のクラスを参照することが必要な場合はどうするのかとか?

345 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 16:06:23.48 ID:JaLdteXY.net]
>>332
理解力ねえなあ
コード書きながら考えるんだよ
具体的なコードがあるから
この方向性はダメだなとか
これは行けそうだとか
これがありならこっちはどうだとか
思考が展開していく
簡単な話だろ
設計書屋さんって1手目から最後まで読み切ってから1手目を打とうとしてるんだよね
そんなんでうまくいくわけないでしょ

346 名前:デフォルトの名無しさん [2016/05/22(日) 16:09:12.64 ID:sxeEi6BC.net]
>>338
税制の変更やら社内ルールの変更やらは想定される訳で
その場合の変更に対応できるきれいなデザインって何だろうっていつも悩む。
モデルとか画面の設計はわりと簡単で、業務ロジックの設計・構築がメインじゃない。

設計段階で洗い出さないならいつ設計するんだ?
設計と構築の区切りをどこまで明確にしてるか分からないけど、コーディングの前に
設計する必要はあるじゃん。

347 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 16:16:53.72 ID:JaLdteXY.net]
>>339
このレベルで偉そうにしてたのか

348 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 16:18:54.34 ID:WwOYSBmy.net]
>>339
複数のクラスを参照することが必要ならば、
参照すればいいだけだろう?参照するしかないし。
そんなのデザインパターンがでるまでもない。

349 名前:デフォルトの名無しさん [2016/05/22(日) 16:20:48.62 ID:sxeEi6BC.net]
>>343



350 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 16:23:08.82 ID:WwOYSBmy.net]
>>344
それって、ぐうの音も出ないって意味?

351 名前:デフォルトの名無しさん [2016/05/22(日) 16:27:04.89 ID:sxeEi6BC.net]
ちょうど今電王戦見てるから将棋ソフトで考えてみるとさ。
駒クラスがあって王・飛車とかは駒のサブクラスにしようかって感じだろ。
盤面情報と思考ロジックはどんな感じのクラスにするのがいいだろう?

352 名前:デフォルトの名無しさん [2016/05/22(日) 16:28:08.95 ID:sxeEi6BC.net]
>>345
失礼。クリックミス。

353 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 16:28:29.75 ID:JaLdteXY.net]
>>345
このid sexさんはちょっと昔ながらの人なんだろうね
基本的なフレームワークの扱いもロクに知らんって露呈してしまった
おそらく設計書(笑)ばっかり書いてて最近の開発現場の常識知らないんだろうな
おそらくもうすぐ定年だろう
かわいそうだからあんまりいじめてやらんといて

354 名前:デフォルトの名無しさん [2016/05/22(日) 16:29:56.23 ID:sxeEi6BC.net]
>>345
失礼。クリックミス。

355 名前:デフォルトの名無しさん [2016/05/22(日) 16:30:23.58 ID:sxeEi6BC.net]
>>348
具体例を出したからお前の実力を見せ付けて欲しいな。

356 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 16:37:00.58 ID:WwOYSBmy.net]
フレームワーク=設計だと考えればいいよ。

デザインパターンっていうのは設計するときに必要なものだけど、
フレームワーク作っている側がデザインパターンを使って設計してる。

こっちは、足りない部分を埋めるだけ。
もちろん、基礎知識としてデザインパターンは必要。
フレームワークに足りない部分を拡張するときには必要になる。

だけど定型的なそんな処理で設計なんて考える必要はない。
フレームワークを導入した時点でほとんどが終わっている。

357 名前:デフォルトの名無しさん [2016/05/22(日) 16:40:12.95 ID:MeU4g4+w.net]
sexじゃなくてsxeやん

358 名前:デフォルトの名無しさん [2016/05/22(日) 16:41:15.97 ID:sxeEi6BC.net]
>>351
ややこしい業務ロジックが色々あるときはどうしてる?

359 名前:デフォルトの名無しさん [2016/05/22(日) 16:44:19.40 ID:sxeEi6BC.net]
>>351
具体例があったほうが分かりやすいから将棋ソフトの例で考えてみてよ。
思考ルーチンは定跡+何らかのロジックがあるし、思考ルーチンのどんどん改修されるとして。
ロジックの細かい部分は俺も知らないし、大まかな構成で十分。



360 名前:デフォルトの名無しさん [2016/05/22(日) 16:47:39.90 ID:WF/9GeMl.net]
まあそんな熱くなるなってw

361 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 16:51:47.45 ID:EaQ4G/f7.net]
俺は要件定義で
対象のシステムの構成図
ユースケース図
機能一覧
画面一覧
説明書
まで書く
設計書は頭に構成図貼り付けて
機能一覧に基づいて機能毎に
概要、機能詳細、画面詳細、データフロー、シーケンス図、ログ、メッセージ、ファイルフォーマット、テーブルetc
を書く
基本的にはログやメッセージみたいな共通部分以外で
機能より細分化したクラスは作らない

362 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 16:53:43.65 ID:WwOYSBmy.net]
>>353
> ややこしい業務ロジックが色々あるときはどうしてる?

ややこしい業務ロジックなどない。っていうのが答え。
処理が多くて面倒くさいだけだろう?

もしくは設計が必要な部分(フレームワーク)と
設計が必要ないような些細な部分が、ごちゃまぜになってる。
フレームワークを使ってなさそうだし、綺麗に分離できてないんだろう。

ちなみに「設計が必要ないような些細な部分」といったが
この部分が重要ではないという意味じゃないぞ。
むしろ顧客にとっては(当然だが汎用的なフレームワークより)
この部分の方にこそ価値があって重要な部分。

重要だからこそ、出来る限り汎用的な部分をそぎ落として
改修が入るコードのみにする。そこまで削ぎ落とすから設計なんぞ不要。
フレームワークを使うことで設計はどこかの誰かがやってくれるから
通常の開発で設計なんぞ、終わってることだから、やらない。

あんたは、この改修が入る部分と設計が必要な部分をあわせたままやってるから、
ロジックの改修時に設計をどうするかって話がでてくる。

363 名前:デフォルトの名無しさん [2016/05/22(日) 16:54:30.16 ID:sxeEi6BC.net]
具体例を出したら途端に書き込みが減ったけど考えてくれてるかな?
盤面をクラスとして作るべきか、思考ルーチンの中で使われる情報に過ぎないのか?
って疑問がまず出てくるけどどう判断する?

364 名前:デフォルトの名無しさん [2016/05/22(日) 16:56:03.51 ID:sxeEi6BC.net]
>>357
将棋ソフトの例で一緒に考えよう。
実際にきれいな考え方を示してくれたら素直に認めるから。

365 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 16:59:15.28 ID:WwOYSBmy.net]
>>354
> 具体例があったほうが分かりやすいから将棋ソフトの例で考えてみてよ。

将棋ソフトで設計が必要なのは、まずインターフェース部分。
コマの配置データから、盤面の画像を配置すればいいだけ。
ここは思考ルーチンの改修とは全く別の話だから、
思考ルーチンの改修時に触らなくていいように分離する。

ということで、インターフェース部分の設計は終わり。
思考ルーチンの改修時に考えなくていい。

他に何を設計するんだ?
あとは単なるアルゴリズムだけだろう。

やるとしてもデータを所持して、思考ルーチンを呼び出すだけの
単純なインターフェースを考えればおしまい。

366 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 16:59:59.08 ID:WENufHUB.net]
rails含めてMVCフレームワークで事足りる案件なら
すでに構成が確定してるから
クラス設計とかクラス図とか全く必要ないよな
俺は未だにクラス図が必要になるケースがわからん
科学計算とか人工知能とかそちら方面かな?

367 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 17:02:51.37 ID:WENufHUB.net]
プロセスの成果物については考え方違うが>>351は同意だわ

368 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 17:03:39.39 ID:WwOYSBmy.net]
>>358
> 盤面をクラスとして作るべきか、思考ルーチンの中で使われる情報に過ぎないのか?
> って疑問がまず出てくるけどどう判断する?

何度も同じような指摘をしてる気がするけど、
お前は役割の分離ができていない。

それらをの、改修が入る部分と設計が必要ない部分を合わせたままやってるから
ロジック(思考ルーチン)の改修時に設計をどうするかって話が出てきてる。

盤面なんて、コマの配置データさえあれば、再現できるだろ。
最悪文字だけのアスキーアートでもいい。
もしこれをアニメーションバリバリの3Dで表現しようと思ったら
設計が必要になるだろうけど、それはあくまでUIレベルの話。

思考ルーチンのことなんか考慮する話じゃない。

369 名前:デフォルトの名無しさん [2016/05/22(日) 17:04:12.31 ID:sxeEi6BC.net]
>>360
電王戦は見てない人か?
こっちの説明不足だったけど棋譜をやり取りするインタフェースがあれば
UIはなくてもいいとする。
棋士の指した定跡とか駒の配置とかを元に手を決める思考ロジックがメイン。
基本はありえる手をたくさん読んで、なんらかの基準で点数をつけて、
最適な手を選択する。



370 名前:デフォルトの名無しさん [2016/05/22(日) 17:06:42.51 ID:sxeEi6BC.net]
>>363
反応がないから話のきっかけとして書いた。
お前が違う考え方をするならお前の考える設計を出してよ。

371 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 17:06:55.21 ID:WENufHUB.net]
将棋ソフトってコア部分のアルゴリズムを一人か数人の天才が作ってそうで
チーム開発とか設計の議論には向いてなさそう

372 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 17:07:48.31 ID:WwOYSBmy.net]
>>364
盤面をクラスとして作るべきかなんていい出したのはお前だろ?

思考ロジックに必要な盤面のデータなんて
単なる2次元配列で十分だろ。

あえてクラスを持ち出すならば、
2次元配列クラスを作ればおしまい。

こんなの考えるまでもない。設計なんて呼べるほどのものじゃない。
片手間で簡単に書ける程度。

373 名前:デフォルトの名無しさん [2016/05/22(日) 17:08:33.88 ID:sxeEi6BC.net]
>>366
設計って言い方が曖昧だったな。
きれいなクラス構成を考えて欲しい。
ステップとかの話じゃない。

374 名前:デフォルトの名無しさん [2016/05/22(日) 17:10:20.90 ID:sxeEi6BC.net]
>>367
俺の考えと違うならお前の考えを出してって言ったろ。
将棋ソフトを構成するクラスは何?

スレでやり取りする内容だから厳密に詳細まで落とせないのは分かってるけど
ある程度のイメージがつかめるレベルで頼む。

375 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 17:12:08.26 ID:WwOYSBmy.net]
つーか、なんで思考ロジックって言ってるのに
クラスとか設計が出てくるのか?

システムっていうのは設計が必要な部分と
設計が必要ない部分に分けろよ。
そして普段は設計が必要ないようにしろよ。

そうやってるから俺は普段設計なんてしなくていいって言ってるわけで、
それはフレームワークがすでにやってくれてるからって話なんだが。

将棋ソフトで必要になる設計は、思考ロジック部分の外側だ。
仮に思考ロジックを入れ替えることが可能な "設計" の
将棋ソフトがあれば、各自が将棋ソフトを作ること無く、
ロジック部分に専念できるだろ。

フレームワーク導入っていうのはそういうこと。

376 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 17:12:10.64 ID:EaQ4G/f7.net]
俺だったら将棋クラス1つかな

377 名前:デフォルトの名無しさん [2016/05/22(日) 17:13:27.05 ID:sxeEi6BC.net]
>>367
別の人と勘違いした。

盤面情報ってのは現在の盤面、何手か先の盤面の話。
どうやって持つかは設計によるけど情報としては必要だろ。

378 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 17:14:36.63 ID:WwOYSBmy.net]
>>369
> 将棋ソフトを構成するクラスは何?

将棋ソフトをどうするかで変わる。
作りたい機能によって設計は変わるからだ。

今は、思考ロジックを改修するって話しか出てないから、
思考ロジッククラスと、それ以外のクラス(UI担当クラス)しか言うべきことはない。

ちなみにUI担当クラスは、アスキーアートでやるなら
1クラスで十分だからな。

379 名前:デフォルトの名無しさん [2016/05/22(日) 17:16:25.55 ID:sxeEi6BC.net]
>>370
画面と簡単なロジックしかないシステムばかりじゃないぞ。

設計もなしに開発できるほど将棋ソフトが簡単だとは思えないけどどうやって開発すんの?



380 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 17:17:48.33 ID:WwOYSBmy.net]
>>372
> 盤面情報ってのは現在の盤面、何手か先の盤面の話。

何手か先って未来の情報なんてわかるかよw

先を読んだ結果(つまりキャッシュ)の話でもしてるのか?
そんなの思考ロジックによって違うのだから、
思考ロジックとは別のクラスにすることはできん。

盤面情報をもった汎用的なキャッシュクラスというのであれば
2次元配列で十分だろ。
あえてクラスにするならば、2次元配列クラスだw

381 名前:デフォルトの名無しさん [2016/05/22(日) 17:19:25.70 ID:sxeEi6BC.net]
>>373
思考ロジックの構成なんて俺も知らないから考えてってお題を出してる。
説明がないって言われても困るわ。
業務システムだって担当したことない業界のシステムを設計することだってあるんだから
将棋ソフトなんてむしろイメージしやすいだろ。
細かい点で揚げ足取るつもりはないから設計の腕を見せてくれ。

382 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 17:19:25.93 ID:WwOYSBmy.net]
>>374
お前、将棋のAIのアルゴリズムが難しい話と
ソフトウェア設計の難しさをごっちゃにしてるだろw

業務ロジックでも同じ間違いしてたよな?
業務ロジックがややこしくても、
設計自体は単純。

殆どが汎用的なフレームワークで終る程度。

383 名前:デフォルトの名無しさん [2016/05/22(日) 17:20:29.91 ID:sxeEi6BC.net]
>>377
え?アルゴリズムクラス1つの設計にしちゃうの?w

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

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

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

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

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

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

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

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

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

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

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

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

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

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



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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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



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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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



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


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

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

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

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

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

の2行で十分

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

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

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

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

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

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

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

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

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

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

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

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

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

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



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

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

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

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

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


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

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

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






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

前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