1 名前:デフォルトの名無しさん [2016/05/19(木) 22:07:47.87 ID:9fCVrsOw.net] 手順とかノウハウとか語りたい
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クラスになってしまうだろう それが一番早く動くなら、将棋にとってはそれが正義 しかも将棋のルールはほぼ固定されていると考えてよいから 変に柔軟性を与えて仕様変更に強くする意味もないしな パラメーターで対応すれば十分 動画のエンコーダーとかといっしょで、規格ものなんだよ 規格が決まっていて、速さや効率が求めらえるなら ハードコーディングも辞さない