オブジェクト指向システムの設計 [無断転載禁止]©5ch.io
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2016/05/19(木) 22:07:47.87ID:9fCVrsOw0002デフォルトの名無しさん
2016/05/19(木) 22:30:15.79ID:7RT/6RIS0003デフォルトの名無しさん
2016/05/19(木) 23:11:13.52ID:DISKdlQR0004デフォルトの名無しさん
2016/05/19(木) 23:13:39.91ID:QjLNgnwxノウハウや成果物は20年前と比べて随分と公開されていると思うが。
スモールオブジェクトプログラミングとかGRASPとかエクササイズ等等。
0005デフォルトの名無しさん
2016/05/19(木) 23:14:14.30ID:P4wIeaTA■■■■ 糸冬 了 ■■■■
0006デフォルトの名無しさん
2016/05/19(木) 23:19:53.32ID:QjLNgnwx読むだけ。
0007デフォルトの名無しさん
2016/05/20(金) 01:27:57.35ID:0eowHHkD誰かがこう言ってるじゃなくて、経験談を語り合いたい。
0008デフォルトの名無しさん
2016/05/20(金) 06:37:23.45ID:A9KUpz/E0009デフォルトの名無しさん
2016/05/20(金) 06:46:44.02ID:A9KUpz/E2chは発言の質が玉石混合であんまり参考にならない。昔は
いろいろスレが立っていたが。
ちなみにドメインモデル周りの成果物は機密保持の関係上、
あまり表に出てこないかな。
0010デフォルトの名無しさん
2016/05/20(金) 08:18:55.59ID:fT3/H/UL0011デフォルトの名無しさん
2016/05/20(金) 09:38:37.61ID:ezy2NA/m進化系というかDDDでいうところの境界づけられたうんちゃらをマイクロサービスとして分離する基準にするとちょうどいいってだけだよね。
最近の小規模プロジェクトでもマイクロサービスを気軽に導入しちゃう雰囲気は謎。マイクロサービスをOOPとかと同列のソフトウェアデザインと考えている人が多いからなのか。
0012デフォルトの名無しさん
2016/05/20(金) 11:45:46.78ID:0eowHHkD実体験と本を読んだだけとは大きな違い。
例えば、オブジェクトの抽出はどうやってる?
仕様書から名詞を洗い出すとか言われることが多いけど、
すべての名詞がオブジェクトに対応する訳じゃない。
オブジェクトとする基準とかレベルとかどんな感じでやってる?
0013デフォルトの名無しさん
2016/05/20(金) 12:59:06.12ID:tPlPBHxz0014デフォルトの名無しさん
2016/05/20(金) 13:01:40.82ID:0eowHHkD0015デフォルトの名無しさん
2016/05/20(金) 13:42:47.84ID:jCV1qcCq全ての変数に分かりにくい名前をつける事を強要された挙句
その名前をデータベースと言う名の紙の辞書に登録しなきゃならないっていう環境で起こる問題に比べたら
大した問題じゃないよな
0016デフォルトの名無しさん
2016/05/20(金) 13:42:47.94ID:xL1EKSbm0017デフォルトの名無しさん
2016/05/20(金) 13:44:27.63ID:jCV1qcCq考えるな、感じろ
直感と経験からオブジェクトにするものとクロージャにするものとを区別していけば
大きく間違えることはそんなに無い
0018デフォルトの名無しさん
2016/05/20(金) 13:47:05.45ID:0eowHHkDそんなんじゃ判断はばらばらになって品質が安定しない。
だからプロセスとか指針が重要なんだが。
0019デフォルトの名無しさん
2016/05/20(金) 13:54:08.42ID:jCV1qcCqそのプロセスやら指針やらはサルでも分かるようにきちんと説明できるの?
0020デフォルトの名無しさん
2016/05/20(金) 13:55:31.32ID:0eowHHkDある程度の知識がある奴が理解できる指針は提示する必要があるだろ。
0021デフォルトの名無しさん
2016/05/20(金) 13:57:21.26ID:jCV1qcCq複数のプロダクトの設計段階での判断がプロダクト毎に異なる事と、
それらプロダクトの品質とは関係あるの?
0022デフォルトの名無しさん
2016/05/20(金) 13:59:42.00ID:jCV1qcCqうん、必要があるか、無いか、で言ったら必要あるよね。
それが実行可能かどうかについて訊いたんだけどね。
0023デフォルトの名無しさん
2016/05/20(金) 14:03:06.56ID:0eowHHkDまともな本を読んでりゃ指針が書かれていることくらい分かるから。
0024デフォルトの名無しさん
2016/05/20(金) 14:07:35.14ID:6MfCjgLg正解。設計と同じぐらい大事。
現場ではエンジニアが自由に名前決めすぎ。
0025デフォルトの名無しさん
2016/05/20(金) 14:08:53.28ID:jCV1qcCq質問に対する答えとして不適切な事を言っておきながら答えたことにするのは人間としてどうかと思うよ。
ちなみに
直感と経験、を具体的に言うと
動作の主体になって、状態を持つものはオブジェクト
動作の客体にしかならないものはクロージャ
みたいな感じに分けてるよ。
直感的でしょ?
0026デフォルトの名無しさん
2016/05/20(金) 14:14:49.64ID:0eowHHkD本に書かれている指針を理解したうえで、実際のプロジェクトに適用したときの
経験について語ってくれってこと。どうして分からないかなあ…。
オブジェクトとクロージャの区別に拘るのは違和感があるんだけど開発言語は何?
言語によってはその区別が重要なんだろうか。
0027デフォルトの名無しさん
2016/05/20(金) 14:19:58.58ID:jCV1qcCqまずその本とやらの題名なりamazonのurlなりを具体的に示して欲しいかな?
本によって言ってることまちまちだしね。
趣味でx86_64アセンブリとLispを少々
0028デフォルトの名無しさん
2016/05/20(金) 14:24:17.23ID:0eowHHkD聞きたいんだけど。
趣味レベルってことで納得。
Lispだとクロージャの役割が大きいのかなあ。
業務システムの設計・構築経験がある人の体験談を聞きたい。
0029デフォルトの名無しさん
2016/05/20(金) 14:28:12.35ID:jCV1qcCqというかクロージャを拡張したら割と簡単にオブジェクトが作れるから
そこまでする必要があるかどうかで自然とオブジェクトにするかどうかが決まる感じ
ところでこれ設計の話?それとも実装の話?
0030デフォルトの名無しさん
2016/05/20(金) 14:31:52.11ID:0eowHHkD実装を無視した設計はあり得ないから、実装も設計に関係する。
0031デフォルトの名無しさん
2016/05/20(金) 14:32:58.18ID:wXLR68d1おれもそもそもOOPのメリットが分からん
OOPでうまくつくっていける奴は関数型でも
手続き型言語でもそれなれにやっていけそうだが
0032デフォルトの名無しさん
2016/05/20(金) 14:41:33.00ID:0eowHHkDどの設計手法を使うにしても基礎は共通してるからある手法できれいな設計ができれば
他の手法を使うときも正しい使い方ができると思う。
手続き型よりもオブジェクト指向のほうが構成要素の区切りが明確になりやすいのがメリットだと思う。
関数型の設計手法はどんなものか分からないや。
0033デフォルトの名無しさん
2016/05/20(金) 14:42:40.60ID:jCV1qcCq0034デフォルトの名無しさん
2016/05/20(金) 15:06:25.53ID:xWTkKLUbインターフェース
クラス
ウーーーーー
もう少しいい言語設計を
0035デフォルトの名無しさん
2016/05/20(金) 15:42:04.87ID:0eowHHkDそれは設計が悪い。
0036デフォルトの名無しさん
2016/05/20(金) 15:42:33.48ID:0eowHHkD0037デフォルトの名無しさん
2016/05/20(金) 17:57:03.05ID:xL1EKSbmJavaやC#どっぷりのオレは、生きていけないの?
0038デフォルトの名無しさん
2016/05/20(金) 18:03:59.50ID:JTjd3aWK利用者にはメリットはないんだよ
0039デフォルトの名無しさん
2016/05/20(金) 20:52:17.59ID:0eowHHkDオブジェクト指向をきちんと活用するのは難しいからじゃね。
素人には理解できない。
まちがった使い方をする。
間違ってるのは素人の俺じゃなくてオブジェクト指向だ。
って流れだと思う。
0040デフォルトの名無しさん
2016/05/20(金) 20:55:01.79ID:0eowHHkDシステムの改修が容易だというのは利用者にとってもメリットだな。
システムの改修を容易にできるだけの洗練された設計が実現できていることは少ないから
オブジェクト指向のメリットを実感できない設計が多いのかもしれないけど。
オブジェクト指向が悪いんじゃなくて、設計者が要求されるレベルに達していないことが多いだけ。
0041デフォルトの名無しさん
2016/05/20(金) 21:00:29.42ID:fT3/H/ULOCPすら満たしてないシステム作ってそう
0042デフォルトの名無しさん
2016/05/20(金) 21:13:45.60ID:JHcTy9r/0043デフォルトの名無しさん
2016/05/20(金) 21:49:33.16ID:lJQ06Hkz親クラスを継承する必要性も少ないし
DBのSELECT結果をオブジェクトに入れる必要もない
0044デフォルトの名無しさん
2016/05/20(金) 21:52:47.80ID:0eowHHkD継承を推奨してる設計指針なんて見たことないけど。
オブジェクト指向設計について語りたいならまともな本を読んでからにしようぜ。
0045デフォルトの名無しさん
2016/05/20(金) 21:54:23.51ID:fT3/H/UL継承と移譲について理解しようね
0046デフォルトの名無しさん
2016/05/20(金) 22:19:45.27ID:5OAEQxQd0047デフォルトの名無しさん
2016/05/20(金) 22:39:20.85ID:lJQ06Hkz推奨とか知らんけど実際の現場では継承されまくってるだろ
>>45
理解してるから言ってる。基本継承は不要。移譲だけでいいぐらい
0048デフォルトの名無しさん
2016/05/20(金) 22:43:46.88ID:0eowHHkD継承を利用すべきじゃない場面でも継承が利用されているのは問題であるってほとんどの本に書いてあるぞ。
まともな本すら読まずに間違った設計をしているからメリットを実感できないだけで設計者のレベルが低いだけ。
0049デフォルトの名無しさん
2016/05/20(金) 22:48:17.41ID:lJQ06Hkzじゃああんたが言ってることと俺が言ってることは同じじゃんか
何で俺は噛み付かれたんだ
0050デフォルトの名無しさん
2016/05/20(金) 22:50:13.54ID:0eowHHkD継承を利用すべきじゃない場面でも継承が利用されているのは問題であるってほとんどの本に書いてあるぞ。
まともな本すら読まずに間違った設計をしているからメリットを実感できないだけで設計者のレベルが低いだけ。
0051デフォルトの名無しさん
2016/05/20(金) 22:51:14.89ID:0eowHHkD×OOPはメリット少ない
○バカな設計者が設計するシステムはダメ
全然違う。
0052デフォルトの名無しさん
2016/05/20(金) 22:53:29.65ID:ALiU1X8u「OOPのメリットはこれとこれとこれだ!」
という歯切れのいい意見を一度として聞いたことが無い
0054デフォルトの名無しさん
2016/05/20(金) 22:59:42.47ID:5OAEQxQd0055デフォルトの名無しさん
2016/05/20(金) 23:17:55.91ID:Zd4GCHrY0056デフォルトの名無しさん
2016/05/20(金) 23:23:18.18ID:Ykc02+7p0057デフォルトの名無しさん
2016/05/20(金) 23:25:43.35ID:5OAEQxQd0058デフォルトの名無しさん
2016/05/20(金) 23:27:16.59ID:0eowHHkD親クラスに一回記述すれば済むのに
別々のクラスの両方に同じコードが書かれているってことだろ。
0059デフォルトの名無しさん
2016/05/20(金) 23:48:05.55ID:5OAEQxQd0060デフォルトの名無しさん
2016/05/20(金) 23:52:47.17ID:0eowHHkDお前が言いたいことはみんな分かってるだろうから会話の流れも読もうぜ。
0061デフォルトの名無しさん
2016/05/21(土) 00:07:02.79ID:q2Zh6d9K> 何で俺は噛み付かれたんだ
そこにお前がいるから(名言)
0062デフォルトの名無しさん
2016/05/21(土) 00:07:37.44ID:RrD1FkH/お前の存在自体がアンチパターンだなwww
0063デフォルトの名無しさん
2016/05/21(土) 00:09:06.75ID:hclWowah親クラスは便利物置場じゃないからな
0064デフォルトの名無しさん
2016/05/21(土) 00:14:14.80ID:Dey5A/Jl0065デフォルトの名無しさん
2016/05/21(土) 00:17:03.45ID:hclWowah設計が必要なのは業務ロジックまで。
実装レベルの設計が必要なのは
相当プログラマーのレベルが低い場合のみ。
0066デフォルトの名無しさん
2016/05/21(土) 00:24:35.47ID:Dey5A/Jlクラスと公開されたメソッドは決める必要がある。
で、それを決めるためにはクラス間の関連を考える必要がある。
ってなるとそれなりに詳細に設計することになるが。
0067デフォルトの名無しさん
2016/05/21(土) 00:27:38.10ID:pCEMwj0Qチームで実装する場合はクラス図とシーケンス図ぐらいは必要じゃね
まぁ個人でやる場合も10年後にメンテする人のために残しといた方がいいけどな
10年もたてば実装した本人も忘れてるだろ
0068デフォルトの名無しさん
2016/05/21(土) 00:27:53.71ID:q2Zh6d9K> 設計が必要なのは業務ロジックまで。
業務ロジックの設計って
具体的にどんなことや?
0069デフォルトの名無しさん
2016/05/21(土) 00:34:44.35ID:sajHzwwt0070デフォルトの名無しさん
2016/05/21(土) 00:36:09.71ID:Dey5A/Jl>>65がどういう意味で書いたのかは知らんが、要件定義的な作業は必要だろ。
UMLで言えばスイムレーンに分けたアクティビティ図を書くとか。
0071デフォルトの名無しさん
2016/05/21(土) 01:06:07.75ID:Dey5A/Jlしかし、実際のプロジェクトでは何らかの基準で決める訳でルールは必要。
ルールもなしに場当たり的に決めているならお話にならない。
0072デフォルトの名無しさん
2016/05/21(土) 09:34:19.36ID:4qmWB+Wjお前は何がしたいんだ?
研究したいなら大学に行くといいよ
現実では直感と経験でだいたい全部決めてる。
実装する時には例えばGoogleのスタイルガイドに合わせるとか、
既存のコードから空気読むとか、
何らかのルールがあるのは確かだけど
設計の段階でそんなこと言ってたらプロジェクトは進まない。
0073デフォルトの名無しさん
2016/05/21(土) 09:51:01.31ID:zSvCOHYP資料より対話の方が大事
図や文章はあくまで補助のメモ書きだね
0074デフォルトの名無しさん
2016/05/21(土) 10:22:35.74ID:hclWowahシーケンス図は業務で必要だね
クラス図は今まで一度も必要になったことがない
クラス図が必要なほど複雑なクラス構成にすること自体間違ってると思う
>>72
直感と経験で決めるやつがリーダーで
チーム内の統一までやってくれればいいんだけどね
1メンバーがマイルールで直感と経験で独断で決めるのはどうかと思う
チーム内にルールは必要だし、大学とか研究とかは関係ない
0075デフォルトの名無しさん
2016/05/21(土) 10:28:49.34ID:Dey5A/Jlだから、実際のプロジェクトでは決めるんだから何らかの基準で判断してるんだろ。
0076デフォルトの名無しさん
2016/05/21(土) 10:30:45.98ID:Dey5A/Jl資料がないと改修で泣くよ。
0077デフォルトの名無しさん
2016/05/21(土) 10:31:01.96ID:4qmWB+Wj誰が一人で設計すると言ったね
要件と要求を元に設計は成される物だから、当然複数人で話し合って物事は決まっていく。
その中で、経験上これはこうした方が良い気がする、とか
直感的にこれはまずいんじゃねーかと思う、とか
そういう話なんだが。
もしかして君は複数人で設計した事が一度も無いの?
0078デフォルトの名無しさん
2016/05/21(土) 10:32:32.20ID:4qmWB+Wj実際のプロジェクト毎にその基準が変わるから
ある一つのプロジェクトについて「これはこうだったあれはああだった」って言っても
意味が無いんだよ。
0079デフォルトの名無しさん
2016/05/21(土) 10:32:37.55ID:Dey5A/Jlクラス図が必要なほど複雑なクラス構成にすること自体間違ってると思うってのは
簡単なシステムしか作ってないからそんなこと言うんだろな。
0080デフォルトの名無しさん
2016/05/21(土) 10:34:45.75ID:Dey5A/Jl説明できるだけの経験がない、しっかりした基準がないてきとーな判断をしてる。
どっちかだろ?
0081デフォルトの名無しさん
2016/05/21(土) 10:37:30.66ID:4qmWB+Wjそこまで他人をこき下ろす以上は、君はそういった経験が豊富なんだよね?
ちょっと語ってくれないか。
君が経験したプロジェクトに基づいて、どういう手法を採用し、どういう問題が起きたか。
0082デフォルトの名無しさん
2016/05/21(土) 10:38:13.47ID:q2Zh6d9K人海戦術とノミニケーションだろwwww
0083デフォルトの名無しさん
2016/05/21(土) 10:42:52.87ID:Dey5A/Jl会話の内容からしてお前よりははるかにあるだろう。
俺の経験はちょっとずつ出してる。
他の人の経験を聞きたいから、自分の考えを一方的に語りたくない。
0084デフォルトの名無しさん
2016/05/21(土) 10:45:22.63ID:4qmWB+Wjそうともさ
俺は20代なんだから君のほうが経験が豊富かも知れないけど、それが何だと言うんだ
で、俺は君の経験を聞きたいんだけど?
どんどん語ってくれよ。
0085デフォルトの名無しさん
2016/05/21(土) 10:47:07.78ID:q2Zh6d9Kお前も少ない経験でいいから語れよw
お前がどこの誰か特定できるように
細かくな。
0086デフォルトの名無しさん
2016/05/21(土) 10:48:18.26ID:Dey5A/Jlプロジェクトを進めるためには決めなければいけないんだから
そのときにどいうい基準で決めるのがいいんだろうか?って考える癖を付けると実力が上がる。
実際、決めなきゃ進まないんだから決めているのにある選択をした理由をちゃんと考えて記録しないのは
だめなプロジェクトで良くみる。
0087デフォルトの名無しさん
2016/05/21(土) 11:08:42.80ID:zSvCOHYP資料無いと泣くようなシステムから脱却したいね
0088デフォルトの名無しさん
2016/05/21(土) 11:09:50.85ID:Dey5A/Jlどうやって?
0089デフォルトの名無しさん
2016/05/21(土) 11:12:20.08ID:4qmWB+Wjおーけい。
ある会社のインターンでの話なんだが
Google Chromeって名前のWebブラウザあるだろ?
あいつがメモリをバカ食いするのは当時でも有名でね。
どのモジュールがどのくらいメモリを食っていて、どれだけ無駄が出ているかってのを調べるために
コンパイラを改造する仕事を割り当てて貰ったんだ。
コンパイラを改造して、コンパイル時に適切なコードを差し込むことによって
Chrome自体のコードを改変せずにメモリの詳細な統計データを得ることが出来るようになる事が目的だった。
実際にはChromeじゃなくてオープンソースのChromiumの方だけどな。
果たして、それは上手く行かなかった。
というのも、オブジェクト間に参照のループがあったり
同じクラスから別の意味を持つクラスが派生してたりして
Chromium全体が密結合になっており、
「どのクラスのインスタンスがどれだけメモリを食っているか」という情報はあまり役に立たなかったんだ。
結論:オブジェクト指向設計を下手に導入すると、メンテナンス性が下がる
0090デフォルトの名無しさん
2016/05/21(土) 11:12:22.49ID:zSvCOHYP美しいコードを書けってこと
結局のところそれだけなんだよね
0091デフォルトの名無しさん
2016/05/21(土) 11:14:11.26ID:Dey5A/JlJavaで書かれてる?
0092デフォルトの名無しさん
2016/05/21(土) 11:15:01.57ID:Dey5A/Jlコメントは書く?
0093デフォルトの名無しさん
2016/05/21(土) 11:16:06.62ID:hclWowah書くコードはみんな美しいだろうな
それをチーム内に統一するのがなかなか難しいんだよ
ルール作っても守らないやつは守らないし
そもそも勤勉なやつのほうが少ないから勤勉なやつにいつも負荷かかる
0094デフォルトの名無しさん
2016/05/21(土) 11:16:39.20ID:4qmWB+Wjc++03で書かれてた
0095デフォルトの名無しさん
2016/05/21(土) 11:18:54.32ID:Dey5A/JlC++は知らないけどメモリの状態を出力する機能くらいあるだろ?
それ使えば一発だったな。
0096デフォルトの名無しさん
2016/05/21(土) 11:20:45.55ID:4qmWB+Wjうちの場合、c++なら
Makefileにcpplint.pyによるチェックが書かれてて
Googleのスタイルガイドから逸脱したコードはそもそもコンパイルできないようにしてる。
0097デフォルトの名無しさん
2016/05/21(土) 11:22:33.52ID:zSvCOHYPコードで意図を表明出来ない場合にのみ書く
0098デフォルトの名無しさん
2016/05/21(土) 11:22:43.32ID:4qmWB+Wjそんな機能無かったよ?
精々がdlmallocをtcmallocに置き換えて、いつどれだけメモリが確保されたか調べれる程度。
0099デフォルトの名無しさん
2016/05/21(土) 11:25:54.47ID:Dey5A/Jlその機能がC++にないとは思えないけどなあ。
Javaにはある。
0100デフォルトの名無しさん
2016/05/21(土) 11:26:55.23ID:zSvCOHYP0101デフォルトの名無しさん
2016/05/21(土) 11:27:47.25ID:Dey5A/Jl言語の標準ライブラリにもマニュアルが添付されてるけどそれについては?
0102デフォルトの名無しさん
2016/05/21(土) 11:29:03.59ID:4qmWB+Wj関数にコメント書くことと、コードにコメント書くことは違うと思うの。
0103デフォルトの名無しさん
2016/05/21(土) 11:30:35.57ID:4qmWB+Wjどうしてc++にそういった機能があると思えるんだ?
0104デフォルトの名無しさん
2016/05/21(土) 11:33:32.42ID:hclWowahああ、そういうのいいね
java+eclipseならcheckstyleプラグインがあってあれも悪くなかった
いまのプロジェクトはPHPなのでまじカオス
途中から入ると改善しようにも限界がある
0105デフォルトの名無しさん
2016/05/21(土) 11:33:48.04ID:4qmWB+Wj視力落ちたかな
0106デフォルトの名無しさん
2016/05/21(土) 11:36:02.84ID:xO6NCrBP0107デフォルトの名無しさん
2016/05/21(土) 11:36:18.20ID:Dey5A/Jlそんな機能もないの?って感じだから。
0108デフォルトの名無しさん
2016/05/21(土) 11:38:51.76ID:xO6NCrBP継承は糞 だな
0109デフォルトの名無しさん
2016/05/21(土) 11:39:02.19ID:4qmWB+Wjつまり直感ってことね。
その直感は誤りだよ。
0110デフォルトの名無しさん
2016/05/21(土) 11:42:08.97ID:Dey5A/JlC++は知らないって言ったろ。
Javaだったら当然の機能だからほんとにないとは思えなかった。
0111デフォルトの名無しさん
2016/05/21(土) 11:44:15.31ID:4qmWB+WjJavaに特有の機能が他の言語に無いとは本当に思えなかった、なんて思ってるとは今でも信じられないよ。
アセンブリ言語をやると良いよ。
そうすれば君に足りない知識や経験が得られるだろうから。
0112デフォルトの名無しさん
2016/05/21(土) 11:45:38.42ID:q2Zh6d9Kお前のレスの内容からわかるのは
こういうことだ。
1. Chrome(chromium)はオブジェクト指向を導入している。
その理由が何かはわからないが、開発者は天才集団だ。
オブジェクト指向を導入することが成功への近道であると
天才集団が判断したに違いないし、実際に成功している。
2. お前はChromiumの改造に失敗した。
天才集団が作ったソースコードを修正する技術力がなかった。
お前のレスからわからないこと
1. Chromiumがオブジェクト指向だったからわからなかったと言っているが、
オブジェクト指向以外で作られたChromium(もちろんそんなものはないが)を
お前がメンテナンスできたわけじゃないので、オブジェクト指向が原因とは断定できない。
まず話を整理した。反論があるのならどうぞ?
0113デフォルトの名無しさん
2016/05/21(土) 11:47:36.21ID:Dey5A/Jlアセンブリ言語くらい知ってるけど。
ちなみにgprofは使わなかった理由は?
gprofはC++でも使えるだろ?
0114デフォルトの名無しさん
2016/05/21(土) 11:48:04.13ID:RrD1FkH/おばかwww
0115デフォルトの名無しさん
2016/05/21(土) 11:55:52.40ID:xEB5od3W仮想マシンで無駄なオーバーヘッド垂れ流しの高級言語と一緒にするな
どうせならC++はスレ違いと主張しろ
0116デフォルトの名無しさん
2016/05/21(土) 11:56:37.92ID:4qmWB+Wj最初のは1行目だけは合ってるな。
何をどう曲解したらその後ろが読み取れたのかが分からんのだけど
Chrome/Chromiumはメモリをバカ食いしてswapを浪費し結局遅くなるという点で失敗してる
というニュアンスの事を言ったつもりだし
オブジェクト指向導入が成功への近道だなんて一言も言ってない。
天才集団云々についてはソースきぼん
二つ目は概ね正しい。俺にはChromiumとそれに使われるコンパイラ(clangだった)を
同時に魔改造するだけの技術力は無かった。
んでもって、俺が言ったのは正しくは
下手くそなオブジェクト指向設計を行った結果密結合になり、
根幹となる部分を書き換えるような改造が困難になった、ということで
オブジェクト指向設計全体を否定してはいなに。
0117デフォルトの名無しさん
2016/05/21(土) 12:00:05.18ID:Dey5A/JlC++はメモリ解法が組み込まれた?みたいなことを噂で聞いた気がするから
オブジェクトを把握してるのかと思ってたんだけどなあ。
C++について話すのはスレと違うから止めるわ。
0118デフォルトの名無しさん
2016/05/21(土) 12:00:14.12ID:4qmWB+Wjgprof?
勿論使ったけど、思ったような情報が集められなかったんだ。
そんな事より、アセンブリ言語を知ってるなら
メモリにどの種類のオブジェクトがどれだけ乗ってるかを調べるのは難しいことだって事くらい常識だろ?
0119デフォルトの名無しさん
2016/05/21(土) 12:04:18.12ID:4qmWB+Wjc++はマルチパラダイム言語で、勿論オブジェクト指向も含む
っていう主張はこのスレでは通らない感じ?
0120デフォルトの名無しさん
2016/05/21(土) 12:04:56.21ID:Dey5A/Jlお前が言ってることが本当なら
C++はオブジェクト指向を十分活用できる実装になっていないって俺は評価する。
アセンブリとJavaじゃ全然違う。
0121デフォルトの名無しさん
2016/05/21(土) 12:07:12.55ID:4qmWB+Wjそうかい。
全然違うからこそ、学ぶ価値が有るよって言ってるんだけど。
ちなみにc++に於けるGCは普通はリファレンスカウントのみです。
スコープから外れた次点でデストラクタが走るっていう機構を利用してる。
0122デフォルトの名無しさん
2016/05/21(土) 12:10:29.05ID:Dey5A/Jlだからアセンブリ知ってるって言ってるだろ。読んで。
スレと違うからもっと語りたいならスレ立てるなりふさわしいスレに移ってやろう。
0123デフォルトの名無しさん
2016/05/21(土) 12:14:07.97ID:4qmWB+Wj知ってるって言ってる割に知ってるなら当然ある筈の知識が欠落してるようにしか見えないから
敢えて言ってるんだけどね。
Java使えます!オブジェクト?知りません!みたいな感じ?
0124デフォルトの名無しさん
2016/05/21(土) 12:15:40.19ID:Dey5A/Jl他のスレを立てるなりしてくれりゃ相手してやるよ。
このスレではスルーするから。
0125デフォルトの名無しさん
2016/05/21(土) 12:16:35.00ID:GoMclkdv0126デフォルトの名無しさん
2016/05/21(土) 12:17:05.21ID:4qmWB+Wjhttp://echo.2ch.net/test/read.cgi/tech/1314502612/l50
0128デフォルトの名無しさん
2016/05/21(土) 12:21:19.22ID:4qmWB+Wj俺が語りたいのは、
こんなプロジェクトをやりました
オブジェクト指向設計は上手くやりましょう
って話だぞ?
お前があまりにも無知だからアセンブリスレで勉強したら良いと思ってそのスレを挙げたんだけど。
0129デフォルトの名無しさん
2016/05/21(土) 12:29:14.18ID:q2Zh6d9Kつまり単にお前の技術力が低くて、
技術力が低いがゆえにオブジェクト指向をディスってるわけね?
Chromeと同等の、ブラウザをオブジェクト指向を使わずに
もっとシンプルに、(お前は実装できる力がないのは分かってるから)
もっとシンプルに実装しているやつを持ってこいよ。
今のままではお前が複雑なシステムを
メンテする力がないってことしかわからない。
オブジェクト指向をディスるなら、サンプルじゃない程度の規模で
ほぼ同じものを別の方法で作ったものを持って事ないと
全然比較にならない。
お前オブジェクト指向が〜といってるだけで、比較を何もしていない。
0130デフォルトの名無しさん
2016/05/21(土) 12:34:27.23ID:4qmWB+Wj> 技術力が低いがゆえにオブジェクト指向をディスってるわけね?
違う。
オブジェクト指向設計をディスってる訳じゃなくて、下手くそな設計をディスってる。
思い込みを捨ててよく読みなおして欲しいな。
> Chromeと同等の、ブラウザをオブジェクト指向を使わずに
> もっとシンプルに、(お前は実装できる力がないのは分かってるから)
> もっとシンプルに実装しているやつを持ってこいよ。
なにをもって「同等の」と言うかにも依るんだけど、lynxならその条件を満たすんじゃない?
Googleのトップページがきちんと見れる位にはW3CやECMAに良く対応してるし。
http://lynx.browser.org/
0131デフォルトの名無しさん
2016/05/21(土) 12:36:31.08ID:Dey5A/Jl正しい設計をしなきゃいけないって結論なんだろ?
だから正しい設計をするための指針が必要って話。
「既存のコードから空気読んで」なんて言ってたらいい設計にならない。
0132デフォルトの名無しさん
2016/05/21(土) 12:38:33.81ID:4qmWB+Wj設計と実装をごっちゃにしてないか?
俺が「既存のコードから空気を読んで」って言ったのは、その直前の文からも分かるように
ifと(の間にスペースを入れるかどうか、とかそのレベルの話をしたんだが。
0133デフォルトの名無しさん
2016/05/21(土) 12:39:00.03ID:q2Zh6d9K技術力が低いとお前自身が認めてるのに、
そのお前が下手と言っても意味はない。
たとえば将棋で、なんでこんな手を指すのだ?って
名人の対局を見ていっているようなものだ。
お前が理解できていない。
lynxはJavaScriptすら搭載されてないので同等とみなせない
なにをもって「同等の」にこだわるのなら、
お前がこれから一ヶ月の間、仕事(学校?)中も含めて
一日中それ過ごせるブラウザだ。
0134デフォルトの名無しさん
2016/05/21(土) 12:40:20.10ID:q2Zh6d9K> 正しい設計をしなきゃいけないって結論なんだろ?
後から読むときに読みやすくて、
後から拡張するときに書きやすくするため
だから既存のコードから空気を読みやすくするために、
正しい設計をする。
0135デフォルトの名無しさん
2016/05/21(土) 12:41:30.36ID:Dey5A/Jl指針やルールなしに直感と経験でてきとーに決めた結果だめな設計になる。
ダメな設計はダメだってお前も認めているんだろ?
だったら正しい設計をできるようにするにはどうすればいいと思ってんの?
0136デフォルトの名無しさん
2016/05/21(土) 12:41:43.67ID:4qmWB+Wj> 技術力が低いとお前自身が認めてるのに
言ってないし、認めてもいない。
Chromiumやclangを魔改造するだけの技術力は無かった、と過去形で言ったに過ぎない。
> 一日中それ過ごせるブラウザだ。
その条件ならlynxで十分だね。
0137デフォルトの名無しさん
2016/05/21(土) 12:42:24.07ID:q2Zh6d9Kほう。じゃあGMailやGoogle Mapを見るときはどうするの?
0138デフォルトの名無しさん
2016/05/21(土) 12:43:09.36ID:q2Zh6d9K今は技術力があることをを証明してないし、
毎度毎度、こいつは何も証明していない。
自分の感想を言ってるに過ぎない。
技術力がないことだけは真実だろう。
0139デフォルトの名無しさん
2016/05/21(土) 12:43:21.58ID:4qmWB+Wjメールはmewがあるし、地図なんて街を歩けばそこらに有るだろ?
0140デフォルトの名無しさん
2016/05/21(土) 12:44:59.69ID:q2Zh6d9Kつまりそういうことだよw
お前は使わない。使わないから
そんな機能があることを想定しない。
そんな機能がないことを前提として設計を考えている。
だからもっとシンプルに書けるはずだと言っているが無理。
つまり、お前の世界が狭いために、
それだけの設計をしている理由がわからないし、
いざその設計を前にすると、お前は何もできなかった。
井の中の蛙ってやつだよw
0141デフォルトの名無しさん
2016/05/21(土) 12:45:45.19ID:4qmWB+Wjそんなに証明に拘るなら、今趣味でOS書いてっからそれを読んでみてよ。
どのくらい低レベルな技術力かわかるから。
https://github.com/pixie-grasper/operating-system
0142デフォルトの名無しさん
2016/05/21(土) 12:46:04.92ID:q2Zh6d9K低レベルと理解したw
0143デフォルトの名無しさん
2016/05/21(土) 12:47:57.47ID:q2Zh6d9K技術力が低いと理解したw
0144デフォルトの名無しさん
2016/05/21(土) 12:50:15.82ID:4qmWB+Wjつまりどういうこと?
君が「ブラウザ」にメールと地図とその他ありとあらゆる機能、例えば電話なんかを搭載しないと気が済まないのかも知れん。
それは結構な事なんだけど、ブラウザってのはそもそも
https://ja.wikipedia.org/wiki/%E3%82%A6%E3%82%A7%E3%83%96%E3%83%96%E3%83%A9%E3%82%A6%E3%82%B6 より引用すると
『大まかに言うと、ウェブブラウザは3つの部分から構成される。
1. URI, HTTP 等に基き、サーバと通信してリソースを取得する、HTTP ユーザエージェントの部分。
2. 取り寄せた資源をその種類 (HTML/XHTML/XML, 文書、画像等)に応じて解析する構文解析の部分。
3. 構文解析の結果を基に文字や画像を適切に配置し、あるいは文字の大きさを調整したり色を付けるなどして最終的に人間の為の表示を行う描写の部分。』
こういうものだろ?
何でメールを開くのにブラウザを使わなきゃならないんだ?
0145デフォルトの名無しさん
2016/05/21(土) 12:52:45.65ID:q2Zh6d9KブラウザにGmailや地図機能が搭載されてると思ってるのか?
こいつ本気で世界が狭いぞwww
0146デフォルトの名無しさん
2016/05/21(土) 12:52:55.78ID:Dey5A/Jl関係ない話して>>135をスルーすんな。
0147デフォルトの名無しさん
2016/05/21(土) 12:55:56.13ID:4qmWB+Wjすまんね。
えーと、何の話だっけ?
そうそう、正しい設計をするにはどうすれば良いか、だったね。
直感と経験で適当な設計をすれば良いんじゃないの?
適当:ある性質・状態・要求などに、ちょうどよく合うこと。ふさわしいこと。
0148デフォルトの名無しさん
2016/05/21(土) 12:57:31.54ID:Dey5A/Jlそれができていないから困ったんだろ?
0149デフォルトの名無しさん
2016/05/21(土) 12:58:17.08ID:4qmWB+Wj適当でない設計が成されてたから、困ったね。
0150デフォルトの名無しさん
2016/05/21(土) 13:00:59.05ID:Dey5A/JlGoogleでもできていないのにお前は直感と経験で正しい設計ができるって自信の根拠は?
お前は経験が不足していることも認めているから、直感だけだな。
そんなんで間違えないとは思えないだろ?
0151デフォルトの名無しさん
2016/05/21(土) 13:01:29.28ID:q2Zh6d9K単純な機能しか想定できてないやつに、
Chromeの設計をごちゃごちゃいう資格はねーよ。
0152デフォルトの名無しさん
2016/05/21(土) 13:10:37.89ID:4qmWB+WjGoogle ChromeやChromiumの設計にはGoogleは関与していないんですがそれはそれとして
適当でない設計だったら設計しなおせばいいんじゃないの?
設計し直す事によってノウハウも貯まるんだし。
>>151
君が、使いもしない機能のために設計を複雑化させる人だという事は分かった。
俺はlynxとchromiumを同じだけ使った訳じゃないけど、俺にとってはどちらも不便じゃなかった。
ただそれだけの事実をどうして捻じ曲げて解釈するのかね。
0153デフォルトの名無しさん
2016/05/21(土) 13:15:07.48ID:Dey5A/Jl矛盾してるなあ。
「下手な設計のせいでだめなシステムになる」
「適当でない設計だったら設計しなおせばいい」
ダメな設計なのに修正できてないシステムが存在するのはどうして?
理由くらい想像つかない?
0154デフォルトの名無しさん
2016/05/21(土) 13:16:45.12ID:q2Zh6d9K「想定」っていうのは、お前がお前自身で使うことを想定しろって話じゃない。
他人が使う機能を想定しろ。
どうしてお前はいつも、お前の中の世界だけで
物事を考えてるんだ?w
0155デフォルトの名無しさん
2016/05/21(土) 13:23:26.36ID:4qmWB+Wj> ダメな設計なのに修正できてないシステムが存在するのはどうして?
何が自明じゃないのかが分からないんだけど
実装した「後」に設計を変更したら違う実装が必要になるよね?
同じ実装を使いまわしてる以上は、設計の大幅な修正は出来ないよ。
逆に、設計を修正したいのなら実装は捨てる勢いじゃないと。
派閥や権力の問題でそれが出来ないから、そういったシステムが存在するのでは?
0156デフォルトの名無しさん
2016/05/21(土) 13:23:53.70ID:4qmWB+Wjアスペだからさ。
0157デフォルトの名無しさん
2016/05/21(土) 13:25:02.03ID:Dey5A/Jlつまり「適当でない設計だったら設計しなおせばいい」というのは現実的じゃないと認めると?
0158デフォルトの名無しさん
2016/05/21(土) 13:25:16.60ID:W+CoeO470159デフォルトの名無しさん
2016/05/21(土) 13:28:33.55ID:4qmWB+Wj何か飛躍してる気がする
設計が適当かどうかは設計の段階で判別すべき問題であって、
駄目な設計の元で実装を与えたらそりゃそんなシステムが作られるよねって事を言いたいんだけど・・・・・・
設計が適当かどうかの判別が出来ない人間が営業やってるってそんなに変な仮定かな。
0160デフォルトの名無しさん
2016/05/21(土) 13:34:12.37ID:Dey5A/Jl設計がダメだとダメなシステムができるってことは最初から分かってるから何度も言わなくていいよ。
だから、「正しい設計をする必要があるんだろ?」って聞いたら
「だめな設計ならしなおせばいいから問題ない」みたいなことをお前が言い出したから意味不明。
何が言いたいんだか明確に。
0161デフォルトの名無しさん
2016/05/21(土) 13:36:12.26ID:W+CoeO47君はウォーターフォールとスパイラルの違いすら理解出来ていないのか
0162デフォルトの名無しさん
2016/05/21(土) 13:37:41.47ID:Dey5A/Jlスパイラルなら設計指針がいらないとでも?
0163デフォルトの名無しさん
2016/05/21(土) 13:42:03.68ID:4qmWB+Wj確かに、間の話をすっ飛ばすと意味不明だな。
>>131で君は
> だから正しい設計をするための指針が必要って話。
こう書いたけど、俺はどちらかと言うと、
派閥や権力なんかの問題で正しい設計を妨害されるのでなければ、
指針なんか無くてもそのうち正しい設計にたどり着けるだろうっていう楽観論を持ってる。
設計を一人でやるのでなければね。
一人で設計するのであれば、確かに指針は必要だと思うよ。
0164デフォルトの名無しさん
2016/05/21(土) 13:48:13.84ID:Dey5A/Jl経験のない奴がやれば間違った設計をすることはお前も認めたんだけど。
だから「間違った設計をしたら直せばいい」って流れだろ。
自分の書き込みに沿って話せよ。
で、言ってることがぶれてて分からん。分かるように書いてくれ。
0165デフォルトの名無しさん
2016/05/21(土) 13:50:59.11ID:q2Zh6d9K一度作ったソフトウェアがバージョンアップしないと言うのなら別だけど、
ブラウザのようなものは、設計は常に変わっていく。
だめだから変わるんじゃない。
いいものから更にいいものに変わるんだよ。
何が正しい設計? そんなものバージョンアップで変わるに決まってる。
最初から未来の設計をしてはいけない。
0166デフォルトの名無しさん
2016/05/21(土) 13:52:49.78ID:4qmWB+Wjちょっと待った。
そんな事俺認めてたっけ?
0167デフォルトの名無しさん
2016/05/21(土) 13:54:12.61ID:q2Zh6d9Kバージョンアップで搭載される機能によって、正しい設計は変わるということ。
つまり搭載される機能を把握してないと、正しい設計はわからない。
ここで、ブラウザにどんな機能が搭載されているかを
把握してないようなやつが、Chromeの設計をディスった所で
的外れでしか無い。
「お前はこういう設計になってる理由が分かってない」の一言で一蹴できる話。
そこまで考えられないから、技術力が低いといわれている。
0168デフォルトの名無しさん
2016/05/21(土) 13:54:38.15ID:Dey5A/Jlどっかで認めていたはずだけど、逆に経験がない設計者が最初から正しい設計ができると思ってんの?
0169デフォルトの名無しさん
2016/05/21(土) 13:57:33.25ID:q2Zh6d9Kどんな機能を満たすために設計すればいいかなんて答えられるわけないし、
lynxで十分な機能だと思ってるやつが、Chromeの設計をディスった所で
「必要とされる機能」を理解してないやつの考えとしか思われない。
0170デフォルトの名無しさん
2016/05/21(土) 13:59:49.12ID:4qmWB+Wj経験があろうがなかろうが最初から正しい設計なんてそうそう出来ない。
そして、最初から正しい設計が出来るって事と、
正しい設計がそのうち出来るって事は明確に違う。
もしかして、設計は上書き不能なデバイス上で行う類のものだったりするの?
0171デフォルトの名無しさん
2016/05/21(土) 14:01:49.63ID:4qmWB+Wjその「同等」の要件に、俺が、不自由しない事って指定したのは君(>>133)なんだが。
0172デフォルトの名無しさん
2016/05/21(土) 14:04:12.14ID:Dey5A/Jl「最初から正しい設計なんてそうそう出来ない」「そのうち正しい設計になる」
ってその間プロジェクトはどうなってるのかな?
業務システムの開発プロジェクトに参加した経験ないだろ?
0173デフォルトの名無しさん
2016/05/21(土) 14:05:02.11ID:4qmWB+Wj設計フェーズ中ですな。
0174デフォルトの名無しさん
2016/05/21(土) 14:06:24.85ID:q2Zh6d9K> その「同等」の要件に、俺が、不自由しない事って指定したのは君(>>133)なんだが。
その質問の本当の狙いは、お前がブラウザの機能として
想定しているものが、大幅に狭いってことを明らかにするためだよw
見事お前はlynxで機能として十分だと言ってくれたわけで、
お前にそう言わせることが、その質問の俺の勝利条件w
設計というものは、必要な機能によって何が正しいかが変わるものので、
その必要な機能を把握してないやつに正しい設計はわからないし、
正しい設計がわからないやつがChromeの設計をディスることは出来ない。
0175デフォルトの名無しさん
2016/05/21(土) 14:06:26.42ID:Dey5A/Jl設計フェーズはいつ終わるんだ?
期間はどのくらい?
業務システムの開発プロジェクトに参加した経験ないだろ、は?
0176デフォルトの名無しさん
2016/05/21(土) 14:07:38.65ID:q2Zh6d9K> 「最初から正しい設計なんてそうそう出来ない」「そのうち正しい設計になる」
> ってその間プロジェクトはどうなってるのかな?
その質問に意味はあるのか?
どのフェーズでも同じことだろ
「最初から正しい要求なんてそうそう出来ない」「そのうち正しい要求になる」
「最初から正しい仕様なんてそうそう出来ない」「そのうち正しい仕様になる」
0177デフォルトの名無しさん
2016/05/21(土) 14:08:47.42ID:q2Zh6d9K> 設計フェーズはいつ終わるんだ?
> 期間はどのくらい?
終るタイミングや期間は、他のフェーズと同じ考え方だろ。
要求フェーズはいつ終るんだ?
期間はどのくらい?
お前が業務システムに参加しているならば
答えられるはずだ。
0178デフォルトの名無しさん
2016/05/21(土) 14:09:04.62ID:Dey5A/Jl実際のプロジェクトの経験があれば質問の意味は分かるだろ?
0179デフォルトの名無しさん
2016/05/21(土) 14:09:39.96ID:4qmWB+Wj「本当の狙い」だなんて後出しされても知らんよ。
>>175
高々半年やそこらだろ。
そして「業務システムの開発プロジェクト」とやらに参加したことは確かに無いが、
それを確認して君に何の利益があるんだい?
0180デフォルトの名無しさん
2016/05/21(土) 14:09:51.70ID:q2Zh6d9K質問の意味ならばお前もわかってるはずだ。
自分の質問に、自分で答えられるはずだよな?
まずお前の場合でいいから、
答えを言ってみてはどうだ?
0181デフォルトの名無しさん
2016/05/21(土) 14:11:47.99ID:q2Zh6d9K> 「本当の狙い」だなんて後出しされても知らんよ。
意味わからん。
お前を罠にハメたってだけだが?w
最初から「お前の技術力が低いから、Chromeの設計をディスってるんだな」って
思ったから、うまく誘導して、お前の技術力が低い根拠を、お前自身に言わせただけ。
お前の想定する範囲が狭いことがわかったので、
お前にChromeの設計はできん。設計できんやつがあれこれ言った所で
何の説得力もない。
0182デフォルトの名無しさん
2016/05/21(土) 14:13:45.30ID:4qmWB+Wj人を罠にはめて笑うのって本当にそれだけで楽しいの?
不思議な人。
0183デフォルトの名無しさん
2016/05/21(土) 14:14:42.87ID:Dey5A/Jl務システムの開発プロジェクトに参加したことがないと確認して話が噛み合わないのが納得。
設計に続く構築フェーズの人の手配は数ヶ月前からやる必要があるから
設計フェーズの期間は事前に決まってる。
で、その期間で完成したものが設計フェーズの成果物。
その後に修正しないってことはないけど、構築が始まっちゃってるんだから
簡単に変更できるものじゃない。
だから、「そのうち正しい設計になる」みたいな発想はおかしい。
それと完成したシステムの設計を変更するってことは構築もやり直すんだから
これまた困難なこと。
0184デフォルトの名無しさん
2016/05/21(土) 14:20:51.60ID:4qmWB+Wjつまり、君の質問は
「理論的に、正しい設計をするにはどうなっていなければならないか」
ではなく
「正しい設計を期限内に完了させるにはどうすれば良いか」
という事?
ごめん、その質問なら俺には答えられないわ。
マ板でやれ。
0185デフォルトの名無しさん
2016/05/21(土) 14:23:53.36ID:q2Zh6d9K> 人を罠にはめて笑うのって本当にそれだけで楽しいの?
笑ってない。
お前が間違っていると主張している。
で、その主張の根拠を集めたに過ぎない。
所詮お前は、設計に必要な機能の想定の時点で出来てない。
0186デフォルトの名無しさん
2016/05/21(土) 14:24:16.67ID:Dey5A/Jl開発期間に制約がないプロジェクトって謎過ぎて…。
個プロジェクトにおける設計指針について語りたいから人の趣味レベルなら好きにしてよ。
0187デフォルトの名無しさん
2016/05/21(土) 14:24:25.73ID:zSvCOHYPそのライブラリには誰にでも数回の操作でアクセスできるソースコードとユニットテストは無いの?
ドキュメントが正しいってどうやって確かめてるのかな?
0188デフォルトの名無しさん
2016/05/21(土) 14:24:52.96ID:q2Zh6d9K期間内に正しい設計にすればいいんだよw
要求フェーズでも同じことだろ。
0189デフォルトの名無しさん
2016/05/21(土) 14:25:19.45ID:4qmWB+Wjへーwww
笑ってないんだwww
もうちょっと具体的に言ってくれない?ww
0190デフォルトの名無しさん
2016/05/21(土) 14:27:20.91ID:Dey5A/Jlドキュメントが必要だと言語の開発者も認めていることはスルーかな?
0191デフォルトの名無しさん
2016/05/21(土) 14:28:36.75ID:Dey5A/Jlそりゃそうだろ。当然のこと。
0192デフォルトの名無しさん
2016/05/21(土) 14:29:51.35ID:Dey5A/Jlコードのコメントとテストが不要なんて言ってないし。もちろんそれも必要。
0193デフォルトの名無しさん
2016/05/21(土) 14:35:31.86ID:4qmWB+Wj0194デフォルトの名無しさん
2016/05/21(土) 14:36:22.78ID:q2Zh6d9K何度も具体的に言ったが?
最初から「お前の技術力が低いから、Chromeの設計をディスってるんだな」って
思ったから、うまく誘導して、お前の技術力が低い根拠を、お前自身に言わせただけ。
具体的にいって欲しいならこれに過去レスの内容を肉付けするだけだけど。
最初から「お前の技術力が低いから、Chromeの設計をディスってるんだな」って思った。
技術力が低いことを直接認めさせようとしても無理だろう。だから間接的に攻めよう。
実際にブラウザを作るのは労力がかかるから技術があってもやりたくない。
Chromeの設計をディスるならば、他のブラウザを知ってるはずだ。
それを持ってきてもらう。ただし同等の機能を搭載しているのが条件だ。
といったらlynxを持ってきた。これは使える。lynxとChromeが持っている機能は明らかに違う。
lynxで出来ないGmailやGoogle Mapのことについてどう考えているのかを聞いてやろう。
(続く)
0195デフォルトの名無しさん
2016/05/21(土) 14:36:44.78ID:Dey5A/Jlプログラム技術はプロジェクト経験者がいないと思ってるのかな?
0196>>194の続き
2016/05/21(土) 14:36:54.49ID:q2Zh6d9Kこれは決め手になる。つまりはそういう用途で使うことを想定してないということだ。
「技術力が低い」理由の一つは「想定能力が低い」ことでもある。
今までの話から、ブラウザの機能として想定しているものがlynx程度だって判明している。
設計はどんな機能を搭載するかで決まるものだから、その機能すら想定してないやつには
正しい設計など出来ない。よってこいつにChromeの設計をディスる能力はない
0197デフォルトの名無しさん
2016/05/21(土) 14:39:37.89ID:4qmWB+Wjそうではなく、上流工程のノウハウを持つ人材ってどのくらい見てるのかなって疑問に思っただけ。
0198デフォルトの名無しさん
2016/05/21(土) 14:41:34.89ID:4qmWB+Wjその「同等」の定義によると、GMailやらGoogle Mapsやらは使えなくても良い事になってる。
0199デフォルトの名無しさん
2016/05/21(土) 14:41:37.38ID:Dey5A/Jl単なる疑問なのに他行けとか言っちゃうのはやめようね。
0200デフォルトの名無しさん
2016/05/21(土) 14:43:32.77ID:4qmWB+Wjそういう風に解釈したなら謝るよ、ごめんよ。
0201デフォルトの名無しさん
2016/05/21(土) 14:44:24.02ID:q2Zh6d9Kそれはお前が使う場合の想定の話だろ?
自分専用ツールでもない限り、
想定っていうのは他人が使うことを想定しなければいけない。
ここで明らかにしたかったのはお前の想定能力
お前の想定ではGMailやらGoogle Mapsやらは使えなくても良い事になっている。
そういう人にChromeに設計はできない。
という話をしている。
0202デフォルトの名無しさん
2016/05/21(土) 14:45:27.96ID:Dey5A/Jlいえいえ。
0203デフォルトの名無しさん
2016/05/21(土) 14:47:09.27ID:zSvCOHYP標準ライブラリは変化が小さく安定してるからね
詳細なドキュメントやコメントを書く余裕がある(価値があるなしは置いておいて)
しかし変化の激しいビジネスドメインで同じことをやろうとしてもコードとドキュメントやコメントの同期が追いつかない
だからドキュメントやコメントではなくコードとユニットテストが大切なんだ
0204デフォルトの名無しさん
2016/05/21(土) 14:47:09.39ID:4qmWB+Wj> それはお前が使う場合の想定の話だろ?
そりゃそうだが、アスペに何言ってるの?
> お前がこれから一ヶ月の間、仕事(学校?)中も含めて
> 一日中それ過ごせるブラウザだ。
こう言ったから、その条件ならlynxも含まれるね!って言ったんだけど。
https://ja.wikipedia.org/wiki/%E3%82%A2%E3%82%B9%E3%83%9A%E3%83%AB%E3%82%AC%E3%83%BC%E7%97%87%E5%80%99%E7%BE%A4
0205デフォルトの名無しさん
2016/05/21(土) 14:51:05.77ID:q2Zh6d9Kそこは重要なところか?w
> その「同等」の定義によると、GMailやらGoogle Mapsやらは使えなくても良い事になってる。
と言ってしまった、お前の想定能力の低さに
なんの関係があるんだ?w
0206デフォルトの名無しさん
2016/05/21(土) 14:52:37.29ID:Dey5A/Jl変化しているならなおさらドキュメントがないと影響範囲とか変更履歴の確認とか大変。
概要くらいはドキュメントに書こう。
お前も実際のプロジェクトでの経験はない人?
0207デフォルトの名無しさん
2016/05/21(土) 14:53:38.93ID:4qmWB+Wj全て重要な事だろ。何言ってんだ?
君の言う「同等」の定義によると、「俺が」「一ヶ月」使えるなら同等だって事なんだろ?
その意味で、lynxもGoogle Chromeも同等のWebブラウザだぞ?
0208デフォルトの名無しさん
2016/05/21(土) 14:58:53.23ID:q2Zh6d9Kお前にとっては重要な事なんだなw
俺にとってはChromeのオブジェクト指向による設計を
お前がディスってるのは、単にお前の技術力が低いだけってことを
証明できればそれで十分なんだよ。
で実際証明された。そしてここはお前が反論できない部分でもある。
想定能力の低さによる判断の一つの例が
> 「俺が」「一ヶ月」使えるなら同等だって事なんだろ?
だからねw
0209デフォルトの名無しさん
2016/05/21(土) 15:00:45.44ID:q2Zh6d9K同等のブラウザの話をしてるんだから、
Chromeの代わりに一ヶ月同じように使うっていうのは
当たり前の前提条件ですよ。
0210デフォルトの名無しさん
2016/05/21(土) 15:02:29.73ID:4qmWB+Wj想定能力が低いって意味が、アスペルガー症候群に於ける認知能力の特異性について指しているなら、
俺の想定能力が低いのは正しい。
で、アスペルガー症候群って知ってる?
あと、技術力が低い事と想定能力とやらが低い事の間には正の相関があるの?
0211デフォルトの名無しさん
2016/05/21(土) 15:04:53.28ID:4qmWB+Wj君は>>133で書いてる。
> なにをもって「同等の」にこだわるのなら、
> お前がこれから一ヶ月の間、仕事(学校?)中も含めて
> 一日中それ過ごせるブラウザだ。
つまり、君にとって、「同等の」の定義は、俺が一ヶ月使えるブラウザだって事だ。
それを後から「当たり前の前提条件ですよ」と言ってひっくり返すのは宜しくないな。
0212デフォルトの名無しさん
2016/05/21(土) 15:05:58.61ID:q2Zh6d9Kなんだ? 自分から自分でアスペって言い出したのは
なんでだって思ったら、アスペの特徴のうち
優れた点だけを抜き出して、
俺は優れているんだって言うつもりかな?
アスペルガー症候群? 知らないなぁ。
説明して見せてw
その説明によっては、君は単なるバカでアスペじゃないかもねw
0213デフォルトの名無しさん
2016/05/21(土) 15:06:47.38ID:q2Zh6d9Kつまり、lynxは同等のブラウザじゃないってこと?w
0214デフォルトの名無しさん
2016/05/21(土) 15:07:40.84ID:4qmWB+Wjアスペの特徴のうち劣ってる点を前面に出しているんだけど、日本語読めてる?
説明はWikipediaに丁寧に書かれてるから省くよ。スレ違いだしね。
0215デフォルトの名無しさん
2016/05/21(土) 15:08:37.71ID:4qmWB+Wj「同等」の定義にもよる。
0216デフォルトの名無しさん
2016/05/21(土) 17:04:25.49ID:uPXSQ8F/あるコンパイラの実装がクソだとか
初心者ってのはとにかくそれを言いたがる
無邪気にそれを言いたがる
0217デフォルトの名無しさん
2016/05/21(土) 17:15:38.68ID:jm0r3P4wこういうのはTwitterのような業界有名人同士がテンポ良く議論しないとあ
んまり為にならない。
0218デフォルトの名無しさん
2016/05/21(土) 17:53:28.24ID:Dey5A/Jl0219デフォルトの名無しさん
2016/05/21(土) 18:26:36.65ID:J4qAac+5良いオブジェクト指向設計は何かを
議論するスレかと思ってたが
0220デフォルトの名無しさん
2016/05/21(土) 18:37:45.87ID:Dey5A/Jl0221デフォルトの名無しさん
2016/05/21(土) 19:48:31.27ID:zSvCOHYP変化があるたびにコメントとドキュメントを直していたらコストは3倍になる
実際は同期が取れているかのチェックなどでさらに工数が増える
これは許容できないコストだよ
0222デフォルトの名無しさん
2016/05/21(土) 20:22:38.39ID:Ox0LpmWi0223デフォルトの名無しさん
2016/05/21(土) 20:45:52.79ID:Dey5A/Jlドキュメントすらないシステムを理解して改修する手間よりずっと少ないじゃん。
そもそも客からドキュメントの提出を求めて来るだろ。
趣味じゃなく実業務のプロジェクトやってことあるのか?
趣味でやってるなら趣味でやってるって書いてくれよ。
それならそれに合わせて緩く対応するから。
0224デフォルトの名無しさん
2016/05/21(土) 20:46:46.87ID:Dey5A/Jl設計書がなけりゃ何見て作るんだろ?
0225デフォルトの名無しさん
2016/05/21(土) 21:09:25.89ID:zSvCOHYPシステムを理解するにはメモ書き程度の資料と綺麗なコードがあれば充分
大人の事情でドキュメントを作る事はあっても役にたつなんて本気で思ってるうちはアマチュアだよ
0226デフォルトの名無しさん
2016/05/21(土) 21:11:26.64ID:xm4TkEYQ0227デフォルトの名無しさん
2016/05/21(土) 21:16:44.29ID:Dey5A/Jlふーん。どういうプロセスでオブジェクト指向設計をやってるのか語ってくれ。
0228デフォルトの名無しさん
2016/05/21(土) 21:19:21.49ID:ycaEwNI1どういう実務経歴の人がどういう観点から発言しようとしてるのか
明確にしないと説得力なんか全然出ない。
てなるとある程度名と実績の知れた人、自己責任で過去に関わった案
件の内容を差し障りのない範囲で公開できる人(=業界有識者、オピニオンリー
ダー)に限定されてしまうな。
ここまでくどく書く必要があるかどうかわからんが、極端な話、ソーシャル
アプリと原発制御システムとでは開発手法が全然違うしな。なんで、同じ土俵で
議論なんてできるわけない。ブログに書くゆるふわ日記と隙のない法務文書を書
くぐらい違う。
0229デフォルトの名無しさん
2016/05/21(土) 21:25:36.87ID:Dey5A/Jl相手の発言内容から参考になるかならないか自分で判断できるだろ。
日本人のオピニオンリーダーとやらのつぶやきよりも原著を読んだほうがよっぽど信頼できるし。
2ちゃんなんだから誰が発言したかじゃなくていろんな意見を聞きたいってとこだな。
今のところ、実体験の裏付けがあると思える書き込みはほとんどないのは残念だけど。
0230デフォルトの名無しさん
2016/05/21(土) 21:28:16.08ID:ycaEwNI1煽り口調で書き込みされた時点で信用もクソもないと思うけど。
少なくとも議論する気なんてないよね?
0231デフォルトの名無しさん
2016/05/21(土) 21:32:06.53ID:Dey5A/Jlプロセスなんていらない、文書なんていらない、なんて書き込みされてりゃ呆れるだろ。
で、Twitterがいいと思うなら勝手にTwitter使ってやってりゃいいじゃん。
わざわざスレに来て書き込むのは無意味すぎて不快。
0232デフォルトの名無しさん
2016/05/21(土) 21:40:10.70ID:zSvCOHYPDDD
0233デフォルトの名無しさん
2016/05/21(土) 21:52:07.81ID:Dey5A/Jl体験談を語って欲しいもんだ。
0234デフォルトの名無しさん
2016/05/21(土) 22:04:24.15ID:a4jHAOFt1) 語れるほどの実体験を持つ者はこのスレにはいない
2) いたとしても、それを無料で語ってくれる者はいない
0235デフォルトの名無しさん
2016/05/21(土) 22:18:00.97ID:Dey5A/Jl語れない、語りたくないなら書き込まないでいいから。
そもそも2ちゃんに書き込んだって一円にもならないんだから嫌なら書き込むなw
0236デフォルトの名無しさん
2016/05/21(土) 23:13:38.33ID:hclWowahお客さん向けの設計書の納品でjavadoc送りつける人かな?
>>225
お客さんがいるシステムを作ったことない人かな?
0237デフォルトの名無しさん
2016/05/21(土) 23:39:12.12ID:sajHzwwt0238デフォルトの名無しさん
2016/05/21(土) 23:55:43.52ID:zSvCOHYPドキュメント自体の有用性を説明する事にはいつも失敗している
情けない連中だよ
0239デフォルトの名無しさん
2016/05/21(土) 23:57:30.93ID:Dey5A/Jlドキュメントがいらないって言ってるプロセスの提唱者がいるもんなら教えてくれ。
それとプロジェクトでの実体験はいつになったら語ってくれんの?
0240デフォルトの名無しさん
2016/05/22(日) 00:00:37.02ID:sxeEi6BC前もって言っとくと
ドキュメントがいらないと
詳細なドキュメントがいらないケースもある
って主張は違うから。
詳細なドキュメントがいらないケースもあるって主張をしたいなら、そんなことはみんな知ってる。
0241デフォルトの名無しさん
2016/05/22(日) 00:21:40.24ID:WwOYSBmyソースコードのリポジトリに含めたテキストファイルでもいい。
0242デフォルトの名無しさん
2016/05/22(日) 00:25:24.91ID:dTyROPbW一定の規模を超えるプロジェクト(他にも色んな条件はあるけど)には
メモ書き程度の資料では対応出来ないことを知っている。
逆に、ドキュメントが必要だと主張する人だって、使い切りで
数キロにも満たないソフトウェアにドキュメントが不要な場合も
あることは知っているはず。
この問題は魔法の言葉で片付けられる。
ケースバイケース。
0243デフォルトの名無しさん
2016/05/22(日) 00:34:36.57ID:WENufHUB正解。
問題はどう考えても前者なのに
ドキュメント書きたがらない自称スーパープログラマー様。
こういう輩の存在がデスマーチの遠因。
0244デフォルトの名無しさん
2016/05/22(日) 00:37:59.86ID:sxeEi6BC複数人が関わる業務システムの開発プロジェクトって前提で語ろうぜ。
個人の趣味レベルならドキュメントいらないなんて語られても話が混乱するだけ。
体験談を語ってくれるならそれはありがたいけど、個人でやった場合だと明記してくれ。
0245デフォルトの名無しさん
2016/05/22(日) 00:48:43.39ID:mLM/Nu20コードが最も正確なドキュメントってことにまだ気付いてないのか
なぜすでにある情報を複数箇所に劣化コピーしただけのゴミをありがたがるのか
あぁもしかしてコード読めない人達でしたか?
0246デフォルトの名無しさん
2016/05/22(日) 00:51:23.21ID:sxeEi6BCチームで開発するとき、お前の考えをチームメンバーと共有する必要があるんだけど
どうやってんのかな?
開発が終わって運用チームに引き渡すときドキュメントを求めれるけどどうしてるの?
運用後の改修のたびにすべてのコードをチェックさせるのかな?
実体験があるとは思えないんだけど、違うなら回答して。
0247デフォルトの名無しさん
2016/05/22(日) 00:59:11.29ID:mLM/Nu20知識共有はメモ書きとモデルのイラストと対話だ
何度も言ってるだろバカが
逆に聞くがお前んとこじゃチームとの協調が必要な部分でクソの役にも立たんドキュメント渡すだけなのか?
そりゃ失敗するわけだよ
0248デフォルトの名無しさん
2016/05/22(日) 01:05:50.60ID:sxeEi6BC対話はその場にいないメンバーには伝わらない、忘れる、誤解する。
絵を描く必要があると認識してるんだから、描いた絵を残さないと後工程のメンバーが困る。
ソースだけじゃ伝達できないって認めてるじゃんw
設計の共有は文書+ミーティング。当たり前じゃん。
0249デフォルトの名無しさん
2016/05/22(日) 01:08:07.29ID:sxeEi6BC開発が終わって運用チームに引き渡すときドキュメントを求めれるけどどうしてるの?
運用後の改修のたびにすべてのコードをチェックさせるのかな?
についてはスルーかなぁ?
実際のプロジェクトでは重要なことなんだけど。
0250デフォルトの名無しさん
2016/05/22(日) 01:14:34.16ID:mLM/Nu20メモ書きやモデルはコードを書く過程で使うだけの中間生成物でしかない
コードができればモデルを最も明確に表したドキュメントはコードそのものになる
中間生成物は時間とともに劣化するので害悪になる前に破棄しなければならない
後の行程に引き継ぐなんてもってのほか
横着していらん問題を持ち込むな
知識伝達は面と向き合って対話で行うんだよ
その場に居ないから伝わらないなんて調整力の無さの言い訳をするな
支障が出るほど連日居ないゴーストメンバーなんて存在しねえよ
0251デフォルトの名無しさん
2016/05/22(日) 01:15:14.13ID:mLM/Nu20ユニットテストも知らないのか
0252デフォルトの名無しさん
2016/05/22(日) 01:16:23.86ID:sxeEi6BC実際のプロジェクトの経験ないだろ?
0253デフォルトの名無しさん
2016/05/22(日) 01:17:12.92ID:mLM/Nu20お前がな
0254デフォルトの名無しさん
2016/05/22(日) 01:21:10.56ID:sxeEi6BC客との合意を文書にしないってありえないから妄想語るのもいい加減にしようぜ。
バカもここまで来ると笑っちゃう。
客とも口頭で合意して終わりなんだ??
んーーー、どうなのお?
0255デフォルトの名無しさん
2016/05/22(日) 01:21:41.95ID:WENufHUB一人で何か作らせるにはいいが
チームではスタンドプレーが多く使い物にならない
>知識伝達は面と向き合って対話で行うんだよ
はい、完全な炎上原因
こんな現場たくさん見てきたわ
0256デフォルトの名無しさん
2016/05/22(日) 01:27:01.44ID:WENufHUB実際に顧客と話をする営業やPMにソース読ませるの?馬鹿馬鹿しい
0257デフォルトの名無しさん
2016/05/22(日) 01:29:31.11ID:mLM/Nu20お前らはもう一生間違ってるドキュメントの更新に時間使ってろよ
うちは客がリアルタイムに必要とするモノを作る
もうそれでいいだろう
住み分けって大事だよホント
0258デフォルトの名無しさん
2016/05/22(日) 01:32:47.40ID:sxeEi6BC客の要求を確認するのにも文書が必要なんだけど
お前の顧客は口頭だけのあいまいな説明で納得してくれるし
求めている機能と違うとか言い出さない妄想上の存在なんだろうな。
0259デフォルトの名無しさん
2016/05/22(日) 01:34:21.91ID:mLM/Nu20ソースも読めない営業と仕事してんのか
優れたコードは素人でも部分的にソースを読めるもんだぞ
逆に素人がみても全くわからんようなコード書くから無意味なドキュメントがないと安心できなくなってるんだろうな
0260デフォルトの名無しさん
2016/05/22(日) 01:35:55.78ID:sxeEi6BC笑わせに来てるだろw
0261デフォルトの名無しさん
2016/05/22(日) 01:39:45.41ID:SSySxKMQこれはさすがに苦しい言い分だと思うが……
printf("hello world\n");
これすらわからねえなんてザラじゃね?
0262デフォルトの名無しさん
2016/05/22(日) 01:40:32.08ID:mLM/Nu20文章がいかに曖昧なものか理解してない時点で素人丸出しだな
ブツとして無意味と思いつつ形式的に書いて渡す事はあれどそれを真面目に解釈してモノを作るなんてバカな真似はアマチュアで卒業しとけよ
システム開発ってのは進路調整の連続なんだよ
ドキュメントの更新日がちょっと古かったらもう信用できない
どのみち直接対話で確認を取りに行くしかない
0263デフォルトの名無しさん
2016/05/22(日) 01:42:37.38ID:sxeEi6BCお前の目的は何なんだよww
さすがに釣りだろ?
0264デフォルトの名無しさん
2016/05/22(日) 01:55:46.57ID:mLM/Nu20苦しくないって
例えばこんなコードは素人にゃわけわからん
int x = 0;
for(i = 0; i < len(a); ++i) x += a[i][IDX_UP] * a[i][IDX_PRC];
でも素人でもこれは理解できる
購入品リスト.合計金額()
客と密接に対話して作りあげたモデルから生成されるコードは客でも読める
というか素人でも読めるように書くためのモデリングとコーディングがOOPの真髄だろ
0265デフォルトの名無しさん
2016/05/22(日) 01:58:22.26ID:sxeEi6BC漢字オブジェクト名www
0266デフォルトの名無しさん
2016/05/22(日) 01:58:50.19ID:mLM/Nu20ドキュメント文化をやめてほしい
少なくとも疑問を持ってほしいだけだよ
もし業界全体で馬鹿馬鹿しいドキュメント文化から解脱できたなら
それはいったいどれだけの国益になるか
そこを考えてほしいんだ
0267デフォルトの名無しさん
2016/05/22(日) 01:59:51.63ID:mLM/Nu20もしかしておじいちゃん?
0268デフォルトの名無しさん
2016/05/22(日) 02:02:04.15ID:sxeEi6BC楽しませてもらってるけどスレと関係ない目的だから別のスレ立ててやってもらえるかな。
0269デフォルトの名無しさん
2016/05/22(日) 02:03:26.44ID:mLM/Nu20関係はあるだろう
さっきも言ったがOOPの真髄はドキュメント不要論にリンクするんだからさ
0270デフォルトの名無しさん
2016/05/22(日) 02:03:45.85ID:WwOYSBmy知らないのか?
客がドキュメントを読むんだよ。
0271デフォルトの名無しさん
2016/05/22(日) 02:05:22.19ID:sxeEi6BC頼むからそんなとんでも理論で絡んで来ないで。
お前は自分のスレを立てるに足る逸材だから。
0272デフォルトの名無しさん
2016/05/22(日) 02:15:56.49ID:mLM/Nu20客がドキュメント読みたきゃ読めばいい
客が客の時間使ってドキュメントを読もうがサボって漫画を読もうがそれは客の勝手だ
だけどこっちの開発はそれじゃ進まねえんだよ
0273デフォルトの名無しさん
2016/05/22(日) 02:20:15.89ID:sxeEi6BC客の期待通りの設計になっているかを確認するためにもドキュメントを作成する。
なんとそのドキュメントがメンバー間で理解を共有するための役にも立ってしまう。
すごいじゃん。
0274デフォルトの名無しさん
2016/05/22(日) 02:25:01.82ID:WwOYSBmy0275デフォルトの名無しさん
2016/05/22(日) 02:29:51.66ID:mLM/Nu20ドキュメントを正確に書ける保証はない
客がドキュメントを正確に読める保証はない
保証はないと言ったが実際には正確でないほうが多い
本当の意味で客が期待する設計はドキュメントからは生まれない
お互いが認識するモデルをすり合わせるために対話の時間をいかに多くとるかで決まる
0276デフォルトの名無しさん
2016/05/22(日) 02:33:12.47ID:mLM/Nu200277デフォルトの名無しさん
2016/05/22(日) 02:37:48.99ID:sxeEi6BC口頭じゃ後から確認できないんだから文書として残す必要があるよね。
ってことなんだけど、こいつはそんなちゃちな世界には生きてないんだろうな。
もう頼むからこのスレから巣立って。
0278デフォルトの名無しさん
2016/05/22(日) 02:43:09.84ID:WENufHUB本当馬鹿馬鹿しいな
おまえの会社はソース読めるエンジニア上がりの営業かもしれんが
他行ったらそんな俺ルール通用しないからな
>>266
個人的希望をばら撒くスレじゃねーから
>>274
口伝のほうがコストかかるだろ
そもそもユニットテスト推奨してるやつが
口伝推奨するとか矛盾もいいとこ
0279デフォルトの名無しさん
2016/05/22(日) 05:16:18.29ID:PykTFw3U0280デフォルトの名無しさん
2016/05/22(日) 05:17:10.39ID:WwOYSBmy一番コストがかからない
0281デフォルトの名無しさん
2016/05/22(日) 06:36:24.05ID:OmI05SCB0282デフォルトの名無しさん
2016/05/22(日) 10:29:24.79ID:sxeEi6BCうざいから素人は書き込むなよ。
0283デフォルトの名無しさん
2016/05/22(日) 10:41:33.67ID:vKoFE7Z9それ以上細かいのはいらない
0284デフォルトの名無しさん
2016/05/22(日) 10:48:03.65ID:sxeEi6BC設計プロセスについて語れる奴はいないの?
0285デフォルトの名無しさん
2016/05/22(日) 11:42:56.90ID:0426LZJd0286デフォルトの名無しさん
2016/05/22(日) 11:47:16.20ID:sxeEi6BC0287デフォルトの名無しさん
2016/05/22(日) 11:50:37.50ID:0426LZJd0288デフォルトの名無しさん
2016/05/22(日) 11:51:57.78ID:sxeEi6BC0289デフォルトの名無しさん
2016/05/22(日) 11:54:53.76ID:EaQ4G/f7俺もそう思う
何を何のために設計してるのかと
それを知りたければソースコードを読めって破綻してる
じゃソースコードは何を実現するためのソースなのかと?
不具合もソースがそうだからそれが正しいとか言っちゃうのか?
0290デフォルトの名無しさん
2016/05/22(日) 11:56:01.52ID:EaQ4G/f7だって設計してないじゃん
0291デフォルトの名無しさん
2016/05/22(日) 12:35:41.84ID:sxeEi6BCほんとな。
オブジェクト指向設計について語ろうってスレにわざわざ書き込む意味が分からん。
興味がない、語る内容がないなら書き込む必要ないのに。
0292デフォルトの名無しさん
2016/05/22(日) 12:39:57.00ID:WwOYSBmy> 何を何のために設計してるのかと
> それを知りたければソースコードを読めって破綻してる
概要をつかむためだよ。
だから設計書には概要しか書かれない。
実際の詳細はソースコードを読めになるのは当たり前。
0293デフォルトの名無しさん
2016/05/22(日) 12:42:21.47ID:WwOYSBmy当然、設計書に書かれたものから、ソースコードを生成できるわけじゃない。
設計書は方針、こんな感じにしてくださいねっていうもの。
設計書を見て書くというのは、設計書に反しないように作るってことであって
設計書をソースコードに翻訳する作業じゃない。
そして往々にして、実際にソースコードを書いてると、
設計に問題が出てくる。
この時設計書も直さないといけない。
0294デフォルトの名無しさん
2016/05/22(日) 12:59:08.54ID:vqfBgWhe何度言えばわかるのかなぁ
事後ならコードというその時点で最も信頼できる読みやすいドキュメントがあるだろう
>>278
文章のほうが遥かに高くつく
あんたもプロになればわかるけど設計書なんて1回書いたきりで終わりになんかならねえのよ
口頭ならミーティング1セッションで終わるやりとりがドキュメントだと何回ものファイル更新・交換になってしまう
あぁいちおうお前もバカそうだから念押しするがこれ設計〜製造の話な
後に残す文章はコードがあるからまた別の話だ
0295デフォルトの名無しさん
2016/05/22(日) 13:02:48.15ID:JErM/sdi単に、日本語で書かれた設計書をソースコードに単純翻訳しているのではありません。
「ソースコードを書く」=「詳細設計」なんです。
だから、実際にソースコードを書いていると、詳細設計的に問題が発生して書き直しとなるし、場合によっては一つ前の日本語で書かれた設計書まで戻って直す必要も出てきます。
0296デフォルトの名無しさん
2016/05/22(日) 13:03:07.84ID:vqfBgWhe正解
加えて言えば読めるコード書けないバカが日本語なら書けると勘違いしてドキュメントという幻想にすがりつく
馬鹿馬鹿しいよ
あいつらの書いたドキュメントなんてテストしてないスクリプトへのリプレースみたいなもんだ
読みやすくなるどころか開発言語より読みにくくなってる
読みにくいだけならまだしも開発言語で書いたコードと平気で剥離する
0297デフォルトの名無しさん
2016/05/22(日) 13:05:39.79ID:vqfBgWhe>>289
設計するためにコードを読むんじゃない
設計するためにモデリングするんだよ
そしてモデリングの過程でコードを書くんだ
順番を間違えるな
0298デフォルトの名無しさん
2016/05/22(日) 13:13:22.82ID:WENufHUB君が作ったソースの中身を説明するためにミーティング開催するの?
ドキュメント書かないわ、人件費の意識ないわ、終わってるな
0299デフォルトの名無しさん
2016/05/22(日) 13:28:40.61ID:k1JTbXad0300デフォルトの名無しさん
2016/05/22(日) 13:44:35.01ID:sxeEi6BCそんな言い合いしてても無意味だから設計のプロセスについて語ろうぜ。
どんな手順でやってて、それぞれのステップの成果物は?
0301デフォルトの名無しさん
2016/05/22(日) 13:51:29.86ID:WwOYSBmy成果物なんて後から出てくるもの。
まずはステップの目的を考えなさい。
0302デフォルトの名無しさん
2016/05/22(日) 13:56:34.04ID:sxeEi6BCステップのゴールを決めるのがプロセスなんだけど…。
めんどくさいから素人は書き込むなよ。
0303デフォルトの名無しさん
2016/05/22(日) 14:02:56.02ID:6l64NX2qコードってのはこう動くってことしか書いてなくて、しかも実装者以外の人間が欲しい情報よりも粒度が細かい。
あと、その裏にある開発者の意図やシステム特有の事情とかは書かれないしコメントで補完するにも限界がある。
一方でドキュメントを手で作成しても改訂のたびに修正する労力と修正後にソースと同期をとる労力がバカにならないし
大量にドキュメントを書いてもそんなの見ない、見ようと思っても索引や検索が不十分で探し廻らなきゃならないで
結局知ってそうな人に聞くのが早い、ドキュメントの利点なんて新しく加入した人への説明を(形式上)省けるくらいの利点しかない、
てなことになる。
なので現実的な最適解としては、できるだけコードからリバースして「必要な情報だけ」を自動的に抽出する、
そのためのツールを用意し、また抽出しやすいようなコードを書く、それでは作成できないけど本当に必要なものは手で作成する、
て辺りになるんじゃないかと思う。
で必要な情報てのは、画面とか機能とかサブシステムとかの一覧とそれらの間のI/F詳細くらいで、
それ以上はソース読めでいいように思う。
0304デフォルトの名無しさん
2016/05/22(日) 14:07:39.59ID:WwOYSBmyステップの目的を成果物生成にしてはいけない。
そんなことをやると理由はないけど作りました。
作って終わり、使われないものが出来上がるだけ。
0305デフォルトの名無しさん
2016/05/22(日) 14:13:48.86ID:sxeEi6BC開発プロセスの本くらい読みなよ。
まともな開発プロセスならステップと成果物が決まってるから。
そんなことすら知らない素人のくせに知ったかぶりすんなよ。
ちょっと勉強したらどんだけ恥ずかしい書き込みしてるか分かるから。
0306デフォルトの名無しさん
2016/05/22(日) 14:14:28.75ID:WENufHUB成果物なしでどうやってプロセスの完了を判断する?
ソースコードも成果物だし、
成果物のチェックはどんなプロセスでも必要だよ
0307デフォルトの名無しさん
2016/05/22(日) 14:19:58.15ID:vKoFE7Z90308デフォルトの名無しさん
2016/05/22(日) 14:29:28.77ID:sxeEi6BCドキュメントの範囲は好きにしていいからプロセスについて語ってくれって言ってんだけどなあ。
03094qmWB+Wj
2016/05/22(日) 14:34:56.12ID:Pvh7yqZB0310デフォルトの名無しさん
2016/05/22(日) 14:37:04.55ID:WwOYSBmy> まともな開発プロセスならステップと成果物が決まってるから。
それはまともじゃない開発プロセスか、
お前が読み間違ってるだけだな。
読むといいよw
http://www.jaspic.org/event/2005/SepgJapan/presentations/5A1.pdf
俺がいいたいことが書いてあった。
http://d.hatena.ne.jp/Mic_K/20100516
CMMIの教本(PDFが配布されてますね)には、いろいろと”典型的な作業成果物”や”サブプラクティス”なんていろいろ書いてます。
が、そんなことはどうでもいい。参考にもなりません。
そんなことよりも、
そのプロセスエリアが「本質的に」何をすべきと主張しているかをじっくりと「考える」ことが大事。
そして、自分たちの組織文化的にどういうことがそれに当てはまるか「解釈」することがもっと大事。
バカなCMMI推進者たちは、すぐに文字通りにやろうとします。考えもせず。
これこそ、「形骸化のはじまり!」
「制度化」というCMMIでよく出てくる言葉の意味を理解してません。
逆説的ですが、「CMMIをやろうとすればするほど、CMMIを実装できない」
というジレンマに陥ります。
なぜか?
かんたん。「CMMIの本質を理解してないから?」
そもそも、組織のみんなは日々の業務を一生懸命こなしてます。日々、大小さまざまな改善を積み重ねてませんか?
なのに、CMMIでプロセス改善しよう、って言ったって、「いや、今だって改善してるけど?」的な議論になります。
つまり、CMMIなんて所詮枝葉、形つまり、方法論にすぎないのに、方法論の実装を目的にしちゃうCMMI推進者が「ガン」なわけですね。
0311デフォルトの名無しさん
2016/05/22(日) 14:40:22.53ID:sxeEi6BCいろんなメンバーがかかわるプロジェクトでプロセスがないってねえ…。
ま、>>291だな。
不要って思うなら使わなきゃいいじゃん。
0312デフォルトの名無しさん
2016/05/22(日) 14:42:17.90ID:6l64NX2q自分の作業の自動化・効率化を(自分の頭で)考えないで人力でなんとかする(しろ)
って人が結構いるよなぁ
0313デフォルトの名無しさん
2016/05/22(日) 14:47:32.63ID:EaQ4G/f7でも彼の理論で言うと
もういきなりソースコード組むしかないよね
ファイルフォーマットも通信プロトコルもDBのテーブルも後から付いてくる心配するな!
突っ切れ!
筋肉でプログラミングするタイプかな?
0314デフォルトの名無しさん
2016/05/22(日) 14:50:18.38ID:sxeEi6BCプロセスのステップが明らかになればそこもはっきりすると思ってさ。
お互いの頭の中にぼんやりとしたイメージしかない状態で設計から構築に進むって
プロセスがまったく想像できないから詳しく語って欲しいじゃん?
0315デフォルトの名無しさん
2016/05/22(日) 15:09:12.83ID:EaQ4G/f7多分こちらが疑問に思ってるようなことは
彼にとっては「そんなのキーボードに手を置けばゴーストが囁くだろ常考」の一言なんだよ
そして粘土をこねるように彫刻を刻むように手を入れてって納期が来たらそこで完成
恐らくそんな開発を言ってる
受け取った客が検収すると不具合ばっかりで使い物にならないケース
0316デフォルトの名無しさん
2016/05/22(日) 15:11:50.07ID:SSySxKMQまあ前提として要件がそこそこ決まってるとして
オブジェクトの洗い出しみたいなことするよね
でまあデザインパターンあたりかじってりゃ
たとえばここはテンプレートメソッドでがちがちにしちゃろーとか
ストラテジーにしてゆるーくしちゃろーとか
なんだけど
その判断のプロセスは自分でもわからんな
言語化できてねえ
0317デフォルトの名無しさん
2016/05/22(日) 15:13:18.77ID:SSySxKMQ0318デフォルトの名無しさん
2016/05/22(日) 15:17:51.26ID:sxeEi6BCオブジェクトの洗い出しって具体的にどんな感じでやってる?
特に機能的なオブジェクトの洗い出しはアバウトにやってて、もうちょっと何かないかなあって感じてて。
0319デフォルトの名無しさん
2016/05/22(日) 15:24:46.95ID:SSySxKMQ俺もその辺が明確にできればなーって期待してこのスレみてる
アプローチ方法的にはなんかER図作るときみたいになっちゃってるかもしんない
最初にエンティティ出してそれに振る舞いついたらオブジェクトみたいな
うん、うまく言語化できんやっぱり
上級者に期待だわ
0320デフォルトの名無しさん
2016/05/22(日) 15:27:46.05ID:k1JTbXad話はそれからだろう
0321デフォルトの名無しさん
2016/05/22(日) 15:32:18.74ID:sxeEi6BC俺もER図書いてエンティティを洗い出すな。
そこからクラス図を書く感じ。
エンティティ的なクラスを決める基準はかなり明確なんだけど機能的なクラスは難しいよな。
デザインパターンを考えながらなんとなく決めてるけど、判断に悩むことが多い。
要件定義から設計へ移行する辺りの明快な指針があんまりないんだよなあ。
0322デフォルトの名無しさん
2016/05/22(日) 15:32:30.31ID:WwOYSBmyそういや中二病っぽく「言語化」とか言ってる
アニメか漫画があったよな。
それのパクリかw
0323デフォルトの名無しさん
2016/05/22(日) 15:33:49.99ID:sxeEi6BC0324デフォルトの名無しさん
2016/05/22(日) 15:34:57.20ID:WwOYSBmy> 俺もER図書いてエンティティを洗い出すな。
俺は、rails generateでモデルを作るな。
そのコード上の定義からER図は rails-erdでモデルを
変更するたびに自動的に生成される。
見方を変えれば、コードを使ってER図を書いているだけ。
やってることは、あんたと一緒でそれがより効率的になっただけだね。
マウスでポチポチやらないで、コードを書くだけだから楽だよ。
修正履歴もわかるしね。
0325デフォルトの名無しさん
2016/05/22(日) 15:35:56.44ID:WwOYSBmyRubyコードを使ってER図を書くと同時にクラスも作れる。
0326デフォルトの名無しさん
2016/05/22(日) 15:38:48.31ID:sxeEi6BCそこは好きなツールを使えばいいと思う。
それより設計指針的な話で、どういう基準でクラスを選択するかを聞きたい。
0327デフォルトの名無しさん
2016/05/22(日) 15:39:06.09ID:WwOYSBmyCreate an ERD in Rails in under 30 seconds.
https://www.youtube.com/watch?v=SETJf4cB_NU
0328デフォルトの名無しさん
2016/05/22(日) 15:43:24.37ID:WwOYSBmy大概はモデルクラスだろ?
画面があれば、コントローラクラスが必要になる。
機能はメソッドだから機能ごとにクラスは作らない。
やることってその程度じゃね?
0329デフォルトの名無しさん
2016/05/22(日) 15:44:05.88ID:JaLdteXY悩んでる時点でもうアウトだろ
幾ら悩んでも明確な答えは出てこない
そんなフワッとした状態で設計書という名の便所の落書きを幾らかいてもなにも進展しない
結果はコードを書くしかないんだよ
コードを実際に書けば次にどうするかの指針が見えてくる
基本中の基本だわな
0330デフォルトの名無しさん
2016/05/22(日) 15:49:05.35ID:sxeEi6BC業務的の機能のきれいな構成だな。
0331デフォルトの名無しさん
2016/05/22(日) 15:50:23.31ID:SSySxKMQ機能的なクラスって少し掘り下げて教えて欲しい
〜Utilityとか〜Helperとかの名前で実装する類のもの?
だとすると設計段階では洗い出さないかな……
0332デフォルトの名無しさん
2016/05/22(日) 15:51:55.61ID:sxeEi6BC設計が決まってないのにどんなコードを書くのかな?
おおまなか設計がなくちゃコード書けない。
0333デフォルトの名無しさん
2016/05/22(日) 15:53:09.10ID:WwOYSBmyデザインパターンを考えながら決めるのレベルで
まだ初心者なんだよな。
俺がデザインパターンを知ったのはもう15年ぐらい前になるけど、
その時の感想は、みんな(本の作者)も同じこと考えてるなぁ〜。
俺が考えた「アレ」をこんなに体系的にまとめてくれて嬉しいわ。だった。
幾つか自分で同じようなものを実装したこともあったしね。
デザインパターンの解説にも書いてあるけど、
新しい何かではなくて、過去の人が考えていたことに名前をつけてまとめただけ。
だから俺の場合、作るときにああすれば良いんじゃね?って思いついて、
その後にデザインパターン本みて抜けや考慮漏れなどを補強する感じ。
0334デフォルトの名無しさん
2016/05/22(日) 15:54:42.20ID:sxeEi6BCだいたいデザインパターンが扱ってるレベルのクラスと想定して欲しい。
業務ルールをチェックする機能をどうするかとか。
0335デフォルトの名無しさん
2016/05/22(日) 15:56:32.49ID:sxeEi6BCデザインパターンのそんな当たり前の説明をドヤ顔でされても…。
0336デフォルトの名無しさん
2016/05/22(日) 15:58:10.11ID:WwOYSBmy> 業務ルールをチェックする機能をどうするかとか。
Railsだとバリデーションを使う。
基本的なのはあるが、特殊な業務ルールであれば
カスタムバリデータを自作すればいい。
http://railsguides.jp/active_record_validations.html
標準のやり方がってそれに従えばクラスが出来上がるので
クラスをどうするか?とかを意識することは少ない。
0337デフォルトの名無しさん
2016/05/22(日) 15:58:39.18ID:WwOYSBmy当たり前の説明をしただけだけど、
何か気に触ったの?w
0338デフォルトの名無しさん
2016/05/22(日) 16:01:24.72ID:SSySxKMQ難しい例だね……ちょっと実装よりというか
たいがいフレームワークで作られちゃってるというか
例に出してくれたバリデーションまわりって設計段階ではやっぱり洗い出さないなあ
要件みてこんなバリデーションいるよねー、程度
で、たいがいフレームワークにバリデーションの仕組みあるから
やっぱり自力で洗い出さない……
複雑なバリデーション作るにしてもフレームワークの流儀に沿うだけだしね
派生してちょろちょろ処理書いて決められたreturnするってだけの
0339デフォルトの名無しさん
2016/05/22(日) 16:03:43.19ID:sxeEi6BCクラス内で完結しないチェックもできんの?
複数のクラスを参照することが必要な場合はどうするのかとか?
0340デフォルトの名無しさん
2016/05/22(日) 16:06:23.48ID:JaLdteXY理解力ねえなあ
コード書きながら考えるんだよ
具体的なコードがあるから
この方向性はダメだなとか
これは行けそうだとか
これがありならこっちはどうだとか
思考が展開していく
簡単な話だろ
設計書屋さんって1手目から最後まで読み切ってから1手目を打とうとしてるんだよね
そんなんでうまくいくわけないでしょ
0341デフォルトの名無しさん
2016/05/22(日) 16:09:12.64ID:sxeEi6BC税制の変更やら社内ルールの変更やらは想定される訳で
その場合の変更に対応できるきれいなデザインって何だろうっていつも悩む。
モデルとか画面の設計はわりと簡単で、業務ロジックの設計・構築がメインじゃない。
設計段階で洗い出さないならいつ設計するんだ?
設計と構築の区切りをどこまで明確にしてるか分からないけど、コーディングの前に
設計する必要はあるじゃん。
0342デフォルトの名無しさん
2016/05/22(日) 16:16:53.72ID:JaLdteXYこのレベルで偉そうにしてたのか
0343デフォルトの名無しさん
2016/05/22(日) 16:18:54.34ID:WwOYSBmy複数のクラスを参照することが必要ならば、
参照すればいいだけだろう?参照するしかないし。
そんなのデザインパターンがでるまでもない。
0344デフォルトの名無しさん
2016/05/22(日) 16:20:48.62ID:sxeEi6BC0345デフォルトの名無しさん
2016/05/22(日) 16:23:08.82ID:WwOYSBmyそれって、ぐうの音も出ないって意味?
0346デフォルトの名無しさん
2016/05/22(日) 16:27:04.89ID:sxeEi6BC駒クラスがあって王・飛車とかは駒のサブクラスにしようかって感じだろ。
盤面情報と思考ロジックはどんな感じのクラスにするのがいいだろう?
0347デフォルトの名無しさん
2016/05/22(日) 16:28:08.95ID:sxeEi6BC失礼。クリックミス。
0348デフォルトの名無しさん
2016/05/22(日) 16:28:29.75ID:JaLdteXYこのid sexさんはちょっと昔ながらの人なんだろうね
基本的なフレームワークの扱いもロクに知らんって露呈してしまった
おそらく設計書(笑)ばっかり書いてて最近の開発現場の常識知らないんだろうな
おそらくもうすぐ定年だろう
かわいそうだからあんまりいじめてやらんといて
0349デフォルトの名無しさん
2016/05/22(日) 16:29:56.23ID:sxeEi6BC失礼。クリックミス。
0350デフォルトの名無しさん
2016/05/22(日) 16:30:23.58ID:sxeEi6BC具体例を出したからお前の実力を見せ付けて欲しいな。
0351デフォルトの名無しさん
2016/05/22(日) 16:37:00.58ID:WwOYSBmyデザインパターンっていうのは設計するときに必要なものだけど、
フレームワーク作っている側がデザインパターンを使って設計してる。
こっちは、足りない部分を埋めるだけ。
もちろん、基礎知識としてデザインパターンは必要。
フレームワークに足りない部分を拡張するときには必要になる。
だけど定型的なそんな処理で設計なんて考える必要はない。
フレームワークを導入した時点でほとんどが終わっている。
0352デフォルトの名無しさん
2016/05/22(日) 16:40:12.95ID:MeU4g4+w0353デフォルトの名無しさん
2016/05/22(日) 16:41:15.97ID:sxeEi6BCややこしい業務ロジックが色々あるときはどうしてる?
0354デフォルトの名無しさん
2016/05/22(日) 16:44:19.40ID:sxeEi6BC具体例があったほうが分かりやすいから将棋ソフトの例で考えてみてよ。
思考ルーチンは定跡+何らかのロジックがあるし、思考ルーチンのどんどん改修されるとして。
ロジックの細かい部分は俺も知らないし、大まかな構成で十分。
0355デフォルトの名無しさん
2016/05/22(日) 16:47:39.90ID:WF/9GeMl0356デフォルトの名無しさん
2016/05/22(日) 16:51:47.45ID:EaQ4G/f7対象のシステムの構成図
ユースケース図
機能一覧
画面一覧
説明書
まで書く
設計書は頭に構成図貼り付けて
機能一覧に基づいて機能毎に
概要、機能詳細、画面詳細、データフロー、シーケンス図、ログ、メッセージ、ファイルフォーマット、テーブルetc
を書く
基本的にはログやメッセージみたいな共通部分以外で
機能より細分化したクラスは作らない
0357デフォルトの名無しさん
2016/05/22(日) 16:53:43.65ID:WwOYSBmy> ややこしい業務ロジックが色々あるときはどうしてる?
ややこしい業務ロジックなどない。っていうのが答え。
処理が多くて面倒くさいだけだろう?
もしくは設計が必要な部分(フレームワーク)と
設計が必要ないような些細な部分が、ごちゃまぜになってる。
フレームワークを使ってなさそうだし、綺麗に分離できてないんだろう。
ちなみに「設計が必要ないような些細な部分」といったが
この部分が重要ではないという意味じゃないぞ。
むしろ顧客にとっては(当然だが汎用的なフレームワークより)
この部分の方にこそ価値があって重要な部分。
重要だからこそ、出来る限り汎用的な部分をそぎ落として
改修が入るコードのみにする。そこまで削ぎ落とすから設計なんぞ不要。
フレームワークを使うことで設計はどこかの誰かがやってくれるから
通常の開発で設計なんぞ、終わってることだから、やらない。
あんたは、この改修が入る部分と設計が必要な部分をあわせたままやってるから、
ロジックの改修時に設計をどうするかって話がでてくる。
0358デフォルトの名無しさん
2016/05/22(日) 16:54:30.16ID:sxeEi6BC盤面をクラスとして作るべきか、思考ルーチンの中で使われる情報に過ぎないのか?
って疑問がまず出てくるけどどう判断する?
0359デフォルトの名無しさん
2016/05/22(日) 16:56:03.51ID:sxeEi6BC将棋ソフトの例で一緒に考えよう。
実際にきれいな考え方を示してくれたら素直に認めるから。
0360デフォルトの名無しさん
2016/05/22(日) 16:59:15.28ID:WwOYSBmy> 具体例があったほうが分かりやすいから将棋ソフトの例で考えてみてよ。
将棋ソフトで設計が必要なのは、まずインターフェース部分。
コマの配置データから、盤面の画像を配置すればいいだけ。
ここは思考ルーチンの改修とは全く別の話だから、
思考ルーチンの改修時に触らなくていいように分離する。
ということで、インターフェース部分の設計は終わり。
思考ルーチンの改修時に考えなくていい。
他に何を設計するんだ?
あとは単なるアルゴリズムだけだろう。
やるとしてもデータを所持して、思考ルーチンを呼び出すだけの
単純なインターフェースを考えればおしまい。
0361デフォルトの名無しさん
2016/05/22(日) 16:59:59.08ID:WENufHUBすでに構成が確定してるから
クラス設計とかクラス図とか全く必要ないよな
俺は未だにクラス図が必要になるケースがわからん
科学計算とか人工知能とかそちら方面かな?
0362デフォルトの名無しさん
2016/05/22(日) 17:02:51.37ID:WENufHUB0363デフォルトの名無しさん
2016/05/22(日) 17:03:39.39ID:WwOYSBmy> 盤面をクラスとして作るべきか、思考ルーチンの中で使われる情報に過ぎないのか?
> って疑問がまず出てくるけどどう判断する?
何度も同じような指摘をしてる気がするけど、
お前は役割の分離ができていない。
それらをの、改修が入る部分と設計が必要ない部分を合わせたままやってるから
ロジック(思考ルーチン)の改修時に設計をどうするかって話が出てきてる。
盤面なんて、コマの配置データさえあれば、再現できるだろ。
最悪文字だけのアスキーアートでもいい。
もしこれをアニメーションバリバリの3Dで表現しようと思ったら
設計が必要になるだろうけど、それはあくまでUIレベルの話。
思考ルーチンのことなんか考慮する話じゃない。
0364デフォルトの名無しさん
2016/05/22(日) 17:04:12.31ID:sxeEi6BC電王戦は見てない人か?
こっちの説明不足だったけど棋譜をやり取りするインタフェースがあれば
UIはなくてもいいとする。
棋士の指した定跡とか駒の配置とかを元に手を決める思考ロジックがメイン。
基本はありえる手をたくさん読んで、なんらかの基準で点数をつけて、
最適な手を選択する。
0365デフォルトの名無しさん
2016/05/22(日) 17:06:42.51ID:sxeEi6BC反応がないから話のきっかけとして書いた。
お前が違う考え方をするならお前の考える設計を出してよ。
0366デフォルトの名無しさん
2016/05/22(日) 17:06:55.21ID:WENufHUBチーム開発とか設計の議論には向いてなさそう
0367デフォルトの名無しさん
2016/05/22(日) 17:07:48.31ID:WwOYSBmy盤面をクラスとして作るべきかなんていい出したのはお前だろ?
思考ロジックに必要な盤面のデータなんて
単なる2次元配列で十分だろ。
あえてクラスを持ち出すならば、
2次元配列クラスを作ればおしまい。
こんなの考えるまでもない。設計なんて呼べるほどのものじゃない。
片手間で簡単に書ける程度。
0368デフォルトの名無しさん
2016/05/22(日) 17:08:33.88ID:sxeEi6BC設計って言い方が曖昧だったな。
きれいなクラス構成を考えて欲しい。
ステップとかの話じゃない。
0369デフォルトの名無しさん
2016/05/22(日) 17:10:20.90ID:sxeEi6BC俺の考えと違うならお前の考えを出してって言ったろ。
将棋ソフトを構成するクラスは何?
スレでやり取りする内容だから厳密に詳細まで落とせないのは分かってるけど
ある程度のイメージがつかめるレベルで頼む。
0370デフォルトの名無しさん
2016/05/22(日) 17:12:08.26ID:WwOYSBmyクラスとか設計が出てくるのか?
システムっていうのは設計が必要な部分と
設計が必要ない部分に分けろよ。
そして普段は設計が必要ないようにしろよ。
そうやってるから俺は普段設計なんてしなくていいって言ってるわけで、
それはフレームワークがすでにやってくれてるからって話なんだが。
将棋ソフトで必要になる設計は、思考ロジック部分の外側だ。
仮に思考ロジックを入れ替えることが可能な "設計" の
将棋ソフトがあれば、各自が将棋ソフトを作ること無く、
ロジック部分に専念できるだろ。
フレームワーク導入っていうのはそういうこと。
0371デフォルトの名無しさん
2016/05/22(日) 17:12:10.64ID:EaQ4G/f70372デフォルトの名無しさん
2016/05/22(日) 17:13:27.05ID:sxeEi6BC別の人と勘違いした。
盤面情報ってのは現在の盤面、何手か先の盤面の話。
どうやって持つかは設計によるけど情報としては必要だろ。
0373デフォルトの名無しさん
2016/05/22(日) 17:14:36.63ID:WwOYSBmy> 将棋ソフトを構成するクラスは何?
将棋ソフトをどうするかで変わる。
作りたい機能によって設計は変わるからだ。
今は、思考ロジックを改修するって話しか出てないから、
思考ロジッククラスと、それ以外のクラス(UI担当クラス)しか言うべきことはない。
ちなみにUI担当クラスは、アスキーアートでやるなら
1クラスで十分だからな。
0374デフォルトの名無しさん
2016/05/22(日) 17:16:25.55ID:sxeEi6BC画面と簡単なロジックしかないシステムばかりじゃないぞ。
設計もなしに開発できるほど将棋ソフトが簡単だとは思えないけどどうやって開発すんの?
0375デフォルトの名無しさん
2016/05/22(日) 17:17:48.33ID:WwOYSBmy> 盤面情報ってのは現在の盤面、何手か先の盤面の話。
何手か先って未来の情報なんてわかるかよw
先を読んだ結果(つまりキャッシュ)の話でもしてるのか?
そんなの思考ロジックによって違うのだから、
思考ロジックとは別のクラスにすることはできん。
盤面情報をもった汎用的なキャッシュクラスというのであれば
2次元配列で十分だろ。
あえてクラスにするならば、2次元配列クラスだw
0376デフォルトの名無しさん
2016/05/22(日) 17:19:25.70ID:sxeEi6BC思考ロジックの構成なんて俺も知らないから考えてってお題を出してる。
説明がないって言われても困るわ。
業務システムだって担当したことない業界のシステムを設計することだってあるんだから
将棋ソフトなんてむしろイメージしやすいだろ。
細かい点で揚げ足取るつもりはないから設計の腕を見せてくれ。
0377デフォルトの名無しさん
2016/05/22(日) 17:19:25.93ID:WwOYSBmyお前、将棋のAIのアルゴリズムが難しい話と
ソフトウェア設計の難しさをごっちゃにしてるだろw
業務ロジックでも同じ間違いしてたよな?
業務ロジックがややこしくても、
設計自体は単純。
殆どが汎用的なフレームワークで終る程度。
0378デフォルトの名無しさん
2016/05/22(日) 17:20:29.91ID:sxeEi6BCえ?アルゴリズムクラス1つの設計にしちゃうの?w
0379デフォルトの名無しさん
2016/05/22(日) 17:20:38.57ID:WwOYSBmyまだ理解してないのか?
思考ロジックに必要なのはアルゴリズムであって
設計じゃない。
思考ロジックの中に設計はないって言ってるのに、
その設計を聞かれても、設計はないって答えるしかないだろw
0380デフォルトの名無しさん
2016/05/22(日) 17:20:58.83ID:WENufHUB半分同意なんだけど
MVCフレームワーク使ったらクラスまわりの設計不要はそのとおり、
しかしだとするとこのスレは何を語るスレなのか
>>1の真意を知りたいわ
0381デフォルトの名無しさん
2016/05/22(日) 17:23:11.96ID:EaQ4G/f7もっと万人が完成形を一致できるものじゃないと
将棋は何もやらないとテトリスみたいに詰め込むと短く終わるタイプじゃん
0382デフォルトの名無しさん
2016/05/22(日) 17:23:20.30ID:sxeEi6BCあのさあ…、将棋ゲームはやったことないの?
相手がこうさしたら、こっちはこう指して、こうなると悪くなるから、こっちの手を選ぼう
ってロジックの話よ。
電王戦の将棋ソフトって言っても全然伝わらないもんなの??
0383デフォルトの名無しさん
2016/05/22(日) 17:25:13.14ID:WwOYSBmyむしろ、なんで1つのクラスにしないのかわからんのだが?
(2次元配列クラスぐらいなら言ったよ?)
お前、設計をしなくていい部分を無理やり設計しようとしてるから
わけわからんことになってるんだろw
アルゴリズムをクラスにするのは、
上で書いた思考ロジックを切り替えやすくする
将棋ソフトウェアのフレームワークを俺が設計したから。
思考ロジックの "中" には設計は不要で、
思考ロジックの "外" に設計を行うことで
簡単に思考ロジックを切り替えられるようにする。
業務システムも、通常は業務ロジック部分を作るのだから設計は不要。
設計とはこういうこと。
0384デフォルトの名無しさん
2016/05/22(日) 17:25:50.40ID:sxeEi6BC他にいい例があるなら出してよ。
抽象的な議論だとくだらない言い争いになって不毛だから具体例で語りたい。
将棋ソフトはプログラマならイメージできると思って出したんだけど。
0385デフォルトの名無しさん
2016/05/22(日) 17:26:08.32ID:WwOYSBmy> 相手がこうさしたら、こっちはこう指して、こうなると悪くなるから、こっちの手を選ぼう
> ってロジックの話よ。
だから、何度も言うように設計はいらねーよな?
0386デフォルトの名無しさん
2016/05/22(日) 17:27:28.13ID:sxeEi6BC「将棋ソフトウェアのフレームワークを俺が設計したから」
!???
何言ってんだろ。
0387デフォルトの名無しさん
2016/05/22(日) 17:27:50.06ID:WENufHUBあ、なるほど、ようやく意図を理解した
しかしやはり例が難しすぎるね
桂オブジェクト、銀オブジェクト、飛車オブジェクト、角オブジェクトなどに
今後どう動けばより有利になるかの計算メソッドが書いてあり、
それを自分と相手の持ち駒分を
アルゴリズムが入ったロジッククラスに食わせて、、、
あー、俺には無理だわw
0388デフォルトの名無しさん
2016/05/22(日) 17:29:57.58ID:sxeEi6BCで、完成したコードはどういうクラス構成になってんの?
0389デフォルトの名無しさん
2016/05/22(日) 17:30:55.61ID:WwOYSBmy日本語もわからんのかw
思考ロジックを切り替えなくていいなら、
わざわざ「思考ロジックを切り替えやすくする
将棋ソフトウェアのフレームワーク」を設計する必要はない。
そこまで来るとアルゴリズムクラスすら必要ない。
一枚岩に埋め込んじゃえばいい。
でも俺だったら(俺の設計の話を聞いたんだろ?)
思考ロジックを切り替えられるようにするから、
その部分(思考ロジックの外)は設計するって言ったんだが。
お前、やらなくてい仕事をやってるだけじゃねーの?w
設計がいらないものを、むりやり設計しようとしているようにしか見えない。
0390デフォルトの名無しさん
2016/05/22(日) 17:31:47.21ID:sxeEi6BC>>388は完成させろってことじゃないから。
現時点でどんなクラス構成になりそうだと考えてるの?って質問な。
頭の中に方向性がなきゃコーディングを開始すんのは無理だろ?
0391デフォルトの名無しさん
2016/05/22(日) 17:31:59.74ID:EaQ4G/f70392デフォルトの名無しさん
2016/05/22(日) 17:33:26.59ID:WENufHUB言い争いが終わらないからお題変えたほうが有益だね
勤怠管理程度だと逆にMVCの一言で設計終わっちゃうがw
0393デフォルトの名無しさん
2016/05/22(日) 17:34:07.26ID:sxeEi6BC思考ロジックを切り替えられるようにするから、
その部分(思考ロジックの外)は設計する
ってのはどんな感じになるのか教えてくれ。
「俺はすごいんだー」って主張してるだけで何も出てこないんじゃさあ。
出てくれば素直にお前を評価するから。
出て来なきゃ口だけだなとw
0394デフォルトの名無しさん
2016/05/22(日) 17:34:29.93ID:WwOYSBmyクラス構成だろ?
クラスの実装じゃなくて。
今まで出てる要件の将棋ソフトのクラス構成なら、
UIクラスと思考ロジッククラス程度で終わりだろ。
UIを3Dにして商用ゲームっぽくするならば、
UIを作りやすいように、将棋盤クラス、
コマクラスとか作るけどな。
あと思考ロジックをネットワークを使って複数台で分散処理させるならば、
(汎用の)計算処理分散のための設計も入れるだろうな。
それ以外に必要な設計なんか思いつかん。
0395デフォルトの名無しさん
2016/05/22(日) 17:35:36.39ID:WwOYSBmy> 思考ロジックを切り替えられるようにするから、
> その部分(思考ロジックの外)は設計する
> ってのはどんな感じになるのか教えてくれ。
ストラテジーパターンでいいやん。
こんなん数秒で思いつくレベルやでw
0396デフォルトの名無しさん
2016/05/22(日) 17:37:06.43ID:sxeEi6BC勤怠管理はまあそうだけど、もっとややこしい業務システムもある。
株売買とかも分析があってややこしいとか。
でも、それより将棋のほうがみんな分かっていいだろ。
複雑なロジックを含むシステムなのは共通してる。
0397デフォルトの名無しさん
2016/05/22(日) 17:38:09.35ID:WwOYSBmy前提知識として、将棋を知ってるから、
ソフトウェア化って聞いただけで
思考ロジックを切り替えられる設計は思いついてる。
仮に将棋を知らなかったとしたら、
将棋のルールを聞いてる途中で思いつく。
考えてください → 数秒後 → 考えつく。じゃなくて
将棋のルールを聞いてる途中で答えが出てる。
0398デフォルトの名無しさん
2016/05/22(日) 17:38:45.08ID:8h3SPrnHアルゴリズムのデザインにシステムの設計なんて関係ない
アルゴリズムが確定したあと初めてオブジェクト指向を待つ言語でどう詳細な設計に落とすかってことなんだ
アルゴリズムを実装するのに適した処理系があればそっちでやれって
0399デフォルトの名無しさん
2016/05/22(日) 17:39:44.42ID:WwOYSBmy今の将棋の話で、アルゴリズムを確定させたか?w
アルゴリズムを確定させない状態で、
アルゴリズムを切り替えやすくするための
設計の話をしていたはずなんだがwww
0400デフォルトの名無しさん
2016/05/22(日) 17:39:53.11ID:WENufHUB将棋は難しすぎると思うけどなあ
じゃあ叩き台としてどんなクラスが必要か出してみてよ
俺は>>387で適当に考えたけど挫折したよ
0401デフォルトの名無しさん
2016/05/22(日) 17:40:47.45ID:EaQ4G/f7もちろん月次の勤怠報告書も各PCから出力できる
休日や休み時間、有給半休設定も設定可能
予定表機能もあって受付のねーちゃんがそれ見て在籍確認ができる
って程度ならあまり溢れず
設計書が必要なレベルではないだろか?
0402デフォルトの名無しさん
2016/05/22(日) 17:40:51.87ID:6l64NX2q>他に何を設計するんだ?
将棋のルールを表現するモジュールが欲しいな。
これは変わらないものだし、ユーザ入力も思考ルーチンでもチェックに
利用できるようになっていると嬉しい。
あとソフトウェア内部での盤面や指し手についてのデータ構造だな。
プレイの間だけデータを持ってればいいのかセーブ・ロードが必要なのか
Redo/Undoが欲しいかなどの要求が考えられるから、それらに対応できるような
構造になってると嬉しい。
で、それらをモジュールとして分割するかレイヤとして分割するかだな。
で、そこまで決まると将棋のAIのロジックはデータ構造上のデータの変更のロジックに
容易に変換できるようになる。つまり>>377とかで言ってるフレームワークってことだね。
で、こういったことをコードを書きながら頭の中でやるかメモ書きでやるか、
それとも設計書に書いてからやるかって話だけど、いずれにしても仕事としてやる以上は
やったことを評価と保守ができる形で残さないといけない。
0403デフォルトの名無しさん
2016/05/22(日) 17:45:25.74ID:sxeEi6BCロジックが1つのクラスってのは違うだろうな。
局面:駒の位置、指せる手、駒の当たり、など
局面の点数化:持ち駒、駒の働き、囲い、駒の位置、など
手を考えるロジック:定跡との比較、候補手の選択、分岐の選択、捨てる手の選択、など
とかいくつかの機能に分かれているのに全部1つのクラスってだめだろ。
局面を管理してる部分は局面の点数化と手を考えるロジックが変わっても変更する必要はない
とかあるだろうし。
設計ってそういうことを考える作業なのに全然できてないなあ。
0404デフォルトの名無しさん
2016/05/22(日) 17:45:51.18ID:WwOYSBmy○ 将棋のルールを表現したデータが欲しいな。
> これは変わらないものだし、ユーザ入力も思考ルーチンでもチェックに
> 利用できるようになっていると嬉しい。
関係ないものを混ぜるな。
役割は分離させろ
> あとソフトウェア内部での盤面や指し手についてのデータ構造だな。
> プレイの間だけデータを持ってればいいのかセーブ・ロードが必要なのか
> Redo/Undoが欲しいかなどの要求が考えられるから、それらに対応できるような
> 構造になってると嬉しい。
そんなの一瞬で思いつちゃったw 棋譜データを記録すれば再現できる。
['7六歩', '8四歩', '6六歩', '6二銀', ・・・] こんな感じだな。
0405デフォルトの名無しさん
2016/05/22(日) 17:46:53.68ID:EaQ4G/f7rand()% 動かせる駒の数
rand()% 置ける場所の数
の2行で十分
0406デフォルトの名無しさん
2016/05/22(日) 17:47:15.33ID:WwOYSBmyお前センス無いんじゃね?
1つのクラスでいいよ。
共通化するにしても、2つだな。
1つのベースクラスに、それらのデータを入れておき、
継承したクラスで、ロジックだけを実装する。
こんなの設計と呼べるレベルじゃない。一瞬で思いつく。
0407デフォルトの名無しさん
2016/05/22(日) 17:48:23.90ID:vKoFE7Z9評価値のパラメータやアルゴリズムを差し替えて比較・統計する機能もほしいな
0408デフォルトの名無しさん
2016/05/22(日) 17:48:31.84ID:sxeEi6BC簡単なパターンを考えてみるのも有益かもな。
そっちもやってみる?
同時並行でやるとごちゃごちゃになるかなあ?
0409デフォルトの名無しさん
2016/05/22(日) 17:49:31.44ID:WwOYSBmyあほだなぁw
関数で済むものを、デザインパターンに当てはめて
複数のクラスにしようとしてるから
わけわからんことになってるんだろうな。
0410デフォルトの名無しさん
2016/05/22(日) 17:49:38.59ID:WENufHUBもちろん業務に関する設計書はひととおり必要
要件定義から画面設計、テーブル設計などいるだろうね
でもこのスレって「オブジェクト指向システムの設計」だから
業務の設計よりももっと技術寄りのクラス設計などを語る目的なのかなと
0411デフォルトの名無しさん
2016/05/22(日) 17:49:49.83ID:sxeEi6BCあー、そういうレベルね。
了解w
具体例を出して正解だった。
0412デフォルトの名無しさん
2016/05/22(日) 17:51:02.87ID:WwOYSBmy機能はたくさん欲しいのはわかったw
設計は、機能の多さとは比例しない。
棋譜データクラス(さっきから2次元配列クラスと読んでるもの)を
作ってそれらのメソッドを実装しろ。
0413デフォルトの名無しさん
2016/05/22(日) 17:52:51.72ID:sxeEi6BC1機能1クラスなんて言ってないからちゃんと読もうね。
で、俺を批判するのに頑張るよりお前の考えるクラス構成を出したほうがよっぽど評価されるぞ。
頑張れ!
0414デフォルトの名無しさん
2016/05/22(日) 17:53:50.83ID:WwOYSBmyそうしない理由を聞きたいんだが?w
お前は理由もなく、設計と評して、
過剰なモジュール分割をしようとしているに過ぎない。
目的が設計になってる。
だから設計が必要だって結論になってる。
俺はこんな部分に設計はいらないと最初から言ってる。
だから設計が出ないのは当たり前。
設計というのはフレームワーク部分に使うものなんだよ。
通常の開発はフレームワークを使うから、設計はほぼ不要になる。
一体俺からなにを聞こうとしてるんだ? 最初から無いと言ってるだろ。
無いと言ってるのに、無いに等しい物を言ったら、そのレベルとか心外だわw
0415デフォルトの名無しさん
2016/05/22(日) 17:54:20.75ID:sxeEi6BC0416デフォルトの名無しさん
2016/05/22(日) 17:56:04.18ID:WwOYSBmy> で、俺を批判するのに頑張るよりお前の考えるクラス構成を出したほうがよっぽど評価されるぞ。
すでに出しただろ?
将棋のAIのアルゴリズムが難しいからと言って
ソフトウェアの設計も難しくなるわけじゃない。
将棋の設計は簡単。ほんの少ししか無い。
だからほんの少ししか言えることはない。
お前は、むやみに複雑にしているようだがなw
自分で機能をあれこれ言って、
それを自分で設計できないでいるんだろ?
お前が、自分で出した機能を設計できない時点で
そこに設計はないという証拠になってるんだがw
0417デフォルトの名無しさん
2016/05/22(日) 17:56:41.71ID:WwOYSBmy> 機能が拡張しそうな箇所を意識して設計するのも設計上の大切な指針だね。
だから思考ロジック部分を分離しただろw
0418デフォルトの名無しさん
2016/05/22(日) 17:57:12.46ID:sxeEi6BC> そうしない理由を聞きたい
ストラテジーパターンとか適用できそうだね。
> 設計はいらない
>>390
0419デフォルトの名無しさん
2016/05/22(日) 17:57:57.65ID:WwOYSBmy> ストラテジーパターンとか適用できそうだね。
それ俺が言ったセリフだwww
パクるなよwww
0420デフォルトの名無しさん
2016/05/22(日) 17:58:01.83ID:6l64NX2q変わらないもの共用化できるものは分離して共通化した方がいいだろ
>そんなの一瞬で思いつちゃったw 棋譜データを記録すれば再現できる。
それをどこにどう持たせるの?
あとそれをどう決めてもいいけど、どう決めたかを自分にも他人にもわかる形で
残さないといけないね。単純でコード見ればわかるってんならそれでもいいけど。
0421デフォルトの名無しさん
2016/05/22(日) 17:59:25.73ID:WwOYSBmy> 1つのベースクラスに、それらのデータを入れておき、
> 継承したクラスで、ロジックだけを実装する。
これがストラテジーパターンになってるの気づいてないの?
0422デフォルトの名無しさん
2016/05/22(日) 17:59:46.97ID:sxeEi6BC>>407はどう考慮したんだ?
そもそも機能拡張がありそうな点を意識するって知ってた?
実力を証明するには設計案を提示するしかないぞ。
0423デフォルトの名無しさん
2016/05/22(日) 18:01:00.43ID:sxeEi6BC>>403に
局面を管理してる部分は局面の点数化と手を考えるロジックが変わっても変更する必要はない
とかあるだろうし。
って書いてあげたのに…。
0424デフォルトの名無しさん
2016/05/22(日) 18:04:19.72ID:WwOYSBmy> 変わらないもの共用化できるものは分離して共通化した方がいいだろ
そのための設計って単純だよな?
> それをどこにどう持たせるの?
少なくとも思考ロジック部分じゃないな。
どの将棋ソフトウェアでも共通で使えるものなんだから。
だから今の話、思考ロジック部分の設計(?)には登場しない。
将棋ソフトフレームワークと呼べるものを作って、
対局データを記録できる機能があるならば、
対局クラスとかの中だろう。
で、やっぱり思考ロジックの "外" の話なんだよ。
0425デフォルトの名無しさん
2016/05/22(日) 18:06:05.23ID:WwOYSBmy> 局面を管理してる部分は局面の点数化と手を考えるロジックが変わっても変更する必要はない
局面を管理してる部分は2次元配列クラスだと言ったんだがw
局面をもっと便利に管理したいならば、
この2次元配列クラスを拡張してメソッドでも追加しろよw
この程度の話、設計と呼べるレベルじゃないよ。
え?普通そうするよね? レベルの話だ。
0426デフォルトの名無しさん
2016/05/22(日) 18:06:17.27ID:6l64NX2qああ、思考ロジックの中の話なんか
思考ロジックを外と分離するための話かと思ってた
0427デフォルトの名無しさん
2016/05/22(日) 18:11:47.45ID:sxeEi6BC将棋のルール的なロジック
駒がどこに効いてるか?
駒が移動できる場所は?
駒の位置は?
と
点数化
手の選択
を一緒くたにしちゃうのは汚いクラス設計だとしか思わん。
お前は機能の違いについてセンスがまったくないから
これ以上話しても無駄だからもういいや。
少しはましな設計を思いついたら書き込んでくれ。
0428デフォルトの名無しさん
2016/05/22(日) 18:14:56.13ID:WwOYSBmyだから、ベースクラスを継承すればいいっていっただろ。
なんでこの程度のことを大げさに考えてるんだ?
0429デフォルトの名無しさん
2016/05/22(日) 18:18:27.84ID:sxeEi6BCベースクラス??
そんなのどこにあんの?
クラス構成聞いてるのに出てないのに突然持ち出されてもさあ…。
ごちゃごちゃ言い訳してる暇があるならまともなクラス構成を提示しろ。
提示できないのに「俺はすごいぞお」って言い張っても滑稽。
0430デフォルトの名無しさん
2016/05/22(日) 18:21:40.13ID:WwOYSBmy> そんなのどこにあんの?
>>406にあるけど・・・?
0431デフォルトの名無しさん
2016/05/22(日) 18:23:12.23ID:sxeEi6BCちょうど今電王戦見てるから将棋ソフトで考えてみるとさ。
駒クラスがあって王・飛車とかは駒のサブクラスにしようかって感じだろ。
盤面情報と思考ロジックはどんな感じのクラスにするのがいいだろう?
ってどうなんだろう?
こんな感じのところと将棋ソフトで言えば手の思考ロジックの分割みたいな
領域で悩むことが多い。
0432デフォルトの名無しさん
2016/05/22(日) 18:26:05.60ID:sxeEi6BC???
だから>>427の機能が全部ぶちこまれたクラスがあんでしょ?
違うなら違うで何を考えているのか明示しないとお前の考えてることなんて分かるかよ。
実際のプロジェクトでもドキュメントがなきゃこんな感じになって
ぐだぐだになるから設計書が必要だと実感できてよかったな。
0433デフォルトの名無しさん
2016/05/22(日) 18:28:39.50ID:sxeEi6BC間違った。
具体的な質問はこっちだった。
盤面をクラスとして作るべきか、思考ルーチンの中で使われる情報に過ぎないのか?
って疑問がまず出てくるけどどう判断する?
違うクラス構成でもいいけど。
0434デフォルトの名無しさん
2016/05/22(日) 18:29:02.46ID:WwOYSBmyどうも ID:sxeEi6BC って
最初から、完全なものを作らないとだめって思ってるみたい。
要求に対して変化させる能力(仕様変更能力)がないんじゃないか?
一番プレーンな状態からやって、○○したくなったら
それにあわせて変化させれば良いんだよ。
最初から必要になるかわからないものまで作る必要はない。
(ただし考慮は必要。考えるだけでやらなくていい)
思考ロジックの話でも、最初はクラス一つでいいだろ。
で、あとから共通化がどうとか言ってきたから、
俺は、ベースクラスにまとめれば?って答えた。
それだけのことだよ。後から何か言われたら、それに対応させて変化さえればいい。
それができないのはいろんなものを一緒くたにしてやろうとしてるからで
俺は役割に応じて分ける(最初から分けるのではなくて、分けていく)って
考え方をしてるので、大幅な設計変更は発生しない。
ただ単に実現したいことを実現するシンプルな方法(これを正しく判断できるのが経験なのだろう)を
選んでいくだけのことなのに。さっきから「そうするだけじゃん」の連続だよw
0435デフォルトの名無しさん
2016/05/22(日) 18:30:13.36ID:WwOYSBmy> だから>>427の機能が全部ぶちこまれたクラスがあんでしょ?
だからなんの理由で分けるんだよw
「役割」考えれば、一つにするのが正しいだろ。
まったく最初から複雑にしてるんじゃねーよ。
0436デフォルトの名無しさん
2016/05/22(日) 18:30:39.58ID:JaLdteXYこの短い間にもこれだけの応酬があったってことか
やっぱりシステム開発には対話が必要なんだな
横着してドキュメントで済ませようとすると破綻する事がよくわかった
0437デフォルトの名無しさん
2016/05/22(日) 18:32:15.49ID:EaQ4G/f7複数のクラスがあるとしてソースを見る人間と
いやいやこんなもんクラス1つで十分ですよって人間と
混ざって開発することもあんだしね
0438デフォルトの名無しさん
2016/05/22(日) 18:32:23.86ID:WwOYSBmyどっちでも良い。最初はシンプルに作れ。
後で機能が欲しくなったことを想定してるのなら、その機能を言え。
その機能を実現するように変えるだけだからさ。
クラス設計なんて条件で変わるものなのに、
後出しで条件加えんなよ。
仕様としては単に将棋出来ればいいだけだろ?
0439デフォルトの名無しさん
2016/05/22(日) 18:34:07.77ID:sxeEi6BC>>390
同じことを何度も言わせるな。
どうしようもない設計からスタートさせてくれって言う設計者はいらない。
>>435
こりゃだめだw
0440デフォルトの名無しさん
2016/05/22(日) 18:34:18.62ID:EaQ4G/f7ちなみに実際の開発で後出しかどうかなんてドキュメントも書いてないのに
主張できんの?
0441デフォルトの名無しさん
2016/05/22(日) 18:36:52.59ID:8h3SPrnH将棋のコマって全体を表現するときの1要素、データに過ぎないじゃないの
コマの状態や全体を評価して処理するのは別のプログラムーアルゴリズム
コマが主体性をもって勝手に無双するなら関係があるかも知れないけど
コマの種類ー行動範囲ー状態(手ゴマ、版面での位置、成金など)の一覧で表現できる単純な1要素
肝は、それら要素を含む版面全体を評価処理する部分じゃないか
版面のリストデータを評価する関数部分かな
0442デフォルトの名無しさん
2016/05/22(日) 18:38:05.06ID:sxeEi6BCこれが後出しってさあ…。
まず、>>358
で将棋ソフトって言われたら簡単に予測できる。
実際の客なんてこっちが聞かなきゃ説明しないことなんて山ほどあるぞ。
もう語れば語るほど経験のなさが露呈するだけだからやめとけ。
0443デフォルトの名無しさん
2016/05/22(日) 18:39:04.38ID:WwOYSBmy> 複数のクラスがあるとしてソースを見る人間と
> いやいやこんなもんクラス1つで十分ですよって人間と
そんなふうに考えてるやついないぞw
実際には複数のクラスに分かれているのを見て、
拡張性を考えた設計だなって読み取れる人と
なんでそうなってるのかわからない。
分ける理由もわからない。っていう技術力の低いやつだけだ。
0444デフォルトの名無しさん
2016/05/22(日) 18:40:13.61ID:WwOYSBmy> どうしようもない設計からスタートさせてくれって言う設計者はいらない。
シンプルな設計からスタートさせてくれって話なんだが?
なんでシンプル=どうしようもない設計なんだ?
根本的にお前おかしい。
世の中のありとあらゆるソフト見てみろよ。
最初はどれもシンプルだろ。
0445デフォルトの名無しさん
2016/05/22(日) 18:41:15.88ID:WwOYSBmy> で将棋ソフトって言われたら簡単に予測できる。
じゃあ、将棋ソフトっていうからさ、
予測してみ。
もちろん実際の客(俺)が考えてるものの予測だ。
余計なもの作るなよw
0446デフォルトの名無しさん
2016/05/22(日) 18:42:12.34ID:WwOYSBmy> 将棋のコマって全体を表現するときの1要素、データに過ぎないじゃないの
普通はその通り。
俺からすれば、普通そうするよね?の当たり前の連続でしか無い。
これを設計なんて感じたこともねーわw
0447デフォルトの名無しさん
2016/05/22(日) 18:42:22.89ID:sxeEi6BC駒の動けるマスとか成りルールとかはクラスに持たせてもいい気がするなあ。
たいした情報じゃないからクラスにするまでもないけど。
ルールをどうやってクラスに割り当てるかも悩ましいな。
実装方法の候補はいくつか簡単に思いつくけど、どれを選択するかの基準は難しい。
0448デフォルトの名無しさん
2016/05/22(日) 18:42:52.06ID:sxeEi6BC0449デフォルトの名無しさん
2016/05/22(日) 18:45:23.45ID:WwOYSBmyだからそんなの将棋ソフトの機能に合わせて
ごく普通に作ればいいだけだろw
今は超シンプルな将棋ソフトの話なんだから
複雑なクラスにする必要はない。
機能が増えたらそれを実現するように変えればいいだけ。
最初っからいろいろやろうとするから
お前は混乱して、何も手を付けられなくなってるんだよ。
0450デフォルトの名無しさん
2016/05/22(日) 18:48:50.87ID:WENufHUBID:WwOYSBmyが逃げ回ってるようにしか見えないね
将棋ソフトって考慮時間が必要なくらい中身が複雑なものだから
ベースクラスと継承クラスの2つのシンプル実装で済むはずがない
将棋に勝つソフトではなくて
ルール通りにコマを進めるソフトぐらいならそれでもできるかもしれんが…
0451デフォルトの名無しさん
2016/05/22(日) 18:49:31.70ID:8h3SPrnHシンプルな問い合わせで有益な回答がもらえる状態
今回の将棋の場合、コマの種類ごとにクラスとオブジェクトを作って
版面データに配置して、飛車さん何処に動けますか?、何かコマは取れますか?
次の一手で取られるような危険な状態ですか?って問い合わせて
その情報を利用して版面全体を評価判断するプログラムーアルゴリズムが別途必要
だけど、この処理にコマのクラスとかは必須ではない
版面データを一桝ずつ調べて評価しても別にかまわない
0452デフォルトの名無しさん
2016/05/22(日) 18:51:31.18ID:6l64NX2q設計の話をしているなら最終的な結果をある程度イメージしたクラス構造を提示してって話になるが、
プロセスの話をしているなら、将棋のAIなんてロジックによって処理の内容もデータの持たせ方も
変わる可能性があるから、設計やドキュメント作成をしっかりやろうとすると戻り作業の負荷が大きくなるので
>>434でいいってことになる。
0453デフォルトの名無しさん
2016/05/22(日) 18:53:08.67ID:sxeEi6BC書かれている内容は同意なんだけどどちらかの方法を選択するわけじゃん。
そのときの指標ってどんなんだろ?って話がしたい。
将棋の場合に限定せずに、例えばそんな場合にって感じで。
0454デフォルトの名無しさん
2016/05/22(日) 18:55:00.41ID:sxeEi6BC俺はクラス構成について意見聞きたい。
そう書いたのは流れたんだろうけど。
0455デフォルトの名無しさん
2016/05/22(日) 19:11:48.08ID:8h3SPrnH内部関数に知的判断をさせて答えを取り出す
小さな知的データベースみたいな振る舞いをさせた時が使うとき一番楽ができる
struct の内部手続きの管理を容易にするのがクラスだって部分に焦点を当てると
クラス内部のメンバ変数を利用した処理で知的判断が完結できる場合だと思う
アルゴリズムーデータ構造ー>プログラム この関係がクラス内で完結する場合
一番力を発揮するんじゃないかな
C++始めて2週間だけど言ってみるw
0456デフォルトの名無しさん
2016/05/22(日) 19:13:56.11ID:fKm+A9/1自社で作成しなければならない部分は将棋盤のMVCと将棋AIサービスのACLだけ
この案件は規模が小さすぎるから設計するまでもなくフレームワークを使って手短に仕上げて終わりかな
0457デフォルトの名無しさん
2016/05/22(日) 19:21:02.25ID:WwOYSBmy> 将棋ソフトって考慮時間が必要なくらい中身が複雑なものだから
竹内関数も考慮時間が必要なぐらいですが、
設計は難しいですか?
なんで再帰処理に時間がかかるだけなのに
設計の話が出てくるんだよw
0458デフォルトの名無しさん
2016/05/22(日) 19:21:47.06ID:WwOYSBmy> 俺はクラス構成について意見聞きたい。
だからクラス構成は搭載する機能によって変わってくる。
今はシンプルな機能でいいって話なんだから、クラス構成もシンプル。
何度も言わせんな。
0459デフォルトの名無しさん
2016/05/22(日) 19:27:38.99ID:WENufHUB都合のいいとこだけ切り取るなよ
ユーザーに勝つアルゴリズムを
ベースクラスと継承クラスの2つだけで実装できんの?
1クラスに何十万行書くつもりかな?
0460デフォルトの名無しさん
2016/05/22(日) 19:28:21.77ID:fKm+A9/1>>456が答え
AIサービスの内部の話をしてるなら
クラスもOOPも使われない、が答え
何故なら遅いから
0461デフォルトの名無しさん
2016/05/22(日) 19:32:21.96ID:WwOYSBmyあいつは将棋の思考ロジックの設計はどうすればいんだ?って
うんうんうなってばかりで、何も作れていない。
必要な理由もないくせに、小さなクラスに分けようとしている。
一方俺はシンプルな 1クラスから初めて、後出しで条件が出るたびに
その条件をみたすように、バージョンアップし続けていっている。
0462デフォルトの名無しさん
2016/05/22(日) 19:35:11.10ID:WwOYSBmy実装できるだろ?
0463デフォルトの名無しさん
2016/05/22(日) 19:43:42.95ID:WwOYSBmy言ってる時点で、普通の人は違和感持つよね?
その言い方だと、ユーザーに負けるアルゴリズムならば、
クラス2つで実装できる思ってるように聞こえる。
ユーザーに勝つかどうかは評価関数(繰り返すけど関数な)の
出来で決まるので、クラスの中の一関数にすぎない。
またコードが長ければ、ユーザーに勝てるとか思っていそう。
コードの長さと強さは関係ない。
0464デフォルトの名無しさん
2016/05/22(日) 19:57:01.68ID:EaQ4G/f7それじゃ見積れないじゃん
今回の開発ですけど全部でどのくらいかかりますか?
概算でいいんでお願いします
0465デフォルトの名無しさん
2016/05/22(日) 20:05:41.89ID:WwOYSBmy話がめんどくさくなりそうなので
あんたがこの話に同意すると言ってからねw
プログラマが知るべき97のこと.com/エッセイ/見積りとは何か
http://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
0466デフォルトの名無しさん
2016/05/22(日) 20:07:14.83ID:WwOYSBmyもう一つ。
開発の見積もりとスケジュール管理
見積もりとスケジュールとコミットメントは違う
http://techlife.cookpad.com/entry/2016/04/06/100000
0467デフォルトの名無しさん
2016/05/22(日) 20:11:54.86ID:EaQ4G/f7他人のドキュメントが出てきちゃったぞ(笑)
0468デフォルトの名無しさん
2016/05/22(日) 20:12:46.40ID:WwOYSBmy他人のドキュメントとかいい出すやつかw
0469デフォルトの名無しさん
2016/05/22(日) 20:18:21.48ID:EaQ4G/f7読んでないけど
お客さんにもそれ読ませて合意取ってるの?
0470デフォルトの名無しさん
2016/05/22(日) 20:18:56.63ID:WwOYSBmyお前に読めって言ってるんだけど?w
0471デフォルトの名無しさん
2016/05/22(日) 20:20:20.00ID:EaQ4G/f7なんで?
設計書書かないでやるのにそんなの必要ないじゃん
0472デフォルトの名無しさん
2016/05/22(日) 20:21:47.98ID:SSySxKMQなんかめっちゃ進んでるwww
> 税制の変更やら社内ルールの変更やらは想定される訳で
そういう類なら設定ファイルなりイベントテーブルなり……オブジェクト指向とは別のところでどうにかするかな
アルゴリズム云々は大量に出てると思うけどストラテジーを真っ先に考えると思うよ
> 設計段階で洗い出さないならいつ設計するんだ?
バリデーションの例での話だけど
バリデーションの為のオブジェクト洗い出しなんてしないなあ
なぜならフレームワークで基底を提供してるから
0473デフォルトの名無しさん
2016/05/22(日) 21:33:06.14ID:sxeEi6BC将棋ソフトのクラス構成って例で考えてみてよ。
業務システムの設計で悩むところとだいたい同じようなことは出てくるから。
0474デフォルトの名無しさん
2016/05/22(日) 21:46:19.29ID:bOnbURFw0475デフォルトの名無しさん
2016/05/22(日) 21:53:33.02ID:SSySxKMQゲームマスター……どこにどの駒があるとかどっちの番とかコントロールするやつ
ビュー……UI担当
思考……たぶんコンピューターの強さ別に思考ルーチン考える(か、深さを変える程度かどっちか)
ストラテジーするのは思考のところ
あんま練ってないから抜け漏れあるだろうけどぱっと考えておおまかにこんなもんじゃないかな
将棋だと後からプレイヤーが3人になるとか10×10になるとか駒の種類が増えるとかないから……
0476デフォルトの名無しさん
2016/05/22(日) 21:57:19.19ID:sxeEi6BC思考部分がメインになるけどどう構成する?って疑問。
将棋ソフトについては観戦してちょこっとネットを読んだ程度で詳しくはないけど
将棋のルール
候補手の分岐
点数評価
駒の情報
盤面の情報
とかはあるでしょ。
0477デフォルトの名無しさん
2016/05/22(日) 21:59:56.19ID:sxeEi6BC駒の配置を元に点数を評価したり、
詰み専用のルーチンがあったり、
パラメータを調整したり、
評価の際に考慮する要素を変えてみたり、
今は実現してるソフトはないみたいだけどディープラーニングを実装したり
と頻繁に改修されている模様。
0478デフォルトの名無しさん
2016/05/22(日) 22:03:46.50ID:SSySxKMQOOPの設計とは違う話ではないかな?
0479デフォルトの名無しさん
2016/05/22(日) 22:06:26.17ID:sxeEi6BC思考部分をどのようなクラスで構成するかって考えるのはオブジェクト指向設計だろ。
0480デフォルトの名無しさん
2016/05/22(日) 22:12:39.67ID:SSySxKMQ構成はストラテジーパターンと思ってるよ
easyレベルの思考パターン、normalレベルの思考パターン……みたいな感じ
逆に聞くけど
将棋のルールオブジェクト、候補手のオブジェクト、点数評価オブジェクト……みたいなのを作るの?
0481デフォルトの名無しさん
2016/05/22(日) 22:14:07.31ID:sxeEi6BC動きのルールがあって
盤面に配置されていて
配置された駒が動けるマスがあって
駒の配置とかを見て点数をつけて
ってのを
複数の商品があって
工場や倉庫があって
社内ルールがあって
流通があって
注文があって
最適な生産計画を立てる
みたいな話に置き換えれば思いっ切り業務システム。
業務より将棋のほうがみんな分かっているし、
顧客のルールのヒアリングとかする必要もないから将棋で考えてると思えば
十分現実的に有益な例と言える。
0482デフォルトの名無しさん
2016/05/22(日) 22:21:13.03ID:sxeEi6BCそこまで具体的になっていないから他の人の考えを聞きたいってレベル。
機能的には
駒クラスと盤面クラス(データの集合でクラスにする必要はないかもしれない)
盤面クラスから合法手を抜き出す処理
抜き出した候補手を絞る処理
候補手を動かしてみた盤面を点数化する処理
最高点の手を選択
かなあと。多少漏れはあるかもしれないけど。
で、ルールについては駒クラスに一部持たせることもできるけど
ルールはまとめてどこがで持たせたほうがすっきりする気もするなあってぼんやり。
合法手を出す部分は手を考える部分とは関係なく共通だから
思考ルーチンのクラスとは分けたほうがいいだろうな。
って程度。
0483デフォルトの名無しさん
2016/05/22(日) 22:21:22.93ID:SSySxKMQこれは>>480への回答……ではないよね
俺は現実的でないとも無益だとも主張してないので
俺の質問は>>481が設計者なら
将棋のルールオブジェクト、候補手のオブジェクト、点数評価オブジェクト……みたいなのを作るの?
ちょっと変えて どんな風に作るの? でもいいけど
0484デフォルトの名無しさん
2016/05/22(日) 22:21:45.17ID:SSySxKMQごめん>>482見る前に書いたから見なかったことにして
0485デフォルトの名無しさん
2016/05/22(日) 22:25:17.11ID:SSySxKMQ具体的になってないっていってるのにこう言っていいかわからんけど
クラスと処理が一緒に書かれてると
正直いまいちわからん
>>473の流れからクラス構成の話をしてるはずなので
クラスと処理は明確に分けてくれると嬉しい
0486デフォルトの名無しさん
2016/05/22(日) 22:28:36.60ID:sxeEi6BCそこは俺自身がつめられていない。
明確になっていないのが現状であるのと
自分の考えを言っちゃうと他の人のアイデアが出ににくくなりそうだから
しばらく待ってみようとも思ってる。
0487デフォルトの名無しさん
2016/05/22(日) 22:31:43.20ID:SSySxKMQなるほど了解
とりあえず俺は>>475ってことで
他の人待ちになるよ
0488デフォルトの名無しさん
2016/05/22(日) 22:37:22.72ID:hyVMxkhK0489デフォルトの名無しさん
2016/05/22(日) 22:43:46.32ID:3jWKTqcSデザパタという用語の飛び出し方と
ストラテジーというパターンの居座り方が不思議
小学生が得意げに掛け算の七の段暗唱してみせてるような不気味さがある
小学生が持ち寄った安モンのプラモをいつまでも机に乗っけてる不気味さがある
このゾッとする感じ分かる奴はROMってニヤニヤしてんだろうな
0490デフォルトの名無しさん
2016/05/22(日) 22:45:11.25ID:sxeEi6BCドキュメントなんて書く必要ないだろって主張する人がいた。
設計なんていらないって主張する人がいた。
肯定派と否定派で不毛な争いを続けた。
設計否定派「そんなのなくても設計できるんだ!」
だったら、不毛だから将棋システムのクラス構成をするってで考えてみようぜ。
>>346
>>431
あと、直近のレス10個くらい。
これでほぼ追いついた。
0491デフォルトの名無しさん
2016/05/22(日) 22:47:07.15ID:sxeEi6BCこういう不毛なレスをする奴に送る言葉
「将棋ソフトの設計を提示してくれ」
できないならじゃまなだけだから黙ってて。
0492デフォルトの名無しさん
2016/05/22(日) 22:52:23.14ID:hyVMxkhKだな
0493デフォルトの名無しさん
2016/05/22(日) 23:35:43.97ID:EaQ4G/f7そんなとこメインに何の?
中身はどうあれ入力は将棋盤の現在の状況と両者の持ち駒とちょっとした設定(難易度とか?)
出力は次の一手って決定してるし
関数で中身が超絶長くてもクラス分ける必要は仕様によってはないと思うよ
0494デフォルトの名無しさん
2016/05/22(日) 23:44:55.34ID:sxeEi6BC>>476読んで1つのクラスにまとめるって違和感ある。
>>481とかも読んで。
それでも全部1つのクラスにぶっこむって言うなら「あぁそう」って感じだ。
思うことはあるけど議論しても不毛だってこのスレで学んだから見解の相違ってことで。
0495デフォルトの名無しさん
2016/05/23(月) 00:10:47.30ID:oqijX3By駒の動きのバリエーションが100パターン以上あるとか
もしくは仕様変更で追加されたり、局面により動的に動きが変わったり
といったことが頻発する場合にはオブジェクトに債務を任せるってのは有効だと思われる。
将棋くらいルールが固定されているものを取り扱っても
設計の善し悪しって意味を持たない気がするよ。
0497デフォルトの名無しさん
2016/05/23(月) 00:19:18.67ID:qUt6/ya8それらを保持するためのデータ集合は必要だし、
それらを参照するロジック郡があることは確実。
その場合のきれいな構成はどうなるって話。
オブジェクトにしない設計選択するからって機能的に独立している部分も含めて
すべてを1つにつなげるのがきれいな設計だとは俺は思わない。
0498デフォルトの名無しさん
2016/05/23(月) 00:20:52.30ID:qUt6/ya80499デフォルトの名無しさん
2016/05/23(月) 00:36:52.91ID:oqijX3By適当に作ってもこの場合、そこまで汚くはならんだろう。
逆に駄目な設計例を紹介する方が難しいんじゃないか。
何度も言うけど将棋くらい盤面、駒、ルールが固定されているものを例に
設計の善し悪しを語るのはあんま筋が良くないように思う。
0500デフォルトの名無しさん
2016/05/23(月) 00:40:16.62ID:qUt6/ya8複雑なシステムを1つのクラスにまとめるのがいい設計だと思ってるなら
俺の知ってるオブジェクト指向設計とは違うな。
0501デフォルトの名無しさん
2016/05/23(月) 00:56:16.41ID:wJJwI8Yd設計も必要と思えない
0502デフォルトの名無しさん
2016/05/23(月) 01:17:43.31ID:2wwYSKozどう考えても将棋ソフトは単純だろw
0503デフォルトの名無しさん
2016/05/23(月) 01:19:28.34ID:2wwYSKoz> 最適な生産計画を立てる
> みたいな話に置き換えれば思いっ切り業務システム。
なんで全く関係ない話を置き換えてるんだ?w
0504デフォルトの名無しさん
2016/05/23(月) 01:20:59.57ID:2wwYSKoz> 将棋くらいルールが固定されているものを取り扱っても
> 設計の善し悪しって意味を持たない気がするよ。
その通り。
ルールが固定されているものなのに、
それを業務システムの規模と同一視して
複雑な設計を作り出す
バァカ(笑)がいる。
0505デフォルトの名無しさん
2016/05/23(月) 01:21:26.32ID:DQBja8MH0506デフォルトの名無しさん
2016/05/23(月) 01:29:00.13ID:qUt6/ya8相手にするのは不毛だと分かったから頑張って書き込んでもらってもスルーするのであしからず。
0507デフォルトの名無しさん
2016/05/23(月) 03:34:57.55ID:7DLF1n9wコンピューター将棋の思考ルーチンをなにを使いどう実装するのかは別の話
ここら辺はマジ難しい部分
この難しい評価関数の構造に対してのオブジェクトのクラス構造を語るのは
騙るに等しい無為な行為
クラスの要件定義?を書き上げていくといきなりどう実装するか
これでよいのか判断できなくなっていきなり脳みそ爆発じゃないの
この場合の評価方法って膨大な組み合わせから条件事に状態を抽出
その集合へ評価関数で比較の為に数値化(この数値化の基準が凄く難しい肝の部分)
これを盤面全体かつ何手先まで計算するのかって事でここら辺に膨大な
処理速度なり消費メモリーなりのリソースが必要
0508デフォルトの名無しさん
2016/05/23(月) 07:54:00.86ID:RiQgyPKSボードゲームにOOPとかどんだけだよ
0509デフォルトの名無しさん
2016/05/23(月) 08:42:24.80ID:bDXz1lkX0510デフォルトの名無しさん
2016/05/23(月) 09:18:47.98ID:KJgou+2qもっと言うなら駒みたいに種類が限られてるいるものは列挙型にするべきだろう
関数型にしよう(提案)
0511デフォルトの名無しさん
2016/05/23(月) 09:31:33.26ID:2wwYSKozゲーム開発にOOPを入れるのは常識なんだが。
思考ロジック(評価関数)の中身をOOPにするとかは意味不明
0512デフォルトの名無しさん
2016/05/23(月) 09:54:28.34ID:KJgou+2qRustとか使うんならOOPじゃなくていいし(Rustの型システムは独特だから関数型と言っていいのかもわからんけど)
0513デフォルトの名無しさん
2016/05/23(月) 10:09:17.37ID:bDXz1lkX0514デフォルトの名無しさん
2016/05/23(月) 11:29:21.76ID:qUt6/ya8複数の商品があって
工場や倉庫があって
社内ルールがあって
流通があって
注文があって
最適な生産計画を立てる
ってシステムのクラス構成を書いてくれ。
生産計画について知らないならググって自分で理解してくれ。
分からないことを調べるのは設計者として当然のこと。
完全な正解なんて求めていないし、要件については一般的と思われるもので
適宜補完してくれていいから。
生産計画なんて調べたくないって言うなら将棋ソフトで考えような。
0515デフォルトの名無しさん
2016/05/23(月) 11:37:07.78ID:qUt6/ya8そういう選択をしてもらってもいいけど、その場合の設計・システム全体の構成は
どうなるのか提示してくれ。
機能的に独立している部分が完全に密結合した設計じゃだめだろ。
オブジェクト指向以前から機能的に独立している部分はモジュールに分離することが推奨されていた。
それと、
思考部分は定跡を考慮したり、
駒の配置を元に点数を評価したり、
詰み専用のルーチンがあったり、
パラメータを調整したり、
評価の際に考慮する要素を変えてみたり、
今は実現してるソフトはないみたいだけどディープラーニングを実装したり
と頻繁に改修されていることも考慮した設計にしてくれ。
これは電王戦も見ていたら開発者が言っていたことなんで事実。
0516デフォルトの名無しさん
2016/05/23(月) 11:44:28.52ID:qUt6/ya8https://ja.wikipedia.org/wiki/Bonanza#.E6.80.9D.E8.80.83.E3.83.AB.E3.83.BC.E3.83.81.E3.83.B3
に説明があったからイメージできない人は読んでみてくれ。
もちろんこれを実装する処理フローなんて不要で、情報とロジック群の構成を
設計として整理してくれれば十分。
0517デフォルトの名無しさん
2016/05/23(月) 11:50:00.86ID:qUt6/ya8それならオブジェクトを使わない思考ロジックを設計を書いてくれ。
オブジェクト指向設計じゃなくても「思考ロジックがあります。以上」なんてあり得ないから。
昨日から言ってるんだけど「思考ロジックはオブジェクトじゃない」
って言ってる奴がいるので分かりやすくもう一度。
0518デフォルトの名無しさん
2016/05/23(月) 11:53:16.96ID:DQBja8MH宿題でもやってもらおうと思ってんのか?
0519デフォルトの名無しさん
2016/05/23(月) 11:55:13.23ID:qUt6/ya8設計できない、興味ないならやらないでいいんだよ。
お互い関わりたくないからわざわざ来んなよ。うっぜー。
0520デフォルトの名無しさん
2016/05/23(月) 12:04:07.88ID:wJJwI8Ydそれだったら俺も最初から見に来なかったわ
0521デフォルトの名無しさん
2016/05/23(月) 12:14:49.83ID:RiQgyPKS0522デフォルトの名無しさん
2016/05/23(月) 12:34:01.34ID:qUt6/ya8オブジェクト指向設計についての話題なら大歓迎だぜ。
指針とか経験とかいい本とか。
ドキュメントは不要、設計プロセスは不要、とかスレと関係ない書き込みをしつこく
する奴がいて役立つ情報がまったく得られないから設計スキルが低いだけの奴との無駄なやり取りを
避けるためにこうした経緯。
0523デフォルトの名無しさん
2016/05/23(月) 12:35:12.57ID:qUt6/ya8興味がある人だけやってくれ。
0524デフォルトの名無しさん
2016/05/23(月) 15:48:51.47ID:0LMZvZN5ゲーム開発こそOOP無いと死んでしまいます。
継承も移譲も必要
0525デフォルトの名無しさん
2016/05/23(月) 15:53:56.75ID:KJgou+2q静的ディスパッチ使えみたいな人かも知れん
0526デフォルトの名無しさん
2016/05/23(月) 18:09:38.65ID:8ShGEso2まるで自分はスキル高いみたいな言い方だね
0527デフォルトの名無しさん
2016/05/23(月) 18:30:21.54ID:bDXz1lkX金は誰が出してくれるんだ?
0528デフォルトの名無しさん
2016/05/23(月) 19:35:13.90ID:qUt6/ya8「俺のほうがすごいー!」みたいなくだらない言い争いをする気はないから
設計に自信あるならきれいなクラス構成を作って見せて。
0529デフォルトの名無しさん
2016/05/23(月) 19:36:48.86ID:qUt6/ya8上位入賞すればニコニコから賞金もらえるぞ。
興味あるなら設計を考えるところからスタートだ。
0530デフォルトの名無しさん
2016/05/23(月) 21:08:34.53ID:tNl+V9er> 思考ロジックをオブジェクトにしないならしないでいいけど
> それならオブジェクトを使わない思考ロジックを設計を書いてくれ。
> オブジェクト指向設計じゃなくても「思考ロジックがあります。以上」なんてあり得ないから。
じゃあ模範例を言ってくれ。
俺からすれば、思考ロジックの設計?何いってんの?状態なんだよ。
聞いているのがアルゴリズムなら意味はわかる。だが設計とか意味不明。
将棋の思考ロジックは再帰の連続だろうから、近しい例で再帰を使った二分探索とかどうだ?
二分探索の設計とやらをお前が言ってくれ。ついでにオブジェクト指向で設計してもいいぞ。
そうすればお前が何を求めているかがわかる。
0531デフォルトの名無しさん
2016/05/23(月) 22:12:51.54ID:xFXxeOBl出せばここダメあれダメと得意気にダメ出し
もっと建設的なお話しはできないのかね
0532デフォルトの名無しさん
2016/05/23(月) 22:25:01.38ID:k9BlaHRb0533デフォルトの名無しさん
2016/05/23(月) 23:23:30.08ID:MlMGnhEf無理ですよ
発言内容を見れば素人とわかります
0534デフォルトの名無しさん
2016/05/24(火) 00:02:49.39ID:6RFz1ZJQくそみたいな設計しか提示できない素人が偉そうにw
0535デフォルトの名無しさん
2016/05/24(火) 00:11:33.80ID:6RFz1ZJQクラスが不要だと思うならクラスを使わない設計をしてくれって何回言えば分かるんだ?
>>530
>思考ロジックの設計?何いってんの?状態なんだよ。
将棋ソフトの設計はあなたに任された。
構築は数人のチームでやる。(数人いらないってなら1人でもいいけどとにかく別の人。)
ってケースで想定してくれ。
設計したらお客さんに見せて確認して、構築チームに回す訳だ。
その設計書に将棋ソフトを構成する機能を書いて、
主要なクラスないしモジュールを書くのは常識。
まさかすべてのコードを1つの巨大ファイルに押し込むつもりじゃないだろ?
0537デフォルトの名無しさん
2016/05/24(火) 00:17:34.70ID:yaJTawf0もちろん金積めばできるけど
掲示板の書き込みで片手間でできるレベルではない
0538デフォルトの名無しさん
2016/05/24(火) 00:19:52.06ID:6RFz1ZJQ>>531
模範解答を出せという気持ちは分かるけど
これまで提示された設計じゃレベルが低過ぎて会話しても
何も得るものがないと思う。
実際のプロジェクトで客に設計書を提出した経験がある奴はいないだろ?
自分の設計スキルが最高だとは思ってないから、
俺より設計スキルを持った人が登場してくれてささっと素敵な構成を提示してくれるなり
指針を提示してくれるのを待ちたい。
0539デフォルトの名無しさん
2016/05/24(火) 00:28:56.57ID:6RFz1ZJQ将棋ソフトから離れて有益な会話が始まるなら理想だし、そうなって欲しいとは思ってるけど
具定例がないと抽象的で無意味な議論に戻る気がするなあ。
有益な会話が始まったら将棋ソフトのことなんて忘れてもらっていいけど。
あと、難しいって言うけどあんまり単純だったらそもそも悩まないじゃん。
将棋ソフトにこだわりはないから他に適切な例があればそっちで考えてもらえばいいと思うけど何かある?
0540デフォルトの名無しさん
2016/05/24(火) 00:32:46.56ID:6RFz1ZJQメモリとかパフォーマンスはいったん忘れて設計したらどうなるだろ?
0541デフォルトの名無しさん
2016/05/24(火) 00:39:17.52ID:24rCrc9d駒は代数的データ型使おう
盤は単純に配列かMapでいいべ
UIはオブジェクト指向が良さそう(適当)
そういえばここで言われてるドキュメントってjavadocみたいなやつ?
ドキュメント要る派VS要らない派(コードが成果物)がどの範囲までをドキュメントと呼んでるのかわからん
>>537
将棋AIは難しいけど逆にAI以外は難しくないから(グラフィック凝らない限り)
いっそオセロとかにするとスゲー簡単になるなー
0542デフォルトの名無しさん
2016/05/24(火) 00:49:07.65ID:iG1UUWT4まず自分が作ってみて
こんなんなったがどう思うよ
ってやった方がいいんじゃね?
0543デフォルトの名無しさん
2016/05/24(火) 00:50:35.99ID:6RFz1ZJQ難しい場合は論理的な設計から始めることが一般的に推奨されている。
論理的とは代数的データ型やらMapやらの実装寄りのことは忘れて
システムの構成要素とその関係を考えること。
駒、駒が動けるマス、盤面、盤面ごとの合法手みたいな情報がいろいろあるけど
それらの情報の関係とか何がクラスで何が属性なのかとかをはっきりさせる。
一般的な開発プロセスではMapとかを考え出すのはその後。
(違うプロセスがあるならそれでやってもらって結果を提示してね。)
ドキュメントは基本は文章と図。
実際のプロジェクトならお客さんにヒアリングしながら確認する必要があるから
お客さんも理解できるもの。
コードが完成してない状態でプロジェクトメンバーにも見せるから
コードはその時点ではないし。
0544デフォルトの名無しさん
2016/05/24(火) 00:57:32.21ID:6RFz1ZJQまあねえ。
様子見ながら考える。
正直なところ、>>358とか、>>431とかみたいに悩むポイントを提示しつつ
いろんな意見を聞きながら進めたかったんだけど、反応がほとんどなかった一方で
「思考ロジックはクラスじゃない」だの「将棋ソフトはおかしい」だの一部の連中が騒ぐから
だったらお前らの考えを言えよってなったのはある。
>>358とか、>>431とかについて意見交換できるならやりたいぞ。
0545デフォルトの名無しさん
2016/05/24(火) 01:00:51.27ID:6RFz1ZJQただ、それにしたって設計は必要だからどんな設計になるかは考える必要があって
思考ロジックはクラスじゃないから設計いらないみたいな発想はおかしいと思う。
が正確だな。
0546デフォルトの名無しさん
2016/05/24(火) 01:04:03.54ID:KRMd4EzS設計なんか必要だと思うほうが間違ってるよね
こんなのz80でだって動くんやで
豪勢なのは思考ルーチンだとしても将棋ソフト本体への入出力が決まってる以上複雑にはならんね
0547デフォルトの名無しさん
2016/05/24(火) 01:06:59.17ID:6RFz1ZJQいつもの人だねw
煽り抜きで質問なんだが、モジュールに分けない一枚岩の巨大単一ソースコードにするつもりなの?
0548デフォルトの名無しさん
2016/05/24(火) 01:19:38.22ID:KRMd4EzS今出てる内容ならそれでも十分なんですよ
ちなみに俺は設計書書けよ派だけどね
将棋とかゲームのプログラムって大事なのは状態遷移の方だからね
ビジネスアプリでよく使うものは尽く役に立たない
0549デフォルトの名無しさん
2016/05/24(火) 01:23:01.35ID:6RFz1ZJQボナンザのソースは何行くらいなのかぐぐってみたら2〜3万行だとさ。
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1448320344
これを1ファイルにぶち込むのは普通じゃあない。
0550デフォルトの名無しさん
2016/05/24(火) 01:40:19.17ID:24rCrc9dクラスって言葉の時点で代数的データ型と同じくらいには実装よりな気がするが。。
後 例が将棋って言っても駒の動きなのかAIなのか
AIだと範囲が広すぎ&専門的すぎて例になりにくいし
UIにしても話の焦点がずれる気がするから
将棋のロジックの論点にしようか?
webアプリなのか顧客がいる業務系なのかで設計やドキュメントの意味合いも変わると思うが
0551デフォルトの名無しさん
2016/05/24(火) 01:45:49.17ID:TKpsNxtt> クラスが不要だと思うならクラスを使わない設計をしてくれって何回言えば分かるんだ?
自分は何も出さずに人には出せと言う
出せばここダメあれダメと得意気にダメ出し
0552デフォルトの名無しさん
2016/05/24(火) 01:46:42.61ID:TKpsNxtt> クラスが不要だと思うならクラスを使わない設計をしてくれって何回言えば分かるんだ?
クラスが不要なんじゃなくて設計が不要。
何回言えばわかるんだ?
0553デフォルトの名無しさん
2016/05/24(火) 01:50:13.69ID:TKpsNxtt> ボナンザのソースは何行くらいなのかぐぐってみたら2〜3万行だとさ。
> http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1448320344
> これを1ファイルにぶち込むのは普通じゃあない。
1ファイルって言ってるのは、思考ロジックだけの話だっただろ?
すり替えんなよw
0554デフォルトの名無しさん
2016/05/24(火) 01:58:43.29ID:TKpsNxttreadme.txt に思考部ってのが書いてあって、
> sikou.dll Bonanza 思考部 DLL ファイル
このdllを作るのが、sikou.c (とそのヘッダファイル)の
1ファイルからなってるじゃねーかwww
0555デフォルトの名無しさん
2016/05/24(火) 02:14:51.13ID:DBnZJSfLインターフェースにしろよ
0556デフォルトの名無しさん
2016/05/24(火) 09:18:09.69ID:kp/L/pO10557デフォルトの名無しさん
2016/05/24(火) 09:33:17.14ID:TKpsNxttそれに思考ロジックなんて速度が重要なんだから、
一々内部でメソッド呼び出すとかやりたくないな。
やりたいやつはやってもいいけど、やりたくないやつは
内部で最適化する。
コマの配置や動きのデータも最適化するだろうから、
汎用化にこだわる所じゃない。
よって思考ロジック内部は自由。
設計を作れと言うのなら、設計がない(自由)が
この場合の優れた設計だろうw
0558デフォルトの名無しさん
2016/05/24(火) 11:26:21.90ID:6RFz1ZJQ将棋ソフトを構成するクラスを提示してくれって言ってるが。
>>482とか、モジュールとかしつこいほど繰り返しても分からないお前って…。
設計について何も分かってないんだからアホな書き込みはすんな。
書き込みたいなら「分からないから質問させて:ってトーンで書き込め。
0559デフォルトの名無しさん
2016/05/24(火) 11:29:58.50ID:6RFz1ZJQそういう議論はいいね。
駒の種類が変わらないのにインタフェースにすべき理由はあるかな?
0560デフォルトの名無しさん
2016/05/24(火) 11:31:37.26ID:6RFz1ZJQシステムのすべてのクラスを1つのファイルに書き込みのが望ましいとでも?
0561デフォルトの名無しさん
2016/05/24(火) 11:39:57.64ID:6RFz1ZJQ客に設計を依頼されて、開発チームに「自由に作って」ってさあ…。
設計者と開発者が別れている実プロジェクトを想定しような。
>>535で言ったし、実際のプロジェクトなら当たり前のことだから
普通の経験を想定して考えろ。
>>514も読めないのか?
自分が知ってる業務システムの設計を提示してくれもいいぞ。
×設計いらない
○設計できません
なのは分かってるから、書き込まないでいいよ。
何度も同じことを繰り返すのが面倒だから設計いらないって書き込みは今後はすべてスルーするから。
0562デフォルトの名無しさん
2016/05/24(火) 11:46:53.22ID:6RFz1ZJQクラスを使わない→設計いらないにはならないから。
常識すら知らない素人の相手はこれでおしまい。
0563デフォルトの名無しさん
2016/05/24(火) 13:45:02.78ID:rb+ApEGmBonanzaでいえば、手筋を決めるのは全幅探索だよ。
でも、本当に全幅したら、制限時間収まらないから、
探索木を刈り込んで、選択の範囲を限定してやる。
その限定方法に、王を含む要の3駒の位置関係関係から導きさされる値をしきい値にしているということだよ。
Bonanzaって思考ルーチンが公開されているハズだから、落として読んでみればw
0564デフォルトの名無しさん
2016/05/24(火) 13:58:42.06ID:iG1UUWT4俺の見た感じだと
(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の中身は話してないと思う
0565デフォルトの名無しさん
2016/05/24(火) 14:06:07.08ID:uyx/y43gゲームPGが設計書なんて書かないのはゲームが状態遷移のお化けだから
状態遷移がメインになる時は資料が役に立ちにくい
0567デフォルトの名無しさん
2016/05/24(火) 19:03:58.90ID:6RFz1ZJQ違うだろ。
クラスを分けないにしても設計はないと構築できないって言ってる。
実際のプロジェクトだったら設計書ができて時点で客が確認する。
それを構築チームが読む。
ってやるだろ。
なんで分からないのか不思議。
真剣に疑問なんだが、実際のプロジェクトがそうなってることを知らないのか?
それと、俺は実装する設計が(2)になるなんて言ってない。
最終的な構成がすぐに出ないならまずは論理設計からするのが基本って言った。
0568デフォルトの名無しさん
2016/05/24(火) 19:18:16.62ID:6RFz1ZJQある奴で将棋ソフトの構成案を書き込んだって奴いるの?
いたらレス番を教えてくれ。
0569デフォルトの名無しさん
2016/05/24(火) 20:14:51.18ID:TKpsNxtt> 客に設計を依頼されて、開発チームに「自由に作って」ってさあ…。
だから質問したよね?
なんで答えないの?
模範例として二分探索の設計とはどういうものかを答えろって。
0570デフォルトの名無しさん
2016/05/24(火) 20:19:38.66ID:TKpsNxtt二種類の人間しかいないよw
一つは、(将棋ソフトの中の一部分の)思考ロジックには設計と呼べるようなもの必要ない。
あえて言うならば、思考ロジック内部では、クラスなど何も作らないという設計。
もし追加でなんか要望があるのなら、それに合わせて何か作るかもしれないが、
現時点では要望無いから一番シンプルな設計=クラスなし。
これが俺が言ってること。
そしてもう一つは、思考ロジックにも設計がいるんだ。
駒が何種類かあるのをクラス化して、
動きのルールをクラス化して
盤面に配置をクラス化して
配置された駒が動けるマスをクラス化して
駒の配置とかを見て点数をつけるクラスを作って
そうやって、思考ロジックを作るべきなんだ。
でも俺にはそれをどうすればいいかわからない。
誰かおしえてくれ!
って言ってる無意味に複雑にして何も出来ない、お前w
0571デフォルトの名無しさん
2016/05/24(火) 20:21:59.63ID:6RFz1ZJQ>>538
>>544
現時点で具体的になってないのはすでに書いた通り。
だから、迷う点について意見交換しながら進めようとしている。
反応が全然ない。
一人で考えて設計案を出すことはできること、それならスレでやる意味ないじゃん。
設計案を何も出さないことについてはバカにしてるけど、設計のアイデアに対しては肯定的な
レスを返してるつもりだけど。
0572デフォルトの名無しさん
2016/05/24(火) 20:22:53.94ID:TKpsNxtt> 設計案を何も出さないことについてはバカにしてるけど
そうか。じゃあお前の設計案は?
ムダに複雑にすることかい?w
0573デフォルトの名無しさん
2016/05/24(火) 20:24:47.16ID:TKpsNxtt言ってるのに、逃げてばっかりなんだよなw
0574デフォルトの名無しさん
2016/05/24(火) 20:25:08.60ID:6RFz1ZJQあと、二分探索自体の設計なんて求めていない。
思考ロジックの処理フローとかはいらないって書いたじゃん。
駒の配置を読み込んで、内部の実装(書く必要のない)で点数化して、
最適な手を選ぶって大きな流れを構成するクラスないしモジュールの構成。
0575デフォルトの名無しさん
2016/05/24(火) 20:25:28.59ID:ya5FB131早く社会に出て仕事すればスキルは身に付くと思うよ
いきなり実装レイヤの話から入らないで
まずは概要と仕様を決めないとね
0576デフォルトの名無しさん
2016/05/24(火) 20:26:34.82ID:TKpsNxtt> あと、二分探索自体の設計なんて求めていない。
だから俺が求めてるんだよってw
二分探索アルゴリズムも
将棋の思考アルゴリズムも一緒。
俺の答えは、二分探索アルゴリズムも将棋の思考アルゴリズムも
設計と呼べるものは(現時点では)いらない。
0577デフォルトの名無しさん
2016/05/24(火) 20:28:04.81ID:TKpsNxtt> 最適な手を選ぶって大きな流れを構成するクラスないしモジュールの構成。
駒の配置・・・2次元配列
点数化・・・計算関数
最適な手を選ぶ・・・戻り値
ほっほっほwww
なんでこんなのをクラスにしないといかんのやwwww
0578デフォルトの名無しさん
2016/05/24(火) 20:28:27.44ID:6RFz1ZJQオブジェクト指向システムの設計について話そうってスレなんだから
>>544に対する見解を聞かせてくれ。
例を出したのもそれが目的。
0580デフォルトの名無しさん
2016/05/24(火) 20:31:17.27ID:TKpsNxttオブジェクト指向とは関数(思考ロジック)をオブジェクト指向に変えるものではなくて、
関数を取り巻く世界を扱うものだ。ドアホw
将棋ソフトで言えば、思考ロジック・・・を取り巻く世界、
つまり複数あるかもしれない思考ロジックを入れ替えやすくしたり、
配置データを3Dオブジェクトで表現したり、
そういう、関数(思考ロジック)と関数(その他の処理)を
分類して扱いやすくするものだ。
たとえばフレームワークと呼べる部分がオブジェクト指向だ。
ま、お前、経験足りないってことだなw
0581デフォルトの名無しさん
2016/05/24(火) 20:32:20.22ID:TKpsNxttだから2次元配列の設計というのがどういうものかを言えって。
逃げるな卑怯者。
逃げるな卑怯者。
それに合わせて思考ロジックの設計を答えてやんよwww
0582デフォルトの名無しさん
2016/05/24(火) 20:33:33.14ID:TKpsNxtt>>579
だから二分探索の設計というのがどういうものかを言えって。
逃げるな卑怯者。
逃げるな卑怯者。
それに合わせて思考ロジックの設計を答えてやんよwww
0583デフォルトの名無しさん
2016/05/24(火) 20:53:10.15ID:6RFz1ZJQ0584デフォルトの名無しさん
2016/05/24(火) 21:02:34.83ID:i9YaiJfLこの>>1議論する能力がない
0585デフォルトの名無しさん
2016/05/24(火) 21:08:39.75ID:i9YaiJfL>実際のプロジェクトだったら設計書ができて時点で客が確認する。
この子、客にクラス図みせるのか
まあ下請なら仕方ないか
0586デフォルトの名無しさん
2016/05/24(火) 21:11:09.24ID:TKpsNxtt違うけど俺が専門学校の学生かどうかと、
お前が二分探索の設計を答えないことに
どう関係があるんだ?w
俺が何者であろうと、お前は二分探索の設計を
答えることが出来るはずだ。
答えない代わりに、そういうレスをすることで
反論(?)した気になろうとしてるんだろうが、無駄無駄w
0587デフォルトの名無しさん
2016/05/24(火) 21:17:39.14ID:i9YaiJfLあんまりいじめてやるなよ
0588デフォルトの名無しさん
2016/05/24(火) 21:18:27.86ID:KRMd4EzS題材が悪すぎるよ
どう考えても関数1つで十分
入力は盤の情報と自分と相手の持ち駒ぐらいだし
出力は次の一手オンリー
こんなんじゃ設計書いんないね
のいい例みたいになってる
こういう時に挙げる題材が悪いってのは要は経験が足りないんだろ
少なくとも通信やDBを絡ませるようなもんを出せば資料作んなきゃねって
話になったじゃん
バーカ
0589デフォルトの名無しさん
2016/05/24(火) 21:27:49.83ID:6RFz1ZJQどんな構成になるか説明を求められたとき、お前は何を見せるんだ?
0590デフォルトの名無しさん
2016/05/24(火) 21:29:47.19ID:i9YaiJfL582に言うことか?
0591デフォルトの名無しさん
2016/05/24(火) 21:31:31.83ID:i9YaiJfLこの子、人に物を尋ねる基本的なマナーももちあわせてないのか
まあ仕方ないか
0592デフォルトの名無しさん
2016/05/24(火) 21:32:03.67ID:6RFz1ZJQ>>571で回答したとおり、そもそも意見交換しようってスレなんだから意見交換しようぜ。
設計について会話する気がないならスレにいる意味ねえだろ。
設計について会話が成立しないのは学生っぽいなあって思って。
あんまり必死気に書き込んでたから雑談でもしてやるかと思ったけどスルーしたほうが良かったな。
0593デフォルトの名無しさん
2016/05/24(火) 21:33:32.81ID:6RFz1ZJQ質問じゃねえからw
「何言ってんだこいつ?」ってのをやんわり言ったんだよ。
0594デフォルトの名無しさん
2016/05/24(火) 21:37:36.56ID:6RFz1ZJQ適切な題材があるなら出せばいいじゃん。
他の例ある?あるならその設計について語ってくれ。って何度か書き込んでる。
0595デフォルトの名無しさん
2016/05/24(火) 21:41:00.13ID:6RFz1ZJQ設計を書けばみんな認めてくれるよ!
俺は最初の取っ掛かりは考えて会話の糸口は出した。
何も出していないお前ら。
どっちが無能かは明らかじゃん。
批判してる暇があったら少しは建設的なことやってくれ。
俺が反論できないくらいの設計指針なり、なんかのシステムの設計なりを見せてくれよ。
0596デフォルトの名無しさん
2016/05/24(火) 21:56:38.92ID:DBnZJSfLどうみても適当でない例を引っ張なくてもいいし
0597デフォルトの名無しさん
2016/05/24(火) 21:59:45.35ID:TKpsNxttそんなのはいいからさ、
二分探索の設計はどうしたの?
会話が成立してないのは、俺の投げたボールを
お前が投げ返さないからじゃん。
0598デフォルトの名無しさん
2016/05/24(火) 22:01:11.19ID:TKpsNxtt恥ずかしいセリフだな
> 「俺のほうがスキルある」って主張したい奴がたくさんいるみたいだけど
> 設計を書けばみんな認めてくれるよ!
>
> (そういったら、言い出しっぺの俺に設計を答えろって言われるだろ?
> それは困るから)
>
> 俺は最初の取っ掛かりは考えて会話の糸口は出した。
>
0599デフォルトの名無しさん
2016/05/24(火) 22:07:20.85ID:ya5FB131君のその「高圧的な態度」が問題なんだと思うよ
そんな調子じゃ建設的な話なんてできるわけないでしょw
0600デフォルトの名無しさん
2016/05/24(火) 22:12:13.61ID:iG1UUWT4将棋のクラス構成クレクレ(>>368,388,390,413,454など)
↓
思考ルーチンなんて1クラスになるしクラス図とか不要だろ(複数)
↓
Bonanzaみろよ。1クラスとか普通じゃないだろ(>>549)
↓
実際1ファイルになってました
やはりまず>>1が考えたクラス構成を出して
こんなんだけどどう思うよってやらんと
議論は絶対進まないと思うぞ
0601デフォルトの名無しさん
2016/05/24(火) 22:40:15.63ID:B8/5s3nvみたいに貨物システム考えてみるか?
あれなんかよくわからんのだけれど。。
0602デフォルトの名無しさん
2016/05/24(火) 23:31:04.66ID:6RFz1ZJQ>実際1ファイルになってました
Bonanzaは50ファイルくらいあるらしいけどw
0603デフォルトの名無しさん
2016/05/24(火) 23:36:24.44ID:6RFz1ZJQ「スキルがあるんだー」って主張してるみたいだからオブジェクト指向について少しは語れよ。
0604デフォルトの名無しさん
2016/05/24(火) 23:37:48.35ID:6RFz1ZJQそれでもいいぞ。
どんなシステムなのか概要とか要件とか説明頼む。
0605デフォルトの名無しさん
2016/05/24(火) 23:58:18.37ID:24rCrc9dなんでお前が割り込んでくるの
0606デフォルトの名無しさん
2016/05/24(火) 23:58:32.22ID:iG1UUWT4思考ルーチンのことな
総ファイルじゃなくて
0607デフォルトの名無しさん
2016/05/25(水) 00:00:48.81ID:9xysTXwvいやだからまず>>1が始めろってば
> 「スキルがあるんだー」って主張してるみたい
みんながそうなんだーということにしたいのだろうが
こんな主張してるの
>>522,595
だけじゃね?
少なくとも俺はそう思ってない
0608デフォルトの名無しさん
2016/05/25(水) 00:14:42.01ID:FG6PmAiu今どきのソフトはちゃんと分離されているようだから読んでおいて。
http://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
事前に知っていた訳じゃないけど普通に考えてそうだわな。
0609デフォルトの名無しさん
2016/05/25(水) 00:22:11.48ID:FG6PmAiuそっかそっか。それなら一緒に考えようぜ。
>>544についてコメント欲しい。
あるいは別の進め方とか別の疑問とかでもいいし。
0610デフォルトの名無しさん
2016/05/25(水) 00:36:52.35ID:9xysTXwvこれで何回目になるかわからんが別の進め方
>>1がまず書いて
これどうよって進めないとだめだって
0611デフォルトの名無しさん
2016/05/25(水) 00:37:39.73ID:5QI4GMUE仕様をもっと詰めなきゃ設計に着手すべきじゃない
0612デフォルトの名無しさん
2016/05/25(水) 01:00:24.20ID:kC1gn4Wj将棋ソフトじゃねーぞw
思考ロジックだけの話だ。
これを設計しろとかのたまう。
じゃあ同じような例で二分探索の設計を言ってみろと聞くと
話題のきっかけを与えた俺は答えなくていいとか言うようなことを言って
逃げる逃げるw
0613デフォルトの名無しさん
2016/05/25(水) 01:21:13.25ID:favsXrk5みたいなインターフェースを用意して、好きなように内部を実装すれば良いのでは?
・・・と思った俺は話についていけてない?
0614デフォルトの名無しさん
2016/05/25(水) 01:21:30.67ID:FG6PmAiu質問してるのはまじめな質問だからレスがないなら進める意味がないと感じてる。
とは言え何か欲しいんだろうからざっと考えたER図を。
ちょっと考えただけなので漏れや間違いもあるだろうから改善点の指摘は歓迎だ。
https://drive.google.com/file/d/0B2NKffVh2tpqV1E4SnhSYzh5MVU/view
KomaTypeは駒の種類。駒の動きの情報も含めている。
Komaは盤面上にある駒。
Banmenは局面。
Moveはその局面で指すことができる手。
実際は手によって盤面が進むんだけど、そこをどうするかは決めてない。
あと、盤面で指せる手×指した盤面で指せる手×…というように盤面が増えるんだけど
その関係をどう持つかは決めてない。
なんとなく整理を始めようってくらいなので進めながらいろいろ修正する。
最初のたたき台ってことで。
反応があれば次はモデルクラスを考えてみる。
ちなみにオンラインでチャートが書けるサイトを見つけて書いてるけど
https://www.draw.io/
操作方法は良く分からない。
リレーションの1:Mとか必須かどうかとかはおかしいかもしれないけど
細かい部分は気にしないでくれ。
0615デフォルトの名無しさん
2016/05/25(水) 01:29:02.28ID:FG6PmAiu電王戦に出るソフトって以上のことはイメージないぞ。
要件はここにPDFがあった。
http://denou.jp/tournament2015/rule.html
0616デフォルトの名無しさん
2016/05/25(水) 01:36:24.48ID:9xysTXwvとりあえず乙
反応なくても恨んでくれるなよwww
主張的にFuとかKeimaとかのクラス作るのだろうと予想してたけど外れた
KomaTypeやKomaは内部でめっちゃif文分岐しそうだな
0617デフォルトの名無しさん
2016/05/25(水) 01:39:41.54ID:FG6PmAiu保持すべきデータの整理だからクラスの手前。
クラスは最初は分けた設計にすると思うよ。
途中でまとめたり、そもそもクラスじゃないってなるかもしれないけど
設計の最初はきっちりクラスを作ったほうが機能漏れが減ると思う。
0618デフォルトの名無しさん
2016/05/25(水) 01:39:45.11ID:9xysTXwvクラス図描くならcacooとかどうよ
0619デフォルトの名無しさん
2016/05/25(水) 01:41:53.66ID:FG6PmAiuほー、そんなのもあるんだ。
クラス図を書くことになったら両方試して使いやすいほうを選ぶ。
0620デフォルトの名無しさん
2016/05/25(水) 02:26:37.41ID:favsXrk5おー乙
俺は・・・盤面の評価の仕方はおろか将棋のルールさえ良く知らない、という現実に気づいたから不貞寝する
0621デフォルトの名無しさん
2016/05/25(水) 09:00:39.59ID:nXtYFHtEまだオセロの方がいいだろ
なんで将棋を例に出したん
0622デフォルトの名無しさん
2016/05/25(水) 09:20:06.31ID:FG6PmAiuこの前の週末に電王戦をやってたから。
0623デフォルトの名無しさん
2016/05/25(水) 09:23:00.16ID:FG6PmAiuあとは業務システムよりは知ってる奴が多くて分かりやすいから。
ちなみにオセロだと派生クラスとかの話は出なそうだな。
0624デフォルトの名無しさん
2016/05/25(水) 09:31:16.83ID:kC1gn4Wj将棋のルール複雑か?
手数が膨大で処理がかかることと、
複雑さは別問題。
駒の動き+手駒 = 再帰処理する上での枝の数と考えれば
後は再帰と評価関数じゃん?
0625デフォルトの名無しさん
2016/05/25(水) 09:31:22.01ID:FG6PmAiu盤面上にある駒には成ってる駒と成ってない駒があるのと
駒ごとに成れる成れないがあるので、それを追加。
https://drive.google.com/file/d/0B2NKffVh2tpqV1E4SnhSYzh5MVU/view?usp=sharing
0626デフォルトの名無しさん
2016/05/25(水) 09:35:18.26ID:kC1gn4WjKomaType(苦笑)
データベースでもいるんだわ。
データが増減するわけでもないのに、値と名前の
対応表テーブルを作り出してデータベースに入れるやつ。
データベースアクセス無いと名前が取り出せないw
えとな、こういうのは定数としてコード上に
defineでもしてればいいのよ。
0627デフォルトの名無しさん
2016/05/25(水) 09:39:04.05ID:FG6PmAiuあ、また来たw
ちがう設計の仕方があるならそれでやって見せてくれ。
お前「それは間違ってる」
俺「それだけじゃ無意味だから正しいやり方とかアイデアは?単にケチつけたいだけじゃんw」
お前「…」
何回同じこと言われれば分かるんだろ。
0628デフォルトの名無しさん
2016/05/25(水) 09:41:09.56ID:FG6PmAiuデータを整理するって書いたじゃん。
データを整理する別の手法があるなら教えてね。
設計しないで構築できちゃうって主張したいみたいだからdefineを書いてくれてもいいよ。
0629デフォルトの名無しさん
2016/05/25(水) 10:08:40.60ID:r8UScIDoよーしまずは設計からだ!与えられた数に対して何かするクラスConsumerと、1から100の数を出力するGeneratorが要るな!
Fizzを出力するクラスはConsumerを継承させよう!同じ方法でBuzzもFizzBuzzも作ろう!
どれにも共通する振る舞いは「それ以外の数ならその数を」という部分だな!これはConsumerに書こう!
1. Fizz => Buzz => FizzBuzzと継承させたらロジックを複雑にしなくて済むしコピペコードも無い!OOPは最高や!
2. 問題になるのはGeneratorから与えられた数をどのConsumerに渡すか、だな!じゃあConsumerManagerを作って、こいつに管理させよう!
見通しが良くなったし後から拡張も簡単にできるな!OOPは最高や!
末路→https://github.com/EnterpriseQualityCoding/FizzBuzzEnterpriseEdition
0630デフォルトの名無しさん
2016/05/25(水) 10:58:41.63ID:OQdKu81qDBアクセスはキャッシュの仕方で軽減できるな
どうぶつ将棋や摩訶大将棋に拡張したり、I18n対応を考えるなら、ラベルをDBに持っとくのは悪くないと思う
0631デフォルトの名無しさん
2016/05/25(水) 11:09:06.28ID:FG6PmAiuBonanzaとかAperyとかはたぶんフラットファイルで持ってるんだろうけど
俺だったらDBに格納しちゃうな。
業務システム系やってるとデータはDBに格納して操作したほうが楽ってなっちゃうわ。
ってことで、定跡DBの設計って観点から考える必要が出てきた。
0632デフォルトの名無しさん
2016/05/25(水) 11:10:17.24ID:FG6PmAiu0633デフォルトの名無しさん
2016/05/25(水) 13:45:46.81ID:Rwgeje6L0634デフォルトの名無しさん
2016/05/25(水) 15:24:30.40ID:FG6PmAiu>>358とか、>>431とかについて話すのが目的だから将棋ソフトはそのきっかけってだけなんだけどさ。
将棋ソフトについても設計の手順はどうするのがいいとか、
俺は業務システムの開発経験しかないからゲームやってる人達のプロセスを聞きたいとか
設計がらみの話題について語れる人が来てくれるといいけど。
0635デフォルトの名無しさん
2016/05/25(水) 18:54:37.16ID:5WrCkf94クラスが肥大化したとき?
0636デフォルトの名無しさん
2016/05/25(水) 19:14:40.11ID:driOGhFD何度も呼ばれる処理を切り出して再利用
特異な事をしているという表明
お好きにどうぞ
0637デフォルトの名無しさん
2016/05/25(水) 19:25:19.33ID:5WrCkf940638デフォルトの名無しさん
2016/05/25(水) 19:56:03.70ID:OXIFfwZqエ口巨乳とパコリwwwwwwwwwwwwwwww
http://ccdotcc.altiusinc.com/3769
0639デフォルトの名無しさん
2016/05/25(水) 20:03:23.09ID:VNiDmyVP面白いw
Star 5,292 なのは、同感する奴も多いんだろう。
Fork 288 ってのは意味不明だが。(さすがにForkする必要はない)
Javaなのはやはりというべきか。>>1もJava屋だし。
0640デフォルトの名無しさん
2016/05/25(水) 20:16:03.29ID:kC1gn4Wj> ちがう設計の仕方があるならそれでやって見せてくれ。
だから定数としてdefineすればいいって言ってるじゃん?
なんで読めないのかな?
自分が望む答えじゃないと無視するタイプ?w
0641デフォルトの名無しさん
2016/05/25(水) 20:18:32.97ID:kC1gn4Wj> I18n対応を考えるなら
なんで世の中のi18nの対応がデータベースに保存するんじゃなくて
gettextやymlを使った翻訳の仕組みがデフォルトだと思ってるんだよw
オレオレで仕組みを作るんじゃなくてフレームワークなどの
ごく当たり前のやり方を使えばいいんやで?
0642デフォルトの名無しさん
2016/05/25(水) 20:18:56.00ID:FG6PmAiuそれじゃ要件をまったく満たせていないからやり直し。
ER図を読めれば足りないことくらい分かるんだけどなあ。
0643デフォルトの名無しさん
2016/05/25(水) 20:21:03.58ID:6PTcoeR/0644デフォルトの名無しさん
2016/05/25(水) 20:22:55.79ID:kC1gn4Wj> 業務システム系やってるとデータはDBに格納して操作したほうが楽ってなっちゃうわ。
楽?
変数のほうが楽だろ?
「楽」っていうのは意味が二通りあって、
「実装するのが楽」と「学習するのが楽」がある。
後者はようするに、新しいこと覚えたくないーとか、
連想配列を知った人が、適当な場合でもないのに、なんでも連想配列使って実装する。
学習するのが面倒で、やっとのことで覚えたら、そればっかり使おうとする人。
「DBに格納して操作したほうが楽」っていうのは、もちろん後者だろうな。
実装が楽じゃなくて、覚えなくていいから楽という意味で使っている。
思えばお前のやり方もそうなんだよ。
クラスを知ってしまった。これ以上新しいことを知りたくない。
だから適当な場合でもないのに、クラスばっかり使おうとしている。
0645デフォルトの名無しさん
2016/05/25(水) 20:23:34.56ID:kC1gn4Wj> それじゃ要件をまったく満たせていないからやり直し。
満たしていない部分がどこかを答えてみ。
お前の考えなんてわからんよw
0646デフォルトの名無しさん
2016/05/25(水) 20:24:57.76ID:kC1gn4Wj何で間違えたんだろ?
0647デフォルトの名無しさん
2016/05/25(水) 20:26:33.41ID:FG6PmAiu盤面・手の情報をどうやって保持すんのよ?
ERに明示されているのに分からないって…。
0648デフォルトの名無しさん
2016/05/25(水) 20:29:19.24ID:kC1gn4Wj盤面の情報なら、二次元配列で持てるだろ?
手の情報ってなんだ? 駒の動きか?
そんなのswichで種類を分岐して、動かせる場所を列挙すればいいだけだろう?
0649デフォルトの名無しさん
2016/05/25(水) 20:30:35.43ID:kC1gn4Wjあ、今気づいたけど、お前、連想配列(ハッシュ)を知らんだろ?
0650デフォルトの名無しさん
2016/05/25(水) 20:31:04.99ID:FG6PmAiu他の人が分かるように明確に書こうね。
お前は設計書の書き方をしらないみたいだからコードで書いてくれる。
0651デフォルトの名無しさん
2016/05/25(水) 20:36:21.84ID:FG6PmAiuCで言うところのヘッダファイルの内容でいいぞ。
どうやって保持しようとしてるのか第三者にもちゃんと伝わる形で書けってこと。
設計を書けるなら設計でもいいぞー。
0652デフォルトの名無しさん
2016/05/25(水) 20:37:04.26ID:kC1gn4Wjswitch(koma) {
case KEIMA:
次に動ける箇所(複数)にコマを動かして評価関数呼び出し
}
0653デフォルトの名無しさん
2016/05/25(水) 20:38:47.79ID:FG6PmAiuしょぼっw
まさかこれで終わりじゃないよな??
0654デフォルトの名無しさん
2016/05/25(水) 20:39:47.00ID:kC1gn4Wjムダに複雑にするなよw.
お前、手段が目的にすり替わってるぞ。
沢山コードかくことが、ちゃんと仕事した証拠なんだって
思ってるだろw
0655デフォルトの名無しさん
2016/05/25(水) 20:40:58.77ID:kC1gn4Wj正しいか間違っていからじゃなくて、
しょぼいかどうかw
0656デフォルトの名無しさん
2016/05/25(水) 20:42:29.45ID:FG6PmAiuこれで第三者がお前の考えを理解して構築できるようになると考えているならとんでもなくおめでたい。
客にこんなの出したら呆れられて「もう来ないでいいよ」って言われる。
0657デフォルトの名無しさん
2016/05/25(水) 20:43:25.03ID:FG6PmAiuどういう構成を想定してるのか全然伝わらない。
0658デフォルトの名無しさん
2016/05/25(水) 20:44:08.66ID:kC1gn4Wj> どうぶつ将棋や摩訶大将棋に拡張したり、
YAGNI
https://ja.wikipedia.org/wiki/YAGNI
"You ain't gonna need it"[1]、縮めて YAGNI とは、機能は実際に必要となるまでは追加しないのがよいとする、エクストリーム・プログラミングにおける原則である。
理由
YAGNI原則を提唱する人々は、その理由として以下を挙げている。
・後で使うだろうという予測の元に作ったものは、実際には10%程度しか使われない。したがって、それに費やした時間の90%は無駄になる[2]。
・余計な機能があると、仕事が遅くなり、リソースを浪費する[2]。
・予期しない変更に対しては、設計を単純にすることが備えとなる。そして、必要以上の機能を追加すると、設計が複雑になってしまう[2]。
・人生の時間は、貴重である。したがって、人間の能力は、ただコードを書くためではなく、現実の問題に集中するために使うべきである[3]。
・結局は、その機能は必要ないかもしれない。もしそうなったら、あなたがその機能を実装するのに費やした時間も、他のみんながそれを読むのに費やした時間も、その機能が占めていたスペースも、すべて無駄になってしまうだろう[3]。
・コードをすばやく実装するために最も良い方法は、あまりコードを書かないことである。そして、バグを減らすために最も良い方法も、あまりコードを書かないことである[3]。
0659デフォルトの名無しさん
2016/05/25(水) 20:44:55.61ID:kC1gn4Wj> どういう構成を想定してるのか全然伝わらない。
それはお前のER図の話だw
何を想定しているかわからないから、
そんなのいらんだろって言ってる。
0660デフォルトの名無しさん
2016/05/25(水) 20:45:40.89ID:kC1gn4Wjえ?なんで?w
いつもながら理由が書いてないなw
0661デフォルトの名無しさん
2016/05/25(水) 20:46:43.66ID:FG6PmAiuER図を理解できない奴発見wwww
ERが分からないって言って出してきたのが、これ??
switch(koma) {
case KEIMA:
次に動ける箇所(複数)にコマを動かして評価関数呼び出し
}
笑わせよるわ〜www
0662デフォルトの名無しさん
2016/05/25(水) 20:49:13.86ID:kC1gn4Wj動ける場所はデータとして持たせることは難しいんだよな。
歩とか金とかならまだいいけど、
飛車とか角とか縦横または斜めのどこにでも動けるから
この動きをデータとして持たせるのは不可能じゃないけど、
結局コードが必要になるので冗長
0663デフォルトの名無しさん
2016/05/25(水) 20:49:27.02ID:FG6PmAiuお前が設計を分かってないとは感じていたけどここまで分かってないとは思ってなかったwww
もう休んでいいぞ。
設計について語ろうってスレに書き込んじゃだめなレベルだから。
0664デフォルトの名無しさん
2016/05/25(水) 20:50:28.37ID:kC1gn4Wjお前、何一つ言い返していない。
俺がやったことを、単にお前が語ってるだけ。
それでお前はどうしたいんだ?
0665デフォルトの名無しさん
2016/05/25(水) 20:51:09.26ID:kC1gn4Wj> 設計について語ろうってスレに書き込んじゃだめなレベルだから。
って、それお前が沢山の人に言われたセリフだよなw
0666デフォルトの名無しさん
2016/05/25(水) 20:57:18.51ID:FG6PmAiucase KEIMA:
次に動ける箇所(複数)にコマを動かして評価関数呼び出し
}
を構築チームに渡せばお前の考えている構成が伝わると思ってる相手と
技術的な会話を成立させるのは無理だわ。
あー、ちなみにERはほんの最初だから。
設計の5%くらいは進んだかなあってレベル。
それも分かってなかったみたいだね。
0667デフォルトの名無しさん
2016/05/25(水) 20:57:36.43ID:9xysTXwv面白いよなwww
さすがにソース全部見る気にはならんが
インターフェースのなかの
ストラテジーやらファクトリーやらビジターやら見てみて
ようやるわ!
って感じでうけたwww
0668デフォルトの名無しさん
2016/05/25(水) 20:59:24.44ID:la8ZiYsl将棋を知らないのかもしれんがあまりにお粗末
0669デフォルトの名無しさん
2016/05/25(水) 22:06:55.68ID:60iV75hD0670デフォルトの名無しさん
2016/05/25(水) 22:12:02.90ID:FG6PmAiuID:kC1gn4Wjかなw
0671デフォルトの名無しさん
2016/05/25(水) 22:13:41.56ID:60iV75hD0672デフォルトの名無しさん
2016/05/25(水) 22:17:42.15ID:FG6PmAiuどこから再帰を見出したのが謎過ぎるw
0673デフォルトの名無しさん
2016/05/25(水) 22:19:58.55ID:60iV75hDキューに入れないで関数呼び出してるから再帰かと
0674デフォルトの名無しさん
2016/05/25(水) 22:25:15.21ID:FG6PmAiuそうかそうか。
突っ込みどころ満載のなんちゃってコードについてもっと語り合って楽しみたいんだけど
他の人の迷惑になるから心残りだけどおしまいにするよ。
まじで楽しませてもらったw
0675デフォルトの名無しさん
2016/05/25(水) 22:25:22.62ID:7yHwSTArとりあえずここから bonanza のソース取ってきて、
src/client/evaluate.c でも読んでみたらいい。
0676デフォルトの名無しさん
2016/05/25(水) 22:29:11.19ID:FG6PmAiuBonanzaの設計はひどいって聞いたから読むならAperyだな。
でも、将棋ソフトを作りたいんじゃないから。
将棋ソフトを例に、システムを設計するにあたって抱く疑問点に対する一般的な指針を語りたいんだ。
0677デフォルトの名無しさん
2016/05/25(水) 22:37:37.91ID:60iV75hD0678デフォルトの名無しさん
2016/05/25(水) 22:38:35.12ID:fBBvLnfIだってそもそもいい設計って何?
どうなれば満足なの?
0679デフォルトの名無しさん
2016/05/25(水) 22:39:36.05ID:60iV75hD0680デフォルトの名無しさん
2016/05/25(水) 22:41:35.38ID:fBBvLnfI俺が刺した瞬間にCPU側が指し終わってるぐらいで丁度いい
つまりクリックイベントと開始ボタンの処理だけで十分
0681デフォルトの名無しさん
2016/05/25(水) 22:42:53.48ID:7yHwSTArだったら上記のソースの駄目なところと
それをどのように改善すべきなのか言ってみたらいいだろう。
てかこのくらいのコードも読めないならそもそも話にならんと思うんだが。。
0682デフォルトの名無しさん
2016/05/25(水) 22:44:20.19ID:FG6PmAiuそこまで言うならどういう構成になってるのか読んで理解してアップすればいいじゃん。
0683デフォルトの名無しさん
2016/05/25(水) 22:46:51.60ID:7yHwSTArここまで手取り足取り要求されるのはかなわんわ。。
0684デフォルトの名無しさん
2016/05/25(水) 22:50:20.97ID:FG6PmAiuは?俺からは一度も要求してないが。
お前は簡単に読めちゃうって言ったんだからだったら読めばってだけ。
俺はそもそも仕様書書くべきって考えだから。
0685デフォルトの名無しさん
2016/05/25(水) 22:53:53.99ID:fBBvLnfI→駒移動(クリックイベント処理)
勝利判定→敵のターン!→敵思考ルーチン処理
→敵駒選択→敵駒移動→勝利判定→俺のターン!→以下ループ
勝利判定したら→結果表示→もう一度やる?→Yes:駒配置に戻る→No:将棋.exe終了
できた!
0686デフォルトの名無しさん
2016/05/25(水) 23:00:09.81ID:FG6PmAiuほうほう。多少違ってるけどまずまず。
後手のケースもある。
人のターンの最中もソフトは思考を続ける。
0687デフォルトの名無しさん
2016/05/25(水) 23:04:17.28ID:fBBvLnfI後手のケースは敵のターンから始めるだけだ
exeの起動パラメータに「うんこ」っていれると後手になる
0688デフォルトの名無しさん
2016/05/25(水) 23:05:30.70ID:FG6PmAiu勝利判定の位置も思考して初めて勝利判定できるからちょっとおかしいな。
0689デフォルトの名無しさん
2016/05/25(水) 23:06:08.87ID:60iV75hD0690デフォルトの名無しさん
2016/05/25(水) 23:06:16.40ID:VNiDmyVP一流()の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はそれを全否定しているのだから、ここはとりあえず放置しかないだろ。
0691デフォルトの名無しさん
2016/05/25(水) 23:08:11.77ID:FG6PmAiu論理設計を知らないんだね…。
0692デフォルトの名無しさん
2016/05/25(水) 23:08:59.99ID:fBBvLnfIいいや合ってるはずだ
0693デフォルトの名無しさん
2016/05/25(水) 23:09:26.74ID:60iV75hDプリミティブ型(int, long, etc)のvectorは羨ましい
あとpairとかつまりstd最高
0694デフォルトの名無しさん
2016/05/25(水) 23:10:00.78ID:60iV75hDstlねw
0695デフォルトの名無しさん
2016/05/25(水) 23:11:58.52ID:FG6PmAiuそうか?
それなら勝利判定と思考ルーチンの関係がはっきりしないからかもしれん。
ロジック部分の設計はまったく未着手だからこれからか。
0696デフォルトの名無しさん
2016/05/25(水) 23:13:00.88ID:uKYFBn7CMoveってのは自分の手番でさせる手を洗い出して格納するって事?
それって必要?
0697デフォルトの名無しさん
2016/05/25(水) 23:15:28.62ID:fBBvLnfI勝利判定って王をとったかどうかですよ
0698デフォルトの名無しさん
2016/05/25(水) 23:16:24.59ID:FG6PmAiuデータを整理するためにER図を使っただけ。
>>628で「データを整理する別の手法があるなら教えて」って書いたのはそういうのもある。
ただ、>>631があるから過去の棋譜はDBに格納する方針にした。
0699デフォルトの名無しさん
2016/05/25(水) 23:19:38.28ID:FG6PmAiuあー、そういうこと。
電王戦見てたら棋士は勝つ見込みがなくなったら投了するんだと。
ソフトは逃げる手がなくなるくらいまで続けるけど、王を取られるとこまではやらない。
まあ、そこは単なる将棋のルールなんでどういう意図で設計したかは了解した。
0700デフォルトの名無しさん
2016/05/25(水) 23:26:27.98ID:uKYFBn7Cいやいやいや
ER図なんだからDBに保存されるデータ構造だよね
多分やりたい事はクラス図なんじゃないの
0701デフォルトの名無しさん
2016/05/25(水) 23:28:05.15ID:VNiDmyVPあるように見えるけど、
これは<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スレでということならこちらも移る。
0702デフォルトの名無しさん
2016/05/25(水) 23:29:15.28ID:driOGhFD0703デフォルトの名無しさん
2016/05/25(水) 23:29:50.65ID:FG6PmAiuやりたいことは保持すべきデータの整理。
UMLではクラス図を使うのは知ってるんだけど、データ構成の明確な指針が書かれた本とかある?
データベースの表設計は正規化のルールがかなりきっちりあるからそれを守れば
誰が設計してもほぼ同じ形になる。
業務システムならどうせ表に格納するってこともあるからERからやっちゃうんだよねえ。
実際どうなんだろうと思ってはいるんだけど。
0704デフォルトの名無しさん
2016/05/25(水) 23:34:56.63ID:FG6PmAiu実際の終了条件はいくつかあるからそうだろうね。
二歩とかもあるもんな。
0705デフォルトの名無しさん
2016/05/25(水) 23:37:00.20ID:uKYFBn7CEやTは総称型(ジェネリック)を表してるだけで別に意味はなくてXでもAでもなんでもいい
プリミティブ型は指定できないけどAutoBoxingされるから利用上はプリミティブが使える
0706デフォルトの名無しさん
2016/05/25(水) 23:44:52.07ID:9xysTXwv0707デフォルトの名無しさん
2016/05/25(水) 23:45:42.01ID:VNiDmyVP> AutoBoxing
サンクス。まあ普通はそうだよな。それで大して問題にならないだろうし。
0708デフォルトの名無しさん
2016/05/25(水) 23:47:32.64ID:QzZ3vWh9データの整合性の管理はうまくいくんだけど・・・
複数のオブジェクトにまたがる処理をどのクラスに書こうかと悩んで
どれか一つのクラスに押し込んだり
または、元は一連の一つながりの処理だったものを分断して彼方此方にちりばめたり
もともとの発想がね、オブジェクト中心ってのが、なんか、バカっぽいでしょ
オブジェクトは何か物体感があるから、それ中心で考えるのは子供でも理解できてわかりやすいけど
世の中大人の世界はそんな発想で動いてないからねぇ
目に見えない何かのほうが重要だったり
0709デフォルトの名無しさん
2016/05/25(水) 23:49:10.47ID:FG6PmAiuオブジェクトをちゃんと理解していないからオブジェクト指向をバカにするのはやめましょう。
「使いたくない」ってだけなら個人のご自由にどうぞ。
0710デフォルトの名無しさん
2016/05/25(水) 23:58:14.27ID:FhH1DHd+だから保持ってのがアプリが終わっても保持なのか実行中だけ必要なのかが考えられてないんじゃないの?
アプリが終わっても必要なのって棋譜データだけなんじゃない
アプリ実行中に必要なデータはクラス図で書いて、処理間の受け渡しはデータフロー図で書いて、受け渡しの情報として足りてるかを判断しながら設計サイクル回せばええんでないの
正規化とか落とし込み以前の考察を吹っ飛ばしてら感が否めない
0711デフォルトの名無しさん
2016/05/26(木) 00:00:24.78ID:0AsVpwBA0712デフォルトの名無しさん
2016/05/26(木) 00:01:34.72ID:Xc1/bPBxいや俺のなかじゃ区別できてるよ。
まあ、そこは言い争ってもしょうがないので話題を少し変えると、
�@将棋ソフトの設計をオブジェクト指向でやるとしてどういうステップでやる?
�Aクラスに分けるときの方針は?明確な指針を探しているんだけど見つけられていない。
0713デフォルトの名無しさん
2016/05/26(木) 00:10:48.99ID:Xc1/bPBxもっと具体的に言うと例えば駒クラスを作ってそのサブクラスとして王クラス、飛車クラス、…と作ることも可能だし、
駒は情報として使うだけでクラスは必要ないって考え方もある。
手についても同じようにクラスにするかしないかどっちもあり得る。
そういうときにどのような構成にするかどうやって判断すべきだろう?
0714デフォルトの名無しさん
2016/05/26(木) 00:12:03.37ID:Xc1/bPBx0715デフォルトの名無しさん
2016/05/26(木) 00:15:25.90ID:y/d2Tqn1だからいくら議論しても無駄なんだよな
自分の発言を正当化するためにいろんな基準をその時々で変えるんだよな
俺は資料とソースを一致させるための設計であると思ってる
別に構造がクソでも資料と一致していれさえすればいい
だから設計書のないソースは評価できない
いいも悪いもよくわからない
何を基準に何のために設計したのかわからない
資料に表現しやすいソースであるべきだし
ソースを追える資料であるべきだと思う
俺はね
0716デフォルトの名無しさん
2016/05/26(木) 00:16:44.44ID:Xc1/bPBxID:FhH1DHd+じゃないよな?
0717デフォルトの名無しさん
2016/05/26(木) 00:17:46.75ID:y/d2Tqn1idなんか見てる奴は素人
0718デフォルトの名無しさん
2016/05/26(木) 00:18:46.69ID:Xc1/bPBxプロは何で確認すんだよw
分かりにくいからはっきり答えろ。
0719デフォルトの名無しさん
2016/05/26(木) 00:25:44.91ID:J6SaR2wI⑴要件を定義する → ⑵設計の方針を決める → ⑶設計する
いきなり設計しろ設計しろとか言ってるわりに方針が見つからないとか馬鹿げてるし
将棋ソフトも要件決めてない(もしくは提案者の頭の中にしかない)から
思考ルーチン単体なのか将棋ソフト全体なのかすらも話題が定まってない
グダグダでどうにもならない悪い見本にしかなってない
0720デフォルトの名無しさん
2016/05/26(木) 00:28:15.06ID:Xc1/bPBx要件>>615
将棋ソフト全体
0721デフォルトの名無しさん
2016/05/26(木) 00:45:23.61ID:UZPGQYZs結局は以下の繰り返しでしょ
1. 自分の手番でさせる駒と位置のリストを出す
2. リストから1つ選んでさす
3. 相手の手番でさせる駒と位置のリストを出す
4. 相手がさす
5. 相手の指し手がリストにあるか判断
っで、最初は2の実装はリストの先頭の手を返すように作り、後で勝てる指し手を判断するロジックに変える
5も同じで、相手の指し手の評価をするロジック後で追加する
そん次は2手3手先読みして勝てる判断の制度を上げるために4の処理を3で出したリストで片っ端に当てはめて2手3手先の組み合わせを評価する
なんて事してると組み合わせが多すぎるので悪手の組み合わせは評価しないとかふるいをかけるって感じで精度を上げていくけど、1から5のインターフェースは一貫して変わらない様にするならどーする?って考えるのが設計なんじやないかな
0722デフォルトの名無しさん
2016/05/26(木) 00:48:45.72ID:UZPGQYZs0723デフォルトの名無しさん
2016/05/26(木) 00:49:43.97ID:Xc1/bPBxID:FhH1DHd+だったら明記してくれ。
話が続いていない気がするんだけどよく分からん。
0724デフォルトの名無しさん
2016/05/26(木) 00:53:34.08ID:Xc1/bPBx同じ人なのか?
�Aクラスに分けるときの方針は?
について話したいから戻っていい?
>>713と>>714についてはどう思う。
かっちりした明確な基準はないならないでいいんだけど回答欲しい。
探しても見つけられていないから知ってたら知りたい。
0725デフォルトの名無しさん
2016/05/26(木) 00:58:55.60ID:Xc1/bPBx設計中に出てくる個々の疑問を決定する際の明確に指針になるかというと
ならないと思う。
俺自身もそれとそんなに変わらない程度の指針に基づいて決定してるんだけど
誰が設計してもある程度同じものができる指針ってないもんかねえって思ってる。
0726デフォルトの名無しさん
2016/05/26(木) 02:26:59.05ID:mpyGJ1z1クラスを作る作らないの判断基準、将棋の駒は良くわからんが・・・
「通貨オブジェクト」とか参考にならないかな?
【実装】
通貨記号Enumと価格BigDecimalで別々に扱っていたのを一つのイミュータブルなクラスにまとめる。
加減算と乗除算メソッドがあり、加減算は同通貨とのみ可能、乗除算は数値とのみ可能とする。
【効果】
不用意なデータ破壊(JPYとUSDを足した等)の危険が減る。
通貨の振る舞いを通じて、プロジェクトメンバーの業務知識が向上する。
もちろん、採用するかの判断は別。
「並の人間がこんなアホな加算などするはずがない。面倒くさい事すんなよ。」とは俺も思う。
0727デフォルトの名無しさん
2016/05/26(木) 05:27:22.00ID:bwhpCAq0現在の盤面(持ち駒含む)を入力を盤面として、指し手を出力として返す関数以外に力を入れる必要性は無い。
「どうぶつ将棋や軍人将棋などのルール変更に対応できるようにしたい」とか「過去の棋譜データを表示できるようにしたい」とかいう要請を入れない限り、
上にあったようなER図とか過去の棋譜データをDBに格納するとかの設計は思考ルーチンの足かせになるし、無駄になる。
「思考ルーチンは書けないけど些末事は任せろ!」と本質の邪魔しかしない設計をしてる奴を何と呼ぶか、俺は知ってるぞ。
0728デフォルトの名無しさん
2016/05/26(木) 06:11:02.88ID:UjMbTLsxオブジェクト指向とは、あまり関係がない
0729デフォルトの名無しさん
2016/05/26(木) 07:24:48.28ID:c+TCNzeKYAGNI原則のプログラミングスタイルが取りやすい言語もしくはToolはなに?
C++のクラスを書く前のクラスの要件定義と必要なメンバ関数、メンバ変数を書き出して
少しずつ実装すると頭がスッキリした感じでコードが書けるのだけど
>>662
コマのデータを全部持つのじゃなく抽象化して、取り出した後、次の動作で移動可能な座標の
配列を作ってそれを評価するの
歩ー>成金?−>一歩前or金と同じ範囲
みたいに
これを一盤面分作って、一手先を計算評価する
それを繰り返し〜n手先の評価点も元に次の挙動を決める
恐ろしい計算量だね
0730デフォルトの名無しさん
2016/05/26(木) 07:29:56.12ID:c+TCNzeKうすうす気がついていたけど、そうなんだ(ギャーーーー悲鳴
0731デフォルトの名無しさん
2016/05/26(木) 07:35:50.77ID:c+TCNzeKC++のクラスって表現できる内容に厳しい縛りとか制限がないから
アホが作ったプログラムー>スパゲティ
同class->収拾の付かない理解不能な何かになる
0732デフォルトの名無しさん
2016/05/26(木) 08:29:42.66ID:6psiGDvx0733デフォルトの名無しさん
2016/05/26(木) 10:21:56.92ID:mpyGJ1z1課金スタイル考えよーぜ
謝罪文の掲載、アイテムの無効化、購入者抽出、アイテムの使用された対局の抽出、お詫びメールの送信、補填処理、省庁/監査対応etc...
いろんなオペレーションに対応できる、そんな設計が必要になるぞ
0734デフォルトの名無しさん
2016/05/26(木) 10:57:47.33ID:GCo9DDJMオブジェクト指向より関数型のほうが絶対綺麗になりそう
0735デフォルトの名無しさん
2016/05/26(木) 11:12:52.45ID:Xc1/bPBxなるほど!
確かに複数の属性が不可分一体となってある要素を構成しているような場合は
それらの値をオブジェクトにまとめるべきなんだろう。
となると、手は動かす駒、動かす先、成るかならないか、がまとまって初めて手になるんだから
オブジェクトとするのが自然だな。
盤面も同じようにすべての駒が配置された状態を表すんだからやっぱりオブジェクトにすべきだろう。
さらに言えばマスも縦と横の両方が合わさっているからオブジェクトにするのがよいのかなあ。
0736デフォルトの名無しさん
2016/05/26(木) 11:17:52.52ID:Xc1/bPBx思って多少抵抗があったんだけど、まずは本来オブジェクトにすべきものは
オブジェクトにした設計を完成させるのが良い気がしてきた。
パフォーマンスなどの考慮した加工は後の段階からすればいいこと。
0737デフォルトの名無しさん
2016/05/26(木) 11:22:11.08ID:Xc1/bPBx実際の構成がイメージできるように、もうちょっと具体的にならんだろうか?
0738デフォルトの名無しさん
2016/05/26(木) 11:29:07.18ID:Xc1/bPBx将棋は十分ごちゃごちゃしてると思うが。
実際考え出したら思ってた以上に複雑だった。
簡単っていうなら設計を提示してみ。
>>652を見てからは、設計が単純って言ってる奴は設計のことを分かってないだけ
じゃないかと思ってしまう。
0739デフォルトの名無しさん
2016/05/26(木) 11:36:16.69ID:Xc1/bPBx駒がうごけるマスのデータをどう持つかはまだ決まってない。
駒によって動けるマスが違うってことをERに忘れることがないように明記しておいた。
データ的に言えば駒に依存して動きが決まるんだからまさに駒の属性情報。
設計の最初は実装をあまり気にせずに業務(将棋?)的に求められる要件を整理するのが基本だ。
0740デフォルトの名無しさん
2016/05/26(木) 11:36:51.89ID:Xc1/bPBx0741デフォルトの名無しさん
2016/05/26(木) 11:56:46.07ID:EltQ4sqzオブジェクトじゃなかったらなんなの?
0742デフォルトの名無しさん
2016/05/26(木) 11:59:47.73ID:GCo9DDJM同じJVM言語のscalaでもプリミティブがオブジェクトでタプルもあるべ
javaさんがちょっとアレなだけ
>>737
要件があんま定まってないので明確な事はいえないが
オブジェクト同士のメッセージパッシングを使うオブジェクト指向よりも
パーサーコンビネーターなんかもそうだけど
データを定義して 参照透過な関数にそれを食わせるっていう関数型の方が将棋にあってるんじゃないか
0743デフォルトの名無しさん
2016/05/26(木) 12:05:05.28ID:Xc1/bPBxコレクションとか、配列とか。
電王戦に出場しているソフトは配列に格納してるソフトが多いんじゃないかと
勝手に予想ていたけど。
0744デフォルトの名無しさん
2016/05/26(木) 12:07:55.61ID:Xc1/bPBx具体的にどこにどうやって適用しようとしているのか明示してもらわないことにはなんとも…。
電王戦に出場している人はあの要件で理解しているんだから要件は十分明確になってるだろ。
0745デフォルトの名無しさん
2016/05/26(木) 12:17:50.31ID:GCo9DDJMコレクションはオブジェクトだし
オブジェクト指向言語なら配列も大抵オブジェクト
と思ったがc++は配列がオブジェクトじゃないのか
0746デフォルトの名無しさん
2016/05/26(木) 12:26:17.14ID:c+TCNzeK脳ミソ爆発だぜww
0747デフォルトの名無しさん
2016/05/26(木) 12:34:34.63ID:GCo9DDJM自レス
最近だとstd::arrayがあるな
0748デフォルトの名無しさん
2016/05/26(木) 12:38:37.91ID:GCo9DDJM評価関数の中身のアルゴリズムは具体的には全くわからんからこれ以上はなんとも(パターンマッチ便利だよくらい)
指摘している人がいるが将棋はオブジェクト指向の設計練習として適してないだろ
難しいのは評価関数でオブジェクト指向の良さが生かされないし 例ならオセロでいいし
オブジェクト指向の良さが現れてるのは言語はcだけどLinuxのVFSとかだな
c++やjavaで設計しなおしてみればおもろいかも
0749デフォルトの名無しさん
2016/05/26(木) 12:45:03.84ID:2tD7owQ3盤面データを評価するのにオブジェクトアクセスはオーバーヘッドが大きすぎる
駒オブジェクトなどもってのほか
そもそも評価するだけなら将棋のルールモデルを再現する必要もない
対戦型のゲームならViewの制御などが絡みだすからOOPを検討し始めても良い
しかし将棋モデルそのものは依然としてシンプルな構造と処理になるためOOPの恩恵は小さい
実装にオブジェクトライブラリを使ういわゆるベターC的なものになる
0750デフォルトの名無しさん
2016/05/26(木) 12:50:39.24ID:2tD7owQ3仕様が未確定だから無限に規模が大きくなる可能性がある
OOPを採用するメリットは大きい
0751デフォルトの名無しさん
2016/05/26(木) 12:54:10.09ID:Xc1/bPBx繰り返すと「クラスを使わない」と「設計いらない」は違うから。
>>515
ロジックをどんなモジュールに分割して盤面や手の情報をどう持たせるかは興味ある。
オブジェクトを使わない場合でもちゃんと設計していれば機能単位が明確になっているはずだから見せて欲しい。
>>745
盤面オブジェクトというものがあるかって話。
0752デフォルトの名無しさん
2016/05/26(木) 13:05:46.65ID:GCo9DDJMなんで将棋にそこまでこだわるのか分からないけど
設計はほぼ評価関数のアルゴリズムでそしてそれはここで設計するものでもない
設計の例として不適でしょって事
例としてはコレクション、VFSとかゲームとか色々あるのに
なんで将棋なんだ
0753デフォルトの名無しさん
2016/05/26(木) 13:07:08.63ID:GCo9DDJM0754デフォルトの名無しさん
2016/05/26(木) 13:09:24.57ID:Xc1/bPBx興味ある人は会話してもらっていいし。
俺も「オセロ」がいい」とか「VFSがいい」ってだけじゃご自由にどうぞとしか思わないけど
実際の設計案とかが出てくれば意見交換したい。
0755デフォルトの名無しさん
2016/05/26(木) 13:16:43.54ID:UN7L7nZy「じゃんけん」だけだと単純だと思って
0756デフォルトの名無しさん
2016/05/26(木) 13:22:24.03ID:FhkcWQBYそれぞれのモジュールの内部実装は、専門の担当者が頭をひねって、責務を全うするよう頑張れば良い
『状態』
盤面、持ち駒▲△、時計、を表現
内部状態の変化時にイベントを投げる
『プレイヤー』
ゲーム中に▲△の2インスタンス
それぞれ独立したプロセスで動く
『状態』を監視する
『状態』のmoveとresignを呼んで良い
責務ではないが、ゲームの勝利を目指す
『審判』
独立したプロセスで動く
『状態』を監視する
状態変化を元に、反則/適正や勝敗/続行を判定し、必要なら終局処理する
『記録係』
独立したプロセスで動く
『状態』お監視する
DBなりファイルなり、好きなように棋譜や時間を書き込む
0757デフォルトの名無しさん
2016/05/26(木) 14:24:38.83ID:bwhpCAq0前者は「次の一手を決めるアルゴリズム」が主眼で、その他のコードはアルゴリズムの実装を邪魔してはいけない。
肝心の中身を議論しないまま設計しろって話なら、「盤面を如何にコンパクトに表現するか」くらいしか設計できない。
POJOでも無い限り、メソッドやらvtableやらの保持にスペース使うんだから駒オブジェクトなんて論外だってすぐ分かる。
だから将棋の例は不適。
後者は実務じゃなくてお遊びの話、「自動車をJavaで表してみよう」というレベルなんだから、>>1の求める議論にならない。
だから将棋の例は不適。
同様の話でオセロも不適。
0758デフォルトの名無しさん
2016/05/26(木) 15:01:47.14ID:Xc1/bPBx考慮時間の消費とかは業務系だと見落としそうな点だね。
状態、プレイヤー、審判、記録係やらがクラスなのか属性なのか抽象的なのか
分からないんだけど、クラスとのマッピングをできれば頼む。
ゲームの設計だと当たり前なのかもしれんけど疎いもんで。
0759デフォルトの名無しさん
2016/05/26(木) 15:11:16.14ID:Xc1/bPBx思考部の設計についてはもう少し具体化して考えたい。
�@合法手生成
盤上の駒のリストから
駒が動けるマスを洗い出す。
�A動かした局面を点数化
盤上の駒の価値とか配置によって局面を点数化する。
評価の内部ロジックはブラックボックスにするしかないけど、盤面情報をもとに
なんらかの基準で点数化して点数を返すという入出力情報のやり取りは設計の範囲とする。
�B自分の手、相手の手と読みを進める。
手と盤面が増えるなり変更するなりして進むのをどのように保持するかも設計の範囲とする。
�C読む手の選択
すべての手を同じ深さまで読むんじゃなくて、良さそうな手を選んで深く読んで
最終的に指す手を選んでいるらしい。
既に読んだ手の点数とかを元に候補手を絞る処理。
内部ロジックが分からないとはっきりしないところは出てくると思うけど、
駒、ルール、盤面、手の関連性をどのように保持するかがイメージできるレベルまではやりたい。
0760デフォルトの名無しさん
2016/05/26(木) 15:12:45.82ID:Xc1/bPBx入力、出力はある程度想定できるのでそこは設計する。
0761デフォルトの名無しさん
2016/05/26(木) 17:51:52.03ID:VUxKytQY0762デフォルトの名無しさん
2016/05/26(木) 19:52:32.19ID:y/d2Tqn1は完璧だろ?
0763デフォルトの名無しさん
2016/05/26(木) 23:01:03.81ID:Xc1/bPBxhttps://drive.google.com/file/d/0B2NKffVh2tpqZ2pPcEg3VGVxYWc/view?usp=sharing
Moveは実際に指された手。
Boardはそのときの局面。初形も格納する想定。
Komaは駒の配置。
手ごとの局面を格納しないでも再現できるんだけど、棋譜の分析とかするときは
局面データも格納しておいたほうがよさそうだから格納してみた。
Bonanzaは過去の棋譜の局面を見て、駒同士の位置関係の点数を設定したとどこかで聞いたから
なんとなく意識してみた。
0764デフォルトの名無しさん
2016/05/26(木) 23:16:46.39ID:OguWhub7そのツールもうちょっとでかい図
というかでかいフォントにならんもんかね
ブラウザーでズームしてもズームしてくれんし
0765デフォルトの名無しさん
2016/05/26(木) 23:21:56.50ID:Xc1/bPBx俺も初めて使ったから分からんなあ。
手間だけどダウンロードしてちょ。
0766デフォルトの名無しさん
2016/05/26(木) 23:26:45.04ID:Xc1/bPBx画像の大きさを大きくできるのかなあ。
0767デフォルトの名無しさん
2016/05/26(木) 23:28:48.84ID:HSSLi9RUぶっ殺すフィールドの形が似てたら大体思考ルーチンも似たようなもん
ただ、飛車と角が絡むとこの前提が覆るムズイので考えない
ぶっ殺すフィールド
金の移動範囲に歩置くじゃん、したらその歩をとったら
金に取られるからふには手を出せない
金を殺さないと歩は取れない
金の範囲に銀置いて銀の範囲に馬置いて馬の範囲に飛車置いて
これがぶっ殺すフィールド
この範囲に相手の王を誘いこんだら勝ち
ってのが将棋aiの基本知識
0768デフォルトの名無しさん
2016/05/26(木) 23:30:05.02ID:Xc1/bPBxhttps://drive.google.com/file/d/0B2NKffVh2tpqd0ZOQ2RQWm9fdlU/view?usp=sharing
どうだろ?
0769デフォルトの名無しさん
2016/05/27(金) 00:13:38.01ID:3vZSRhu50770デフォルトの名無しさん
2016/05/27(金) 00:17:00.75ID:miERtZSjっていうifになってる
0771デフォルトの名無しさん
2016/05/27(金) 00:19:22.93ID:/D1WPrTe>>703近辺
0772デフォルトの名無しさん
2016/05/27(金) 00:20:44.77ID:/D1WPrTe>>634
0773デフォルトの名無しさん
2016/05/27(金) 00:42:25.57ID:miERtZSj>>757
0775デフォルトの名無しさん
2016/05/27(金) 00:57:05.93ID:miERtZSj「また」って誰の事を指してるか知らんが
>>757じゃないぞ
0776デフォルトの名無しさん
2016/05/27(金) 03:16:41.27ID:o12ObYVUブラックボックスって誰に対して?
>>763
なぜ棋譜って言う標準フォーマットがあるのにそれを崩すんだ?
棋譜データベースが世にあるんだからそれをそのまま使えないのはありえない
0777デフォルトの名無しさん
2016/05/27(金) 06:17:55.52ID:/J9GvUBV局面があれば、もちろん棋譜は生成できるけど
棋譜だけじゃ、局面を自由に行き来(ランダムアクセス)できないからだろ?
0778デフォルトの名無しさん
2016/05/27(金) 11:40:24.39ID:o12ObYVUそこから局面をメモリ上に展開すればいいでしょ
0779デフォルトの名無しさん
2016/05/27(金) 12:15:00.09ID:kDtxcipChttp://1000nichi.blog73.fc2.com/blog-entry-7696.html
税金の無駄遣い?STAP細胞関連経費1億4500万円 小保方晴子氏の検証実験参加は不要だったで書いた理研の税金の無駄使い。
実は小保方晴子さんらのSTAP細胞関連だけでなく、別の問題にも触れられていました。扱いが小さかったんですけど、こちらもすごく問題だと思います。
(中略)
●本来なら大問題である税金の無駄遣い
この高級家具の件は、小保方晴子さんが買ったのでは?と、STAP細胞疑惑のときにいっしょに話題になったものです。しかし、すぐに東大教授になった別の方のところで購入したものだと、断定されていました。
違っていたら困りますし、名前を出しちゃうとあれかな?と思うので書きませんが、「カッシーナ・イクスシー 東大教授」あたりで検索すると簡単に出ます。もうあだ名が「カッシーナ」という感じになっていました。
「計288個の穴があること」など、実質的に特定のブランド以外を排除した購入など認められるはずがないものであり、本来なら非常に問題です。これは小保方さん問題以上に返金を求めやすくないですかね?
マスコミはこっちの問題ももっと追求すべきだと思います。
0780デフォルトの名無しさん
2016/05/27(金) 12:23:58.24ID:IdMbq2QbここはOOP全般の議論をするスレだよ
0781デフォルトの名無しさん
2016/05/27(金) 12:25:03.87ID:/D1WPrTe>ブラックボックスって誰に対して?
局面の点数化、深く読むべき手の選択を行うクラスないしモジュールの
内部実装を設計する必要はないって意味。
>>777
>>778
そうだよね。
0782デフォルトの名無しさん
2016/05/27(金) 12:35:36.26ID:/D1WPrTeあれ、>>778は>>776と同じ人か。
テキストファイルはプログラムにとって操作しやすいものじゃないから。
例えば、5手まで進んだ局面で、過去にまったく同じ進行だった棋譜を抽出する
って処理をどう実装するにはどうする?
棋譜のデータも大量にあるからメモリも意識した設計にする必要がある。
0783デフォルトの名無しさん
2016/05/27(金) 12:55:12.02ID:/D1WPrTeOOPについての議論を開始してくれよ。
ただ、話をするきっかけがなかったときのスレの状態は>>490だったからさあ。
0784デフォルトの名無しさん
2016/05/27(金) 16:07:05.35ID:QLoNZNQy?
なぜテキストを操作する話になってるの?
棋譜の情報をtsv形式とかで事前にbulk insertしとくんじゃないの?
ER図の話だったよね?
0785デフォルトの名無しさん
2016/05/27(金) 16:23:50.72ID:mSvZp4nB0786デフォルトの名無しさん
2016/05/27(金) 18:23:43.80ID:/D1WPrTe>>776が言い出したことだが…。
>>776なら想定している構成をまず提示してくれ。
>>776じゃないなら俺に聞かれても分からない。
0787デフォルトの名無しさん
2016/05/27(金) 18:32:09.95ID:/D1WPrTe天才プログラマのお前だったらどう構築するのか教えてくれるかな。
DBを知らないからDBが複雑だと思い込んでるだけの素人の違いを見せて欲しいなあ〜。
0788デフォルトの名無しさん
2016/05/27(金) 19:38:50.01ID:pLLsnEId0789デフォルトの名無しさん
2016/05/27(金) 20:35:36.67ID:A2TIou2n0790デフォルトの名無しさん
2016/05/27(金) 20:54:42.73ID:/D1WPrTeご存じない?
じゃねえよw
0791デフォルトの名無しさん
2016/05/27(金) 20:57:31.88ID:X8GqPxic0792デフォルトの名無しさん
2016/05/27(金) 21:08:24.02ID:YEqMRFcI0793デフォルトの名無しさん
2016/05/27(金) 21:29:12.31ID:JwxL0I3t0794デフォルトの名無しさん
2016/05/27(金) 23:55:27.14ID:go2H7GGIリーダーやるようなプロジェクトはこんなもんだろ
0795デフォルトの名無しさん
2016/05/28(土) 06:04:52.94ID:DfweNo3j>>>784
>>>776が言い出したことだが…。
>>>776なら想定している構成をまず提示してくれ。
>>>776じゃないなら俺に聞かれても分からない。
結局バカなんだな
将棋なんてやめでTODO管理アプリでも作ったらいいんじゃね
0796デフォルトの名無しさん
2016/05/28(土) 10:01:09.70ID:lKk9NsINでも、そういうアルゴリズムを重視する世界においては、オブジェクト指向なんてドーデもいいレベルの話ではないかと思う。
オブジェクト指向は、「既存のパーツとか、フレームワークの利用をいかに楽にするか?」つまりは、DRY(Don't repeat yourself)を推進する目的が第一ではないかと思う。
継承機能などを使って、「ロジックなどの開発が楽になる」というよりも、「フレームワークとか○○を使えば、自分では、それを考えなくても、作らなくてもいい」ってほうが望ましいスタイルではないかと思う。
そして、それを推進する手法としては、たぶんオブジェクト指向も必要だけど、それだけでは、無理ってことだと思っている。
MITの先生が、「プログラミングは、新規開発の時代じゃあない。既存のものをいかに素早く組み合わせるかを教えたい」と言っているらしいけど、その方向性は、間違ってないという気がする。
0797デフォルトの名無しさん
2016/05/28(土) 10:09:21.59ID:O5lAFAJBプロジェクトのほとんどはそこで決まるし
0798デフォルトの名無しさん
2016/05/28(土) 11:38:35.56ID:qmjd/mej長文書くならもう少し推敲しろよ
小学生の読書感想文みたいだぞ
0799デフォルトの名無しさん
2016/05/28(土) 12:59:02.84ID:A5TNreIhBar : IBar
Baz : IBaz
Foo()
Bar(IFoo)
Baz(IFoo , IBar)
上のようなクラスとコントラクターがあります
IFooはFooにIBarはBarにIBazはBazに解決されます
何も考えずにコンストラクタインジェクションツールを使うとBarに渡されるFooのインスタンスとBazに渡されるFooは別のインスタンスになります
同一のFooインスタンスを使ってBazをインスタンス化したい場合、一般的にはどういった手法を使うのでしょうか?
Fooをシングルトンにする方法とBazの精製方法をコードで明示的に記述する方法は要件上使えません
使用しているツールはUnityContainerですができればより一般的な手法を知りたいです
0800デフォルトの名無しさん
2016/05/28(土) 13:59:25.89ID:fP0wQpWJインスタンスっていうんだから
紙に書いて実体を書けないとおかしい
強引にFooの実体を書こうとするとそれってBarzかBazrじゃね?ってなった
0801デフォルトの名無しさん
2016/05/28(土) 17:33:38.76ID:R1JSthfdいい加減やめたほうがいいぞw
コンポーネント、モジュールの設計を提示しろって言ってんのに何も提示しないし。
今夜か明日にコンポーネントをUMLで記述したものをアップする予定だから今のうちに考えておけよ。
>>652並みに恥ずかしい書き込みをしてることにいい加減気付けよwwww
バカどもの反応が今から楽しみ!
0802デフォルトの名無しさん
2016/05/28(土) 17:38:29.41ID:R1JSthfdお前が始めりゃいいじゃん。
「○○のほうがいい」って言いうだけで具体的な話を何も進めないから会話が成立しないんだろ。
0803デフォルトの名無しさん
2016/05/28(土) 17:45:14.88ID:R1JSthfdBarはFooを知ってるのにBaz(IFoo , IBar) で再度Fooを渡さないといけない理由が分からない。
どういうケースなのかイメージできるように具体的にならないんだろうか?
一般的にはBaz(IBar)にすると思う。
0804デフォルトの名無しさん
2016/05/28(土) 18:24:36.48ID:fP0wQpWJ勤怠管理を出したのは俺だけど
将棋が題材としてクソ過ぎたので出しただけ
設計書書かないでプログラム組む奴は雑魚なので
この話は発展させるつもりはない
0805デフォルトの名無しさん
2016/05/28(土) 18:48:04.70ID:R1JSthfd将棋はクソって思うのは勝手だけど、話題は何も出さないって無能だなあ。
将棋ソフトから発展した会話をしてる人はいるんだからいちいちじゃまする必要ないだろ。
設計をやっているのに「設計書書かないプログラム組む奴は雑魚なので」って言ってるのも意味不明だし。
何度も言ってるけどオブジェクト指向設計関連で語りたい話題があるなら好きに語ればいいだけ。
他人のじゃまする暇があったらもっと生産的なことしようぜ。
0806デフォルトの名無しさん
2016/05/28(土) 19:50:56.91ID:hH79WOSS素性の知らないもの同士が、成果物や開発対象、開発体制の情報開示をせずに
喧嘩腰でレスする時点でこういうオチになると思った。
0807デフォルトの名無しさん
2016/05/28(土) 20:12:20.38ID:dyQMlzBT設計の前にすることすっ飛ばして良い設計も糞もないってことだよな
0808デフォルトの名無しさん
2016/05/28(土) 20:47:19.10ID:b4Z/BPeQすみませんよくわかりませんでした
>>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インスタンスを注入したくなります
0809デフォルトの名無しさん
2016/05/28(土) 21:15:12.20ID:fP0wQpWJクソ設計じゃね?
IDBゴミ箱に捨てちゃったらどうなるの?
0810デフォルトの名無しさん
2016/05/28(土) 22:55:45.34ID:vuHucEnZIDBの生存期間が永久だったらどうでもいいんじゃね?
でも、いつでも死ぬぜRAとRBとは別のところでひっそりと息をひきとりましたとさ
ってなるような構造なら参照保持やめろって思うわ
0811デフォルトの名無しさん
2016/05/28(土) 23:07:57.42ID:iUyRPTRl各インスタンスの寿命はUと同期させたいです
0812デフォルトの名無しさん
2016/05/28(土) 23:17:24.57ID:lKk9NsINこの方面から検討することが必要では?
0813デフォルトの名無しさん
2016/05/28(土) 23:24:47.99ID:z5GhiIYg0814デフォルトの名無しさん
2016/05/28(土) 23:41:45.93ID:vuHucEnZIDB太死んだら残されたRA子とRB子はどうしたらいいん?
0815デフォルトの名無しさん
2016/05/29(日) 01:00:47.21ID:f/sZpflr今通じるかわからなくて申し訳ないけど、少し前のJavaのSpring+Hibernateのように
メタデータ利用して、フレームワークにトランザクション管理任せたらあかんの?
0816デフォルトの名無しさん
2016/05/29(日) 08:15:01.43ID:2I7bmxM6パーツからユニットバスを完成させるには、それなりの設計が必要になるけど、それらが組み込み済みのユニットバスなら不要。
既製品が気に入らず、オリジナルのユニットバスが欲しい人は、パーツをうまく組み合わせる設計の知識と能力が要求される。
それが「各インスタンスの寿命はUと同期させたいです」なんて要望実現の部分に相当する。
そこは、オブジェクト指向とは別の知識・技術も必要。
それが無理な人は、JavaのSpring+Hibernate、あるいは同等品を探すほうが楽できるってことかな。
0817デフォルトの名無しさん
2016/05/29(日) 09:57:03.09ID:f/sZpflrその要件が他に出てこないシステムの特異点なら、コメントにしっかり残した上で、規約ぶっちぎって実現できる方法で実現すれば良いと思う
0818デフォルトの名無しさん
2016/05/29(日) 12:14:52.10ID:1ogDAOArこういうことだな
0819デフォルトの名無しさん
2016/05/29(日) 13:18:42.71ID:Cf71caC3https://drive.google.com/file/d/0B2NKffVh2tpqUWNmbTl6MVBRVXc/view?usp=sharing
KifuAnalyzerは過去の棋譜を分析して、駒の価値や駒の配置を点数化するためのパラメータを生成する。
MoveGeneratorは局面からルール上指すことが可能なすべての手を生成する。
MovePickerは合法手から深く読むべき手を選択する。
Evaluatorは局面を評価して点数化する。
MovePickerはEvaluatorが生成する点数を考慮するだろうし、
何手か先まで読むのにMoveGenerator→MovePicker→Evaluatorの処理をループするんだろうけど
その辺りの整理は不十分かもしれない。
改善の余地はあると思うので、知見がある人の意見を聞きたい。
0820デフォルトの名無しさん
2016/05/29(日) 13:20:31.00ID:uH1/jPAHオブジェクト指向ではなくて手続き型の設計になってるなw
0821デフォルトの名無しさん
2016/05/29(日) 13:21:59.15ID:1ogDAOArみんなわかったね
0822デフォルトの名無しさん
2016/05/29(日) 13:22:24.27ID:Cf71caC3もっとオブジェクト指向な設計とは具体的には?
0823デフォルトの名無しさん
2016/05/29(日) 13:23:04.73ID:Cf71caC30824デフォルトの名無しさん
2016/05/29(日) 13:25:54.19ID:Cf71caC3手続き型だとコンポーネント構成はどう設計するのかいい加減提示してくれよ。
提示してくれるなら比較できて参考になるから見たい。
提示できるならね。
0825デフォルトの名無しさん
2016/05/29(日) 13:30:29.53ID:1ogDAOAr0826デフォルトの名無しさん
2016/05/29(日) 13:31:05.98ID:GCrD5Cq5いちいち反応するなってw
0827デフォルトの名無しさん
2016/05/29(日) 13:41:23.22ID:Cf71caC3???
もっとオブジェクト指向な設計も手続き型の設計も見てみたいが。
口だけで何もない奴が書き込んでいると決め付けるのは良くない。
0828デフォルトの名無しさん
2016/05/29(日) 14:07:17.65ID:uH1/jPAH> もっとオブジェクト指向な設計とは具体的には?
オブジェクト(データ)をメインに考えること
0829デフォルトの名無しさん
2016/05/29(日) 14:09:35.72ID:GCrD5Cq5最近、日本将棋連盟は棋譜の著作権を主張してるようだけど
その辺はどうクリアするの?
0830デフォルトの名無しさん
2016/05/29(日) 14:10:21.15ID:ks+EActS0831デフォルトの名無しさん
2016/05/29(日) 14:13:34.46ID:1ogDAOArオブジェクト指向じゃなくね?
0832デフォルトの名無しさん
2016/05/29(日) 14:16:05.87ID:2I7bmxM6たぶん、オブジェクト指向の前に、手続き型プログラミング、構造化プログラミング的な考え方によって大雑把にプログラムの全体構造を把握する設計ステップが入るのだと思う。
それが、この段階。
この段階から、しばらくは構造化プログラミングで設計とコーディングを進めてもいいし、オブジェクト指向をちょっと意識して進めてもいいのだと思う。
で、実際にコードを記述して、ちょくちょくテスト(=詳細設計)を進めていると、「これはオブジェクト指向の例題にあったような、あのパターンを使うとよさげかも?」なんてのに気づく。
そこで、今まで記述したコードを捨てて新規に作り直したり、あるいは作りかけのソースを修正する、もしくは、どっかから使えそうなフレームワークをコピペして活用するって流れになるのでは?
そうしたとき、最初からオブジェクト指向を意識して作っていたほうが(経験上)修正量が少なくなる気がするし、そのとき、オブジェクト指向のメリットを実感することになるんだろうね。
また、オブジェクト指向でプログラムを作ろうとも、多くの場合、上から下に流れるような構成になると思う。
0833デフォルトの名無しさん
2016/05/29(日) 14:21:04.75ID:ks+EActSカプセル化すれば内部状態の物理的な実装は自由になる
OOPの基本理念の1つ
0834デフォルトの名無しさん
2016/05/29(日) 14:46:06.53ID:uH1/jPAHその図の四角が処理になっていて、図全体が情報の流れを
表しているからだよ。
オブジェクトっていうのは役目を四角にするので
情報の流れとは無関係。
0835デフォルトの名無しさん
2016/05/29(日) 14:58:27.22ID:Cf71caC3具体的に。
0836デフォルトの名無しさん
2016/05/29(日) 15:02:50.83ID:Cf71caC3だいたいの方向性は同意なんだけど
>この段階から、しばらくは構造化プログラミングで設計とコーディングを進めてもいい
は違和感があるなあ。
コーディングに行くのは方針が決まってからじゃないか?
構造化プログラミングでコーディングまで始まってるのにそこからブジェクト指向プログラムに切り替えるのは
工数がだいぶ無駄になるような。
その辺はどう考えているんだろ?
0837デフォルトの名無しさん
2016/05/29(日) 15:08:30.13ID:uH1/jPAH図の罫線に矢印を付けた時、
それが継承ではなくて情報の流れだなって
思ったらアウト。
0838デフォルトの名無しさん
2016/05/29(日) 15:08:35.66ID:Cf71caC3抽象的な言葉としては分かるんだが具体的にどうしたいのか分からないなあ。
www.dataio.comで図を書けるからできれば書いて欲しい。
無理ならコンポーネントとインタフェースだけでも列挙してもらえればだいたい分かるかと。
0839デフォルトの名無しさん
2016/05/29(日) 15:14:36.29ID:uH1/jPAHまず最初は全部一つにまとめろ。
その後に「何のために分離するのか」を書きながら
分離するといい。
分離する理由がないならば、それは分離しなくていい
0840デフォルトの名無しさん
2016/05/29(日) 15:33:37.25ID:2I7bmxM6>この段階から、しばらくは構造化プログラミングで設計とコーディングを進めてもいい
は違和感があるなあ。
コーディングに行くのは方針が決まってからじゃないか?
まあ、あのレベルの設計で、コーディングの方針が決まればいいけど、初めて作るたぐいのプログラムって、どう作ればいいか、よく分からないことが私の場合は、ちょくちょくある。
だから、イメージとしては、作りたいものの漠然としたイメージはあるけど、またはっきりしない状態で、材料となる粘土の塊をいじって、できた粘土の形を見て、そこから先を考えるって感じでプログラミングやっている。
たとえば、足だけ作ってみるとか、バストだけ作って、それを見て、次に作る部分を決めるみたいな・・・。
本来は、全体の方針を決めてからコーディングってのが正しいと思う。
でも、方針がなかなか決まらないときは、手を動かして、なにかしら動くものを作ると、「今日の成果はこれ!」って感じで気分が良くなる。
で、残りを頑張ろうって気力が沸いてくる。そして、オブジェクト指向で作っていると、各パーツの再利用が容易になる。
まあ、すべての人にこの方式を薦めるわけではない。
0841デフォルトの名無しさん
2016/05/29(日) 16:00:47.90ID:uH1/jPAH(MovePickerは存在自体が意味不明)
なぜならば、移動できる場所は複数存在するが、思考ロジックによって
その移動できる場所を解析する順番が違うからだ。
前提条件として、総当りでやると時間が足りない。
だから駒一つ一つすべての移動できる場所を解析するわけじゃない。
解析しない場所(後回しにする場所)などが存在する。
だから、思考ロジック自身が動く場所を知っているし、
解析する順番(評価関数で評価する順番)も知っている。
そして解析する順番というのは、過去の棋譜データから決まる(こともある)
ディープラーニングなんかはそれ。
だからそれらを分離した所で、それらのコンポーネントを再利用することは出来ない。
もっとも過去の棋譜データを解析する処理は「思考」とは別のタイミング(対局前)に
行うことだから思考ロジックと分離するのは当たり前
(もちろん思考時には計算結果のみを利用し対局中に過去の棋譜データを解析するわけじゃない)
0842デフォルトの名無しさん
2016/05/29(日) 16:35:38.18ID:vZz5+wdAオブジェクト指向を持ち出すのが誤りってことだな
前々から言われていたことだが、不適切な題材だな
やったとしても、「思考ロジック」っていう巨大な一つのクラスがほとんどのことを受け持つ
いわゆるGodクラスになってしまうだろう
それが一番早く動くなら、将棋にとってはそれが正義
しかも将棋のルールはほぼ固定されていると考えてよいから
変に柔軟性を与えて仕様変更に強くする意味もないしな
パラメーターで対応すれば十分
動画のエンコーダーとかといっしょで、規格ものなんだよ
規格が決まっていて、速さや効率が求めらえるなら
ハードコーディングも辞さない
0843デフォルトの名無しさん
2016/05/29(日) 16:38:53.32ID:uH1/jPAHデータ構造まで工夫する必要があるからね。
いちいちメソッド呼んでデータを取ってきたりしない。
取ってくるにしても駒の動きなんて変わらないんだから
最初に一括して読み込めばいいしそれはファイルから読み込めばいい。
(その後内部で工夫されたデータ構造にして、あとは内部で完結させる)
0844デフォルトの名無しさん
2016/05/29(日) 16:58:54.31ID:hqWpcQ8C0845デフォルトの名無しさん
2016/05/29(日) 17:18:08.73ID:nD7S98HF品質も良いと思うよ
0846デフォルトの名無しさん
2016/05/29(日) 17:48:41.04ID:Cf71caC3>あのレベルの設計で、コーディングの方針が決まればいいけど
これについてはまだ設計の途中だからさ。現段階では決まってないけど設計が終わる頃には明確になってる。
まあ、設計段階ですべての問題を洗い出すことが難しいのは同意する。
0847デフォルトの名無しさん
2016/05/29(日) 17:54:21.52ID:Cf71caC3MoveGeneratorとMovePickerの役割はちゃんと説明してあるんだが…。
あと、どういう設計を想定しているのか分からない。
言ってる内容がエンドユーザの要件みたいで、設計者の設計じゃないように感じる。
考えてることを明確にするために設計者はモデリングを利用する訳で、設計者同士の会話は
モデリングあるいはコンポーネント・クラスなどを明確にして記述して欲しい。
0848デフォルトの名無しさん
2016/05/29(日) 17:59:16.14ID:Cf71caC3何度も繰り返してるけど、時間もメモリも切り詰めた設計はどうなるか提示してくれ。
0849デフォルトの名無しさん
2016/05/29(日) 18:00:53.32ID:Cf71caC3将棋ソフトを作る気はないから。
0850デフォルトの名無しさん
2016/05/29(日) 18:09:36.48ID:uH1/jPAH> MoveGeneratorとMovePickerの役割はちゃんと説明してあるんだが…。
だからそれが意味不明だって。
お前のは、単に分けているだけで
分ける理由が存在していない。
0851デフォルトの名無しさん
2016/05/29(日) 18:10:53.57ID:uH1/jPAH> 何度も繰り返してるけど、時間もメモリも切り詰めた設計はどうなるか提示してくれ。
[ 思考ロジック ]
0852デフォルトの名無しさん
2016/05/29(日) 18:16:58.80ID:uH1/jPAHこれでもいいがw
[ 思考ロジック ] - [将棋UI]
もう少し細かく言うのなら将棋の駒の配置は、
思考ロジックでも使うが将棋UIでも使う共通情報だから
という理由で分離して
[ 思考ロジック ] - [ 駒の配置データ ] - [将棋UI]
思考ロジックは、駒の配置データを参照して、駒の配置データを書き換えるという役目。
将棋UIは駒の配置データを参照して、それをUIとしてレンダリングする
将棋UI は更にその内部で、将棋盤オブジェクトや駒オブジェクトとして
2Dや3Dでレンダリングされるが、これは完全にUIの話で思考ロジックとは切り離すべき話だよねw
オブジェクト指向で設計するならばこれぐらいの話だな。
0853デフォルトの名無しさん
2016/05/29(日) 18:21:29.72ID:uH1/jPAH時間を切り詰めた実装でも、メモリを切り詰めた実装でも、
一台のマシンを使う実装でも、多数のマシンを使う実装でも
「どんな実装にも変更可能な設計」というのなら、これは設計なわけで正しい。
つまり
× 時間もメモリも切り詰めた設計
○ 時間もメモリも切り詰めた実装
時間やメモリを切り詰め ”られる" のは、それが可能なように設計で考慮するべきことだが
時間やメモリを切り詰め "る" のは設計で決めることじゃない。
0854デフォルトの名無しさん
2016/05/29(日) 18:27:50.97ID:hqWpcQ8C>何度も繰り返してるけど、時間もメモリも切り詰めた設計はどうなるか提示してくれ。
何度も言われてる気はするがほぼ思考ロジックの話になるからオブジェクト指向でやる意味なくね
具体的にどのアルゴリズムを選ぶか?
それが「時間もメモリも切り詰めた設計」となる
振る舞いと実装の分離とかしないわけよ
>>852が言ってるようにオブジェクト指向でやる意味あるUIくらいだよ
0855デフォルトの名無しさん
2016/05/29(日) 19:05:09.06ID:Cf71caC3正しいと思う設計を具体的に示してくれ。
面倒くさくなってきたから明示できないならもういいよ…。
0856デフォルトの名無しさん
2016/05/29(日) 19:06:07.22ID:uH1/jPAH[ 思考ロジック ]
書いてあるよね?
なんで見えてないの?
0857デフォルトの名無しさん
2016/05/29(日) 19:07:21.11ID:uH1/jPAH↑ 思考ロジックの正しい設計
[ 思考ロジック ] - [ 駒の配置データ ] - [将棋UI]
↑ UIまで含めた、将棋ソフトの正しい設計
0858デフォルトの名無しさん
2016/05/29(日) 19:08:04.03ID:Cf71caC3で、設計は?って聞かれると>>652とか答えちゃう訳?w
0859デフォルトの名無しさん
2016/05/29(日) 19:10:04.28ID:Cf71caC3おっけ、おっけ。
設計に対する前提がかけ離れ過ぎてるから話しても無意味だと分かった。
0860デフォルトの名無しさん
2016/05/29(日) 19:12:52.55ID:uH1/jPAH実装書いてあるだけだろw
0861デフォルトの名無しさん
2016/05/29(日) 19:13:21.23ID:uH1/jPAH結局、設計の話してもこうやって無視するわけだ?
逃げるな卑怯者
0862デフォルトの名無しさん
2016/05/29(日) 19:20:13.35ID:Cf71caC3率直に言うと、レベルが低過ぎてお話にならないと判断した。
将棋ソフトを設計しろって言われて
[ 思考ロジック ] - [ 駒の配置データ ] - [将棋UI]
だけ書いて完成したと思うのは>>652並みのお粗末さだぞ…。
思考部分のコンポーネント図が間違っているというなら訂正したコンポーネント図を書けよ。
[ 思考ロジック ] - [ 駒の配置データ ] - [将棋UI] って何じゃそりゃ?
0863デフォルトの名無しさん
2016/05/29(日) 19:22:38.20ID:uH1/jPAHお粗末ってなんだ?
設計というのはシンプルにするものだ。
たくさん書けばいいってわけじゃねーぞw
0864デフォルトの名無しさん
2016/05/29(日) 19:23:38.63ID:uH1/jPAHお前こそ、間違ってる理由を言えよ。
お前が考えるさいきょうのせっけい(笑)の紹介じゃなくて、
何が間違っているのかを言えって。
0865デフォルトの名無しさん
2016/05/29(日) 19:25:48.76ID:uH1/jPAH[ 思考ロジック ]
↑ 思考ロジックの正しい設計
何度も言ってる
0866デフォルトの名無しさん
2016/05/29(日) 19:31:51.54ID:nCNZLCDhもうほとんどあらしだな
0867デフォルトの名無しさん
2016/05/29(日) 19:45:13.81ID:hqWpcQ8Cレベルが低い以前に話聞いてないじゃん
将棋の思考ロジックの設計なんかはもうアルゴリズムの設計とほぼ同じ
計算機科学の分野でしょ
0868デフォルトの名無しさん
2016/05/29(日) 20:19:13.03ID:vZz5+wdAchar ban[9][9];
こんなんで十分なわけでしょ
これに相手と自分の持ち駒の配列を付け加えて
あと少々何かあればそれで充分な世界
人によってはcharですらデカすぎるというかもしれない
この時点でオブジェクト指向らしさは全然ないよね
どちらかといえば画像処理とかに近いデータ構造
将来将棋が仕様変更して、いきなり金の振る舞いが変わるとか
そういうことはあり得ないから、駒をオブジェクトにするとか意味不明なことはする必要ないし
オブジェクト指向でよく言うような、仕様変更に強くするとか
継承とオーバーライドで差分プログラミングとか、全く関係ないよね
だって、将棋のルール(仕様)は決まっているわけだからさ、仕様変更とか考えなくてよい
むしろ実行時間や効率が問われているのだから
意味のない柔軟性を持たせる分のオーバーヘッドがもったいないし、必要もない
0869デフォルトの名無しさん
2016/05/29(日) 20:30:30.60ID:Cf71caC3モジュール構成は?
相互の関係は?
コンポーネント図を見ればどういう領域を整理しようとしているかくらい分かるだろ?
0870デフォルトの名無しさん
2016/05/29(日) 20:32:05.69ID:Cf71caC30871デフォルトの名無しさん
2016/05/29(日) 20:42:21.72ID:f/sZpflr業務プログラマなんだろ?
0872デフォルトの名無しさん
2016/05/29(日) 20:44:29.81ID:uH1/jPAH↑ 思考ロジックの正しい設計
[ 思考ロジック ] - [ 駒の配置データ ] - [将棋UI]
↑ UIまで含めた、将棋ソフトの正しい設計
> コンポーネント図を見ればどういう領域を整理しようとしているかくらい分かるだろ?
これみて、どういう領域を整理しよとしているかわからないの?w
0873デフォルトの名無しさん
2016/05/29(日) 20:59:39.40ID:1omdCt5G最初から全部決めようなんて無理無理
0874デフォルトの名無しさん
2016/05/29(日) 21:03:08.22ID:1mIQzqS0将棋ソフト全体をOOPで作ったとしてもAIモジュールとはだいぶ隔たりがあるよ
ユーザーの入力した結果から低レベルな盤面データを生成して丸ごと渡すだけとかそんなレベル
0875デフォルトの名無しさん
2016/05/29(日) 21:13:37.84ID:vZz5+wdA歴史のあるゲームであって、いきなりルールが変わって金の動きが変わるとか
そういったことは今の時点では全く考慮する必要がないわけだよ
で、オブジェクト指向のメリットは、大体において仕様変更に強くすることなんだよ
仕様変更が全くないのであれば、どんな方法でどんな汚い書き方をしたって
プログラマだってプロなんだから、書き上げることはできるんだよ
ただ、突然の仕様変更は怖いよねって話で、そのためにオブジェクト指向にコストを掛けているわけじゃないですか
その点、将棋はルールが決まっていて、仕様変更など気にする必要ないし
むしろ実行速度が強さに直結していて、一手でも先を読んだ方が有利なわけだから
仮想関数なんかを使うオーバーヘッドがもったいないし
その二つの面からオブジェクト指向である必要性が薄い題材
仮にオブジェクト指向で作ったとしても、仕様変更がないことが分かっているわけだから
オブジェクト指向設計の腕の見せ所が全くないし、題材として不適切なんだよ
将来にわたって必要の無いであろう拡張性や柔軟性を持たせても、無駄が多いと言われるだけ
将棋のAIのアルゴリズムには大変興味深いものがあるとおもうが
オブジェクト指向としては見るべき点が「全く」ない
0876デフォルトの名無しさん
2016/05/29(日) 21:32:59.51ID:vZz5+wdA仕様変更が発生しない題材なわけだから、オブジェクト指向的に良いも悪いもなく、動けばOKだよねっていう話になる
どんなに不味いオブジェクト指向の設計であっても、仕様変更さえなければ大体は問題にならない
当初の予定通り動く
ついでに、将棋AIである以上は強くなくてはならない
この強くなければならないという案件は、通常ではない
業務システムが他のシステムと喧嘩して勝っただの負けただの言わない
普通は仕様変更に強いように、拡張性があるように、プログラムを設計するし
オブジェクト指向の設計の良し悪しもそこに集約されるわけだが
将棋AIは強さが求められているわけで、オブジェクト指向設計でいうところの
良し悪しとは違ったものが求められている
しかも仕様変更がない、とくればハードコーディングも止む無しだろう
0877デフォルトの名無しさん
2016/05/29(日) 21:36:48.37ID:JprInoKjワープ駒とか二回倒さないと死なないとか
範囲攻撃とか装備とかアイテムとか擬人化とかイケメン武将とかキャラアドオンとかガチャとか課金とか
マルチプラットフォーム対応もするしサービスとして長くメンテナンスし拡張を加えていく前提
当然AIもそれに対応しなければならないからゲームやアプリは良くモデル化されていなければならない
0878デフォルトの名無しさん
2016/05/29(日) 21:38:49.46ID:uH1/jPAHで、そんなことを言い出すと。
YAGNIだってとどめを刺すわけだw
だからそうする目的を聞いている。目的がないのにわざわざ分割するのは、
必要だからやるのではなく、設計(?)をすること自体が目的になっている。
0879デフォルトの名無しさん
2016/05/29(日) 21:47:24.89ID:Cf71caC3現実のプロジェクトなら設計者が設計書に記述するであろう内容についての前提が違うんだと思う。
「将棋ソフトを設計してくれ」って客に言われたら、オブジェクト指向だろうが、他の設計手法だろうが
構成を記述しないってことはあり得ないからさあ。
そこを分からない人に説明してもしょうがないことは分かったから流すようにする。
毎日IDが変わるから新しい人かもと思って対応していたけど、どうも同じ人みたいだし、
対応してもスレが汚れるだけだからスルーすべきだったと反省。
0880デフォルトの名無しさん
2016/05/29(日) 21:50:11.02ID:uH1/jPAH構成は記述されてありますが?
そもそも将棋ソフトを設計してくれって言われたら
思考ロジック部分だけを設計しませんよwww
[ 思考ロジック ] - [ 駒の配置データ ] - [将棋UI]
こんな感じで設計します。
当然、思考ロジック部分は一つです。
シンプルイズベスト。理由がなければ分割しない。
0881デフォルトの名無しさん
2016/05/29(日) 21:52:08.59ID:uH1/jPAHどんな仕様か詳しく聞きますね。
その上で必要なら、それを満たすように設計しますが、
あんたのように何も言ってないのに過剰な分割なんかしませんよwww
0882デフォルトの名無しさん
2016/05/29(日) 21:53:29.31ID:1omdCt5Gただ将棋ソフトで遊びたい人にとって内部設計なんてなんの意味もない
外部の人間が自分たちのソース引き継いでメンテするのが前提ってこと?
0883デフォルトの名無しさん
2016/05/29(日) 22:04:37.03ID:qPPHNZFg円周率を出すソフトを「設計」しろとか、
そういう類の無意味な題材だってことが理解できているのか心配になる。
動物とか自動車とかモデル化するだけの人なのかもしれんが。
0884デフォルトの名無しさん
2016/05/29(日) 22:05:37.63ID:uH1/jPAH何を言ってるんだ?
たとえばネット対戦をしたいって言えば
それが出来るような設計にするだろ?
客の要求を聞いた上で、それを実現できるように設計する。
客がネット対戦をしたいって言ってもいないのに
あらかじめ先手(笑)を打ってネット対戦機能をつけましたとか
それは過剰な設計であり無駄なコストを発生させたに過ぎない。
だからいきなり設計すんなって言ってるんだよ。
客の要望を聞いて、必要であるという理由があれば
それが可能なように設計すればいい。
だから、そうした理由を聞いてるのに、明確な理由もなくて、
そうするのがいいと思いましたーでやってるから馬鹿にされてるんだよ。
0885デフォルトの名無しさん
2016/05/29(日) 22:06:35.28ID:1ogDAOArここで話せるのはここまでじゃん
だから題材が悪いって俺が最初に言ったじゃん
基本的にオブジェクト指向ってz80で作れるものに威力を発揮しないんだよ
将棋ソフトなんて作ったこともないのに題材に選んだ奴責任とって腹切れ
どうせ設計に必要な項目も他人に説明できないしできなかっただろ
それは将棋ソフトの全容が他人に聞くまでもなく
みんなある程度わかっちゃってるからなのさ
0886デフォルトの名無しさん
2016/05/29(日) 22:07:18.13ID:+DJ914Ecできるだけ抽象的に作ればいいと思ってる抽象馬鹿だと思われ。
0887デフォルトの名無しさん
2016/05/29(日) 22:09:35.02ID:uH1/jPAHogg vorbis形式のファイルというのは、正確には音声ファイルフォーマットで
Oggがコンテナ、Vorbisがコーデックという設計で、
元々内部の役割が分割されてるからちょっと違うけどねw
0888デフォルトの名無しさん
2016/05/29(日) 22:11:26.67ID:uH1/jPAH> 将棋ソフトなんて作ったこともないのに題材に選んだ奴責任とって腹切れ
↓こいつかな?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
具体例があったほうが分かりやすいから将棋ソフトの例で考えてみてよ。
0889デフォルトの名無しさん
2016/05/29(日) 22:14:11.15ID:auBo7N3Kここには顧客ロールの担当者がいないのさ
0890デフォルトの名無しさん
2016/05/29(日) 22:17:37.23ID:1ogDAOArはじめの話で思考ルーチンが
ディープラーニング当然でしょみたいな話になんて絶対ならないわけで
0891デフォルトの名無しさん
2016/05/29(日) 22:19:59.67ID:+DJ914EcLinux あたりと比較できるしいいんじゃないの?
よりよいオブジェクト指向で設計してもらいたいですな。
0892デフォルトの名無しさん
2016/05/29(日) 22:24:35.04ID:hqWpcQ8Cこれ 「将棋ソフト」を設計しろだと
いきなり実装の話に入らざるを得ない
0893デフォルトの名無しさん
2016/05/29(日) 22:26:13.01ID:uH1/jPAH> 要件定義が曖昧なのに求めてる設計書のレベルが見合わないんだよね
それもあるけど「何のためにそうしているか?」が存在しないんだよ。
いえばいいだけなのに、言わない。
そうするのが当然だって思い込んでる。
0894デフォルトの名無しさん
2016/05/29(日) 22:27:58.83ID:uH1/jPAHお題だから、いきなり実装の話に入ってもいいんだけどさ、
それならそれで、どういう「要件を想定した」っていうのを
明確に言わないといけない。
それを言わずに、なんかわけのわからん分割の仕方をしてるから
突っ込み入れられまくってるわけ。
0895デフォルトの名無しさん
2016/05/29(日) 22:33:44.93ID:RrRCCmyQ将棋の駒はクラスで正解
しかし設計のきれいさではなく
処理速度を求めるなら構造化で書く
前提が違うのにみな上から目線で書きこむから
ただ混乱するだけ
やっぱ2ちゃんは雑談はともかく
ちゃんとした議論に向かないな
0896デフォルトの名無しさん
2016/05/29(日) 22:35:40.39ID:1ogDAOAr得に将棋ソフトなんて疑問が無いもん
勝手に作っちゃうでしょ
そこは要件を出した方も悪いし聞かないまま進めちゃう方も悪いし
0897デフォルトの名無しさん
2016/05/29(日) 22:36:26.79ID:uH1/jPAHそれはゲームとかで駒を
2Dや3Dでレンダリングする時の話だよw
思考ロジックの中でクラスにする理由はない
charなりintなりの二次元配列に
defineで定義した定数を入れれば十分
0898デフォルトの名無しさん
2016/05/29(日) 22:40:50.33ID:RrRCCmyQ処理速度を考慮しない前提で言うと
それはオブジェクト指向じゃなくて
構造化の考えから抜け出せてない
0899デフォルトの名無しさん
2016/05/29(日) 22:45:42.31ID:1ogDAOAr駒なんかクラスにされたらどう作ってもクソになっちまう
0900デフォルトの名無しさん
2016/05/29(日) 22:47:10.49ID:1ogDAOArつまりオブジェクト指向ってもしかして(笑)
0901デフォルトの名無しさん
2016/05/29(日) 22:49:05.67ID:uH1/jPAHそれで理由は?
0902デフォルトの名無しさん
2016/05/29(日) 22:51:44.59ID:uH1/jPAH> でもオブジェクト指向的に将棋の駒をクラスにするのは間違ってないと思うな
> つまりオブジェクト指向ってもしかして(笑)
最後まで書きなよw
つまりオブジェクト指向ってもしかして、(思考ロジックの)将棋の駒を
クラスにすることには役に立たない。
だろ?
だから俺は最初から何のためにそれをクラスにするのかと聞いてるわけ。
する理由がある、つまり適切な場所をオブジェクト指向にして、
こんな関数レベルの思考ロジックをわざわざ無意味に分割するんじゃないって言ってるんソア。
0903デフォルトの名無しさん
2016/05/29(日) 22:52:01.50ID:+DJ914Ec抜け出す必要がない場面で無理に抜け出そうとする事がそもそもおかしい。
オブジェクト指向は万能ではない、処理フローがほとんど決まってるものに対しては不向き。
0904デフォルトの名無しさん
2016/05/29(日) 22:54:48.91ID:vZz5+wdAcharでも何か勿体ないという人もいるかもしれない
画像なら、画像全体が何らかのオブジェクトでラップしてあるならわかるが
画像の1ピクセル1ピクセルを全てオブジェクトにする人はいない
こんなものはデータで十分
構造体的発想を抜け出せないというのも意味不明
データで十分なものをオブジェクトにする方が
何も理解していないと言いたい
0905デフォルトの名無しさん
2016/05/29(日) 22:58:31.03ID:1ogDAOArでもさ
全員の共通認識を一致しやすいって手法だろ?
でもこの方法は将棋ソフトに関してははっきり言ってクソ
どう作ってもクソにしかならない
オブジェクト指向ってダメなのかもしれんね
0906デフォルトの名無しさん
2016/05/29(日) 22:59:10.96ID:1omdCt5G0907デフォルトの名無しさん
2016/05/29(日) 23:01:49.14ID:vlcsE4Oaうんうん。将棋のコマって
王将・玉将
金将
銀将 → 成銀
桂馬 → 成桂
香車 → 成香
飛車 → 竜王
角行 → 竜馬
歩兵 → と金
うまい具合に15種類なんだよねぇ。
4bitでじゅーぶんですよね。空白含めても。
0908デフォルトの名無しさん
2016/05/29(日) 23:02:20.91ID:Cf71caC3「設計は>>652」
「設計は思考ロジック!」
とか言ってないで、設計を提示すりゃいいじゃん。
設計書を書いたことなくて、書き方知らないんだからおとなしくしてりゃいいのに。
あと、要件についは十分説明したから読み直せ。
参加者はあれで読み取ってるんだから読み取れない自分が問題だといい加減気付けよ。
0909デフォルトの名無しさん
2016/05/29(日) 23:06:00.21ID:RrRCCmyQ仕様の変更や追加に強くなるから
>>903
ある程度の規模になると必要がある
>>904
>構造体的発想
構造化ね
そりゃ速度が重要ならOOにはしないが
逆に複雑なもので多少のオーバヘッドを
犠牲にできるならOOの方が楽に組める
0910デフォルトの名無しさん
2016/05/29(日) 23:08:23.54ID:hqWpcQ8C実力を示すってのが意味不明だけど
アルゴリズムの設計をすればいいのか?
>MoveGenerator→MovePicker→Evaluator
こんなの設計しても将棋には意味ないぞ
0911デフォルトの名無しさん
2016/05/29(日) 23:10:51.26ID:Cf71caC3ソフト全体の構成がどうなるかを聞いている。
手が進むと局面が増えるのはどうやって管理する?
手と局面の関連付けは?
手の分岐もおそらく管理する必要がある。
手の生成、局面の評価、手の選択の機能の連携は?
マルチスレッド対応もある。
などなど含めた全体の設計はどうなるんだろう?って話だ。
0912デフォルトの名無しさん
2016/05/29(日) 23:14:39.98ID:Cf71caC3設計手法って問題を整理して、考えを明示して関係者と共有することが大きな目的であって
構造化だろうが、オブジェクト指向だろうが基本は一緒。
機能的な固まりをきれいに整理して、疎結合を実現するというのはどの手法でも目的になっているし。
0913デフォルトの名無しさん
2016/05/29(日) 23:14:43.33ID:1ogDAOArあーまず要件を定義してからな
0914デフォルトの名無しさん
2016/05/29(日) 23:14:44.37ID:hqWpcQ8C空気を読まずに言うと データ型(クラス)がどういうインターフェースを実装するのかってのを
データ型の定義時に決めなきゃいけない静的型付けのOOPより
データ型が実装しているインターフェースを後つけで拡張できる型クラスのほうが仕様の変更や追加に強いのではなかろうか
つまり手続き型でオブジェクト指向で関数型なRust最強という事だ
0915デフォルトの名無しさん
2016/05/29(日) 23:17:54.53ID:1omdCt5G0916デフォルトの名無しさん
2016/05/29(日) 23:17:56.58ID:RrRCCmyQやはり処理速度がどうとか抜きにすれば
OOより関数型が向いてるかもしれないね
0917デフォルトの名無しさん
2016/05/29(日) 23:18:07.91ID:Cf71caC3言語的にそれを許されたからって楽になるものじゃない。
変更する前には設計して、変更して、テストしてってやるのはどんな言語でも一緒。
変更を楽にするのは正しい設計。
0918デフォルトの名無しさん
2016/05/29(日) 23:20:12.27ID:1omdCt5G0919デフォルトの名無しさん
2016/05/29(日) 23:20:17.48ID:hqWpcQ8C簡単だと思わないしむしろ難しいと思うが
しかし
>手が進むと局面が増えるのはどうやって管理する?
>手と局面の関連付けは?
>手の分岐もおそらく管理する必要がある。
>手の生成、局面の評価、手の選択の機能の連携は?
>マルチスレッド対応もある。
これももうアルゴリズムのお話でoopプログラミングの手法で解決するものではなないでしょう
0920デフォルトの名無しさん
2016/05/29(日) 23:23:30.65ID:hqWpcQ8C将棋みたいに計算機をガリガリ使う計算って
並列化にはcpuよりGPGPUを使うものだと思うんだけど
そうするとますますオブジェクト指向の付け入る隙はなくなるなぁ
0921デフォルトの名無しさん
2016/05/29(日) 23:27:16.56ID:hqWpcQ8CPC1台に限定する意味ないから当たり前だった
0922デフォルトの名無しさん
2016/05/29(日) 23:29:06.15ID:1omdCt5G別な視点で考えるとプログラマが10人いたとして
全員が一つのソースファイルを同時にプログラムすることはできないから
どのように分割するか、という話になるのだろうか
0923デフォルトの名無しさん
2016/05/29(日) 23:29:20.83ID:RrRCCmyQターン制のRPGやカードゲームみたいなのの方が向いてる
ゲームルールがすごい複雑でしかも仕様変更されうるもの
0924デフォルトの名無しさん
2016/05/29(日) 23:32:07.51ID:E1aQWpksオセロだめ
トランプだめ
テトリスだめ
シューティングゲームもだめ
PRGも作れません
シミュレーションも無理です
OS?無理ですね
ドライバ?向いてません
ミドルウェア?処理速度がー
Web系?用途が違うんで
組み込み?ありえないでしょ
0925デフォルトの名無しさん
2016/05/29(日) 23:36:17.35ID:1omdCt5G0926デフォルトの名無しさん
2016/05/29(日) 23:38:45.16ID:RrRCCmyQなぜ作れないと思い込んでいるのか?
0927デフォルトの名無しさん
2016/05/30(月) 00:09:08.89ID:8pkfhQuv非現実的なので却下。
0928デフォルトの名無しさん
2016/05/30(月) 00:09:39.22ID:Fopy0H2hゲームは向いてない
0929デフォルトの名無しさん
2016/05/30(月) 00:25:30.42ID:j9NktVXe0930デフォルトの名無しさん
2016/05/30(月) 00:25:41.59ID:MwTEJuIp特にアクションゲームは普通のアプリと比較しても
オブジェクト同士の相互作用がとても多いし、プレイヤーもそれを求めてプレーしている以上
ゲームの面白さに直結しているので減らすわけにはいかない
これをまともにオブジェクト指向の流儀にのっとって設計すると
メッセージの投げ合いだらけになって、だれがどこで何をしているのかわからなくなって
バギーになる可能性がある
ところがオブジェクト指向が便利な場面もあるから、そのサジ加減が難しい題材という意味では
非常に良いかもしれないが、将棋以上に荒れるのは必須
荒れない範囲で書くなら、大きく分けて
・描画エンジン
・サウンドエンジン
・物理エンジン
・入力処理
・ロジック処理
ここまでは問題ないだろうが、ここから先の細かいことを言い出すと荒れる
描画エンジンとサウンドエンジンと物理エンジンと入力処理に関しては、わりと決まりきったことを機械的にするだけなので
問題ないだろうが、ロジック処理はかなり個性が出るというか荒れる
0931デフォルトの名無しさん
2016/05/30(月) 00:30:09.97ID:AVs/GCxh現実を逃避する
オブジェクト指向?
0932デフォルトの名無しさん
2016/05/30(月) 00:34:19.68ID:j9NktVXeダブルディスパッチというかVisitorパターンでしょ
0933デフォルトの名無しさん
2016/05/30(月) 00:37:55.36ID:ND1XxSGpむしろゲームにこそ向いている
0934デフォルトの名無しさん
2016/05/30(月) 00:57:53.90ID:RhU6P4T4荒い粒度でならオブジェクト指向するのは当然だろうけれど、細かい粒度でも同じ事やったら
明らかにオーバヘッドで性能がでない。
で、「粒度による」ってのが人それぞれというか経験的なものでしかないので
共有が難しいってこと。
0935デフォルトの名無しさん
2016/05/30(月) 02:24:41.28ID:ewV/OC7O> どう作ってもクソにしかならない
> オブジェクト指向ってダメなのかもしれんね
そういう結論に持っていこうとする
意図があからさま過ぎたが、正体ばらしたかw
0936デフォルトの名無しさん
2016/05/30(月) 02:25:30.03ID:ewV/OC7O> 仕様の変更や追加に強くなるから
どういった理由で?
特定の場合にしか当てはまらない設計をすることは
仕様の変更や追加に弱くなる。
0937デフォルトの名無しさん
2016/05/30(月) 02:30:01.13ID:ewV/OC7O役割の分担じゃなくて、
処理の分担になっているって所。
こいつは恐らく検索処理はどんなものであっても
検索処理コンポーネントにまとめるに違いない。
0938デフォルトの名無しさん
2016/05/30(月) 03:08:47.31ID:MwTEJuIpもっと言えば機能の分担で良いと思う
0939デフォルトの名無しさん
2016/05/30(月) 03:12:13.65ID:ewV/OC7O一つのクラスの中で処理(メソッド)を2つに分ける。
どうせ思考ロジックなんてデータ構造も必要な処理も
そのロジックに最適化された形で決まるんだから、
それらは「思考ロジック」という役割にまとめるしかない。
0940デフォルトの名無しさん
2016/05/30(月) 03:14:00.77ID:ewV/OC7Oそれでいいよ。オブジェクト指向的に言えば
一つのクラスの中で処理(メソッド)を 幾つかに分ける。
別に2つに限定する必要はなかったねw
0941デフォルトの名無しさん
2016/05/30(月) 03:14:49.89ID:MwTEJuIp0942デフォルトの名無しさん
2016/05/30(月) 03:19:59.83ID:ewV/OC7Oだから最初からそう言っている。
オブジェクト指向的に〜とかいう話をしてるから、
一つのクラスにするって話になるってだけ。
思考ロジック部分をインターフェースだけ決めて
そのインターフェースを実装する形にすれば
思考ロジックを切り替えやすくなるからね。
と言っても「思考ロジックを切り替えられるようにする」という
要件は明確には出てない。これはこっちのギリギリの譲歩で
無理やりオブジェクト指向の枠内に入れただけ。
ゲームでは難易度調整で思考ロジックの切り替えは当然あるだろうし、
強いAIを作るための研究であっても、別々の思考ロジック同士を
戦わせるってことはあるだろうしさ。
0943デフォルトの名無しさん
2016/05/30(月) 08:11:02.74ID:ekC4cwoE0944デフォルトの名無しさん
2016/05/30(月) 10:28:51.98ID:rIAW5ZZoこれは流石にお粗末だと思うし、設計が未熟な新人ならもう少し謙虚になるべきだと思う
0945デフォルトの名無しさん
2016/05/30(月) 11:47:28.04ID:8pkfhQuvOCPに違反した劣悪な設計
0946デフォルトの名無しさん
2016/05/30(月) 11:58:04.55ID:PEEN5NGh規模も小さくプログラマの質も低いそこらのプロジェクトじゃ意味無いよな
きっちり動くのだけ残すべきだし、継承なんて安易にするもんじゃない
0947デフォルトの名無しさん
2016/05/30(月) 12:04:11.10ID:8pkfhQuv小便漏らして泣き出しちゃうの?
0948デフォルトの名無しさん
2016/05/30(月) 12:32:24.29ID:ND1XxSGpこれはよく分からん
スレで例にする話なら
ドラクエとか既存のRPGでいんじゃね
0949デフォルトの名無しさん
2016/05/30(月) 12:59:01.99ID:g392/VKXすきあらば話をすり替えようとしてるの、
バレバレだw
0950デフォルトの名無しさん
2016/05/30(月) 13:17:27.81ID:8pkfhQuv間違いを明確に指摘されても分からない突き抜けたバカ
Aperyを確認したら
0951デフォルトの名無しさん
2016/05/30(月) 14:31:40.52ID:23kor2oMaperyのソースのうち、classは18個ある。ちなみにenumは22個。
classのうち継承を使っているのは4個で、親は全て標準ライブラリからのもの。
このうちメソッドを追加しただけのものが3個。
virtualを使っているクラスはThreadのみで、実装も1つだけ。
メンバ変数として他のクラスを保持しているクラスはMovePickerのPositionのみ。
Positionクラスも含めその他の全ては構造体+メソッド。他のクラスも同様。
aperyはC++をbetter Cとして使っている。オブジェクト指向で設計したものではない。
具体的にはテンプレート、演算子のオーバーロード、クラスの使い方も構造体に付随する関数をまとめるというもの。
オブジェクト間の相互作用も無いしクラスの階層構造を使ったコードの再利用も外側のごく一部だけ。
ますます例として不適切だと分かるわな。
0952デフォルトの名無しさん
2016/05/30(月) 14:44:44.86ID:eYr/WPsF0953デフォルトの名無しさん
2016/05/30(月) 14:57:17.60ID:eYr/WPsFここらへんなんてオブジェクト指向としてみたら糞だよね
enumをswitchで判定してreturnで値を返すってのは
パターンマッチって感じでむしろ関数型プログラミングに近い
0954デフォルトの名無しさん
2016/05/30(月) 15:26:25.89ID:W9xaEvpVswitchをオブジェクトにしたがるやつ。
0955デフォルトの名無しさん
2016/05/30(月) 15:28:07.91ID:3FEoI+9eん〜学生さんは気楽でいいなぁ〜
0956デフォルトの名無しさん
2016/05/30(月) 15:30:09.07ID:ekC4cwoEswitchで書かれていれば一覧になっていて一目瞭然なのにワザとか馬鹿なのか知らないけど
抽象化されてて全部で何種類処理が分かれてるのか分からないの
0957デフォルトの名無しさん
2016/05/30(月) 15:39:10.62ID:ILfmqIwk次スレたつのかね
0958デフォルトの名無しさん
2016/05/30(月) 15:49:54.27ID:cLUfCSU40959デフォルトの名無しさん
2016/05/30(月) 16:48:44.47ID:ekC4cwoEどうやってテストしたのか言ってごらんよ
0960デフォルトの名無しさん
2016/05/30(月) 17:36:35.20ID:8pkfhQuvってバカな主張はさすがにやめたんだw
0961デフォルトの名無しさん
2016/05/30(月) 17:40:07.46ID:8pkfhQuvオブジェクト指向で設計するのは無理って言ってた奴がオブジェクト指向のあるべき設計を語っちゃうって頭おかしんじゃね
0962デフォルトの名無しさん
2016/05/30(月) 17:51:47.74ID:eYr/WPsF後 評価関数や定跡はバイナリで配布されてるからそこらへんがなんともいえない
0963デフォルトの名無しさん
2016/05/30(月) 17:54:05.34ID:eYr/WPsF>オブジェクト指向で設計するのは無理って言ってた奴がオブジェクト指向のあるべき設計
aperyはオブジェクト指向で書かれてないのでオブジェクト指向で設計したものではないって事ではないの?
0964デフォルトの名無しさん
2016/05/30(月) 18:02:17.22ID:8pkfhQuvモジュールにもクラスにも分ける必要はない、1つにまとめるのが最高の構成!!!
だとさ
0965デフォルトの名無しさん
2016/05/30(月) 18:13:18.75ID:ixAozmxiまるでアホの子供だな
0966デフォルトの名無しさん
2016/05/30(月) 18:25:45.94ID:cZLZyxJT0967デフォルトの名無しさん
2016/05/30(月) 19:25:11.10ID:+7J42eKtでもこのスレじゃ先走るバカがいるから決められない
だから将棋ソフト開発スレを立ててじっくりやろうってところに落ち着いた感じかな
0968デフォルトの名無しさん
2016/05/30(月) 19:27:28.87ID:8pkfhQuv要件が分からないバカ
0969デフォルトの名無しさん
2016/05/30(月) 19:35:00.08ID:+7J42eKtお?aperyのソースは読み終わった?宿題だからはやくやっとけよ
0970デフォルトの名無しさん
2016/05/30(月) 19:38:36.35ID:8pkfhQuv電王戦の参加者はニコニコが書いた要件を理解して参加してるのにいまだに理解できない奴w
0971デフォルトの名無しさん
2016/05/30(月) 19:39:44.40ID:eYr/WPsFうーん会話がいまいち通じない
0972デフォルトの名無しさん
2016/05/30(月) 19:49:06.41ID:eYr/WPsF電王戦の参加者は機械学習や計算機科学についての知識がある人達だけど
ここのスレにいる人たちは必ずしもそうじゃない
0973デフォルトの名無しさん
2016/05/30(月) 19:50:50.18ID:ND1XxSGp2ちゃんのレベルで
クラス1個とかやらないよな
0974デフォルトの名無しさん
2016/05/30(月) 19:52:15.30ID:8pkfhQuv理解力のなさが異常
ニコニコのルール・条件のどこが機械学習や計算機科学特有だと思ったのか?
0975デフォルトの名無しさん
2016/05/30(月) 19:58:45.90ID:eYr/WPsF人間に勝てる将棋AIを作るってのは普通に機械学習の知識がないと無理だと思うんだけど
0976デフォルトの名無しさん
2016/05/30(月) 20:00:14.80ID:8pkfhQuvコイツは理解力が異常なまでに欠如しているせいでいろいろ勘違いしてそう
0977デフォルトの名無しさん
2016/05/30(月) 20:03:26.56ID:eYr/WPsF将棋AIを作るんじゃなかった?
0978デフォルトの名無しさん
2016/05/30(月) 20:07:26.50ID:8pkfhQuvやっぱりw
0979デフォルトの名無しさん
2016/05/30(月) 20:09:51.65ID:eYr/WPsFっていうのは共通認識だと思ってたんだけどな
0980デフォルトの名無しさん
2016/05/30(月) 20:12:45.47ID:8pkfhQuv要件を理解してるのに「結局要件次第だから要件をキッチリ決めよう」ってしつこく言ってたならバカ
電王戦の参加者は理解した要件を理解できないなら理解力の欠如
0981デフォルトの名無しさん
2016/05/30(月) 20:38:00.16ID:eYr/WPsFつまり将棋AIを作るって事では?
0982デフォルトの名無しさん
2016/05/30(月) 20:50:04.74ID:ILfmqIwk→ID:8pkfhQuv
どういう思考ルーチンにするか明示されてないから決めよう
→ID:eYr/WPsF
なのかな?
0983デフォルトの名無しさん
2016/05/30(月) 20:51:12.69ID:ILfmqIwk0984デフォルトの名無しさん
2016/05/30(月) 21:07:47.33ID:j9NktVXe(必須機能)
第5条 参加ソフトは、次の各号に掲げる機能を持たなければならない。
一 任意の局面・手番・残り時間からの将棋の対局の開始と継続。
二 任意の時点での対局中断。
三 対局中の現在局面の表示。テキストでも良い。
四 第 19 条の規定による、1 手毎の消費時間の計測、及び累計消費時間の画面への表示。
五 1 手毎の指し手と消費時間の記録。対局中断時も、そこまでのすべての指し手と消費時間を取り出せなければならない。 六 CSA サーバプロトコル ver.1.1.3 に基づく、LAN による対局。
七 相手の指し手の手入力による対局。
0985デフォルトの名無しさん
2016/05/30(月) 21:08:43.43ID:j9NktVXe第6条 参加ソフトは、次の各号に掲げる機能を持つことが推奨される。ただし、機能を持たないことによって不利になることはない。
一 千日手の検出。
二 LAN による通信で送受信した文字列の必要に応じた表示。
三 任意の局面・手番・残り時間からの LAN による通信での将棋の対局の開始と継続。
http://denou.jp/tournament2015/img/rule/denou_tournament_rule2015.pdf
0986デフォルトの名無しさん
2016/05/30(月) 21:12:10.48ID:ILfmqIwk有能
0987デフォルトの名無しさん
2016/05/30(月) 21:17:26.56ID:eYr/WPsFいや俺は要件をきっちり決めようとは言ってないよ
機械学習とかAIについての知がない人達で将棋AIの設計なんて無理でしょって思ってるだけで
>合法手からランダム
ならいいけど
0988デフォルトの名無しさん
2016/05/30(月) 21:19:03.79ID:ILfmqIwk勘違いごめん
回答ありがとう
理解した(つもりかもしれんけど)
0989デフォルトの名無しさん
2016/05/30(月) 21:27:46.75ID:8pkfhQuvだったら>>970に対するレスのつけ方がおかしい
要件が不明瞭って言ってると受け止めるのが普通
0990デフォルトの名無しさん
2016/05/30(月) 21:51:53.77ID:ZWFY3jHL誰が書いたか知らんが幼稚な表現が多い文章だなw
誰も校正しなかったんやろか
0991デフォルトの名無しさん
2016/05/30(月) 22:22:43.38ID:Usq7Wp/A甲だの乙だの書いてあるのがお好き?
0992デフォルトの名無しさん
2016/05/30(月) 22:47:26.31ID:ZWFY3jHL論文では使わない表現が多いやろ
というか無理してる感がにじみ出てさむいわw
きちんと書けないならもっとカジュアルに表現すれば
全体の統一感が出て少しはマシになると思うんやけどな
0993デフォルトの名無しさん
2016/05/30(月) 22:53:57.20ID:ewV/OC7Oaperyでも思考ロジックは1クラスだろw
0994デフォルトの名無しさん
2016/05/30(月) 22:55:20.39ID:8pkfhQuvえ?
0995デフォルトの名無しさん
2016/05/30(月) 22:57:44.15ID:j9NktVXe0996デフォルトの名無しさん
2016/05/30(月) 22:58:42.79ID:ewV/OC7Oなんか、わざとらしく話をすり替えようとしている臭がするなwww
0997デフォルトの名無しさん
2016/05/30(月) 22:59:24.96ID:8pkfhQuv>>993をごまかすなwww
0998デフォルトの名無しさん
2016/05/30(月) 22:59:41.16ID:miEVgFPq0999デフォルトの名無しさん
2016/05/30(月) 23:00:22.80ID:V8MlYic6たとえば二分探索のロジックをクラスにして
分割するとか意味不明だろw
1000デフォルトの名無しさん
2016/05/30(月) 23:00:45.60ID:pXhtjcNw必死すぎwwwwwwwwwwwwwwwwwwwwww
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
life time: 11日 0時間 52分 58秒
10021002
Over 1000Thread運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 2ちゃんねる専用ブラウザからの広告除去
★ 2ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
http://premium.2ch.net/
http://pink-chan-store.myshopify.com/
レス数が1000を超えています。これ以上書き込みはできません。