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