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
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
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.3k
ARTのメモリ管理
haru067
8
16k
Other Decks in Programming
See All in Programming
Sans tests, vos agents ne sont pas fiables
nabondance
0
130
要はバランスからの卒業 #yumemi_grow
kajitack
0
170
ビジネスモデルから紐解く、AI+型駆動開発
hirokiomote
0
200
AI時代のエンジニアリングの原則 / Engineering Principles in the AI Era
haru860
0
1.3k
iOS26時代の新規アプリ開発
yuukiw00w
0
130
20年以上続くプロダクトでも使い続けられる静的解析ツールを求めて
matsuo_atsushi
0
150
決定論 vs 確率論:Gemini 3 FlashとTF-IDFを組み合わせた「法規判定エンジン」の構築
shukob
0
160
ReactとSvelteのその先、Ripple-TS / Beyond React and Svelte: Ripple-TS
ssssota
0
210
HTML-Aware ERB: The Path to Reactive Rendering @ RubyKaigi 2026, Hakodate, Japan
marcoroth
0
720
サプライチェーン攻撃対策「層を重ねて落ちない壁」を10日間で組み上げた話 #TechLeadConf2026
kashewnuts
1
290
RailsTokyo 2026#4: AI様があれば、 Hotwireの弱点は消えるか?
naofumi
3
390
ついに来た!本格的なマルチクラウド時代の Google Cloud
maroon1st
0
450
Featured
See All Featured
The Cult of Friendly URLs
andyhume
79
6.9k
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
Testing 201, or: Great Expectations
jmmastey
46
8.1k
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
510
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
118
110k
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
420
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Design in an AI World
tapps
1
210
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
AI Search: Where Are We & What Can We Do About It?
aleyda
0
7.5k
The Curse of the Amulet
leimatthew05
1
12k
Building the Perfect Custom Keyboard
takai
2
760
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エンジニアを募集しています(たぶん)