これを試しに自分のAndroidアプリで使ってみようと思い立ったのですが、幾つか問題が発生しました。
- DI自体の概念が難しい
- そもそもドキュメントを読んでもDaggerの使い方がよくわからない、公式のサンプルを真似してみても正直いまいちわからない
- AndroidでDIを行うとなるとandroid.content.Contextの注入が必須になるのだが、Contextは動的なインスタンスであるためDIでの取り扱いが難しい
そこで四苦八苦しながら動くようになったものをライブラリとして公開し、少しでも簡単にDIのメリットだけを享受できればと思いまして DaggeredAndroid なるものを作ってみました。
使い方とかはREADMEを見てください。全部英語ですがすみません(´・_・`)
AndroidでDIを使う際のメリットは主に以下のとおりです。
- オブジェクトをメンバに接続するだけのコードを無くせるので、コード量が減る。
- シングルトンの取り扱いが楽になる。
- Contextの取り扱いが楽になる。
- Moduleを差し替えればインスタンスが安全に差し替わるので、テスト環境を作ったり、本番と開発環境を分離したりなど、環境の差し替えが楽になる。テスト時のみModuleを上書きすることもできる。