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件を見るJest(ジェスト)
MetaがReact向けに開発したJavaScript/TypeScriptのテストフレームワーク。ゼロ設定で動作・スナップショットテスト・モック機能を標準搭載し、フロントエンドテストのデファクトスタンダード。
Python (パイソン)
AI(人工知能)やデータ分析の分野で世界的に最も人気のあるプログラミング言語。
ESLint
JavaScriptとTypeScriptのコードを静的解析し、潜在的なバグや規約違反を検出するリンター。プロジェクト全体で一貫したコードスタイルを強制し、コードレビューの負担を軽減する。
JavaScript (JS)
Webブラウザ上で動きのある表現(アニメーション等)を実現するためのプログラミング言語。
Ruby (ルビー)
「プログラミングを楽しむ」ことを目的に日本のまつもとゆきひろ氏が開発した、美しく書きやすい言語。
SPA(シングルページアプリケーション)
ページ遷移時にブラウザをリロードせず、JavaScriptで動的にコンテンツを更新するWebアプリのアーキテクチャ。React・Vue・Angularで実装されることが多い。