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
haru067
September 11, 2019
Programming
0
1.4k
REALITY Androidにおけるマルチモジュール移行
https://gree.connpass.com/event/142728/
での5分LT
haru067
September 11, 2019
Tweet
Share
More Decks by haru067
See All by haru067
Jetpack Compose: 効果的なComposable関数のAPI設計
haru067
2
7.3k
いかにしてアプリの起動時間を改善するか
haru067
3
2.1k
Immutable data holder
haru067
1
1.3k
ARTのメモリ管理
haru067
8
15k
Other Decks in Programming
See All in Programming
Ruby×iOSアプリ開発 ~共に歩んだエコシステムの物語~
temoki
0
360
Android 16 × Jetpack Composeで縦書きテキストエディタを作ろう / Vertical Text Editor with Compose on Android 16
cc4966
2
270
Navigating Dependency Injection with Metro
zacsweers
3
5.4k
Swift Updates - Learn Languages 2025
koher
2
520
ユーザーも開発者も悩ませない TV アプリ開発 ~Compose の内部実装から学ぶフォーカス制御~
taked137
0
190
より安全で効率的な Go コードへ: Protocol Buffers Opaque API の導入
shwatanap
3
840
Android端末で実現するオンデバイスLLM 2025
masayukisuda
1
180
基礎から学ぶ大画面対応(Learning Large-Screen Support from the Ground Up)
tomoya0x00
0
6.2k
Azure SRE Agentで運用は楽になるのか?
kkamegawa
0
2.6k
そのAPI、誰のため? Androidライブラリ設計における利用者目線の実践テクニック
mkeeda
2
4.6k
ProxyによるWindow間RPC機構の構築
syumai
3
1.2k
テストカバレッジ100%を10年続けて得られた学びと品質
mottyzzz
2
620
Featured
See All Featured
Music & Morning Musume
bryan
46
6.8k
Rails Girls Zürich Keynote
gr2m
95
14k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.1k
A designer walks into a library…
pauljervisheath
207
24k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
8
530
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
127
53k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
46
7.6k
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
23
1.4k
Producing Creativity
orderedlist
PRO
347
40k
Fireside Chat
paigeccino
39
3.6k
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エンジニアを募集しています(たぶん)