DIコンテナ 【Dependency Injection container】
概要
DIコンテナ(Dependency Injection container)とは、ソフトウェア開発において内部のソフトウェア部品(コンポーネント)間の依存性の管理を行うことができるようにするソフトウェア。依存性注入(DI:Dependency Injection)を実現することができる。複数のコンポーネントを組み合わせてソフトウェアを構築する場合、単純に開発するとコンポーネントAのプログラム中でコンポーネントBを呼び出し、その機能を利用するという形式になる。これを「AはBに依存している」という。
このような単純な方式だとAとBの関係は固定的になり、AがBを利用していることは外からは直接分からなくなる。テスト時など一時的にBに似た機能のB'を利用したい場合でも、いちいちAの内部のコードを書き換えなければならない。
依存性注入の考え方では、AはBを直接呼び出さず、Bに相当するコンポーネントを外部から受け取ってこれを呼び出すようにプログラムする。これにより、Aを直接修正しなくても実行時にBを与えるかBと同じように振る舞う別のコンポーネントを与えるか選択できるようになる。
この依存関係の管理を外部から行えるようにするためのソフトウェアがDIコンテナで、開発者は設定ファイルなどの形でコンポーネント間の依存関係を記述したり編集することができるようになる。著名なDIコンテナの多くはJava言語向けに開発されており、Spring FrameworkやSeasar2、Google Guiceなどがよく知られる。
(2020.8.31更新)