レポート

1,000名を超すAndroidに関わる開発者が集まった DroidKaigi 2019参加レポート

この記事を読むのに必要な時間:およそ 2 分

マルチモジュールプロジェクトでのDagger2を用いたDependency Injection

このセッションは,⁠マルチモジュールで構成されたプロジェクトでDagger2を使ってDIする場合に,何が困るのか,そしてどう解決するのかを理解する」のがゴールであると講演者の@kgmyshin氏は冒頭に述べています。

画像

DI(Dependency Injection:依存性注入)とはデザインパターンであり,結合が疎になったり,単体テストがしやすかったり,特定のライブラリやフレームワークへの依存度を下げられるなどのメリットがあります。DIはAndroidアプリ開発に欠かせない技術となっていて,アプリケーションでDIを実現するためには,どこになにをinjectするのかを網羅する必要があると@kgmyshin氏は手書きの説明とともに解説しています。

マルチモジュール環境において,従来のシングルモジュール環境と同じような方法で実装しDIを実現しようとすると,依存性注入を実行してくれるInjectorは複数管理できません。そのためInjectorが上書きされてしまい,アプリケーションがクラッシュするという状況に陥ってしまいます。

@kgmyshin氏は1つの解決策として「Applicationで持つ1つのFragmentInjectorが複数のInjectorを持つようにする」という方法を提示しています。ModuleInjectorという独自のInjectorを定義しており,複数のInjectorを保持するフィールドを用意し,外部からInjectorの追加/削除ができるようにすることで,複数のInjectorの管理を実現しているようです。

Dynamic Feature Moduleではモジュール間の依存の方向が逆になってしまうため,前述の問題とは異なる問題が発生すると@kgmyshin氏は述べています。Dynamic Feature Moduleはモジュール間の依存の方向が逆になってしまうためです。これについても1つの解決策として,⁠適切なタイミングでinjectorを生成して,ModuleInjectorに追加する」という方法を提示しています。この方法であれば,DIを利用する側(Fragment)での変更を小さく抑えながら問題を解決できます。

まとめ

国内外から1,000名を超す参加者が集うDroidKaigiは,本稿の冒頭でも述べた通りカンファレンスをより良いものにするために様々なチャレンジを続けています。

筆者が最も大きなチャレンジと感じたのが,セッションの同時通訳です。年々日本語以外の言語を話す参加者が増えている中,グローバルとローカルをつなぐダイバーシティを考える上で大事な施策であると位置づけ,対象となったセッションの講演者と協力しながら言語の壁を取り払うべくチャレンジをしていました。

他にも,現地参加できない方のために一部セッションではライブ配信が,また学生向けの支援としてスカラシップ制度が提供されました。145名を超えるコントリビューターの強力な支援によって完成した公式アプリに,中学生によるコントリビュートがあったこともウェルカムトークで言及されました。

このように,Androidという技術を通して,年齢や国籍に関係なく多くの人が関わり,交流をしているという事実が素晴らしいことだと強く思いました。

開催からまだ1ヶ月も経っていませんが,すでにほとんどのセッションの録画データがYouTubeにて公開され,資料も公開され誰でも閲覧できる状態になっています。皆さんがDroidKaigi 2019で得られた多くの経験や知見は,発信することでまた誰かの経験や知見に必ずなるはずです。ぜひ,身近な人に伝えたり,ブログなどで発信してみてください。

次回のDroidKaigiで,また皆さんとお会いできることを楽しみにしています。

著者プロフィール

竹田智(たけださとし)

学生時代にAndroidに出会い,そこから独学でAndroidアプリ開発を経験。2017年に株式会社CyberAgentに新卒で入社後,株式会社AbemaTVに出向しAndroidアプリの開発に従事。