日経 BP の星さんが Blog をはじめた。早速 Linda DeMichiel とのインタビュー記事についての Entry があったが、実りがあったようでなによりだ。今回、Linda には取材の依頼が多く来ている。やはり Press の人たちは敏感だ。旬な話題と、誰がキーパーソンかよくわかっている。
ところで、最近、星さんをはじめ多くの方が DI について Entyr をされているので、私も一言。
DI のようにコンポーネント間の依存を減らし、Runtime まで変数を留保できる考えは、リーズナブルだし、開発者にとってもありがたい。ただ、その DI があたかも既存の EJB と相反するかのような文脈で語られると違和感を感じる。
そもそも、EJB の大きな特徴は、エンタープライズの世界に本格的なコンテナ/コンポーネントモデルを導入したことである。ビジネスロジックをコンポーネント単位にまとめ、エンタープライズシステム特有の処理は極力コンテナに任せてしまおうというものだ。
この時点で、コンポーネント間の依存関係は好ましくなく、あの Home インターフェースや、Remote インターフェースはまさに、そのコンポーネントの独立性、非依存性を確保するために導入された。今日的に言われている DI は、そのコンポーネント志向の延長上にある。EJB2 でいまだに残っていたコンポーネント間の依存関係をさらに減らすのが、DI の要点だと考えることもできる。
EJB に反する考えのように語られることの多い DI だが、それよりは、コンポーネント志向の途上であった EJB の考えをさらに純粋に突き詰めるアイデアと考えるほうが自然に思える。そして、そう考えれば、なぜ EJB3 で、いともあっさりと DI 的要素が取り込まれたか理解できる。
この考え方が私のオリジナルならばかっこいいのだが、残念ながらほとんど丸山先生の解釈をそのまま借用している。こういった逆転の発想的な見方をあっさりできるあたりはやはり先生の慧眼なのだろう。