uehaj's blog

Grな日々 - GroovyとかGrailsとかElmとかRustとかHaskellとかReactとかFregeとかJavaとか -

DIコンテナって何?

DIコンテナ」の説明ってわかりにくいですが、以下の説明はいかがでしょう。

「オブジェクトの生成や、オブジェクト間の結びつきについてのサポート機構。アプリケーションにおける決まりきった生成パターンや結びつけに関する処理を、一手にまかなうもので、生成や構造の指定をコードで書くのではなくて設定ファイルなどに切り出しておくことで、そこらへんの煩雑な処理をアプリケーションが自前で行なわなくてすむようにし、汎用性を高める仕組み。」

「依存性」とか「注入」とかいう言葉を持ち出すからわかりにくくなるんです。
バッドネーミング。マーチンファウラーさん、あんたが悪い。

「リモコン」のことを「赤外線送出装置」と呼んだり、「電話機」のことを「音声電流相互変換機」と呼ぶようなもんです。

SpringとかSeasar2の機能(オブジェクトの生成や構造に関するサポート)がDIによって実現されるからといって、DIコンテナと呼ぶ必要はありません。その機能を実現している要素技術名を名前につけるより、人間に対して提供する機能で名前をつけた方がわかりやすい。

ではなんて呼ぶべきか。

とか?
あんまりぴんとこないな。でもそういうことです。

大根料理 ?野菜がおいしい毎日のおかず? (丸ごと野菜COOK BOOK 4)

大根料理 ?野菜がおいしい毎日のおかず? (丸ごと野菜COOK BOOK 4)