1 名前:デフォルトの名無しさん [2016/05/19(木) 22:07:47.87 ID:9fCVrsOw.net] 手順とかノウハウとか語りたい
660 名前:デフォルトの名無しさん [2016/05/25(水) 20:31:04.99 ID:FG6PmAiu.net] >>648 他の人が分かるように明確に書こうね。 お前は設計書の書き方をしらないみたいだからコードで書いてくれる。
661 名前:デフォルトの名無しさん [2016/05/25(水) 20:36:21.84 ID:FG6PmAiu.net] ちなみにコードで書けってのは全部は求めてないから。 Cで言うところのヘッダファイルの内容でいいぞ。 どうやって保持しようとしてるのか第三者にもちゃんと伝わる形で書けってこと。 設計を書けるなら設計でもいいぞー。
662 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 20:37:04.26 ID:kC1gn4Wj.net] >>650 switch(koma) { case KEIMA: 次に動ける箇所(複数)にコマを動かして評価関数呼び出し }
663 名前:デフォルトの名無しさん [2016/05/25(水) 20:38:47.79 ID:FG6PmAiu.net] >>652 しょぼっw まさかこれで終わりじゃないよな??
664 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 20:39:47.00 ID:kC1gn4Wj.net] >>6
665 名前:53 ムダに複雑にするなよw. お前、手段が目的にすり替わってるぞ。 沢山コードかくことが、ちゃんと仕事した証拠なんだって 思ってるだろw [] [ここ壊れてます]
666 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 20:40:58.77 ID:kC1gn4Wj.net] いつも通りだけど、レスの内容がおかしんだよなw 正しいか間違っていからじゃなくて、 しょぼいかどうかw
667 名前:デフォルトの名無しさん [2016/05/25(水) 20:42:29.45 ID:FG6PmAiu.net] >>654 これで第三者がお前の考えを理解して構築できるようになると考えているならとんでもなくおめでたい。 客にこんなの出したら呆れられて「もう来ないでいいよ」って言われる。
668 名前:デフォルトの名無しさん [2016/05/25(水) 20:43:25.03 ID:FG6PmAiu.net] >>655 どういう構成を想定してるのか全然伝わらない。
669 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 20:44:08.66 ID:kC1gn4Wj.net] >>630 > どうぶつ将棋や摩訶大将棋に拡張したり、 YAGNI https://ja.wikipedia.org/wiki/YAGNI "You ain't gonna need it"[1]、縮めて YAGNI とは、機能は実際に必要となるまでは追加しないのがよいとする、エクストリーム・プログラミングにおける原則である。 理由 YAGNI原則を提唱する人々は、その理由として以下を挙げている。 ・後で使うだろうという予測の元に作ったものは、実際には10%程度しか使われない。したがって、それに費やした時間の90%は無駄になる[2]。 ・余計な機能があると、仕事が遅くなり、リソースを浪費する[2]。 ・予期しない変更に対しては、設計を単純にすることが備えとなる。そして、必要以上の機能を追加すると、設計が複雑になってしまう[2]。 ・人生の時間は、貴重である。したがって、人間の能力は、ただコードを書くためではなく、現実の問題に集中するために使うべきである[3]。 ・結局は、その機能は必要ないかもしれない。もしそうなったら、あなたがその機能を実装するのに費やした時間も、他のみんながそれを読むのに費やした時間も、その機能が占めていたスペースも、すべて無駄になってしまうだろう[3]。 ・コードをすばやく実装するために最も良い方法は、あまりコードを書かないことである。そして、バグを減らすために最も良い方法も、あまりコードを書かないことである[3]。
670 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 20:44:55.61 ID:kC1gn4Wj.net] >>657 > どういう構成を想定してるのか全然伝わらない。 それはお前のER図の話だw 何を想定しているかわからないから、 そんなのいらんだろって言ってる。
671 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 20:45:40.89 ID:kC1gn4Wj.net] >>656 え?なんで?w いつもながら理由が書いてないなw
672 名前:デフォルトの名無しさん [2016/05/25(水) 20:46:43.66 ID:FG6PmAiu.net] >>659 ER図を理解できない奴発見wwww ERが分からないって言って出してきたのが、これ?? switch(koma) { case KEIMA: 次に動ける箇所(複数)にコマを動かして評価関数呼び出し } 笑わせよるわ〜www
673 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 20:49:13.86 ID:kC1gn4Wj.net] 将棋のルールを知っていれば当然わかると思うけど、 動ける場所はデータとして持たせることは難しいんだよな。 歩とか金とかならまだいいけど、 飛車とか角とか縦横または斜めのどこにでも動けるから この動きをデータとして持たせるのは不可能じゃないけど、 結局コードが必要になるので冗長
674 名前:デフォルトの名無しさん [2016/05/25(水) 20:49:27.02 ID:FG6PmAiu.net] >>660 お前が設計を分かってないとは感じていたけどここまで分かってないとは思ってなかったwww もう休んでいいぞ。 設計について語ろうってスレに書き込んじゃだめなレベルだから。
675 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 20:50:28.37 ID:kC1gn4Wj.net] >>661 お前、何一つ言い返していない。 俺がやったことを、単にお前が語ってるだけ。 それでお前はどうしたいんだ?
676 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 20:51:09.26 ID:kC1gn4Wj.net] >>663 > 設計について語ろうってスレに書き込んじゃだめなレベルだから。 って、それお前が沢山の人に言われたセリフだよなw
677 名前:デフォルトの名無しさん [2016/05/25(水) 20:57:18.51 ID:FG6PmAiu.net] switch(koma) { case KEIMA: 次に動ける箇所(複数)にコマを動かして評価関数呼び出し } を構築チームに渡せばお前の考えている構成が伝わると思ってる相手と 技術的な会話を成立させるのは無理だわ。 あー、ちなみにERはほんの最初だから。 設計の5%くらいは進んだかなあってレベル。 それも分かってなかったみたいだね。
678 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 20:57:36.43 ID:9xysTXwv.net] >>639 面白いよなwww さすがにソース全部見る気にはならんが インターフェースのなかの ストラテジーやらファクトリーやらビジターやら見てみて ようやるわ! って感じでうけたwww
679 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 20:59:24.44 ID:la8ZiYsl.net] >>652 はさすがにないわ 将棋を知らないのかもしれんがあまりにお粗末
680 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 22:06:55.68 ID:60iV75hD.net] DFSの再帰だってことぐらいはパッとわかるが
681 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 22:12:02.90 ID:FG6PmAiu.net] >>669 ID:kC1gn4Wjかなw
682 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 22:13:41.56 ID:60iV75hD.net] 違うよ
683 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 22:17:42.15 ID:FG6PmAiu.net] >>671 どこから再帰を見出したのが謎過ぎるw
684 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 22:19:58.55 ID:60iV75hD.net] ゲーム木の処理だったらDFSかBFSでしょ キューに入れないで関数呼び出してるから再帰かと
685 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 22:25:15.21 ID:FG6PmAiu.net] >>673 そうかそうか。 突っ込みどころ満載のなんちゃってコードについてもっと語り合って楽しみたいんだけど 他の人の迷惑になるから心残りだけどおしまいにするよ。 まじで楽しませてもらったw
686 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 22:25:22.62 ID:7yHwSTAr.net] www.geocities.jp/bonanza_shogi/#news とりあえずここから bonanza のソース取ってきて、 src/client/evaluate.c でも読んでみたらいい。
687 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 22:29:11.19 ID:FG6PmAiu.net] >>675 Bonanzaの設計はひどいって聞いたから読むならAperyだな。 でも、将棋ソフトを作りたいんじゃないから。 将棋ソフトを例に、システムを設計するにあたって抱く疑問点に対する一般的な指針を語りたいんだ。
688 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 22:37:37.91 ID:60iV75hD.net] 普通にMVCでCにゲームループでMに盤面持ってればいいじゃん
689 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 22:38:35.12 ID:fBBvLnfI.net] そういう考え方がすでに駄目なんだよきっと だってそもそもいい設計って何? どうなれば満足なの?
690 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 22:39:36.05 ID:60iV75hD.net] 要求仕様によってはMVCすら必要ないな
691 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 22:41:35.38 ID:fBBvLnfI.net] 将棋なんて 俺が刺した瞬間にCPU側が指し終わってるぐらいで丁度いい つまりクリックイベントと開始ボタンの処理だけで十分
692 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 22:42:53.48 ID:7yHwSTAr.net] >>676 だったら上記のソースの駄目なところと それをどのように改善すべきなのか言ってみたらいいだろう。 てかこのくらいのコードも読めないならそもそも話にならんと思うんだが。。
693 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 22:44:20.19 ID:FG6PmAiu.net] >>681 そこまで言うならどういう構成になってるのか読んで理解してアップすればいいじゃん。
694 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 22:46:51.60 ID:7yHwSTAr.net] 話にならん。。 ここまで手取り足取り要求されるのはかなわんわ。。
695 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 22:50:20.97 ID:FG6PmAiu.net] >>683 は?俺からは一度も要求してないが。 お前は簡単に読めちゃうって言ったんだからだったら読めばってだけ。 俺はそもそも仕様書書くべきって考えだから。
696 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 22:53:53.99 ID:fBBvLnfI.net] 将棋.exe起動→駒配置→俺のターン!→駒選択(クリックイベント処理) →駒移動(クリックイベント処理) 勝利判定→敵のターン!→敵思考ルーチン処理 →敵駒選択→敵駒移動→勝利判定→俺のターン!→以下ループ 勝利判定したら→結果表示→もう一度やる?→Yes:駒配置に戻る→No:将棋.exe終了 できた!
697 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 23:00:09.81 ID:FG6PmAiu.net] >>685 ほうほう。多少違ってるけどまずまず。 後手のケースもある。 人のターンの最中もソフトは思考を続ける。
698 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 23:04:17.28 ID:fBBvLnfI.net] >>686 後手のケースは敵のターンから始めるだけだ exeの起動パラメータに「うんこ」っていれると後手になる
699 名前: [] [ここ壊れてます]
700 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 23:05:30.70 ID:FG6PmAiu.net] >>685 勝利判定の位置も思考して初めて勝利判定できるからちょっとおかしいな。
701 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 23:06:08.87 ID:60iV75hD.net] 設計いらんかったなw
702 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 23:06:16.40 ID:VNiDmyVP.net] とりあえずC/C++派は傍観でいいんじゃないか? 一流()のJava屋の設計()を見せてもらおう。 ShogiEnterpriseEdition()ができそうだし。 あと俺もC++派でJavaはやったこと無いんだが、 取り急ぎ確認した結果、お前らが空回りしている理由は分かるから、それは言っておく。 それは、JavaがC--だからだ。用語の対比は以下。 C++: グローバル = Java: クラスにしてシングルトン C++: enum = Java: クラスにしてfinal指定(継承禁止のconst static) C++: define = 同上。 つまりC++の方がより詳細に記述できる。(C++の記述力の方が完全に上) だからお前らがdefineとかenumだーとか言っても、それはJava屋にとっては全部「クラス」になっちゃうわけ。 つまり、Java屋でしかない奴(>>1 )は、C++の精度では議論不可能なんだよ。だから空回りする。 まあそれ以上に>>1 が無知かつ無能なのは事実だが。 俺個人の意見はポロポロ出ている意見と同じ物も多々あるけど、 >>1 はそれを全否定しているのだから、ここはとりあえず放置しかないだろ。
703 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 23:08:11.77 ID:FG6PmAiu.net] >>690 論理設計を知らないんだね…。
704 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 23:08:59.99 ID:fBBvLnfI.net] >>688 いいや合ってるはずだ
705 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 23:09:26.74 ID:60iV75hD.net] >>690 プリミティブ型(int, long, etc)のvectorは羨ましい あとpairとかつまりstd最高
706 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 23:10:00.78 ID:60iV75hD.net] >>693 stlねw
707 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 23:11:58.52 ID:FG6PmAiu.net] >>692 そうか? それなら勝利判定と思考ルーチンの関係がはっきりしないからかもしれん。 ロジック部分の設計はまったく未着手だからこれからか。
708 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 23:13:00.88 ID:uKYFBn7C.net] >>614 Moveってのは自分の手番でさせる手を洗い出して格納するって事? それって必要?
709 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 23:15:28.62 ID:fBBvLnfI.net] >>695 勝利判定って王をとったかどうかですよ
710 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 23:16:24.59 ID:FG6PmAiu.net] >>696 データを整理するためにER図を使っただけ。 >>628 で「データを整理する別の手法があるなら教えて」って書いたのはそういうのもある。 ただ、>>631 があるから過去の棋譜はDBに格納する方針にした。
711 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 23:19:38.28 ID:FG6PmAiu.net] >>697 あー、そういうこと。 電王戦見てたら棋士は勝つ見込みがなくなったら投了するんだと。 ソフトは逃げる手がなくなるくらいまで続けるけど、王を取られるとこまではやらない。 まあ、そこは単なる将棋のルールなんでどういう意図で設計したかは了解した。
712 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 23:26:27.98 ID:uKYFBn7C.net] >>698 いやいやいや ER図なんだからDBに保存されるデータ構造だよね 多分やりたい事はクラス図なんじゃないの
713 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 23:28:05.15 ID:VNiDmyVP.net] >>693 あるように見えるけど、 これは<T>ではなく<E>となっているのは、プリミティブは駄目でオブジェクトだけって事? それもよく分からん仕様だな。しかも今まで改修されていないのも謎。 ArrayListも<E>だね。 https://docs.oracle.com/javase/jp/6/api/java/util/Vector.html https://docs.oracle.com/javase/jp/6/api/java/util/Arrays.html https://docs.oracle.com/javase/jp/6/api/java/util/ArrayList.html 標準に入るかどうかは別として、C++の場合は勝手ライブラリが対応したりするものだけど、 Javaはそういうの禁止なんだっけ? なお完全にスレチなので、続きはJavaスレでということならこちらも移る。
714 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 23:29:15.28 ID:driOGhFD.net] プレイヤーどものresignイベントや盤面のmovedイベント、時計のtimeupイベントを監視して、必要に応じて終局処理するとかじゃ駄目?
715 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 23:29:50.65 ID:FG6PmAiu.net] >>700 やりたいことは保持すべきデータの整理。 UMLではクラス図を使うのは知ってるんだけど、データ構成の明確な指針が書かれた本とかある? データベースの表設計は正規化のルールがかなりきっちりあるからそれを守れば 誰が設計してもほぼ同じ形になる。 業務システムならどうせ表に格納するってこともあるからERからやっちゃうんだよねえ。 実際どうなんだろうと思ってはいるんだけど。
716 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 23:34:56.63 ID:FG6PmAiu.net] >>702 実際の終了条件はいくつかあるからそうだろうね。 二歩とかもあるもんな。
717 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 23:37:00.20 ID:uKYFBn7C.net] >>701 EやTは総称型(ジェネリック)を表してるだけで別に意味はなくてXでもAでもなんでもいい プリミティブ型は指定できないけどAutoBoxingされるから利用上はプリミティブが使える
718 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 23:44:52.07 ID:9xysTXwv.net] お、なんか活発になってるな
719 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 23:45:42.01 ID:VNiDmyVP.net] >>705 > AutoBoxing サンクス。まあ普通はそうだよな。それで大して問題にならないだろうし。
720 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 23:47:32.64 ID:QzZ3vWh9.net] オブジェクト指向をまともにやると、頭が悪くなるよ データの整合性の管理はうまくいくんだけど・・・ 複数のオブジェクトにまたがる処理をどのクラスに書こうかと悩んで どれか一つのクラスに押し込んだり または、元は一連の一つながりの処理だったものを分断して彼方此方にちりばめたり もともとの発想がね、オブジェクト中心ってのが、なんか、バカっぽいでしょ オブジェクトは何か物体感があるから、それ中心で考えるのは子供でも理解できてわかりやすいけど 世の中大人の世界はそんな発想で動いてないからねぇ 目に見えない何かのほうが重要だったり
721 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 23:49:10.47 ID:FG6PmAiu.net] >>708 オブジェクトをちゃんと理解していないからオブジェクト指向をバカにするのはやめましょう。 「使いたくない」ってだけなら個人のご自由にどうぞ。
722 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 23:58:14.27 ID:FhH1DHd+.net] >>703 だから保持ってのがアプリが終わっても保持なのか実行中だけ必要なのかが考えられてないんじゃないの? アプリが終わっても必要なのって棋譜データだけなんじゃない アプリ実行中に必要なデータはクラス図で書いて、処理間の受け渡しはデータフロー図で書いて、受け渡しの情報として足りてるかを判断しながら設計サイクル回せばええんでないの 正規化とか落とし込み以前の考察を吹っ飛ばしてら感が否めない
723 名前:デフォルトの名無しさん mailto:sage [2016/05/26(木) 00:00:24.78 ID:0AsVpwBA.net] 盛り上がってまいりました。
724 名前:デフォルトの名無しさん [2016/05/26(木) 00:01:34.72 ID:Xc1/bPBx.net] >>710 いや俺のなかじゃ区別できてるよ。 まあ、そこは言い争ってもしょうがないので話題を少し変えると、 @将棋ソフトの設計をオブジェクト指向でやるとしてどういうステップでやる? Aクラスに分けるときの方針は?明確な指針を探しているんだけど見つけられていない。
725 名前:デフォルトの名無しさん [2016/05/26(木) 00:10:48.99 ID:Xc1/bPBx.net] >>710 もっと具体的に言うと例えば駒クラスを作ってそのサブクラスとして王クラス、飛車クラス、…と作ることも可能だし、 駒は情報として使うだけでクラスは必要ないって考え方もある。 手についても同じようにクラスにするかしないかどっちもあり得る。 そういうときにどのような構成にするかどうやって判断すべきだろう?
726 名前:デフォルトの名無しさん [2016/05/26(木) 00:12:03.37 ID:Xc1/bPBx.net] そういう意味じゃ盤面もそうだな。
727 名前:デフォルトの名無しさん mailto:sage [2016/05/26(木) 00:15:25.90 ID:y/d2Tqn1.net] いい設計の基準がないんだよな だからいくら議論しても無駄なんだよな 自分の発言を正当化するためにいろんな基準をその時々で変えるんだよな 俺は資料とソースを一致させるための設計であると思ってる 別に構造がクソでも資料と一致していれさえすればいい だから設計書のないソースは評価できない いいも悪いもよくわからない 何を基準に何のために設計したのかわからない 資料に表現しやすいソースであるべきだし ソースを追える資料であるべきだと思う 俺はね
728 名前:デフォルトの名無しさん [2016/05/26(木) 00:16:44.44 ID:Xc1/bPBx.net] >>715 ID:FhH1DHd+じゃないよな?
729 名前:デフォルトの名無しさん mailto:sage [2016/05/26(木) 00:17:46.75 ID:y/d2Tqn1.net] >>716 idなんか見てる奴は素人
730 名前:デフォルトの名無しさん [2016/05/26(木) 00:18:46.69 ID:Xc1/bPBx.net] >>717 プロは何で確認すんだよw 分かりにくいからはっきり答えろ。
731 名前:デフォルトの名無しさん mailto:sage [2016/05/26(木) 00:25:44.91 ID:J6SaR2wI.net] いい加減順序がおかしいことに気付け ⑴要件を定義する → ⑵設計の方針を決める → ⑶設計する いきなり設計しろ設計しろとか言ってるわりに方針が見つからないとか馬鹿げてるし 将棋ソフトも要件決めてない(もしくは提案者の頭の中にしかない)から 思考ルーチン単体なのか将棋ソフト全体なのかすらも話題が定まってない グダグダでどうにもならない悪い見本にしかなってない
732 名前:デフォルトの名無しさん mailto:sage [2016/05/26(木) 00:28:15.06 ID:Xc1/bPBx.net] >>719 要件>>615 将棋ソフト全体
733 名前:デフォルトの名無しさん mailto:sage [2016/05/26(木) 00:45:23.61 ID:UZPGQYZs.net] >>712 結局は以下の繰り返しでしょ 1. 自分の手番でさせる駒と位置のリストを出す 2. リストから1つ選んでさす 3. 相手の手番でさせる駒と位置のリストを出す 4. 相手がさす 5. 相手の指し手がリストにあるか判断 っで、最初は2の実装はリストの先頭の手を返すように作り、後で勝てる指し手を判断するロジックに変える 5も同じで、相手の指し手の評価をするロジック後で追加する そん次は2手3手先読みして勝てる判断の制度を上げるために4の処理を3で出したリストで片っ端に当てはめて2手3手先の組み合わせを評価する なんて事してると組み合わせが多すぎるので悪手の組み合わせは評価しないとかふるいをかけるって感じで精度を上げていくけど、1から5のインターフェースは一貫して変わらない様にするならどーする?って考えるのが設計なんじやないかな
734 名前:デフォルトの名無しさん mailto:sage [2016/05/26(木) 00:48:45.72 ID:UZPGQYZs.net] id見てるみたいだけど俺はFhH1DHd+なw
735 名前:デフォルトの名無しさん [2016/05/26(木) 00:49:43.97 ID:Xc1/bPBx.net] >>721 ID:FhH1DHd+だったら明記してくれ。 話が続いていない気がするんだけどよく分からん。
736 名前:デフォルトの名無しさん [2016/05/26(木) 00:53:34.08 ID:Xc1/bPBx.net] >>721 同じ人なのか? Aクラスに分けるときの方針は? について話したいから戻っていい? >>713 と>>714 についてはどう思う。 かっちりした明確な基準はないならないでいいんだけど回答欲しい。 探しても見つけられていないから知ってたら知りたい。
737 名前:デフォルトの名無しさん [2016/05/26(木) 00:58:55.60 ID:Xc1/bPBx.net] ちなみに>>721 はそうだとは思うけど緩いじゃん。 設計中に出てくる個々の疑問を決定する際の明確に指針になるかというと ならないと思う。 俺自身もそれとそんなに変わらない程度の指針に基づいて決定してるんだけど 誰が設計してもある程度同じものができる指針ってないもんかねえって思ってる。
738 名前:デフォルトの名無しさん mailto:sage [2016/05/26(木) 02:26:59.05 ID:mpyGJ1z1.net] >>713 , 724 クラスを作る作らないの判断基準、将棋の駒は良くわからんが・・・ 「通貨オブジェクト」とか参考にならないかな? 【実装】 通貨記号Enumと価格BigDecimalで別々に扱っていたのを一つのイミュータブルなクラスにまとめる。 加減算と乗除算メソッドがあり、加減算は同通貨とのみ可能、乗除算は数値とのみ可能とする。 【効果】 不用意なデータ破壊(JPYとUSDを足した等)の危険が減る。 通貨の振る舞いを通じて、プロジェクトメンバーの業務知識が向上する。 もちろん、採用するかの判断は別。 「並の人間がこんなアホな加算などするはずがない。面倒くさい事すんなよ。」とは俺も思う。
739 名前:デフォルトの名無しさん mailto:sage [2016/05/26(木) 05:27:22.00 ID:bwhpCAq0.net] 将棋ソフトという例が悪いのは、CPUの思考ルーチンが将棋ソフトのキモで、それ以外の処理は瑣末なことだと理解しているのかな。 現在の盤面(持ち駒含む)を入力を盤面として、指し手を出力として返す関数以外に力を入れる必要性は無い。 「どうぶつ将棋や軍人将棋などのルール変更に対応できるようにしたい」とか「過去の棋譜データを表示できるようにしたい」とかいう要請を入れない限り、 上にあったようなER図とか過去の棋譜データをDBに格納するとかの設計は思考ルーチンの足かせになるし、無駄になる。 「思考ルーチンは書けないけど些末事は任せろ!」と本質の邪魔しかしない設計をしてる奴を何と呼ぶか、俺は知ってるぞ。
740 名前:デフォルトの名無しさん mailto:sage [2016/05/26(木) 06:11:02.88 ID:UjMbTLsx.net] 将棋ソフトの内容は、ほぼ評価関数のロジックだけ。 オブジェクト指向とは、あまり関係がない
741 名前:デフォルトの名無しさん mailto:sage [2016/05/26(木) 07:24:48.28 ID:c+TCNzeK.net] >>658 YAGNI原則のプログラミングスタイルが取りやすい言語もしくはToolはなに? C++のクラスを書く前のクラスの要件定義と必要なメンバ関数、メンバ変数を書き出して 少しずつ実装すると頭がスッキリした感じでコードが書けるのだけど >>662 コマのデータを全部持つのじゃなく抽象化して、取り出した後、次の動作で移動可能な座標の 配列を作ってそれを評価するの 歩ー>成金?−>一歩前or金と同じ範囲 みたいに これを一盤面分作って、一手先を計算評価する それを繰り返し〜n手先の評価点も元に次の挙動を決める 恐ろしい計算量だね
742 名前:デフォルトの名無しさん mailto:sage [2016/05/26(木) 07:29:56.12 ID:c+TCNzeK.net] >>690 うすうす気がついていたけど、そうなんだ(ギャーーーー悲鳴
743 名前:デフォルトの名無しさん mailto:sage [2016/05/26(木) 07:35:50.77 ID:c+TCNzeK.net] 昔、読み下しの困難なスパゲティプログラムって揶揄があったんだけど C++のクラスって表現できる内容に厳しい縛りとか制限がないから アホが作ったプログラムー>スパゲティ 同class->収拾の付かない理解不能な何かになる
744 名前:デフォルトの名無しさん mailto:sage [2016/05/26(木) 08:29:42.66 ID:6psiGDvx.net] 良スレと思ったら将棋糞スレだった
745 名前:デフォルトの名無しさん mailto:sage [2016/05/26(木) 10:21:56.92 ID:mpyGJ1z1.net] ごちゃごちゃした要素があれば、オブジェクト指向の意味が出てくるかもしれん 課金スタイル考えよーぜ 謝罪文の掲載、アイテムの無効化、購入者抽出、アイテムの使用された対局の抽出、お詫びメールの送信、補填処理、省庁/監査対応etc... いろんなオペレーションに対応できる、そんな設計が必要になるぞ
746 名前:デフォルトの名無しさん mailto:sage [2016/05/26(木) 10:57:47.33 ID:GCo9DDJM.net] 将棋プロジェクト オブジェクト指向より関数型のほうが絶対綺麗になりそう
747 名前:デフォルトの名無しさん [2016/05/26(木) 11:12:52.45 ID:Xc1/bPBx.net] >>726 なるほど! 確かに複数の属性が不可分一体となってある要素を構成しているような場合は それらの値をオブジェクトにまとめるべきなんだろう。 となると、手は動かす駒、動かす先、成るかならないか、がまとまって初めて手になるんだから オブジェクトとするのが自然だな。 盤面も同じようにすべての駒が配置された状態を表すんだからやっぱりオブジェクトにすべきだろう。 さらに言えばマスも縦と横の両方が合わさっているからオブジェクトにするのがよいのかなあ。
748 名前:デフォルトの名無しさん [2016/05/26(木) 11:17:52.52 ID:Xc1/bPBx.net] 盤面をオブジェクトにするのはパフォーマンス的にどうなんだろうと 思って多少抵抗があったんだけど、まずは本来オブジェクトにすべきものは オブジェクトにした設計を完成させるのが良い気がしてきた。 パフォーマンスなどの考慮した加工は後の段階からすればいいこと。
749 名前:デフォルトの名無しさん [2016/05/26(木) 11:22:11.08 ID:Xc1/bPBx.net] >>734 実際の構成がイメージできるように、もうちょっと具体的にならんだろうか?
750 名前:デフォルトの名無しさん [2016/05/26(木) 11:29:07.18 ID:Xc1/bPBx.net] >>733 将棋は十分ごちゃごちゃしてると思うが。 実際考え出したら思ってた以上に複雑だった。 簡単っていうなら設計を提示してみ。 >>652 を見てからは、設計が単純って言ってる奴は設計のことを分かってないだけ じゃないかと思ってしまう。
751 名前:デフォルトの名無しさん [2016/05/26(木) 11:36:16.69 ID:Xc1/bPBx.net] >>729 駒がうごけるマスのデータをどう持つかはまだ決まってない。 駒によって動けるマスが違うってことをERに忘れることがないように明記しておいた。 データ的に言えば駒に依存して動きが決まるんだからまさに駒の属性情報。 設計の最初は実装をあまり気にせずに業務(将棋?)的に求められる要件を整理するのが基本だ。
752 名前:デフォルトの名無しさん [2016/05/26(木) 11:36:51.89 ID:Xc1/bPBx.net] 駒によって動けるマスが違うってことを忘れることがないようにERに明記しておいた。
753 名前:デフォルトの名無しさん mailto:sage [2016/05/26(木) 11:56:46.07 ID:EltQ4sqz.net] >>736 オブジェクトじゃなかったらなんなの?
754 名前:デフォルトの名無しさん mailto:sage [2016/05/26(木) 11:59:47.73 ID:GCo9DDJM.net] >>693 同じJVM言語のscalaでもプリミティブがオブジェクトでタプルもあるべ javaさんがちょっとアレなだけ >>737 要件があんま定まってないので明確な事はいえないが オブジェクト同士のメッセージパッシングを使うオブジェクト指向よりも パーサーコンビネーターなんかもそうだけど データを定義して 参照透過な関数にそれを食わせるっていう関数型の方が将棋にあってるんじゃないか
755 名前:デフォルトの名無しさん mailto:sage [2016/05/26(木) 12:05:05.28 ID:Xc1/bPBx.net] >>741 コレクションとか、配列とか。 電王戦に出場しているソフトは配列に格納してるソフトが多いんじゃないかと 勝手に予想ていたけど。
756 名前:デフォルトの名無しさん mailto:sage [2016/05/26(木) 12:07:55.61 ID:Xc1/bPBx.net] >>742 具体的にどこにどうやって適用しようとしているのか明示してもらわないことにはなんとも…。 電王戦に出場している人はあの要件で理解しているんだから要件は十分明確になってるだろ。
757 名前:デフォルトの名無しさん mailto:sage [2016/05/26(木) 12:17:50.31 ID:GCo9DDJM.net] >>743 コレクションはオブジェクトだし オブジェクト指向言語なら配列も大抵オブジェクト と思ったがc++は配列がオブジェクトじゃないのか
758 名前:デフォルトの名無しさん mailto:sage [2016/05/26(木) 12:26:17.14 ID:c+TCNzeK.net] 素人のオレが適当に書いて混乱させてやろかww 脳ミソ爆発だぜww
759 名前:デフォルトの名無しさん mailto:sage [2016/05/26(木) 12:34:34.63 ID:GCo9DDJM.net] >c++は配列がオブジェクトじゃないのか 自レス 最近だとstd::arrayがあるな
760 名前:デフォルトの名無しさん [2016/05/26(木) 12:38:37.91 ID:GCo9DDJM.net] >>744 評価関数の中身のアルゴリズムは具体的には全くわからんからこれ以上はなんとも(パターンマッチ便利だよくらい) 指摘している人がいるが将棋はオブジェクト指向の設計練習として適してないだろ 難しいのは評価関数でオブジェクト指向の良さが生かされないし 例ならオセロでいいし オブジェクト指向の良さが現れてるのは言語はcだけどLinuxのVFSとかだな c++やjavaで設計しなおしてみればおもろいかも
761 名前:デフォルトの名無しさん mailto:sage [2016/05/26(木) 12:45:03.84 ID:2tD7owQ3.net] 単に次の手を求めていくだけのAIならOOPは悪手 盤面データを評価するのにオブジェクトアクセスはオーバーヘッドが大きすぎる 駒オブジェクトなどもってのほか そもそも評価するだけなら将棋のルールモデルを再現する必要もない 対戦型のゲームならViewの制御などが絡みだすからOOPを検討し始めても良い しかし将棋モデルそのものは依然としてシンプルな構造と処理になるためOOPの恩恵は小さい 実装にオブジェクトライブラリを使ういわゆるベターC的なものになる
762 名前:デフォルトの名無しさん mailto:sage [2016/05/26(木) 12:50:39.24 ID:2tD7owQ3.net] 後は将棋にオレオレ要素を付けたしまくったジャパニーズテレビゲーム的な将棋なら話は別だね 仕様が未確定だから無限に規模が大きくなる可能性がある OOPを採用するメリットは大きい
763 名前:デフォルトの名無しさん [2016/05/26(木) 12:54:10.09 ID:Xc1/bPBx.net] オブジェクト指向じゃない場合の設計は? 繰り返すと「クラスを使わない」と「設計いらない」は違うから。 >>515 ロジックをどんなモジュールに分割して盤面や手の情報をどう持たせるかは興味ある。 オブジェクトを使わない場合でもちゃんと設計していれば機能単位が明確になっているはずだから見せて欲しい。 >>745 盤面オブジェクトというものがあるかって話。
764 名前:デフォルトの名無しさん mailto:sage [2016/05/26(木) 13:05:46.65 ID:GCo9DDJM.net] >>751 なんで将棋にそこまでこだわるのか分からないけど 設計はほぼ評価関数のアルゴリズムでそしてそれはここで設計するものでもない 設計の例として不適でしょって事 例としてはコレクション、VFSとかゲームとか色々あるのに なんで将棋なんだ
765 名前:デフォルトの名無しさん mailto:sage [2016/05/26(木) 13:07:08.63 ID:GCo9DDJM.net] 後 webアプリとかでもいいし
766 名前:デフォルトの名無しさん [2016/05/26(木) 13:09:24.57 ID:Xc1/bPBx.net] オセロとかVFSとかの設計案を作ってここに貼り付けてもらうのは歓迎だ。 興味ある人は会話してもらっていいし。 俺も「オセロ」がいい」とか「VFSがいい」ってだけじゃご自由にどうぞとしか思わないけど 実際の設計案とかが出てくれば意見交換したい。
767 名前:デフォルトの名無しさん mailto:sage [2016/05/26(木) 13:16:43.54 ID:UN7L7nZy.net] OOP設計について語りたいなら「あっち向いてホイ」で良いと思う。 「じゃんけん」だけだと単純だと思って
768 名前:デフォルトの名無しさん mailto:sage [2016/05/26(木) 13:22:24.03 ID:FhkcWQBY.net] OOPで表すとこんな感じか? それぞれのモジュールの内部実装は、専門の担当者が頭をひねって、責務を全うするよう頑張れば良い 『状態』 盤面、持ち駒▲△、時計、を表現 内部状態の変化時にイベントを投げる 『プレイヤー』 ゲーム中に▲△の2インスタンス それぞれ独立したプロセスで動く 『状態』を監視する 『状態』のmoveとresignを呼んで良い 責務ではないが、ゲームの勝利を目指す 『審判』 独立したプロセスで動く 『状態』を監視する 状態変化を元に、反則/適正や勝敗/続行を判定し、必要なら終局処理する 『記録係』 独立したプロセスで動く 『状態』お監視する DBなりファイルなり、好きなように棋譜や時間を書き込む
769 名前:デフォルトの名無しさん mailto:sage [2016/05/26(木) 14:24:38.83 ID:bwhpCAq0.net] 将棋を指すプログラムを作成しろってお題と、将棋というゲームをモデル化しろってお題を一緒くたにしてないか。 前者は「次の一手を決めるアルゴリズム」が主眼で、その他のコードはアルゴリズムの実装を邪魔してはいけない。 肝心の中身を議論しないまま設計しろって話なら、「盤面を如何にコンパクトに表現するか」くらいしか設計できない。 POJOでも無い限り、メソッドやらvtableやらの保持にスペース使うんだから駒オブジェクトなんて論外だってすぐ分かる。 だから将棋の例は不適。 後者は実務じゃなくてお遊びの話、「自動車をJavaで表してみよう」というレベルなんだから、>>1 の求める議論にならない。 だから将棋の例は不適。 同様の話でオセロも不適。
770 名前:デフォルトの名無しさん [2016/05/26(木) 15:01:47.14 ID:Xc1/bPBx.net] >>756 考慮時間の消費とかは業務系だと見落としそうな点だね。 状態、プレイヤー、審判、記録係やらがクラスなのか属性なのか抽象的なのか 分からないんだけど、クラスとのマッピングをでき
771 名前:黷ホ頼む。 ゲームの設計だと当たり前なのかもしれんけど疎いもんで。 [] [ここ壊れてます]
772 名前:デフォルトの名無しさん [2016/05/26(木) 15:11:16.14 ID:Xc1/bPBx.net] >>756 思考部の設計についてはもう少し具体化して考えたい。 @合法手生成 盤上の駒のリストから 駒が動けるマスを洗い出す。 A動かした局面を点数化 盤上の駒の価値とか配置によって局面を点数化する。 評価の内部ロジックはブラックボックスにするしかないけど、盤面情報をもとに なんらかの基準で点数化して点数を返すという入出力情報のやり取りは設計の範囲とする。 B自分の手、相手の手と読みを進める。 手と盤面が増えるなり変更するなりして進むのをどのように保持するかも設計の範囲とする。 C読む手の選択 すべての手を同じ深さまで読むんじゃなくて、良さそうな手を選んで深く読んで 最終的に指す手を選んでいるらしい。 既に読んだ手の点数とかを元に候補手を絞る処理。 内部ロジックが分からないとはっきりしないところは出てくると思うけど、 駒、ルール、盤面、手の関連性をどのように保持するかがイメージできるレベルまではやりたい。
773 名前:デフォルトの名無しさん [2016/05/26(木) 15:12:45.82 ID:Xc1/bPBx.net] BとCの内部実装もブラックボックスだな。 入力、出力はある程度想定できるのでそこは設計する。
774 名前:デフォルトの名無しさん mailto:sage [2016/05/26(木) 17:51:52.03 ID:VUxKytQY.net] イベントソーシングの実装方法を教えてください
775 名前:デフォルトの名無しさん mailto:sage [2016/05/26(木) 19:52:32.19 ID:y/d2Tqn1.net] >>685 は完璧だろ?
776 名前:デフォルトの名無しさん [2016/05/26(木) 23:01:03.81 ID:Xc1/bPBx.net] 過去の棋譜情報のDBを設計してみた。 https://drive.google.com/file/d/0B2NKffVh2tpqZ2pPcEg3VGVxYWc/view?usp=sharing Moveは実際に指された手。 Boardはそのときの局面。初形も格納する想定。 Komaは駒の配置。 手ごとの局面を格納しないでも再現できるんだけど、棋譜の分析とかするときは 局面データも格納しておいたほうがよさそうだから格納してみた。 Bonanzaは過去の棋譜の局面を見て、駒同士の位置関係の点数を設定したとどこかで聞いたから なんとなく意識してみた。
777 名前:デフォルトの名無しさん mailto:sage [2016/05/26(木) 23:16:46.39 ID:OguWhub7.net] >>763 そのツールもうちょっとでかい図 というかでかいフォントにならんもんかね ブラウザーでズームしてもズームしてくれんし
778 名前:デフォルトの名無しさん [2016/05/26(木) 23:21:56.50 ID:Xc1/bPBx.net] >>764 俺も初めて使ったから分からんなあ。 手間だけどダウンロードしてちょ。
779 名前:デフォルトの名無しさん [2016/05/26(木) 23:26:45.04 ID:Xc1/bPBx.net] と思ったらダウンロードできないのか? 画像の大きさを大きくできるのかなあ。
780 名前:デフォルトの名無しさん mailto:sage [2016/05/26(木) 23:28:48.84 ID:HSSLi9RU.net] 将棋ってぶっ殺すフィールド構築合戦だからな ぶっ殺すフィールドの形が似てたら大体思考ルーチンも似たようなもん ただ、飛車と角が絡むとこの前提が覆るムズイので考えない ぶっ殺すフィールド 金の移動範囲に歩置くじゃん、したらその歩をとったら 金に取られるからふには手を出せない 金を殺さないと歩は取れない 金の範囲に銀置いて銀の範囲に馬置いて馬の範囲に飛車置いて これがぶっ殺すフィールド この範囲に相手の王を誘いこんだら勝ち ってのが将棋aiの基本知識
781 名前:デフォルトの名無しさん [2016/05/26(木) 23:30:05.02 ID:Xc1/bPBx.net] 画像に出力できた。 https://drive.google.com/file/d/0B2NKffVh2tpqd0ZOQ2RQWm9fdlU/view?usp=sharing どうだろ?
782 名前:デフォルトの名無しさん mailto:sage [2016/05/27(金) 00:13:38.01 ID:3vZSRhu5.net] 何でオブジェクト指向のスレなのにDBの設計したいと思ったの?
783 名前:デフォルトの名無しさん mailto:sage [2016/05/27(金) 00:17:00.75 ID:miERtZSj.net] オブジェクト指向の設計というか将棋を業務系システム風に設計してみたら っていうifになってる
784 名前:デフォルトの名無しさん mailto:sage [2016/05/27(金) 00:19:22.93 ID:/D1WPrTe.net] >>769 >>703 近辺
785 名前:デフォルトの名無しさん mailto:sage [2016/05/27(金) 00:20:44.77 ID:/D1WPrTe.net] >>770 >>634
786 名前:デフォルトの名無しさん mailto:sage [2016/05/27(金) 00:42:25.57 ID:miERtZSj.net] >>772 >>757
787 名前:デフォルトの名無しさん [2016/05/27(金) 00:51:50.14 ID:/D1WPrTe.net] >>773 また同じ奴か…。 >>754 話したい話題とか例があるなら歓迎だから自由にやって。
788 名前:デフォルトの名無しさん mailto:sage [2016/05/27(金) 00:57:05.93 ID:miERtZSj.net] >>773 「また」って誰の事を指してるか知らんが >>757 じゃないぞ
789 名前:デフォルトの名無しさん mailto:sage [2016/05/27(金) 03:16:41.27 ID:o12ObYVU.net] >>760 ブラックボックスって誰に対して? >>763 なぜ棋譜って言う標準フォーマットがあるのにそれを崩すんだ? 棋譜データベースが世にあるんだからそれをそのまま使えないのはありえない
790 名前:デフォルトの名無しさん mailto:sage [2016/05/27(金) 06:17:55.52 ID:/J9GvUBV.net] >>776 局面があれば、もちろん棋譜は生成できるけど 棋譜だけじゃ、局面を自由に行き来(ランダムアクセス)できないからだろ?
791 名前:デフォルトの名無しさん mailto:sage [2016/05/27(金) 11:40:24.39 ID:o12ObYVU.net] ER図なんだからDBに保存する情報は棋譜だけでしょって話 そこから局面をメモリ上に展開すればいいでしょ
792 名前:デフォルトの名無しさん mailto:sage [2016/05/27(金) 12:15:00.09 ID:kDtxcipC.net] 理研の税金無駄使い、954万円高級家具カッシーナ・イクスシーの指定購入も大問題 : 千日ブログ 〜雑学とニュース〜 1000nichi.blog73.fc2.com/blog-entry-7696.html 税金の無駄遣い?STAP細胞関連経費1億4500万円 小保方晴子氏の検証実験参加は不要だったで書いた理研の税金の無駄使い。 実は小保方晴子さんらのSTAP細胞関連だけでなく、別の問題にも触れられていました。扱いが小さかったんですけど、こちらもすごく問題だと思います。 (中略) ●本来なら大問題である税金の無駄遣い この高級家具の件は、小保方晴子さんが買ったのでは?と、STAP細胞疑惑のときにいっしょに話題になったものです。しかし、すぐに東大教授になった別の方のところで購入したものだと、断定されていました。 違っていたら困りますし、名前を出しちゃうとあれかな?と思うので書きませんが、「カッシーナ・イクスシー 東大教授」あたりで検索すると簡単に出ます。もうあだ名が「カッシーナ」という感じになっていました。 「計288個の穴があること」など、実質的に特定のブランド以外を排除した購入など認められるはずがないものであり、本来なら非常に問題です。これは小保方さん問題以上に返金を求めやすくないですかね? マスコミはこっちの問題ももっと追求すべきだと思います。
793 名前:デフォルトの名無しさん mailto:sage [2016/05/27(金) 12:23:58.24 ID:IdMbq2Qb.net] そろそろ将棋ソフト開発スレにforkしたら? ここはOOP全般の議論をするスレだよ
794 名前:デフォルトの名無しさん [2016/05/27(金) 12:25:03.87 ID:/D1WPrTe.net] >>776 >ブラックボックスって誰に対して? 局面の点数化、深く読むべき手の選択を行うクラスないしモジュールの 内部実装を設計する必要はないって意味。 >>777 >>778 そうだよね。
795 名前:デフォルトの名無しさん mailto:sage [2016/05/27(金) 12:35:36.26 ID:/D1WPrTe.net] >>778 あれ、>>778 は>>776 と同じ人か。 テキストファイルはプログラムにとって操作しやすいものじゃないから。 例えば、5手まで進んだ局面で、過去にまったく同じ進行だった棋譜を抽出する って処理をどう実装するにはどうする? 棋譜のデータも大量にあるからメモリも意識した設計にする必要がある。
796 名前:デフォルトの名無しさん mailto:sage [2016/05/27(金) 12:55:12.02 ID:/D1WPrTe.net] >>780 OOPについての議論を開始してくれよ。 ただ、話をするきっかけがなかったときのスレの状態は>>490 だったからさあ。
797 名前:デフォルトの名無しさん mailto:sage [2016/05/27(金) 16:07:05.35 ID:QLoNZNQy.net] >>782 ? なぜテキストを操作する話になってるの? 棋譜の情報をtsv形式とかで事前にbulk insertしとくんじゃないの? ER図の話だったよね?
798 名前:デフォルトの名無しさん mailto:sage [2016/05/27(金) 16:23:50.72 ID:mSvZp4nB.net] 実は、皆プログラミングのレベルがたいしたことない件
799 名前:デフォルトの名無しさん [2016/05/27(金) 18:23:43.80 ID:/D1WPrTe.net] >>784 >>776 が言い出したことだが…。 >>776 なら想定している構成をまず提示してくれ。 >>776 じゃないなら俺に聞かれても分からない。
800 名前:デフォルトの名無しさん [2016/05/27(金) 18:32:09.95 ID:/D1WPrTe.net] >>785 天才プログラマのお前だったらどう構築するのか教えてくれるかな。 DBを知らないからDBが複雑だと思い込んでるだけの素人の違いを見せて欲しいなあ〜。
801 名前:デフォルトの名無しさん mailto:sage [2016/05/27(金) 19:38:50.01 ID:pLLsnEId.net] 意味がわからない
802 名前:デフォルトの名無しさん mailto:sage [2016/05/27(金) 20:35:36.67 ID:A2TIou2n.net] 棋譜データが何なのかご存じない?
803 名前:デフォルトの名無しさん [2016/05/27(金) 20:54:42.73 ID:/D1WPrTe.net] >>789 ご存じない? じゃねえよw
804 名前:デフォルトの名無しさん [2016/05/27(金) 20:57:31.88 ID:X8GqPxic.net] なにこいつ
805 名前:デフォルトの名無しさん mailto:sage [2016/05/27(金) 21:08:24.02 ID:YEqMRFcI.net] とっくにご存知なんだろ?
806 名前:デフォルトの名無しさん mailto:sage [2016/05/27(金) 21:29:12.31 ID:JwxL0I3t.net] スーパーコーダー人
807 名前:デフォルトの名無しさん mailto:sage [2016/05/27(金) 23:55:27.14 ID:go2H7GGI.net] 設計を教えてくれと言ってるやつが リーダーやるようなプロジェクトはこんなもんだろ
808 名前:デフォルトの名無しさん mailto:sage [2016/05/28(土) 06:04:52.94 ID:DfweNo3j.net] >>786 >>>784 >>>776 が言い出したことだが…。 >>>776 なら想定している構成をまず提示してくれ。 >>>776 じゃないなら俺に聞かれても分からない。 結局バカなんだな 将棋なんてやめでTODO管理アプリでも作ったらいいんじゃね
809 名前:デフォルトの名無しさん mailto:sage [2016/05/28(土) 10:01:09.70 ID:lKk9NsIN.net] オブジェクト指向ってのは、将棋や囲碁などのAI機能を駆使した、最先端のソフトを開発しやすくする面もあるかもしれない。 でも、そういうアルゴリズムを重視する世界においては、オブジェクト指向なんてドーデもいいレベルの話ではないかと思う。 オブジェクト指向は、「既存のパーツとか、フレームワークの利用をいかに楽にするか?」つまりは、DRY(Don't repeat yourself)を推進する目的が第一ではないかと思う。 継承機能などを使って、「ロジックなどの開発が楽になる」というよりも、「フレームワークとか○○を使えば、自分では、それを考えなくても、作らなくてもいい」ってほうが望ましいスタイルではないかと思う。 そして、それを推進する手法としては、たぶんオブジェクト指向も必要だけど、それだけでは、無理ってことだと思っている。 MITの先生が、「プログラミングは、新規開発の時代じゃあない。既存のものをいかに素早く組み合わせるかを教えたい」と言っているらしいけど、その方向性は、間違ってないという気がする。
810 名前:デフォルトの名無しさん mailto:sage [2016/05/28(土) 10:09:21.59 ID:O5lAFAJB.net] 前に出てた勤怠管理やTODO管理のテーブル設計を議論したほうが有益だろうな プロジェクトのほとんどはそこで決まるし
811 名前:デフォルトの名無しさん mailto:sage [2016/05/28(土) 11:38:35.56 ID:qmjd/mej.net] >>796 長文書くならもう少し推敲しろよ 小学生の読書感想文みたいだぞ
812 名前:デフォルトの名無しさん mailto:sage [2016/05/28(土) 12:59:02.84 ID:A5TNreIh.net] Foo : IFoo Bar : IBar Baz : IBaz Foo() Bar(IFoo) Baz(IFoo , IBar) 上のようなクラスとコントラクターがあります IFooはFooにIBarはBarにIBazはBazに解決されます 何も考えずにコンストラクタインジェクションツールを使うとBarに渡されるFooのインスタンスとBazに渡されるFooは別のインスタンスになります 同一のFooインスタンスを使ってBazをインスタンス化したい場合、一般的にはどういった手法を使うのでしょうか? Fooをシングルトンにする方法とBazの精製方法をコードで明示
813 名前:的に記述する方法は要件上使えません 使用しているツールはUnityContainerですができればより一般的な手法を知りたいです [] [ここ壊れてます]
814 名前:デフォルトの名無しさん mailto:sage [2016/05/28(土) 13:59:25.89 ID:fP0wQpWJ.net] BarzかBazrを作る インスタンスっていうんだから 紙に書いて実体を書けないとおかしい 強引にFooの実体を書こうとするとそれってBarzかBazrじゃね?ってなった
815 名前:デフォルトの名無しさん [2016/05/28(土) 17:33:38.76 ID:R1JSthfd.net] 将棋にオブジェクト指向設計を適用できないって主張してるバカは恥ずかしいから いい加減やめたほうがいいぞw コンポーネント、モジュールの設計を提示しろって言ってんのに何も提示しないし。 今夜か明日にコンポーネントをUMLで記述したものをアップする予定だから今のうちに考えておけよ。 >>652 並みに恥ずかしい書き込みをしてることにいい加減気付けよwwww バカどもの反応が今から楽しみ!
816 名前:デフォルトの名無しさん [2016/05/28(土) 17:38:29.41 ID:R1JSthfd.net] >>797 お前が始めりゃいいじゃん。 「○○のほうがいい」って言いうだけで具体的な話を何も進めないから会話が成立しないんだろ。
817 名前:デフォルトの名無しさん [2016/05/28(土) 17:45:14.88 ID:R1JSthfd.net] >>799 BarはFooを知ってるのにBaz(IFoo , IBar) で再度Fooを渡さないといけない理由が分からない。 どういうケースなのかイメージできるように具体的にならないんだろうか? 一般的にはBaz(IBar)にすると思う。
818 名前:デフォルトの名無しさん mailto:sage [2016/05/28(土) 18:24:36.48 ID:fP0wQpWJ.net] >>802 勤怠管理を出したのは俺だけど 将棋が題材としてクソ過ぎたので出しただけ 設計書書かないでプログラム組む奴は雑魚なので この話は発展させるつもりはない
819 名前:デフォルトの名無しさん mailto:sage [2016/05/28(土) 18:48:04.70 ID:R1JSthfd.net] >>804 将棋はクソって思うのは勝手だけど、話題は何も出さないって無能だなあ。 将棋ソフトから発展した会話をしてる人はいるんだからいちいちじゃまする必要ないだろ。 設計をやっているのに「設計書書かないプログラム組む奴は雑魚なので」って言ってるのも意味不明だし。 何度も言ってるけどオブジェクト指向設計関連で語りたい話題があるなら好きに語ればいいだけ。 他人のじゃまする暇があったらもっと生産的なことしようぜ。
820 名前:デフォルトの名無しさん mailto:sage [2016/05/28(土) 19:50:56.91 ID:hH79WOSS.net] まだやってたんかw。 素性の知らないもの同士が、成果物や開発対象、開発体制の情報開示をせずに 喧嘩腰でレスする時点でこういうオチになると思った。
821 名前:デフォルトの名無しさん mailto:sage [2016/05/28(土) 20:12:20.38 ID:dyQMlzBT.net] 設計書書かないでプログラム組むっていうのと対比させるなら 設計の前にすることすっ飛ばして良い設計も糞もないってことだよな
822 名前:デフォルトの名無しさん mailto:sage [2016/05/28(土) 20:47:19.10 ID:b4Z/BPeQ.net] >>800 すみませんよくわかりませんでした >>803 具体的にはUnitOfWorkパターンです スマホなのでタイピングを端折ってしまったのですが本当はクラスは4つ(業務ではもっと多い)あります DBセッション/トランザクション管理 DB : IDB Aリポジトリ RA : IRA Bリポジトリ RB : IRB UnitOfWork U : IU コンストラクタはそれぞれ U(IRA , IRB) RA(IDB) RB(IDB) DB() こうなってます ここでRAとRBは同じトランザクションで処理したいので同じDBインスタンスを注入したくなります
823 名前:デフォルトの名無しさん mailto:sage [2016/05/28(土) 21:15:12.20 ID:fP0wQpWJ.net] >>808 クソ設計じゃね? IDBゴミ箱に捨てちゃったらどうなるの?
824 名前:デフォルトの名無しさん mailto:sage [2016/05/28(土) 22:55:45.34 ID:vuHucEnZ.net] IDBを捨てられたRAとRBは挙動不審になる感じ? IDBの生存期間が永久だったらどうでもいいんじゃね? でも、いつでも死ぬぜRAとRBとは別のところでひっそりと息をひきとりましたとさ ってなるような構造なら参照保持やめろって思うわ
825 名前:デフォルトの名無しさん mailto:sage [2016/05/28(土) 23:07:57.42 ID:iUyRPTRl.net] >>810 各インスタンスの寿命はUと同期させたいです
826 名前:デフォルトの名無しさん mailto:sage [2016/05/28(土) 23:17:24.57 ID:lKk9NsIN.net] 複数DBのトランザクション処理って、分散トランザクションってことですね。 この方面から検討することが必要では?
827 名前:デフォルトの名無しさん mailto:sage [2016/05/28(土) 23:24:47.99 ID:z5GhiIYg.net] やっぱ具体的かつ現実的な質問があると捗るな
828 名前:デフォルトの名無しさん mailto:sage [2016/05/28(土) 23:41:45.93 ID:vuHucEnZ.net] なんでコンストラクタで渡すん? IDB太死んだら残されたRA子とRB子はどうしたらいいん?
829 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 01:00:47.21 ID:f/sZpflr.net] UnitOfWorkパターンやリポジトリ、厳密に適用されたオブジェクト指向がどんなものかわかってなくて申し訳ないんだけど・・・ 今通じるかわからなくて申し訳ないけど、少し前のJavaのSpring+Hibernateのように メタデータ利用して、フレームワークにトランザクション管理任せたらあかんの?
830 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 08:15:01.43 ID:2I7bmxM6.net] うまい例えになるかどうかわからないけど、オブジェクト指向を、お風呂場のいろんなパーツ、蛇口、浴槽、シャワー、ライトなどの構成パーツとしたら、JavaのSpring+Hibernateは、それらが組み合わせられたメーカー品のユニットバスってことではないかと思う。 パーツからユニットバスを完成させるには、それなりの設計が必要になるけど、それらが組み込み済みのユニットバスなら不要。 既製品が気に入らず、オリジナルのユニットバスが欲しい人は、パーツをうまく組み合わせる設計の知識と能力が要求される。 それが「各インスタンスの寿命はUと同期させたいです」なんて要望実現の部分に相当する。 そこは、オブジェクト指向とは別の知識・技術も必要。 それが無理な人は、JavaのSpring+Hibernate、あるいは同等品を探すほうが楽できるってことかな。
831 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 09:57:03.09 ID:f/sZpflr.net] なるほど、確かに既製品で間に合うならそうするよな その要件が他に出てこないシステムの特異点なら、コメントにしっかり残した上で、規約ぶっちぎって実現できる方法で実現すれば良いと思う
832 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 12:14:52.10 ID:1ogDAOAr.net] つまりDobon.netコピペが最強 こういうことだな
833 名前:デフォルトの名無しさん [2016/05/29(日) 13:18:42.71 ID:Cf71caC3.net] 将棋ソフトを構成するコンポーネントを整理した。 https://drive.google.com/file/d/0B2NKffVh2tpqUWNmbTl6MVBRVXc/view?usp=sharing KifuAnalyzerは過去の棋譜を分析して、駒の価値や駒の配置を点数化するためのパラメータを生成する。 MoveGeneratorは局面からルール上指すことが可能なすべての手を生成する。 MovePickerは合法手から深く読むべき手を選択する。 Evaluatorは局面を評価して点数化する。 MovePickerはEvaluatorが生成する点数を考慮するだろうし、 何手か先まで読むのにMoveGenerator→MovePicker→Evaluatorの処理をループするんだろうけど その辺りの整理は不十分かもしれない。 改善の余地はあると思うので、知見がある人の意見を聞きたい。
834 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 13:20:31.00 ID:uH1/jPAH.net] >>819 オブジェクト指向ではなくて手続き型の設計になってるなw
835 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 13:21:59.15 ID:1ogDAOAr.net] オブジェクト指向なんてゴミ みんなわかったね
836 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 13:22:24.27 ID:Cf71caC3.net] >>820 もっとオブジェクト指向な設計とは具体的には?
837 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 13:23:04.73 ID:Cf71caC3.net] ちなみにクラス設計はこれからだから。
838 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 13:25:54.19 ID:Cf71caC3.net] >>821 手続き型だとコンポーネント構成はどう設計するのかいい加減提示してくれよ。 提示してくれるなら比較できて参考になるから見たい。 提示できるならね。
839 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 13:30:29.53 ID:1ogDAOAr.net] 普通に上から下に流れる処理なのにオブジェクト単位に表現される悪夢
840 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 13:31:05.98 ID:GCrD5Cq5.net] 煽り耐性0やな いちいち反応するなってw
841 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 13:41:23.22 ID:Cf71caC3.net] >>826 ??? もっとオブジェクト指向な設計も手続き型の設計も見てみたいが。 口だけで何もない奴が書き込んでいると決め付けるのは良くない。
842 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 14:07:17.65 ID:uH1/jPAH.net] >>822 > もっとオブジェクト指向な設計とは具体的には? オブジェクト(データ)をメインに考えること
843 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 14:09:35.72 ID:GCrD5Cq5.net] 棋譜データはどこから持ってくるの? 最近、日本将棋連盟は棋譜の著作権を主張してるようだけど その辺はどうクリアするの?
844 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 14:10:21.15 ID:ks+EActS.net] OOPはむしろデータの実体を切り離せるところがメリットなのでは
845 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 14:13:34.46 ID:1ogDAOAr.net] >>830 オブジェクト指向じゃなくね?
846 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 14:16:05.87 ID:2I7bmxM6.net] >>819 たぶん、オブジェクト指向の前に、手続き型プログラミング、構造化プログラミング的な考え方によって大雑把にプログラムの全体構造を把握する設計ステップが入るのだと思う。 それが、この段階。 この段階から、しばらくは構造化プログラミングで設計とコーディングを進めてもいいし、オブジェクト指向をちょっと意識して進めてもいいのだと思う。 で、実際にコードを記述して、ちょくちょくテスト(=詳細設計)を進めていると、「これはオブジェクト指向の例題にあったような、あのパターンを使うとよさげかも?」なんてのに気づく。 そこで、今まで記述したコードを捨てて新規に作り直したり、あるいは作りかけのソースを修正する、もしくは、どっかから使えそうなフレームワークをコピペして活用するって流れになるのでは? そうしたとき、最初からオブジェクト指向を意識して作っていたほうが(経験上)修正量が少なくなる気がするし、そのとき、オブジェクト指向のメリットを実感することになるんだろうね。 また、オブジェクト指向でプログラムを作ろうとも、多くの場合、上から下に流れるような構成になると思う。
847 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 14:21:04.75 ID:ks+EActS.net] >>831 カプセル化すれば内部状態の物理的な実装は自由になる OOPの基本理念の1つ
848 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 14:46:06.53 ID:uH1/jPAH.net] >>819 が手続き型になってるというのは、 その図の四角が処理になっていて、図全体が情報の流れを 表しているからだよ。 オブジェクトっていうのは役目を四角にするので 情報の流れとは無関係。
849 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 14:58:27.22 ID:Cf71caC3.net] >>828 具体的に。
850 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 15:02:50.83 ID:Cf71caC3.net] >>832 だいたいの方向性は同意なんだけど >この段階から、しばらくは構造化プログラミングで設計とコーディングを進めてもいい は違和感があるなあ。 コーディングに行くのは方針が決まってからじゃないか? 構造化プログラミングでコーディングまで始まってるのにそこからブジェクト指向プログラムに切り替えるのは 工数がだいぶ無駄になるような。 その辺はどう考えているんだろ?
851 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 15:08:30.13 ID:uH1/jPAH.net] >>835 図の罫線に矢印を付けた時、 それが継承ではなくて情報の流れだなって 思ったらアウト。
852 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 15:08:35.66 ID:Cf71caC3.net] >>834 抽象的な言葉としては分かるんだが具体的にどうしたいのか分からないなあ。 www.dataio.comで図を書けるからできれば書いて欲しい。 無理ならコンポーネントとインタフェースだけでも列挙してもらえればだいたい分かるかと。
853 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 15:14:36.29 ID:uH1/jPAH.net] >>838 まず最初は全部一つにまとめろ。 その後に「何のために分離するのか」を書きながら 分離するといい。 分離する理由がないならば、それは分離しなくていい
854 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 15:33:37.25 ID:2I7bmxM6.net] >>836 >この段階から、しばらくは構造化プログラミングで設計とコーディングを進めてもいい は違和感があるなあ。 コーディングに行くのは方針が決まってからじゃないか? まあ、あのレベルの設計で、コーディングの方針が決まればいいけど、初めて作るたぐいのプログラムって、どう作ればいいか、よく分からないことが私の場合は、ちょくちょくある。 だから、イメージとしては、作りたいものの漠然としたイメージはあるけど、またはっきりしない状態で、材料となる粘土の塊をいじって、できた粘土の形を見て、そこから先を考えるって感じでプログラミングやっている。 たとえば、足だけ作ってみるとか、バストだけ作って、それを見て、次に作る部分を決めるみたいな・・・。 本来は、全体の方針を決めてからコーディングってのが正しいと思う。 でも、方針がなかなか決まらないときは、手を動かして、なにかしら動くものを作ると、「今日の成果はこれ!」って感じで気分が良くなる。 で、残りを頑張ろうって気力が沸いてくる。そして、オブジェクト指向で作っていると、各パーツの再利用が容易になる。 まあ、すべての人にこの方式を薦めるわけではない。
855 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 16:00:47.90 ID:uH1/jPAH.net] >>819 でおかしい所の一つはMoveGeneratorとかいうコンポーネントがある所 (MovePickerは存在自体が意味不明) なぜならば、移動できる場所は複数存在するが、思考ロジックによって その移動できる場所を解析する順番が違うからだ。 前提条件として、総当りでやると時間が足りない。 だから駒一つ一つすべての移動できる場所を解析するわけじゃない。 解析しない場所(後回しにする場所)などが存在する。 だから、思考ロジック自身が動く場所を知っているし、 解析する順番(評価関数で評価する順番)も知っている。 そして解析する順番というのは、過去の棋譜データから決まる(こともある) ディープラーニングなんかはそれ。 だからそれらを分離した所で、それらのコンポーネントを再利用することは出来ない。 もっとも過去の棋譜データを解析する処理は「思考」とは別のタイミング(対局前)に 行うことだから思考ロジックと分離するのは当たり前 (もちろん思考時には計算結果のみを利用し対局中に過去の棋譜データを解析するわけじゃない)
856 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 16:35:38.18 ID:vZz5+wdA.net] 結局、将棋の思考ロジックのような、時間もメモリも切り詰めなきゃダメなようなものに オブジェクト指向を持ち出すのが誤りってことだな 前々から言われていたことだが、不適切な題材だな やったとしても、「思考ロジック」っていう巨大な一つのクラスがほとんどのことを受け持つ いわゆるGodクラスになってしまうだろう それが一番早く動くなら、将棋にとってはそれが正義 しかも将棋のルールはほぼ固定されていると考えてよいから 変に柔軟性を与えて仕様変更に強くする意味もないしな パラメーターで対応すれば十分 動画のエンコーダーとかといっしょで、規格ものなんだよ 規格が決まっていて、速さや効率が求めらえるなら ハードコーディングも辞さない
857 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 16:38:53.32 ID:uH1/jPAH.net] こういう実時間が足りないタイプのアルゴリズムは データ構造まで工夫する必要があるからね。 いちいちメソッド呼んでデータを取ってきたりしない。 取ってくるにしても駒の動きなんて変わらないんだから 最初に一括して読み込めばいいしそれはファイルから読み込めばいい。 (その後内部で工夫されたデータ構造にして、あとは内部で完結させる)
858 名前:デフォルトの名無しさん [2016/05/29(日) 16:58:54.31 ID:hqWpcQ8C.net] vtable使うなんてもったいない世界だよなぁ
859 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 17:18:08.73 ID:nD7S98HF.net] 工数気にするならボナンザ使えば? 品質も良いと思うよ
860 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 17:48:41.04 ID:Cf71caC3.net] >>840 >あのレベルの設計で、コーディングの方針が決まればいいけど これについてはまだ設計の途中だからさ。現段階では決まってないけど設計が終わる頃には明確になってる。 まあ、設計段階ですべての問題を洗い出すことが難しいのは同意する。
861 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 17:54:21.52 ID:Cf71caC3.net] >>841 MoveGeneratorとMovePickerの役割はちゃんと説明してあるんだが…。 あと、どういう設計を想定しているのか分からない。 言ってる内容がエンドユーザの要件みたいで、設計者の設計じゃないように感じる。 考えてることを明確にするために設計者はモデリングを利用する訳で、設計者同士の会話は モデリングあるいはコンポーネント・クラスなどを明確にして記述して欲しい。
862 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 17:59:16.14 ID:Cf71caC3.net] >>842 何度も繰り返してるけど、時間もメモリも切り詰めた設計はどうなるか提示してくれ。
863 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 18:00:53.32 ID:Cf71caC3.net] >>845 将棋ソフトを作る気はないから。
864 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 18:09:36.48 ID:uH1/jPAH.net] >>847 > MoveGeneratorとMovePickerの役割はちゃんと説明してあるんだが…。 だからそれが意味不明だって。 お前のは、単に分けているだけで 分ける理由が存在していない。
865 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 18:10:53.57 ID:uH1/jPAH.net] >>848 > 何度も繰り返してるけど、時間もメモリも切り詰めた設計はどうなるか提示してくれ。 [ 思考ロジック ]
866 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 18:16:58.80 ID:uH1/jPAH.net] 思考ロジック以外の部分まで書いていいなら これでもいいがw [ 思考ロジック ] - [将棋UI] もう少し細かく言うのなら将棋の駒の配置は、 思考ロジックでも使うが将棋UIでも使う共通情報だから という理由で分離して [ 思考ロジック ] - [ 駒の配置データ ] - [将棋UI] 思考ロジックは、駒の配置データを参照して、駒の配置データを書き換えるという役目。 将棋UIは駒の配置データを参照して、それをUIとしてレンダリングする 将棋UI は更にその内部で、将棋盤オブジェクトや駒オブジェクトとして 2Dや3Dでレンダリングされるが、これは完全にUIの話で思考ロジックとは切り離すべき話だよねw オブジェクト指向で設計するならばこれぐらいの話だな。
867 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 18:21:29.72 ID:uH1/jPAH.net] 時間もメモリも切り詰めた設計っていうのもちょっと質問の意図が不明で 時間を切り詰めた実装でも、メモリを切り詰めた実装でも、 一台のマシンを使う実装でも、多数のマシンを使う実装でも 「どんな実装にも変更可能な設計」というのなら、これは設計なわけで正しい。 つまり × 時間もメモリも切り詰めた設計 ○ 時間もメモリも切り詰めた実装 時間やメモリを切り詰め ”られる" のは、それが可能なように設計で考慮するべきことだが 時間やメモリを切り詰め "る" のは設計で決めることじゃない。
868 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 18:27:50.97 ID:hqWpcQ8C.net] >>848 >何度も繰り返してるけど、時間もメモリも切り詰めた設計はどうなるか提示してくれ。 何度も言われてる気はするがほぼ思考ロジックの話になるからオブジェクト指向でやる意味なくね 具体的にどのアルゴリズムを選ぶか? それが「時間もメモリも切り詰めた設計」となる 振る舞いと実装の分離とかしないわけよ >>852 が言ってるようにオブジェクト指向でやる意味あるUIくらいだよ
869 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 19:05:09.06 ID:Cf71caC3.net] >>850 正しいと思う設計を具体的に示してくれ。 面倒くさくなってきたから明示できないならもういいよ…。
870 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 19:06:07.22 ID:uH1/jPAH.net] >>855 [ 思考ロジック ] 書いてあるよね? なんで見えてないの?
871 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 19:07:21.11 ID:uH1/jPAH.net] [ 思考ロジック ] ↑ 思考ロジックの正しい設計 [ 思考ロジック ] - [ 駒の配置データ ] - [将棋UI] ↑ UIまで含めた、将棋ソフトの正しい設計
872 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 19:08:04.03 ID:Cf71caC3.net] >>85 で、設計は?って聞かれると>>652 とか答えちゃう訳?w
873 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 19:10:04.28 ID:Cf71caC3.net] >>857 おっけ、おっけ。 設計に対する前提がかけ離れ過ぎてるから話しても無意味だと分かった。
874 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 19:12:52.55 ID:uH1/jPAH.net] >>652 はコード(実装)書けって書いてあるから 実装書いてあるだけだろw
875 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 19:13:21.23 ID:uH1/jPAH.net] >>859 結局、設計の話してもこうやって無視するわけだ? 逃げるな卑怯者
876 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 19:20:13.35 ID:Cf71caC3.net] >>861 率直に言うと、レベルが低過ぎてお話にならないと判断した。 将棋ソフトを設計しろって言われて [ 思考ロジック ] - [ 駒の配置データ ] - [将棋UI] だけ書いて完成したと思うのは>>652 並みのお粗末さだぞ…。 思考部分のコンポーネント図が間違っているというなら訂正したコンポーネント図を書けよ。 [ 思考ロジック ] - [ 駒の配置データ ] - [将棋UI] って何じゃそりゃ?
877 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 19:22:38.20 ID:uH1/jPAH.net] >>862 お粗末ってなんだ? 設計というのはシンプルにするものだ。 たくさん書けばいいってわけじゃねーぞw
878 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 19:23:38.63 ID:uH1/jPAH.net] だいたい、間違っていると思うならば、 お前こそ、間違ってる理由を言えよ。 お前が考えるさいきょうのせっけい(笑)の紹介じゃなくて、 何が間違っているのかを言えって。
879 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 19:25:48.76 ID:uH1/jPAH.net] 思考部分のコンポーネント図が間違っているというなら訂正したコンポーネント図を書けよ。 [ 思考ロジック ] ↑ 思考ロジックの正しい設計 何度も言ってる
880 名前:デフォルトの名無しさん [2016/05/29(日) 19:31:51.54 ID:nCNZLCDh.net] ID:Cf71caC3 もうほとんどあらしだな
881 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 19:45:13.81 ID:hqWpcQ8C.net] >>862 レベルが低い以前に話聞いてないじゃん 将棋の思考ロジックの設計なんかはもうアルゴリズムの設計とほぼ同じ 計算機科学の分野でしょ
882 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 20:19:13.03 ID:vZz5+wdA.net] ざっくりいうとさ、将棋の盤のデータは char ban[9][9]; こんなんで十分なわけでしょ これに相手と自分の持ち駒の配列を付け加えて あと少々何かあればそれで充分な世界 人によってはcharですらデカすぎるというかもしれない この時点でオブジェクト指向らしさは全然ないよね どちらかといえば画像処理とかに近いデータ構造 将来将棋が仕様変更して、いきなり金の振る舞いが変わるとか そういうことはあり得ないから、駒をオブジェクトにするとか意味不明なことはする必要ないし オブジェクト指向でよく言うような、仕様変更に強くするとか 継承とオーバーライドで差分プログラミングとか、全く関係ないよね だって、将棋のルール(仕様)は決まっているわけだからさ、仕様変更とか考えなくてよい むしろ実行時間や効率が問われているのだから 意味のない柔軟性を持たせる分のオーバーヘッドがもったいないし、必要もない
883 名前:デフォルトの名無しさん [2016/05/29(日) 20:30:30.60 ID:Cf71caC3.net] >>868 モジュール構成は? 相互の関係は? コンポーネント図を見ればどういう領域を整理しようとしているかくらい分かるだろ?
884 名前:デフォルトの名無しさん [2016/05/29(日) 20:32:05.69 ID:Cf71caC3.net] あと>>608 もな。
885 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 20:42:21.72 ID:f/sZpflr.net] 察して欲しかったら察してもらえるように言葉考えて伝えなよ。 業務プログラマなんだろ?
886 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 20:44:29.81 ID:uH1/jPAH.net] [ 思考ロジック ] ↑ 思考ロジックの正しい設計 [ 思考ロジック ] - [ 駒の配置データ ] - [将棋UI] ↑ UIまで含めた、将棋ソフトの正しい設計 > コンポーネント図を見ればどういう領域を整理しようとしているかくらい分かるだろ? これみて、どういう領域を整理しよとしているかわからないの?w
887 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 20:59:39.40 ID:1omdCt5G.net] 外とのインタフェースだけきめて内部はTDDすれば勝手に決まっていく派 最初から全部決めようなんて無理無理
888 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 21:03:08.22 ID:1mIQzqS0.net] AIモジュールはハードウェアも絡むからOOPはない 将棋ソフト全体をOOPで作ったとしてもAIモジュールとはだいぶ隔たりがあるよ ユーザーの入力した結果から低レベルな盤面データを生成して丸ごと渡すだけとかそんなレベル
889 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 21:13:37.84 ID:vZz5+wdA.net] いやだからさ、将棋ってのはルールが決まっているんだよ 歴史のあるゲームであって、いきなりルールが変わって金の動きが変わるとか そういったことは今の時点では全く考慮する必要がないわけだよ で、オブジェクト指向のメリットは、大体において仕様変更に強くすることなんだよ 仕様変更が全くないのであれば、どんな方法でどんな汚い書き方をしたって プログラマだってプロなんだから、書き上げることはできるんだよ ただ、突然の仕様変更は怖いよねって話で、そのためにオブジェクト指向にコストを掛けているわけじゃないですか その点、将棋はルールが決まっていて、仕様変更など気にする必要ないし むしろ実行速度が強さに直結していて、一手でも先を読んだ方が有利なわけだから 仮想関数なんかを使うオーバーヘッドがもったいないし その二つの面からオブジェクト指向である必要性が薄い題材 仮にオブジェクト指向で作ったとしても、仕様変更がないことが分かっているわけだから オブジェクト指向設計の腕の見せ所が全くないし、題材として不適切なんだよ 将来にわたって必要の無いであろう拡張性や柔軟性を持たせても、無駄が多いと言われるだけ 将棋のAIのアルゴリズムには大変興味深いものがあるとおもうが オブジェクト指向としては見るべき点が「全く」ない
890 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 21:32:59.51 ID:vZz5+wdA.net] つまりは、将棋AIをオブジェクト指向で作るにあたって、どんなに不味い設計をしたとしても 仕様変更が発生しない題材なわけだから、オブジェクト指向的に良いも悪いもなく、動けばOKだよねっていう話になる どんなに不味いオブジェクト指向の設計であっても、仕様変更さえなければ大体は問題にならない 当初の予定通り動く ついでに、将棋AIである以上は強くなくてはならない この強くなければならないという案件は、通常ではない 業務システムが他のシステムと喧嘩して勝っただの負けただの言わない 普通は仕様変更に強いように、拡張性があるように、プログラムを設計するし オブジェクト指向の設計の良し悪しもそこに集約されるわけだが 将棋AIは強さが求められているわけで、オブジェクト指向設計でいうところの 良し悪しとは違ったものが求められている しかも仕様変更がない、とくればハードコーディングも止む無しだろう
891 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 21:36:48.37 ID:JprInoKj.net] 暗黙のうちに拡張将棋が題材になってるんでしょうね ワープ駒とか二回倒さないと死なないとか 範囲攻撃とか装備とかアイテムとか擬人化とかイケメン武将とかキャラアドオンとかガチャとか課金とか マルチプラットフォーム対応もするしサービスとして長くメンテナンスし拡張を加えていく前提 当然AIもそれに対応しなければならないからゲームやアプリは良くモデル化されていなければならない
892 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 21:38:49.46 ID:uH1/jPAH.net] >>877 で、そんなことを言い出すと。 YAGNIだってとどめを刺すわけだw だからそうする目的を聞いている。目的がないのにわざわざ分割するのは、 必要だからやるのではなく、設計(?)をすること自体が目的になっている。
893 名前:デフォルトの名無しさん [2016/05/29(日) 21:47:24.89 ID:Cf71caC3.net] >>877 現実のプロジェクトなら設計者が設計書に記述するであろう内容についての前提が違うんだと思う。 「将棋ソフトを設計してくれ」って客に言われたら、オブジェクト指向だろうが、他の設計手法だろうが 構成を記述しないってことはあり得ないからさあ。 そこを分からない人に説明してもしょうがないことは分かったから流すようにする。 毎日IDが変わるから新しい人かもと思って対応していたけど、どうも同じ人みたいだし、 対応してもスレが汚れるだけだからスルーすべきだったと反省。
894 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 21:50:11.02 ID:uH1/jPAH.net] > 構成を記述しないってことはあり得ないからさあ。 構成は記述されてありますが? そもそも将棋ソフトを設計してくれって言われたら 思考ロジック部分だけを設計しませんよwww [ 思考ロジック ] - [ 駒の配置データ ] - [将棋UI] こんな感じで設計します。 当然、思考ロジック部分は一つです。 シンプルイズベスト。理由がなければ分割しない。
895 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 21:52:08.59 ID:uH1/jPAH.net] 「将棋ソフトを設計してくれ」って客に言われたら、 どんな仕様か詳しく聞きますね。 その上で必要なら、それを満たすように設計しますが、 あんたのように何も言ってないのに過剰な分割なんかしませんよwww
896 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 21:53:29.31 ID:1omdCt5G.net] 客の定義による ただ将棋ソフトで遊びたい人にとって内部設計なんてなんの意味もない 外部の人間が自分たちのソース引き継いでメンテするのが前提ってこと?
897 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 22:04:37.03 ID:qPPHNZFg.net]
898 名前:ogg vorbis形式のファイルを自前でデコードして再生するソフトを「設計」しろとか、 円周率を出すソフトを「設計」しろとか、 そういう類の無意味な題材だってことが理解できているのか心配になる。 動物とか自動車とかモデル化するだけの人なのかもしれんが。 [] [ここ壊れてます]
899 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 22:05:37.63 ID:uH1/jPAH.net] >>882 何を言ってるんだ? たとえばネット対戦をしたいって言えば それが出来るような設計にするだろ? 客の要求を聞いた上で、それを実現できるように設計する。 客がネット対戦をしたいって言ってもいないのに あらかじめ先手(笑)を打ってネット対戦機能をつけましたとか それは過剰な設計であり無駄なコストを発生させたに過ぎない。 だからいきなり設計すんなって言ってるんだよ。 客の要望を聞いて、必要であるという理由があれば それが可能なように設計すればいい。 だから、そうした理由を聞いてるのに、明確な理由もなくて、 そうするのがいいと思いましたーでやってるから馬鹿にされてるんだよ。
900 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 22:06:35.28 ID:1ogDAOAr.net] 別に思考ルーチンも学習機能なんて要件に上がってないしね ここで話せるのはここまでじゃん だから題材が悪いって俺が最初に言ったじゃん 基本的にオブジェクト指向ってz80で作れるものに威力を発揮しないんだよ 将棋ソフトなんて作ったこともないのに題材に選んだ奴責任とって腹切れ どうせ設計に必要な項目も他人に説明できないしできなかっただろ それは将棋ソフトの全容が他人に聞くまでもなく みんなある程度わかっちゃってるからなのさ
901 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 22:07:18.13 ID:+DJ914Ec.net] >>883 できるだけ抽象的に作ればいいと思ってる抽象馬鹿だと思われ。
902 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 22:09:35.02 ID:uH1/jPAH.net] >>883 ogg vorbis形式のファイルというのは、正確には音声ファイルフォーマットで Oggがコンテナ、Vorbisがコーデックという設計で、 元々内部の役割が分割されてるからちょっと違うけどねw
903 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 22:11:26.67 ID:uH1/jPAH.net] >>885 > 将棋ソフトなんて作ったこともないのに題材に選んだ奴責任とって腹切れ ↓こいつかな?w 346 名前:デフォルトの名無しさん[] 投稿日:2016/05/22(日) 16:27:04.89 ID:sxeEi6BC [38/89] ちょうど今電王戦見てるから将棋ソフトで考えてみるとさ。 駒クラスがあって王・飛車とかは駒のサブクラスにしようかって感じだろ。 盤面情報と思考ロジックはどんな感じのクラスにするのがいいだろう? 354 返信:デフォルトの名無しさん[] 投稿日:2016/05/22(日) 16:44:19.40 ID:sxeEi6BC [43/89] >>351 具体例があったほうが分かりやすいから将棋ソフトの例で考えてみてよ。
904 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 22:14:11.15 ID:auBo7N3K.net] スーパーエヴァンジェリストの僕がこのスレの混乱の原因を教えてあげよう ここには顧客ロールの担当者がいないのさ
905 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 22:17:37.23 ID:1ogDAOAr.net] 要件定義が曖昧なのに求めてる設計書のレベルが見合わないんだよね はじめの話で思考ルーチンが ディープラーニング当然でしょみたいな話になんて絶対ならないわけで
906 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 22:19:59.67 ID:+DJ914Ec.net] んでは OS の設計でもしてみるかい? Linux あたりと比較できるしいいんじゃないの? よりよいオブジェクト指向で設計してもらいたいですな。
907 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 22:24:35.04 ID:hqWpcQ8C.net] >要件定義が曖昧 これ 「将棋ソフト」を設計しろだと いきなり実装の話に入らざるを得ない
908 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 22:26:13.01 ID:uH1/jPAH.net] >>890 > 要件定義が曖昧なのに求めてる設計書のレベルが見合わないんだよね それもあるけど「何のためにそうしているか?」が存在しないんだよ。 いえばいいだけなのに、言わない。 そうするのが当然だって思い込んでる。
909 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 22:27:58.83 ID:uH1/jPAH.net] >>892 お題だから、いきなり実装の話に入ってもいいんだけどさ、 それならそれで、どういう「要件を想定した」っていうのを 明確に言わないといけない。 それを言わずに、なんかわけのわからん分割の仕方をしてるから 突っ込み入れられまくってるわけ。
910 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 22:33:44.93 ID:RrRCCmyQ.net] スレタイに沿ったオブジェクト指向の設計なら 将棋の駒はクラスで正解 しかし設計のきれいさではなく 処理速度を求めるなら構造化で書く 前提が違うのにみな上から目線で書きこむから ただ混乱するだけ やっぱ2ちゃんは雑談はともかく ちゃんとした議論に向かないな
911 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 22:35:40.39 ID:1ogDAOAr.net] 要件定義がグチャグチャだとダメだね 得に将棋ソフトなんて疑問が無いもん 勝手に作っちゃうでしょ そこは要件を出した方も悪いし聞かないまま進めちゃう方も悪いし
912 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 22:36:26.79 ID:uH1/jPAH.net] > 将棋の駒はクラスで正解 それはゲームとかで駒を 2Dや3Dでレンダリングする時の話だよw 思考ロジックの中でクラスにする理由はない charなりintなりの二次元配列に defineで定義した定数を入れれば十分
913 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 22:40:50.33 ID:RrRCCmyQ.net] >>897 処理速度を考慮しない前提で言うと それはオブジェクト指向じゃなくて 構造化の考えから抜け出せてない
914 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 22:45:42.31 ID:1ogDAOAr.net] ところで将棋ソフトにオブジェクト指向を適用するとダメだね 駒なんかクラスにされたらどう作ってもクソになっちまう
915 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 22:47:10.49 ID:1ogDAOAr.net] でもオブジェクト指向的に将棋の駒をクラスにするのは間違ってないと思うな つまりオブジェクト指向ってもしかして(笑)
916 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 22:49:05.67 ID:uH1/jPAH.net] >>898 それで理由は?
917 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 22:51:44.59 ID:uH1/jPAH.net] >>900 > でもオブジェクト指向的に将棋の駒をクラスにするのは間違ってないと思うな > つまりオブジェクト指向ってもしかして(笑) 最後まで書きなよw つまりオブジェクト指向ってもしかして、(思考ロジックの)将棋の駒を クラスにすることには役に立たない。 だろ? だから俺は最初から何のためにそれをクラスにするのかと聞いてるわけ。 する理由がある、つまり適切な場所をオブジェクト指向にして、 こんな関数レベルの思考ロジックをわざわざ無意味に分割するんじゃないって言ってるんソア。
918 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 22:52:01.50 ID:+DJ914Ec.net] >>898 抜け出す必要がない場面で無理に抜け出そうとする事がそもそもおかしい。 オブジェクト指向は万能ではない、処理フローがほとんど決まってるものに対しては不向き。
919 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 22:54:48.91 ID:vZz5+wdA.net] 構造体どころかintかcharの配列で良いって話 charでも何か勿体ないという人もいるかもしれない 画像なら、画像全体が何らかのオブジェクトでラップしてあるならわかるが 画像の1ピクセル1ピクセルを全てオブジェクトにする人はいない こんなものはデータで十分 構造体的発想を抜け出せないというのも意味不明 データで十分なものをオブジェクトにする方が 何も理解していないと言いたい
920 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 22:58:31.03 ID:1ogDAOAr.net] >>902 でもさ 全員の共通認識を一致しやすいって手法だろ? でもこの方法は将棋ソフトに関してははっきり言ってクソ どう作ってもクソにしかならない オブジェクト指向ってダメなのかもしれんね
921 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 22:59:10.96 ID:1omdCt5G.net] オブジェクト指向は万能じゃないよ
922 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 23:01:49.14 ID:vlcsE4Oa.net] >>904 うんうん。将棋のコマって 王将・玉将 金将 銀将 → 成銀 桂馬 → 成桂 香車 → 成香 飛車 → 竜王 角行 → 竜馬 歩兵 → と金 うまい具合に15種類なんだよねぇ。 4bitでじゅーぶんですよね。空白含めても。
923 名前:デフォルトの名無しさん [2016/05/29(日) 23:02:20.91 ID:Cf71caC3.net] 実力を示したいなら 「設計は>>652 」 「設計は思考ロジック!」 とか言ってないで、設計を提示すりゃいいじゃん。 設計書を書いたことなくて、書き方知らないんだからおとなしくしてりゃいいのに。 あと、要件についは十分説明したから読み直せ。 参加者はあれで読み取ってるんだから読み取れない自分が問題だといい加減気付けよ。
924 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 23:06:00.21 ID:RrRCCmyQ.net] >>901 仕様の変更や追加に強くなるから >>903 ある程度の規模になると必要がある >>904 >構造体的発想 構造化ね そりゃ速度が重要ならOOにはしないが 逆に複雑なもので多少のオーバヘッドを 犠牲にできるならOOの方が楽に組める
925 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 23:08:23.54 ID:hqWpcQ8C.net] >>908 実力を示すってのが意味不明だけど アルゴリズムの設計をすればいいのか? >MoveGenerator→MovePicker→Evaluator こんなの設計しても将棋には意味ないぞ
926 名前:デフォルトの名無しさん [2016/05/29(日) 23:10:51.26 ID:Cf71caC3.net] 簡単な部分だけをみて簡単だって言ってる奴が多いけど ソフト全体の構成がどうなるかを聞いている。 手が進むと局面が増えるのはどうやって管理する? 手と局面の関連付けは? 手の分岐もおそらく管理する必要がある。 手の生成、局面の評価、手の選択の機能の連携は? マルチスレッド対応もある。 などなど含めた全体の設計はどうなるんだろう?って話だ。
927 名前:デフォルトの名無しさん [2016/05/29(日) 23:14:39.98 ID:Cf71caC3.net] 「構造化で十分」って言うなら構造化による構成を提示して欲しいよな。 設計手法って問題を整理して、考えを明示して関係者と共有することが大きな目的であって 構造化だろうが、オブジェクト指向だろうが基本は一緒。 機能的な固まりをきれいに整理して、疎結合を実現するというのはどの手法でも目的になっているし。
928 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 23:14:43.33 ID:1ogDAOAr.net] >>911 あーまず要件を定義してからな
929 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 23:14:44.37 ID:hqWpcQ8C.net] >仕様の変更や追加に強くなるから 空気を読まずに言うと データ型(クラス)がどういうインターフェースを実装するのかってのを データ型の定義時に決めなきゃいけない静的型付けのOOPより データ型が実装しているインターフェースを後つけで拡張できる型クラスのほうが仕様の変更や追加に強いのではなかろうか つまり手続き型でオブジェクト指向で関数型なRust最強という事だ
930 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 23:17:54.53 ID:1omdCt5G.net] mixinか
931 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 23:17:56.58 ID:RrRCCmyQ.net] まあ将棋のルールは固定されてるから やはり処理速度がどうとか抜きにすれば OOより関数型が向いてるかもしれないね
932 名前:デフォルトの名無しさん [2016/05/29(日) 23:18:07.91 ID:Cf71caC3.net] >>914 言語的にそれを許されたからって楽になるものじゃない。 変更する前には設計して、変更して、テストしてってやるのはどんな言語でも一緒。 変更を楽にするのは正しい設計。
933 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 23:20:12.27 ID:1omdCt5G.net] 今回どんな変更があるのかが要件に入ってないんだよね
934 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 23:20:17.48 ID:hqWpcQ8C.net] >>911 簡単だと思わないしむしろ難しいと思うが しかし >手が進むと局面が増えるのはどうやって管理する? >手と局面の関連付けは? >手の分岐もおそらく管理する必要がある。 >手の生成、局面の評価、手の選択の機能の連携は? >マルチスレッド対応もある。 これももうアルゴリズムのお話でoopプログラミングの手法で解決するものではなないでしょう
935 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 23:23:30.65 ID:hqWpcQ8C.net] 追記 将棋みたいに計算機をガリガリ使う計算って 並列化にはcpuよりGPGPUを使うものだと思うんだけど そうするとますますオブジェクト指向の付け入る隙はなくなるなぁ
936 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 23:27:16.56 ID:hqWpcQ8C.net] ググってみるとクラスタリングか PC1台に限定する意味ないから当たり前だった
937 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 23:29:06.15 ID:1omdCt5G.net] 規模の話がでてたけど 別な視点で考えるとプログラマが10人いたとして 全員が一つのソースファイルを同時にプログラムすることはできないから どのように分割するか、という話になるのだろうか
938 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 23:29:20.83 ID:RrRCCmyQ.net] 計算速度と戦うタイプのソフトを作るのにOOは向いてない ターン制のRPGやカードゲームみたいなのの方が向いてる ゲームルールがすごい複雑でしかも仕様変更されうるもの
939 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 23:32:07.51 ID:E1aQWpks.net] 将棋ダメ オセロだめ トランプだめ テトリスだめ シューティングゲームもだめ PRGも作れません シミュレーションも無理です OS?無理ですね ドライバ?向いてません ミドルウェア?処理速度がー Web系?用途が違うんで 組み込み?ありえないでしょ
940 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 23:36:17.35 ID:1omdCt5G.net] Web系なんてほぼ全部MVCやん
941 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 23:38:45.16 ID:RrRCCmyQ.net] いやRPGやシミュレーションは作れるでしょ なぜ作れないと思い込んでいるのか?
942 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 00:09:08.89 ID:8pkfhQuv.net] 例にするRPGのルールを誰が決めるんだ? 非現実的なので却下。
943 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 00:09:39.22 ID:Fopy0H2h.net] >>926 ゲームは向いてない
944 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 00:25:30.42 ID:j9NktVXe.net] 3Dゲームで使われてるUnrealエンジンのAPIとかもろオブジェクト指向前提だが
945 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 00:25:41.59 ID:MwTEJuIp.net] ゲームは向いてないってのは、確かにそうかもしれない 特にアクションゲームは普通のアプリと比較しても オブジェクト同士の相互作用がとても多いし、プレイヤーもそれを求めてプレーしている以上 ゲームの面白さに直結しているので減らすわけにはいかない これをまともにオブジェクト指向の流儀にのっとって設計すると メッセージの投げ合いだらけになって、だれがどこで何をしているのかわからなくなって バギーになる可能性がある ところがオブジェクト指向が便利な場面もあるから、そのサジ加減が難しい題材という意味では 非常に良いかもしれないが、将棋以上に荒れるのは必須 荒れない範囲で書くなら、大きく分けて ・描画エンジン ・サウンドエンジン ・物理エンジン ・入力処理 ・ロジック処理 ここまでは問題ないだろうが、ここから先の細かいことを言い出すと荒れる 描画エンジンとサウンドエンジンと物理エンジンと入力処理に関しては、わりと決まりきったことを機械的にするだけなので 問題ないだろうが、ロジック処理はかなり個性が出るというか荒れる
946 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 00:30:09.97 ID:AVs/GCxh.net] 夢は語るが 現実を逃避する オブジェクト指向?
947 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 00:34:19.68 ID:j9NktVXe.net] でもゲームエンジンなんて根底は ダブルディスパッチというかVisitorパターンでしょ
948 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 00:37:55.36 ID:ND1XxSGp.net] >>928 むしろゲームにこそ向いている
949 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 00:57:53.90 ID:RhU6P4T4.net] 規模というより粒度の問題。 荒い粒度でならオブジェクト指向するのは当然だろうけれど、細かい粒度でも同じ事やったら 明らかにオーバヘッドで性能がでない。 で、「粒度による」ってのが人それぞれというか経験的なものでしかないので 共有が難しいってこと。
950 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 02:24:41.28 ID:ewV/OC7O.net] >>905 > どう作ってもクソにしかならない > オブジェクト指向ってダメなのかもしれんね そういう結論に持っていこうとする 意図があからさま過ぎたが、正体ばらしたかw
951 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 02:25:30.03 ID:ewV/OC7O.net] >>909 > 仕様の変更や追加に強くなるから どういった理由で? 特定の場合にしか当てはまらない設計をすることは 仕様の変更や追加に弱くなる。
952 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 02:30:01.13 ID:ewV/OC7O.net] 例の奴の設計がクソだっていうのは、 役割の分担じゃなくて、 処理の分担になっているって所。 こいつは恐らく検索処理はどんなものであっても 検索処理コンポーネントにまとめるに違いない。
953 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 03:08:47.31 ID:MwTEJuIp.net] 俺的には処理の分担で良いと思うがな もっと言えば機能の分担で良いと思う
954 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 03:12:13.65 ID:ewV/OC7O.net] それでいいよ。オブジェクト指向的に言えば 一つのクラスの中で処理(メソッド)を2つに分ける。 どうせ思考ロジックなんてデータ構造も必要な処理も そのロジックに最適化された形で決まるんだから、 それらは「思考ロジック」という役割にまとめるしかない。
955 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 03:14:00.77 ID:ewV/OC7O.net] ちょっと訂正 それでいいよ。オブジェクト指向的に言えば 一つのクラスの中で処理(メソッド)を 幾つかに分ける。 別に2つに限定する必要はなかったねw
956 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 03:14:49.89 ID:MwTEJuIp.net] いやだから、思考ロジックという機能にまとめればよいのでは?
957 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 03:19:59.83 ID:ewV/OC7O.net] >>941 だから最初からそう言っている。 オブジェクト指向的に〜とかいう話をしてるから、 一つのクラスにするって話になるってだけ。 思考ロジック部分をインターフェースだけ決めて そのインターフェースを実装する形にすれば 思考ロジックを切り替えやすくなるからね。 と言っても「思考ロジックを切り替えられるようにする」という 要件は明確には出てない。これはこっちのギリギリの譲歩で 無理やりオブジェクト指向の枠内に入れただけ。 ゲームでは難易度調整で思考ロジックの切り替えは当然あるだろうし、 強いAIを作るための研究であっても、別々の思考ロジック同士を 戦わせるってことはあるだろうしさ。
958 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 08:11:02.74 ID:ekC4cwoE.net] 荒れるので要件の定義をせずに設計するの禁止
959 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 10:28:51.98 ID:rIAW5ZZo.net] >>819 これは流石にお粗末だと思うし、設計が未熟な新人ならもう少し謙虚になるべきだと思う
960 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 11:47:28.04 ID:8pkfhQuv.net] >>939 OCPに違反した劣悪な設計
961 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 11:58:04.55 ID:PEEN5NGh.net] OCPって広く長くリリースされてる有名ライブラリなら意味あるのかも知れないけど 規模も小さくプログラマの質も低いそこらのプロジェクトじゃ意味無いよな きっちり動くのだけ残すべきだし、継承なんて安易にするもんじゃない
962 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 12:04:11.10 ID:8pkfhQuv.net] 将棋ソフトにはオブジェクト指向が向かいない厨はAperyがオブジェクトを使っていることを知ったら 小便漏らして泣き出しちゃうの?
963 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 12:32:24.29 ID:ND1XxSGp.net] >>927 これはよく分からん スレで例にする話なら ドラクエとか既存のRPGでいんじゃね
964 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 12:59:01.99 ID:g392/VKX.net] 向かないのは、将棋ソフトじゃなく思考ロジックな すきあらば話をすり替えようとしてるの、 バレバレだw
965 名前:デフォルトの名無しさん [2016/05/30(月) 13:17:27.81 ID:8pkfhQuv.net] >>949 間違いを明確に指摘されても分からない突き抜けたバカ Aperyを確認したら
966 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 14:31:40.52 ID:23kor2oM.net] >>947 aperyのソース読んでねえなお前。 aperyのソースのうち、classは18個ある。ちなみにenumは22個。 classのうち継承を使っているのは4個で、親は全て標準ライブラリからのもの。 このうちメソッドを追加し
967 名前:ただけのものが3個。 virtualを使っているクラスはThreadのみで、実装も1つだけ。 メンバ変数として他のクラスを保持しているクラスはMovePickerのPositionのみ。 Positionクラスも含めその他の全ては構造体+メソッド。他のクラスも同様。 aperyはC++をbetter Cとして使っている。オブジェクト指向で設計したものではない。 具体的にはテンプレート、演算子のオーバーロード、クラスの使い方も構造体に付随する関数をまとめるというもの。 オブジェクト間の相互作用も無いしクラスの階層構造を使ったコードの再利用も外側のごく一部だけ。 ますます例として不適切だと分かるわな。 [] [ここ壊れてます]
968 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 14:44:44.86 ID:eYr/WPsF.net] apery読んでも手続きだなぁとしか思えん
969 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 14:57:17.60 ID:eYr/WPsF.net] https://github.com/HiraokaTakuya/apery/blob/master/src/position.cpp#L69 ここらへんなんてオブジェクト指向としてみたら糞だよね enumをswitchで判定してreturnで値を返すってのは パターンマッチって感じでむしろ関数型プログラミングに近い
970 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 15:26:25.89 ID:W9xaEvpV.net] いるよね。 switchをオブジェクトにしたがるやつ。
971 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 15:28:07.91 ID:3FEoI+9e.net] classを使えばOOP! ん〜学生さんは気楽でいいなぁ〜
972 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 15:30:09.07 ID:ekC4cwoE.net] ああ邪魔だな switchで書かれていれば一覧になっていて一目瞭然なのにワザとか馬鹿なのか知らないけど 抽象化されてて全部で何種類処理が分かれてるのか分からないの
973 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 15:39:10.62 ID:ILfmqIwk.net] このスレ面白いなw 次スレたつのかね
974 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 15:49:54.27 ID:cLUfCSU4.net] 何種類あるか意識する必要があるなら負け
975 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 16:48:44.47 ID:ekC4cwoE.net] >>958 どうやってテストしたのか言ってごらんよ
976 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 17:36:35.20 ID:8pkfhQuv.net] クラスは1つ、分けるのはおかしい!そもそもクラスじゃない!オブジェクト指向で設計するのは不可能! ってバカな主張はさすがにやめたんだw
977 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 17:40:07.46 ID:8pkfhQuv.net] >>951 オブジェクト指向で設計するのは無理って言ってた奴がオブジェクト指向のあるべき設計を語っちゃうって頭おかしんじゃね
978 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 17:51:47.74 ID:eYr/WPsF.net] 「オブジェクト指向とは何か」から認識合わせしなきゃならない感じ? 後 評価関数や定跡はバイナリで配布されてるからそこらへんがなんともいえない
979 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 17:54:05.34 ID:eYr/WPsF.net] >>961 >オブジェクト指向で設計するのは無理って言ってた奴がオブジェクト指向のあるべき設計 aperyはオブジェクト指向で書かれてないのでオブジェクト指向で設計したものではないって事ではないの?
980 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 18:02:17.22 ID:8pkfhQuv.net] >>963 モジュールにもクラスにも分ける必要はない、1つにまとめるのが最高の構成!!! だとさ
981 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 18:13:18.75 ID:ixAozmxi.net] apery見ろって言った自分のレスが的外れと分かって発狂したのか まるでアホの子供だな
982 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 18:25:45.94 ID:cZLZyxJT.net] で、結局OOPは必要なんだろう?
983 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 19:25:11.10 ID:+7J42eKt.net] 結局要件次第だから要件をキッチリ決めよう でもこのスレじゃ先走るバカがいるから決められない だから将棋ソフト開発スレを立ててじっくりやろうってところに落ち着いた感じかな
984 名前:デフォルトの名無しさん [2016/05/30(月) 19:27:28.87 ID:8pkfhQuv.net] >>967 要件が分からないバカ
985 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 19:35:00.08 ID:+7J42eKt.net] >>968 お?aperyのソースは読み終わった?宿題だからはやくやっとけよ
986 名前:デフォルトの名無しさん [2016/05/30(月) 19:38:36.35 ID:8pkfhQuv.net] >>969 電王戦の参加者はニコニコが書いた要件を理解して参加してるのにいまだに理解できない奴w
987 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 19:39:44.40 ID:eYr/WPsF.net] >>964 うーん会話がいまいち通じない
988 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 19:49:06.41 ID:eYr/WPsF.net] >電王戦の参加者 電王戦の参加者は機械学習や計算機科学についての知識がある人達だけど ここのスレにいる人たちは必ずしもそうじゃない
989 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 19:50:50.18 ID:ND1XxSGp.net] さすがにAperyが 2ちゃんのレベルで クラス1個とかやらないよな
990 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 19:52:15.30 ID:8pkfhQuv.net] >>972 理解力のなさが異常 ニコニコのルール・条件のどこが機械学習や計算機科学特有だと思ったのか?
991 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 19:58:45.90 ID:eYr/WPsF.net] >>974 人間に勝てる将棋AIを作るってのは普通に機械学習の知識がないと無理だと思うんだけど
992 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 20:00:14.80 ID:8pkfhQuv.net] >>975 コイツは理解力が異常なまでに欠如しているせいでいろいろ勘違いしてそう
993 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 20:03:26.56 ID:eYr/WPsF.net] >>976 将棋AIを作るんじゃなかった?
994 名前:デフォルトの名無しさん [2016/05/30(月) 20:07:26.50 ID:8pkfhQuv.net] >>977 やっぱりw
995 名前:デフォルトの名無しさん [2016/05/30(月) 20:09:51.65 ID:eYr/WPsF.net] >思考部分がメイン っていうのは共通認識だと思ってたんだけどな
996 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 20:12:45.47 ID:8pkfhQuv.net] >>979 要件を理解してるのに「結局要件次第だから要件をキッチリ決めよう」ってしつこく言ってたならバカ 電王戦の参加者は理解した要件を理解できないなら理解力の欠如
997 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 20:38:00.16 ID:eYr/WPsF.net] >>980 つまり将棋AIを作るって事では?
998 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 20:50:04.74 ID:ILfmqIwk.net] 暗黙的に「まともにプレイするに足る強さ」の思考ルーチン考える →ID:8pkfhQuv どういう思考ルーチンにするか明示されてないから決めよう →ID:eYr/WPsF なのかな?
999 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 20:51:12.69 ID:ILfmqIwk.net] バカCPUでいいならそれこそ合法手からランダムで選ぶのでもいいってことになるからねえ
1000 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 21:07:47.33 ID:j9NktVXe.net] 要件ってこれ? (必須機能) 第5条 参加ソフトは、次の各号に掲げる機能を持たなければならない。 一 任意の局面・手番・残り時間からの将棋の対局の開始と継続。 二 任意の時点での対局中断。 三 対局中の現在局面の表示。テキストでも良い。 四 第 19 条の規定による、1 手毎の消費時間の計測、及び累計消費時間の画面への表示。 五 1 手毎の指し手と消費時間の記録。対局中断時も、そこまでのすべての指し手と消費時間を取り出せなければならない。 六 CSA サーバプロトコル ver.1.1.3 に基づく、LAN による対局。 七 相手の指し手の手入力による対局。
1001 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 21:08:43.43 ID:j9NktVXe.net] (推奨機能) 第6条 参加ソフトは、次の各号に掲げる機能を持つことが推奨される。ただし、機能を持たないことによって不利になることはない。 一 千日手の検出。 二 LAN による通信で送受信した文字列の必要に応じた表示。 三 任意の局面・手番・残り時間からの LAN による通信での将棋の対局の開始と継続。 denou.jp/tournament2015/img/rule/denou_tournament_rule2015.pdf
1002 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 21:12:10.48 ID:ILfmqIwk.net] ID:j9NktVXe 有能
1003 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 21:17:26.56 ID:eYr/WPsF.net] >>982 いや俺は要件をきっちり決めようとは言ってないよ 機械学習とかAIについての知がない人達で将棋AIの設計なんて無理でしょって思ってるだけで >合法手からランダム ならいいけど
1004 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 21:19:03.79 ID:ILfmqIwk.net] >>987 勘違いごめん 回答ありがとう 理解した(つもりかもしれんけど)
1005 名前:デフォルトの名無しさん [2016/05/30(月) 21:27:46.75 ID:8pkfhQuv.net] >>987 だったら>>970 に対するレスのつけ方がおかしい 要件が不明瞭って言ってると受け止めるのが普通
1006 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 21:51:53.77 ID:ZWFY3jHL.net] >>985 誰が書いたか知らんが幼稚な表現が多い文章だなw 誰も校正しなかったんやろか
1007 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 22:22:43.38 ID:Usq7Wp/A.net] >>990 甲だの乙だの書いてあるのがお好き?
1008 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 22:47:26.31 ID:ZWFY3jHL.net] >>991 論文では使わない表現が多いやろ というか無理してる感がにじみ出てさむいわw きちんと書けないならもっとカジュアルに表現すれば 全体の統一感が出て少しはマシになると思うんやけどな
1009 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 22:53:57.20 ID:ewV/OC7O.net] aperyは将棋ソフトであり、今ここで話しているのは思考ロジック部分だけの話 aperyでも思考ロジックは1クラスだろw
1010 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 22:55:20.39 ID:8pkfhQuv.net] >>993 え?
1011 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 22:57:44.15 ID:j9NktVXe.net] 思考ロジックの話してるのは一人だけみたいだな
1012 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 22:58:42.79 ID:ewV/OC7O.net] 思考ロジックの話って最初から書いてあるけどなw なんか、わざとらしく話をすり替えようとしている臭がするなwww
1013 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 22:59:24.96 ID:8pkfhQuv.net] >>996 >>993 をごまかすなwww
1014 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 22:59:41.16 ID:miEVgFPq.net] 思考ロジック部分なんてクラス一つで十分
1015 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 23:00:22.80 ID:V8MlYic6.net] 思考ロジック部分なんてクラス一つで十分だし、 たとえば二分探索のロジックをクラスにして 分割するとか意味不明だろw
1016 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 23:00:45.60 ID:pXhtjcNw.net] >>997 必死すぎwwwwwwwwwwwwwwwwwwwwww
1017 名前:1001 [Over 1000 Thread.net] このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。 life time: 11日 0時間 52分 58秒
1018 名前:1002 [Over 1000 Thread.net] 2ちゃんねるの運営はプレミアム会員の皆さまに支えられています。 運営にご協力お願いいたします。 ─────────────────── 《プレミアム会員の主な特典》 ★ 2ちゃんねる専用ブラウザからの広告除去 ★ 2ちゃんねるの過去ログを取得 ★ 書き込み規制の緩和 ─────────────────── 会員登録には個人情報は一切必要ありません。 月300円から匿名でご購入いただけます。 ▼ プレミアム会員登録はこちら ▼ premium.2ch.net/ pink-chan-store.myshopify.com/
1019 名前:過去ログ ★ [[過去ログ]] ■ このスレッドは過去ログ倉庫に格納されています