little hands' lab

ドメイン駆動設計、アジャイルプラクティスを実践し、解説しています。

Dependency Injectionを「依存性の注入」と訳すのは非常に悪い誤訳

f:id:little_hands:20180527211818p:plain:w400

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について説明する際には、「依存オブジェクト注入だよ」と話してあげると良いのではないでしょうか。