Dependency Injectionとは

Dependency Injectionを日本語でなんと訳しますか？

大体「依存性の注入」と訳されることが多いですよね。

確かに直訳するとその通りなのですが、実際に行っていることを表していない、非常にミスリーディングな誤訳だと思います。

依存性を注入する、と言われると、まるで新しい依存性が増えるような印象を受けますが、実際はそうではありません。

googleの言語設定を英語にして検索してみると、英語版Wikipediaがトップで出てきて以下のように説明されています。

In software engineering, dependency injection is a technique whereby one object (or static method) supplies the dependencies of another object. A dependency is an object that can be used (a service).

これを意訳すると「Dependency = 依存しているオブジェクト」となります。

よりイメージを湧かせるために、ソースで例を見てみましょう。

public class ServiceA { @Autowired private ServiceB serviceB; : }

JavaのSpringDIの事例ですが、この例ではServiceAがServiceBに依存しており、 @Autowired をつけておくとSpringがServiceBのインスタンスを生成してServiceAインスタンスに注入してくれます。

つまりServiceAにServiceBという「依存オブジェクトを注入」してくれるのです。

これを「依存性を注入する」と訳すのはどう考えても実態と反していますよね。

Dependency Injection = 依存オブジェクト注入

この和訳が一番実態とあっていると思います。

できればこの和訳を広めて行きたいところですが、いろんな書籍にもWebの情報にも「依存性注入」で広まってしまっているので、今からはなかなか難しいでしょう。

ただ、人にDIについて説明する際には、「依存オブジェクト注入だよ」と話してあげると良いのではないでしょうか。