トップ «前の日記(2009-11-01) 最新 次の日記(2009-11-03)» 編集

日々の破片

著作一覧

2009-11-02

_ フレームワークの進化

ずいぶん以前に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段階目というのがどうも一区切りというか、中期的な完成形(それ以上は望む必要があまりない)という実感があるからだ。


2003|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|06|07|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|09|10|11|12|
2021|01|02|03|04|05|06|07|08|09|10|11|12|
2022|01|02|03|04|05|06|07|08|09|10|11|12|
2023|01|02|03|04|05|06|07|08|09|10|11|12|
2024|01|02|03|

ジェズイットを見習え