BitArts Blog

ロードバイク通勤のRubyプログラマで伊豆ダイバー。の個人的なブログ。

Transaction Scriptって何よ

抽象的な言い方だけど、ドメインオブジェクトもDTOも無い。ようするに単純にモデルというかEntityが無いようなのがTransaction Scriptだと思ってた。でもファウラー自身が、

トランザクションスクリプトとは、P of EAA の中で私が作ったパターン名である。リクエストによって処理を行う手続き型(a procedual style)のパターンのことだ。プロシージャは必要なデータをすべて読み込み、メモリ上でどの月が必要なのかを探し、それから処理を行うことになる。(ドメインロジックとSQL)

とか言っちゃってるのでちょっと違うのか。「必要なデータをすべて読み込み」は極論で、Transaction Scriptの本質とは違うのではないかという気もするが。それとも、Transaction Scriptは、あまりにも使い物にならない、あり得ない設計として引き合いに出してるのか?

とりあえず今日、「もしかしてこういうのをTransaction Scriptって言うんじゃないかなあ」と思うソースと出会いました。これから色々チェックをしなくてはなりません。構造はシンプルで一貫性がある。小規模プロジェクトなら使えないこともないデザイン。でも今回のは大規模プロジェクト。クラスが巨大で、メソッドも巨大です。こうなると最悪のデザイン。…はぁ。

# ファウラーもRuby使いだったのか

追記)こちらのサイト(NRI)の説明がわかりやすい。でも「扱うデータを一度に読み込み、ループでまわして、必要なものをセレクト」なんてことはどこにも書いてない。サービス志向的という点のほうが大事っぽい。