Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
After Party DroidKaigi 2021
Search
Kyohei Kato
October 28, 2021
Technology
0
590
After Party DroidKaigi 2021
Kyohei Kato
October 28, 2021
Tweet
Share
More Decks by Kyohei Kato
See All by Kyohei Kato
cookpad-summer-internship-2020-android
ksfee684
0
8.2k
cookpad.apk#5
ksfee684
0
670
cookpad.apk#4
ksfee684
0
720
Testing in weekly release
ksfee684
0
870
UI テストで楽するための技術
ksfee684
0
520
Android における UI テスト設計戦略
ksfee684
2
1.1k
Espresso Driver を用いた Appium テストとその仕組み
ksfee684
0
6.9k
Other Decks in Technology
See All in Technology
Agentic Codingの実践とチームで導入するための工夫
lycorptech_jp
PRO
0
390
メタデータ同期に潜んでいた問題 〜 Cache Stampede 時の Cycle Wait を⾒つけた話
lycorptech_jp
PRO
0
140
名刺メーカーDevグループ 紹介資料
sansan33
PRO
0
1.1k
マルチロールEMが実践する「組織のレジリエンス」を高めるための組織構造と人材配置戦略
coconala_engineer
2
300
大規模な組織におけるAI Agent活用の促進と課題
lycorptech_jp
PRO
5
7.7k
チームメンバー迷わないIaC設計
hayama17
5
3.6k
大規模サービスにおける レガシーコードからReactへの移行
magicpod
1
100
作るべきものと向き合う - ecspresso 8年間の開発史から学ぶ技術選定 / 技術選定con findy 2026
fujiwara3
6
1.9k
AI時代にエンジニアはどう成長すれば良いのか?
recruitengineers
PRO
1
110
「使いにくい」も「運用疲れ」も卒業する UIデザイナーとエンジニアが創る持続可能な内製開発
nrinetcom
PRO
1
770
技術的負債の泥沼から組織を救う3つの転換点
nwiizo
4
920
【SLO】"多様な期待値" と向き合ってみた
z63d
2
290
Featured
See All Featured
Done Done
chrislema
186
16k
Into the Great Unknown - MozCon
thekraken
40
2.3k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.4k
From π to Pie charts
rasagy
0
140
Bash Introduction
62gerente
615
210k
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
460
Building an army of robots
kneath
306
46k
WCS-LA-2024
lcolladotor
0
470
Principles of Awesome APIs and How to Build Them.
keavy
128
17k
Designing Experiences People Love
moore
143
24k
It's Worth the Effort
3n
188
29k
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
120
Transcript
マイクロアプリを 利用した開発術 After Party DroidKaigi 2021
自己紹介 • 加藤 恭平 • モバイル基盤部所属 • Android アプリの開発効率化、基盤技術開発
マルチモジュールとは • 複数の Gradle モジュールから構成されるプロジェクト • 機能や実装レイヤーに沿ってモジュールを分割 ◦ 分離の境界はプロジェクトによって様々 •
分離により多くの恩恵を受けられる https://developer.android.com/training/dependency-injection/dagger-multi-module
マルチモジュール構成の利点(一部) • Gradle ではタスクベースでキャッシュシステムが存在 • 変更差分がない場合 (*)キャッシュを利用した差分ビルドによりビルド時間が短縮可能 • 依存関係が分離しているモジュール同士は並列ビルドも可能 →
プロジェクトに合わせて適切にモジュール分割すれば差分 /並列ビルドで爆速なビルドを実現 💨
クックパッドアプリの マルチモジュール構成
クックパッドアプリの概要 • VIPER アーキテクチャ ◦ https://techlife.cookpad.com/entry/2020/11/17/110000 • モノリスモジュールを legacy と名付けて徐々にモジュールを分割
• モジュールレイヤー ◦ app ▪ 用途ごとに存在するアプリモジュール ◦ feature ▪ 機能実装モジュール ◦ library ▪ UI, DataStore, Navigation 等の共通実装モジュール
モジュール構成
✌終✌
開発時の課題 • モジュール分割後も開発中のビルド時間が長い ◦ モジュール分割しても動作確認をする際はアプリをビルドする必要がある ◦ 開発に関係ない機能も含めてすべてビルドする必要がある ◦ 下位モジュールを変更すると依存するモジュールがリビルドされてしまう •
課題はビルド時間以外にも … ◦ 開発時はアプリの特定の開発中の機能だけ触れれば良いが辿り着くのが面倒 ◦ 特定の状態を再現したいが実装を書き換えたくない ▪ 誤ってそのままコミットしてしまったり …
マイクロアプリの導入
必要な機能だけ検証できるアプリ • 開発中の機能だけ検証できるアプリ • 必要最低限の箇所だけビルド • 開発中の機能に素早くたどり着ける • プロダクションコードを変更せずに特定の状態を試したい 大規模なiOSアプリの画面開発を効率化するために動作確認用ミニアプリを構築する
None
マイクロアプリ(デモアプリ) • feature モジュールと1対1で作成するアプリ ◦ feature モジュール内の任意の機能 (Activity/Fragment)を指定してアプリとしてビルド • 開発中の
feature モジュールをビルドするだけで OK ◦ 関係のない feature モジュールをビルドする必要なし ◦ → 通常アプリの差分ビルドで数十秒かかるところを数秒でビルド可能に • 機能に直接遷移可能な仕組みを用意 ◦ → アプリ起動後すぐに開発中の機能に辿り着くことが可能に • 検証用のアプリ内で依存を書き換えることが可能 ◦ → プロダクションコードに変更を加えずに状態の再現が可能に
マイクロアプリの裏側 • 対象の feature モジュールを参照する app モジュールを作成 • 検証したい機能(Activity/Fragment)を登録 •
DataStore にスタブを差し込み特定の状態を再現 ◦ エラーや特殊なデータを再現
None
None
マイクロアプリの運用 • 主に開発者が開発中に機能を検証する際に利用 ◦ Compose Preview の活躍があり少し需要が落ちていそう ◦ UI だけでなく包括的な検証には便利
• コードレビューはほぼしない • 開発時以外では使用しない ◦ PR レビュー時や QA のタイミングでは本物のアプリを使用 • PR CI でマイクロアプリを生成可能 ◦ 大規模開発で細かい検証を必要としていない場合など
今後の課題 • スタブを大量に用意する必要があって辛い ◦ feature モジュールが依存する DataStore をすべて Hilt 上に定義する必要がある
◦ 本物の DataStore を一部置き換えることができず大量のスタブ定義が … • マイクロアプリの恩恵を受けられているのはまだ一部 ◦ 古くから存在する機能の多くは legacy モジュールに残されたまま