Google I/O'19: Build a Modular Android App Architectureのまとめ・感想

以下の動画のまとめです。

Build a Modular Android App Architecture (Google I/O'19)

なぜモジュール化をするか?

スケール

モジュール化することで、開発者が独立して開発出来るようになる

保守性

例えば、モノリシックアプリだとレイアウトファイルを1つのディレクトリに持つことになる

ビルド時間の短縮

変更があったモジュール + その依存関係にあるモジュールが再ビルドされるため、ビルド時間が短くなる

CIの高速化

再ビルドが必要なモジュールのみテストをすれば良いので、テスト時間が短くなる

APKサイズの縮小

App Bundle、Dynamic Deliveryの恩恵を受けられる

モジュール

どのようにモジュール分けをするか?

1. Feature(機能)ごとに分ける

ライブラリモジュールとDynamic Featureモジュールの2種類がある。

Plaidでは以下のようなモジュール構成にした。

dribbleと、designernewsがDynamic Featureモジュールになっている。

2. Layer(層、階層)ごとに分ける

Plaidでは以下のように分けた。

こうすることで、UIがDAOの知識を知らずに済む

Fakes for tests

Featureモジュールの利点

Layerごとに分ける利点

Dynamic Deliveryの課題

Featureモジュール間のNavigationをどうするか?

今後、Navigationライブラリで自然に書けるようになるらしい😃

データベース

1つのデータベースのみ持つ

モジュールごとに1つのデータベースを持つ

hybridアプローチ

特にルールを決めずに、データベースモジュールを作っていく

マルチモジュール対応Room絶賛開発中らしい😃

Android free modules

multi platformにする場合

テストの高速化

最後に

まとめ・感想

Written by