A continuous process of modularization with feature development / 継続的に機能開発を進めながら行うマルチモジュール化
DroidKaigi2020 にて行われる予定だったスライドの日本語訳versionです.
2017年頃からアプリケーションのマルチモジュール化による利点が多く得られるようになった.特に「差分ビルドのビルド時間短縮化」「InstantAppやDynamicFeatureModuleの導入可能」「モジュール依存関係グラフのDAG化」といった利点が語られる.これらの利点は肥大化したアプリケーション上で高速に開発を行う上での助けになったり,ユーザ体験を向上させる手助けとなったりする.
一方で,これまで大部分をアプリケーションモジュール(:app)で開発されてきたアプリケーションを,容易にマルチモジュール化することは難しい.特にMVVMやFluxといったルールを明確化したアーキテクチャに乗っていない場合は問題が顕著だ.また,並行してマルチモジュール化とは本質的に無関係な機能改善を進めていく必要がある場合,問題はさらにややこしくなる.
本セッションでは上に挙げた実体験を基にどのようにしてマルチモジュール化を進めていったのかを時系列順に,そのハマりどころと解決方法を中心に紹介する.
1. What is a multi-module app? / マルチモジュール化とは?
2. The first step is :app to :legacy / はじめの一歩は:appから:legacyへ
3. A strategy of Gradle in multi-module app / マルチモジュールとGradle戦略
4. Modularization as refactoring / リファクタリングとしてのマルチモジュール化
5. Modularization and Android Jetpack / Jetpackとマルチモジュール
6. A continuous process of modularization with feature development
/ 継続的に機能開発を行いながら進めるために