2005-10-23(Sun) ハテナオヤ来たる [長年日記]
■1 PofEAA読書会:第7回
終了しました
開催直前に私が数日間、沖縄にてIPが届かなくなり一時はどうなることかと思いましたが、無事終了しました。みなさんご協力ありがとうございました。
さて。トラックバックするまでが読書会です。参加された方がたは是非、トラックバックをお願いします。宛先は、http://capsctrl.que.jp/kdmsnr/wiki/PofEAA/index.cgi/tb/ReadingPofEAA007 です。次回は12/4(日)です。私の参加メモは後ほど。
今日は東京国際映画祭にテリー・ギリアムが来てたのか……。
読書会で出た話と自分の気づきと自分の後づけの感想がごっちゃになってます。
Table Data Gateway(TDG)
- 発表者であるわたなべさんに、書籍の.NETなサンプルを解説してもらった。一人でサンプルを見ててもわかった気になるだけだったので参考になった。
- J2EEパターンに出てくる、みんな大好きData Access Object(DAO)パターンは、これ。
- S2DAOはTable Data Gateway(と、第3回のときにid:higayasuoさんが発言していたと記憶している)
- 基本的にはステートレスなSQLのラッパー
- ステートレスといっても改ページ(pagination)の仕様によってはそうも言ってられないよね?
- クエリ発行時のスナップショットでページを繰りたい場合など)
- findメソッドで何を返す? → Map, DTO, RecordSet, DomainModel
- 山野さんの資料(PDF)にDTOのバリエーションのまとめがある。
- 「TableDataGatewayのメリット」について私がoginoさんに何やら語ったらしいのだけれど、一切覚えてない……。何を言ったんだろう。気になるのでフォロー希望。
Row Data Gateway(RDG)
- 和田さんの発表スタイルが素敵。「俺はここがわからん」という疑問に参加者を巻き込んでいくインタラクティブな形式。
- 邦訳では「行データゲートウェイ」
- 1レコードにつき1クラスが基本。型マッピングもRDGで面倒を見る。
- Active Recordからロジックを抜いたもの。TransactionScriptと併用することが多い
- TransactionScript + Row Data Gateway から、Active Recordへの進化もアリ
- ドメインモデル採用時には、Active Record(AR) または Data Mapper(DM)。ARとDMとの分水嶺は複雑度7.42。
Active Record(AR)
- 資料の前半がすさまじくコンパクトにまとまっていて良かった。後半はRuby/Railsに親しみが無い人置いてけぼりっぽい印象も受けたけど、どうだったのかな。個人的にはhabtmやact_as_*の話を聞けたのが収穫。デモはRailsじゃなくてActiveRecord + irbにしたほうが焦点が絞れたかもしれない。
- RailsのActive RecordはもはやPofEAAのActive Recordではない
- RailsのARでは関連・コレクション・継承も扱える
- ファウラーのARの定義は車輪の再実装が前提なので、関連・コレクション・継承は扱わない
- リスト、ツリー構造も表現できる。再帰的な多:多はどうなの?——「できました」と、ゴロウさん。その場で実装。カッコイイ。ビルトインの機能としてサポートされてるかはこの時間では不明。
- 継承はすべてSingle Table Inheritance
- DBのテストにはモックとかケチ臭いことを言うな。MySQLは速い。すべての開発関係者のローカルPCにMySQLを。うーん。そうなのかなあ。Mike ClarkもRails1.0でテスト時のクエリの発行回数が減って速くなった!!とか言ってるし。「ゲームのルール」が違うんだよな。
- (RailsのARの実装は)「実に豪快」
- MySQLの使い方のパターンを誰かまとめないのか。MySQL Session Stateとか。
- MySQLがコネクションプールを持たないのはプロセス単位接続でも十分速いから、だっけ?(うろ覚えだったので読書会では言ってない)
Data Mapper
- id:bakockさん。発表が前回よりも落ち着いてソツなくなっている。場数効果かしらん。まとめ方のフレーズがbliki_jaっぽいのが個人的に好感。「そこでLazy Loadですよ」とか。
- 11章の前振り的なところも多いけど、あの分量をよくまとめたなあ、と感心。
- 後ろが必ずしもテーブルである必要はない(VIEWだったりストアドプロシージャだったりしても良い)というのがこの章の基本姿勢なのだけれど、全然違うデータソース(たとえば、Webサービスとかファイルとか)を透過的にデータマッピングできるようなツールは出てきているのだろうか?
その他
- id:ogijunさん、名札ケースありがとうございました!!
- まだまだ改善が必要なポジションペーパー配布方法
- id:naoyaさんから「はてなブックマーク」ブックマークをお土産にいただいた。
- id:koichikさんのポジションペーパーが印象的だった。YAGNIとKISSもTHINKあってこそ。
- id:secondlifeさんから「BDDというかRSpecどうなんですか?!」と言われて、テキトウに答えてしまった。これについてはTDDとBDDについて、別エントリを書いたつもり*1。
*1 書いてません。念のため。