Dev Study
NestJS コース

6. DIの考え方

DI(依存性の注入)とは、クラスが必要とする別のクラスを自分で new するのではなく、外部から渡してもらう設計です。NestJS の中心にはこの仕組みを自動化する「DIコンテナ」があり、クラスの生成と受け渡しをフレームワークが肩代わりします。

実務での利点は差し替えやすさです。たとえばテスト時に本物の DB アクセスクラスを偽物に置き換えたい場合、new が各所に散らばっていると大変ですが、生成をコンテナに集約していれば登録を1か所変えるだけで済みます。

下のコードはデコレータを使わずに DIコンテナの本質を再現したものです。「トークン名で生成方法を登録し、resolve で取り出す。一度作ったインスタンスは使い回す」という動きが、NestJS が裏でやっていることの核心です。

▶ サンプルコードを実行してみよう(自由に書き換えてOK)

TypeScript
公式ドキュメントで詳しく ↗