著作一覧 |
ずいぶん以前にJava Worldで紹介記事を読んで、その後、そのものを熟読したものだが、あらためて読み返すと、今でもドン・ロバーツとラルフ・ジョンソンのフレームワークの進化はおもしろい。
なぜそんな古いものを思い出したのかと言えば、みねこあさんがPluggable Component Frameworkという「桃源郷」について書かれているのを読んだからだ(もっともそう言っているのはオージスの方だけど)。
プラガブルコンポーネントフレームワークは、上記の進化パターンでは5段階目に位置しているPluggable Objectsに対応するもののようだ(おれはDDDは読んでいないのでそこはわからないけど)。
DDDエッセンスでは、
ドメインフレームワークとは、中核の抽象化により抽出されたドメインの中心的なインタフェースと相互作用から構成される中央ハブのようなもので、そこにドメインの可変部分をコンポーネントとして着脱できる。ただし、ドメインフレームワークには、(1) 実現が非常に難しい、(2) フレームワークが提供する中核ドメインにアプリケーションが縛られる、などの欠点もある。
というものをPluggable Compoenent Frameworkとしている。
これは第4段階のHotspotsより祖粒度と読めるから、進化の5段階目が(Pluggableという同じ言葉を使っている点も含めて)妥当かと思う。
Solution:
Design adaptable subclasses that can be parameterized with messages to send, indexes to access, blocks to evaluate, or whatever else distinguishes one trivial subclass from another.
中核ドメインへの強い依存性の解決に6段階目のFine-grained Objectsを待つ必要がある点も共通している(Fine-grained Objectsではフレームワークの構成物が細切れ化された結果、完全にコンポジションによるつまみ食いが可能となる――That is, dividing the object further would result in objects that have no individual meaning in the problem domain.――ただ、なんとなくだが、それってstdio/stdlibみたいな単なる関数ライブラリのような気もするのだが、あくまでも3 examplesから発展した結果のフレームワークなのでそれは気の迷いだろう)。
もっとも、アプローチがまったく異なるから(進化論は、いかに現実のシステムを深化させてフレームワークを洗練させていくかの実装パターン(むしろリファクタリングパターンというべきかも)比較してもしょうがないとも感じるが。
で、おもしろいなと思ったのは、大体、上記の進化パターンの5段階目というのがどうも一区切りというか、中期的な完成形(それ以上は望む必要があまりない)という実感があるからだ。
ジェズイットを見習え |