IT用語: 依存性の注入(DI)とは|テストしやすいコードを書く設計原則
クラスが依存するオブジェクトを外部から渡す「依存性の注入(Dependency Injection)」の概念とテスタビリティへの効果を解説。
依存性の注入(DI)とは
依存性の注入(Dependency Injection)は、クラスが必要とするオブジェクト(依存性)を、クラス内部で生成するのではなく外部から渡す設計パターンです。SOLID原則のD(依存性逆転の原則)を実現する手段として使われます。
DIを使わない問題
class OrderService {
constructor() {
this.db = new PostgreSQLDatabase(); // 内部でDBを直接生成
}
}
// → テスト時にも本物のDBが必要になる
DIを使った改善
class OrderService {
constructor(db) { // 外部から注入
this.db = db;
}
}
// 本番: 本物のDB
const service = new OrderService(new PostgreSQLDatabase());
// テスト: モックに差し替え可能
const service = new OrderService(new MockDatabase());
DIコンテナ
TypeScriptではInversifyJS・NestJSのDIコンテナ等が依存関係の管理を自動化します。大規模アプリケーションでは依存関係の木構造をコンテナが解決します。
関連する用語 (プログラミング)
全33件を見るIT用語: 型安全性(Type Safety)とは|TypeScriptが防ぐバグの種類
コンパイル時に型の不一致を検出する「型安全性」の概念と、JavaScriptからTypeScriptへの移行がなぜ有効なのかを解説。
IT用語: DRY原則とは|「繰り返しを避けよ」というプログラミングの鉄則
Don't Repeat Yourself(DRY)原則の意味と、WET(重複だらけ)なコードが引き起こす問題と対処法を解説。
IT用語: ソフトウェアテストの種類|単体・結合・E2Eテストの違い
ユニットテスト・結合テスト・E2Eテストの役割とテストピラミッドの考え方を解説。
SSG(静的サイトジェネレーター)
ビルド時にすべてのページをHTMLとして事前生成する手法。サーバーが不要なため高速・安全・低コストで、ブログ・ドキュメントサイト・ランディングページに最適。
ESLint
JavaScriptとTypeScriptのコードを静的解析し、潜在的なバグや規約違反を検出するリンター。プロジェクト全体で一貫したコードスタイルを強制し、コードレビューの負担を軽減する。
JavaScript (JS)
Webブラウザ上で動きのある表現(アニメーション等)を実現するためのプログラミング言語。