【いそんせいちゅうにゅう】
依存性注入(DI) とは?
最終更新:
💡 必要な部品は、自分で作らず外から受け取る
クラスなどが使う依存オブジェクトを、自分で生成する代わりに外部から受け取る設計。依存先の差し替えやテストをしやすくする。
📌 このページのポイント
「依存する部品」って、どういうこと?
たとえば注文を処理するクラスが、データを保存する部品を使うとするね。その保存の部品が依存先だよ。DIでは、注文クラスの中で保存の部品を作る代わりに、外で用意して渡すんだ。
外から渡すと、何がうれしいの?
必要な役割をそろえた実装に差し替えやすくなるよ。テストでは本物のDBへ書く部品の代わりに、記録だけする代役を渡せる。インターフェースなどで役割を決めておくと、使う側が具体的な実装に依存しにくくなるんだ。
どうやって部品を渡すの?
DIコンテナを使わないと、DIにならない?
全部の部品を差し替えられるようにすればいい?
必要な境界を考えて使おう。依存先が増えすぎると、クラスが多くの責任を持っていないか見直す手掛かりになる。コンテナを使う場合は、どこで登録したかだけでなく、部品をどのくらい共有し、いつ破棄するかも確認するんだ。
まとめ:ざっくりこれだけ覚えればOK!
「依存性注入」って出てきたら「使う部品を外から渡してもらう設計」と思えばだいたいOK!
📖 おまけ:英語の意味
「Dependency Injection」 = 依存性注入
💬 Dependency(依存するもの)をInjection(注入する)。外から渡してもらう仕組みだよ