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

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]
質問なんだけど、実際のプロジェクトで設計書を作って客に提出したことが
ある奴で将棋ソフトの構成案を書き込んだって奴いるの?
いたらレス番を教えてくれ。






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

前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