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
REALITY Androidにおけるマルチモジュール移行
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
haru067
September 11, 2019
Programming
1.4k
0
Share
REALITY Androidにおけるマルチモジュール移行
https://gree.connpass.com/event/142728/
での5分LT
haru067
September 11, 2019
More Decks by haru067
See All by haru067
Jetpack Compose: 効果的なComposable関数のAPI設計
haru067
2
8k
いかにしてアプリの起動時間を改善するか
haru067
3
2.2k
Immutable data holder
haru067
1
1.4k
ARTのメモリ管理
haru067
8
16k
Other Decks in Programming
See All in Programming
[2026年度第1回ORセミナー] 計画最適化ベンチャーと競技プログラミング人材
terryu16
0
250
AI駆動開発勉強会 広島支部 第一回勉強会 AI駆動開発概要とワークショップ
hayatoshimiu
0
440
Copilot CLI の継戦能力を高める コンテキスト管理
nozomutu
1
1.2k
Stage 3 Decorators でできること / できないこと / TSKaigi 2026
susisu
1
1.5k
エージェンティックRAGにAWSで入門しよう!
har1101
7
1.1k
Semantic Version 単位で戦略を柔軟に変えて、パッケージアップデートを自動化する
daitasu
0
140
IBM Bobを活用したレガシーアプリの最新化
oniak3ibm
PRO
1
170
「AIで開発し、AIを届ける」をEvalでつなぐ 〜AIネイティブに始めるプロダクト開発の実践〜 / Connecting "Develop with AI, deliver AI" with Eval
rkaga
4
2.4k
LLM本来の能力を解き放つサンドボックス技術とAI民主化への適用
yukukotani
3
2.8k
権限チェックの一貫性を型で守る TypeScript による多層防御
mnch
4
1.1k
Oxcを導入して開発体験が向上した話
yug1224
4
290
PHPで使える日時の表現と、その知り方 #frontend_phpcon_do
o0h
PRO
0
190
Featured
See All Featured
How Software Deployment tools have changed in the past 20 years
geshan
0
34k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
150
Designing Experiences People Love
moore
143
24k
AI: The stuff that nobody shows you
jnunemaker
PRO
8
690
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
250
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
220
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2.1k
Making Projects Easy
brettharned
120
6.7k
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
220
Bash Introduction
62gerente
615
210k
Transcript
REALITY Androidにおける マルチモジュール移⾏ 2019/09/11 グリーグループモバイルアプリ勉強会 Vol.1
REALITYのモジュール構成 • appモジュールがとにかくデカい • 配信周りはモジュール化済み app avatar encoder protocol
REALITYのモジュール構成 • appモジュールがとにかくデカい • 配信周りはモジュール化済み app avatar encoder protocol
移⾏戦略 - Push down • appから切り出してモジュール化 • 各モジュールはappに依存しない • 綺麗にやる世界観
app module A module B module C
移⾏戦略 - Push down • appから切り出してモジュール化 • 各モジュールはappに依存しない • 綺麗にやる世界観
app module A module B module C 途中で挫折した
なぜ難しかったのか • appが膨れ上がっているが故に何をするにしても appの実装が必要になる • クラスAを別モジュールにするにはBが必要で、Bに はCが必要で、CはDが・・・(これが無限に続く) app module A
module B module C こういうことはできない
移⾏戦略 - Pull up • appをライブラリとして各モジュールが読み込む形 • appの実装を使えて楽だが、appへの依存が微妙 • appが各モジュールを使いたいケースは逆につらい
「メイン画⾯でmodule Aのデータをプリフェッチ」 app module A module B module C root
結論:どっちもやる https://jeroenmols.com/blog/2019/03/06/modularizationwhy/ app Feature A Feature B Feature C root
Library D Library E Library F 参考:
結論:どっちもやる https://jeroenmols.com/blog/2019/03/06/modularizationwhy/ app Feature A Feature B Feature C root
Library D Library E Library F 参考: Libraryモジュール 独⽴性の⾼い機能は appの下に置く 例:UI components, Analytics,
結論:どっちもやる https://jeroenmols.com/blog/2019/03/06/modularizationwhy/ app Feature A Feature B Feature C root
Library D Library E Library F 参考: Featureモジュール それ以外は画⾯単位で appの上に置く 例:Login, Settings, Profile,
結果
開発速度が低下した • 移⾏時の調査/作業コスト + 移⾏後の開発コスト • 「使いたいクラスが別モジュールにある」 • 流⾏ってるからやればいい、という話ではない、 開発速度と天秤にかけて選択
ProGuardと戦う時間が増えた app単体のときは⼀箇所⼊れておけばOKだったが モジュールを作るたびに追加が必要 • releaseビルドを作るたびにクラッシュして ややしんどかった
不適切な依存が精査される 例:Modelに動画プレイヤーに依存したコードがある 依存を解消するためにDIが捗る • 必要なクラスが参照できない • 本当に必要だったものを考える • コンストラクタで渡す
リソース系が綺麗になった • 何⽤途で使っているのかよくわからない画像 • 数千⾏あるstrings.xml • 肥⼤化するlayoutフォルダ app モジュール毎に管理 drawable
layout values settings drawable layout values login drawable layout values profile drawable layout values
まとめ • 肥⼤化したappモジュールを絶賛分割中 • appとの依存関係は⽤途に合わせて決める • 開発速度的には遅くなる、必要経費とするか否か • コード的には不適切な依存を精査できて嬉しい •
リソース的には肥⼤化しにくい構造になって嬉しい Wright Flyer Live Entertainmentではマルチモジュール化を 推進したいAndroidエンジニアを募集しています(たぶん)