Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
After Party DroidKaigi 2021
Search
Kyohei Kato
October 28, 2021
Technology
620
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
After Party DroidKaigi 2021
Kyohei Kato
October 28, 2021
More Decks by Kyohei Kato
See All by Kyohei Kato
cookpad-summer-internship-2020-android
ksfee684
0
8.3k
cookpad.apk#5
ksfee684
0
700
cookpad.apk#4
ksfee684
0
730
Testing in weekly release
ksfee684
0
910
UI テストで楽するための技術
ksfee684
0
540
Android における UI テスト設計戦略
ksfee684
2
1.2k
Espresso Driver を用いた Appium テストとその仕組み
ksfee684
0
6.9k
Other Decks in Technology
See All in Technology
cdk deployとcdkd deploy、実際にデプロイして5倍速近くの差を実測した
yama3133
1
160
データマネジメント × 法務で作りあげる、 freeeの新しいデータガバナンスへの軌跡
freee
PRO
3
690
AI時代のエンジニアの情報発信〜個人の発信を組織の力に変える〜
ryo_kawamata
1
7.1k
Maestro MCPとClaude Code Skillsによる自律的なE2Eテスト支援
asmz
0
410
仕様駆動開発の、その先へ。決める力と確かめる仕組み
inariku
1
170
[General] 개발자로 해외 기업에서 일하기
skydoves
1
290
デザインレビューは自動化できるのか?─ Flutter × Figma で UI 品質保証を考える
techiro
2
770
続・ソフトウェアアーキテクトのための意思決定術: Decision Readiness, Revisited — When AI Changes the Economics of Software Architecture
snoozer05
PRO
4
1k
20261031_IoTLT_vol140_kitazaki_v1.pdf
kitazaki
0
160
1週間、Opus封印でお願いします
kintotechdev
1
440
複雑な業務システムを高速でつくるため、チーム全員をつくれる人へ
ayakurabuchi
0
120
Flutter Widget Previewerで始めるUIプレビューとVRTの自動化
sakusaku3939
0
200
Featured
See All Featured
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
63
47k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.6k
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
550
What the history of the web can teach us about the future of AI
inesmontani
PRO
2
780
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
810
The SEO Collaboration Effect
kristinabergwall1
1
610
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2.2k
Are puppies a ranking factor?
jonoalderson
2
4.1k
Docker and Python
trallard
47
4.2k
Utilizing Notion as your number one productivity tool
mfonobong
4
640
It's Worth the Effort
3n
188
29k
The #1 spot is gone: here's how to win anyway
tamaranovitovic
4
1.2k
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 モジュールに残されたまま