Scalaで作成中のアプリケーションで、DI(Dependency Injection)をしようとしているという話。 簡単に書けるだろうと高をくくっていたら、無惨にも書けなくなってしまったという話でもある。 DIとは? DI -- Dependency Injectionとは、訳せば依存性の注入。依存しているクラス同士の依存関係をハードコードするのではなく、外部 -- 例えば呼び出し元 -- から「注入」することによって抽象度を上げ、テストなどを容易に行うための考え方だ。 往々にして、プログラム中に「仮定」を置きたくなるという事が発生する。理想的に動作する、仮のスタブのようなクラスが必要になることがあるものだ。テストを複雑にしやすいネットワーク関連のクラス、再現が困難な特定の手順を踏まなければ提供されないインスタンス。これらをテストのたびにインスタンス化するのは面倒極まる。そういうわけで、