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件を見るGraphQL
FacebookがRESTの課題を解決するために開発したAPIクエリ言語。クライアントが必要なデータの形を宣言的に指定して取得でき、オーバーフェッチ・アンダーフェッチを解消する。
IT用語: async/awaitとは|非同期処理をわかりやすく書く構文
Promiseベースの非同期処理をまるで同期処理のように書けるasync/awaitの仕組みとエラーハンドリングを解説。
TypeScript (TS)
JavaScriptの弱点(エラーの起きやすさ)を克服するためにMicrosoftが開発した、「型(ルール)」を持つ進化版言語。
Go / Golang (ゴー言語)
Google社が開発した、処理速度が超絶爆速で、大量のアクセスに強い現代的なプログラミング言語。
PHP
Webサイトの裏側(サーバー側)で動くシステムを作るために特化したプログラミング言語。WordPressのベースでもある。
SSG(静的サイトジェネレーター)
ビルド時にすべてのページをHTMLとして事前生成する手法。サーバーが不要なため高速・安全・低コストで、ブログ・ドキュメントサイト・ランディングページに最適。