[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 09/06 09:50 / Filesize : 348 KB / Number-of Response : 1020
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

オブジェクト指向システムの設計



1 名前:デフォルトの名無しさん [2016/05/19(木) 22:07:47.87 ID:9fCVrsOw.net]
手順とかノウハウとか語りたい

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、あるいは同等品を探すほうが楽できるってことかな。






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

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](;´∀`)<348KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef