【いそんせいちゅうにゅう】
依存性注入(DI) とは?
💡 「自分で作る」のではなく「外からもらう」
📌 このページのポイント
DIって何がうれしいの?
例えばUserServiceがDatabaseを直接newすると、テスト時に本物のDBが必要になる。DIでDatabaseを外から渡す設計にすれば、テスト時はモックDBを渡せる。依存先を差し替えられるから、テストが簡単になり、部品の交換も柔軟になるんだよ
コンストラクタ注入って何?
DIコンテナって何?
DIを使いすぎると?
全てをDIにすると設定が複雑になって、コードの流れが追いにくくなることがあるよ。「この注入はどこで設定されてるの?」と迷子になる。ユーティリティ関数や値オブジェクトなど、交換する必要がないものまでDIにする必要はない。テストで差し替えたい部分に絞って適用するのが現実的だね
まとめ:ざっくりこれだけ覚えればOK!
「依存性注入」って出てきたら「依存するオブジェクトを外部から渡す設計パターン」と思えればだいたいOK!
📖 おまけ:英語の意味
「Dependency Injection」 = 依存性注入
💬 Dependency(依存するもの)をInjection(注入する)。外から渡してもらう仕組みだよ