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
Androidアプリにおけるモジュラライズの進め方
Search
Young
February 18, 2019
Programming
0
200
Androidアプリにおけるモジュラライズの進め方
社内勉強会 #深いい勉強会 の資料です
Young
February 18, 2019
Tweet
Share
More Decks by Young
See All by Young
GitbookからOpenApiへのAPIドキュメント移行
akihitookada
0
81
Navigation ComponentとFluxをnanaに導入した
akihitookada
0
83
MotionLayoutを使ってクリスマスなアプリを作った
akihitookada
0
110
OrmaからRoomに移行する 2nd Season
akihitookada
1
650
ミャンマーのすゝめ
akihitookada
2
88
Android版 nanaとデータの永続化とDatabase
akihitookada
2
190
Android Team @ nana music, Inc.
akihitookada
0
89
ConstraintLayoutを理解する
akihitookada
0
100
OpenSTFとJenkinsで 社内のAndroid端末を有効活用する
akihitookada
0
270
Other Decks in Programming
See All in Programming
watsonx.ai Dojo #4 生成AIを使ったアプリ開発、応用編
oniak3ibm
PRO
1
190
React への依存を最小にするフロントエンド設計
takonda
12
3.6k
카카오페이는 어떻게 수천만 결제를 처리할까? 우아한 결제 분산락 노하우
kakao
PRO
0
110
とにかくAWS GameDay!AWSは世界の共通言語! / Anyway, AWS GameDay! AWS is the world's lingua franca!
seike460
PRO
1
910
レガシーシステムにどう立ち向かうか 複雑さと理想と現実/vs-legacy
suzukihoge
14
2.3k
Quine, Polyglot, 良いコード
qnighy
4
650
シェーダーで魅せるMapLibreの動的ラスタータイル
satoshi7190
1
480
EMになってからチームの成果を最大化するために取り組んだこと/ Maximize team performance as EM
nashiusagi
0
100
Click-free releases & the making of a CLI app
oheyadam
2
120
광고 소재 심사 과정에 AI를 도입하여 광고 서비스 생산성 향상시키기
kakao
PRO
0
170
[Do iOS '24] Ship your app on a Friday...and enjoy your weekend!
polpielladev
0
110
最新TCAキャッチアップ
0si43
0
200
Featured
See All Featured
No one is an island. Learnings from fostering a developers community.
thoeni
19
3k
The Straight Up "How To Draw Better" Workshop
denniskardys
232
140k
5 minutes of I Can Smell Your CMS
philhawksworth
202
19k
Fireside Chat
paigeccino
34
3k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
25
1.8k
Art, The Web, and Tiny UX
lynnandtonic
297
20k
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
364
24k
The Art of Programming - Codeland 2020
erikaheidi
52
13k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
42
9.2k
For a Future-Friendly Web
brad_frost
175
9.4k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
Transcript
AndroidΞϓϦʹ͓͚Δ ϞδϡϥϥΠζͷਐΊํ
Young @ nana music Android Engineer
ϞδϡϥϥΠζͱ • ΞϓϦͷϓϩδΣΫτΛػೳతͳ୯ҐͰϞ δϡʔϧԽͯ͠ߏ͢Δ͜ͱ • ΞϓϦ͕ߴػೳʹͳΓɺίʔυ͕େ͖͘ͳΔ ʹͭΕɺڞ௨Խ͞Ε࠶ར༻ੑͷߴ͍ίʔυͷ ॏཁੑ͕ߴ·ͬͯ͘Δ
Ϟδϡʔϧͱ • Ϟδϡʔϧͱιʔε ϑΝΠϧͱϏϧυઃఆ ͷ·ͱ·Γͷ͜ͱ • ϞδϡʔϧʹΑͬͯػೳ͝ͱʹϓϩδΣΫτΛ ׂͰ͖Δ • ϓϩδΣΫτʹ
1 ͭ·ͨଟͷϞδϡʔ ϧΛؚΊΔ͜ͱ͕Ͱ͖Δ
ϝϦοτͱσϝϦοτ
ϞδϡϥϥΠζͷϝϦοτ • ઃܭ͕͖Ε͍ʹͳΔ • ࠶ར༻ੑΛߴΊΔ͜ͱ͕Ͱ͖Δ • ػೳΛΓ͠Ͱ͖Δ
ઃܭ͕͖Ε͍ʹͳΔ • Ϟδϡʔϧ॥ࢀরΛߦ͏͜ͱ͕Ͱ͖ͳ͍ ͨΊɺίʔυ͕͋Δ͖ॴʹॻ͔ͳ͚Ε ͍͚ͳ͘ͳΔ • ਖ਼͍͠ઃܭ͕Ͱ͖ΔΑ͏ʹͳΔ
• ҟͳΔΞϓϦͰɺػೳΛڞ༗Ͱ͖Δ • ೝূػೳΛڞ௨Խ • ΤϑΣΫτͳͲͷԻॲཧΛڞ௨Խ ࠶ར༻ੑΛߴΊΔ͜ͱ͕Ͱ͖Δ
ػೳΛΓ͠Ͱ͖Δ • ϦϦʔε͔Β֎͢ • ϦϙδτϦʹͨ͠··ɺsettings.gradleͰϞδϡʔϧΛআ ֎ • ઌʹμϯϩʔυͯ͠ར༻ • Instant
Apps • ͋ͱͰμϯϩʔυͯ͠ར༻ • Dynamic Feature Modules
ϞδϡϥϥΠζͷσϝϦοτ • ґଘ͕ؔίʔυ͚ͩͰΘ͔Γʹ͍͘ͷͰɺ ͱ͖ͬͭʹ͘͘ͳΔ • ॳճϏϧυʹ͕͔͔࣌ؒΔ(͖͕͢Δ)
ओͳϞδϡʔϧͷछྨ • Android ΞϓϦ Ϟδϡʔϧ • ΞϓϦ ϨϕϧͷઃఆΛ֨ೲ͢ΔϝΠϯίϯςφ • Android
ϥΠϒϥϦ Ϟδϡʔϧ • ΞϓϦ ϞδϡʔϧͰ༻ͨ͠ΓɺଞͷϥΠϒϥϦ ϞδϡʔϧʹΠϯϙʔτͨ͠ΓͰ͖Δ࠶ར༻Մೳͳ ίϯςφ
ϞδϡϥϥΠζͷํ
ΞʔΩςΫνϟ 1. ϨΨγʔͳΞϓϦͷϞδϡʔϧߏ 2. ϨΠϠʔυͳϞδϡʔϧߏ 3. ػೳຖϞδϡʔϧߏ×ϨΠϠʔυͳϞ δϡʔϧߏ
ϨΨγʔͳΞϓϦͷϞδϡʔϧ ߏ • AndroidΞϓϦϞδϡʔϧ
ϨΠϠʔυͳϞδϡʔϧߏ • AndroidΞϓϦϞδϡʔϧ • ΞϓϦέʔγϣϯͷϞδϡʔϧ • υϝΠϯͷϞδϡʔϧ • ΠϯϑϥͷϞδϡʔϧ
ػೳ × ϨΠϠʔυͳϞδϡʔϧ ߏ • AndroidΞϓϦϞδϡʔϧ • ΞϓϦέʔγϣϯͷϞδϡʔϧ × ػೳ
• υϝΠϯͷϞδϡʔϧ × ػೳ • ΠϯϑϥͷϞδϡʔϧ × ػೳ * ཧతͳܗͱࢥΘΕΔ
ϦϑΝΫλϦϯά
طଘͷίʔυϕʔεͷ • طଘͷίʔυϕʔε͕͠ΒΈͩΒ͚ • গͣͭ͠བྷΈ߹ͬͨґଘؔΛ΄Ͳ͍͍ͯ͘ • ࣌ʹɺϦϑΝΫλϦϯάͷ͢͠͞ > ઃܭ ͷਖ਼͠͞
• ͋ͱͰ⁋᧒Λ͋Θ͍ͤͯ͘
ϞδϡϥϥΠζͷεςοϓ 1. ґଘͷগͳ͍ػೳ 2. Domain Model 3. Πϯϑϥ 4. υϝΠϯ
5. ڞ௨UIίϯϙʔωϯτ 6. UIΛؚΜͩػೳ
ґଘͷগͳ͍ػೳ • c++ͷϥΠϒϥϦ Module • ԻपΓͷॲཧ Module
Domain Model • Model Module • Domain Model • ෦ʹenumͳͲͰɺResourceΛ͍࣋ͬͯΔͷ
͋Δ • Resource Module • colorɺจࣈɺը૾Ϧιʔε
Πϯϑϥ • Data Module • Api • SharedPreferences • Database
• Repository * ͬͱࡉ͔͘ModuleΛผ͚ͯྑͦ͞͏
υϝΠϯ • Use Case Module • Use Case
ڞ௨UIίϯϙʔωϯτ • Feature Common Module • Dialog / Pop-up /
CustomView • Utility / Ext • Abstract Activity * ֎ग़͍ͨ͠͠ػೳͰ͍͍ͨͷΛؚΊΔ
UIΛؚΜͩػೳ • ϦϦʔε͔Β֎͔͢͠Εͳ͍ػೳ * ࠓޙͬͱ͍͚͛ͯΔͱྑ͍
·ͱΊ • nanaͰઈࢍ Γग़్͠தɺίϯϑϦΫτ • গͣͭ͠Γ͍͢ͱ͜Ζ͔ΒਐΊΔ • ϦϑΝΫλϦϯάΛ͠ͳ͕Βؾͮ͘ଟ ͍ •
ػೳ × ϨΠϠʔυͳϞδϡʔϧߏΛࢦ͢
ࢀߟ • https://speakerdeck.com/kgmyshin/multi- module-no-susume