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
Androidアプリにおける複雑な画面と向き合うための設計戦略
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
kazakago
November 14, 2018
Programming
340
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Androidアプリにおける複雑な画面と向き合うための設計戦略
kazakago
November 14, 2018
More Decks by kazakago
See All by kazakago
with_Android版における今までのアーキテクチャとこれから.pdf
kazakago
2
340
OpenSTFによる検証端末管理とその先の一手
kazakago
0
310
中規模以上のアプリ開発におけるCIレシピとリリースフロー戦略
kazakago
6
10k
Annotation Processingを 駆使したコード生成で ボイラープレートコードを駆逐しよう!
kazakago
2
8.1k
お う ち ハ ッ ク
kazakago
0
240
モバイルアプリ開発におけるブランチ運用でこの先生きのこるには
kazakago
0
150
まだJavaで消耗してるの?Kotlinのすすめ
kazakago
0
220
Androidでユーザーの大切なデータを預かる
kazakago
0
1.1k
Other Decks in Programming
See All in Programming
S3 TablesのIcebergデータに、AIエージェントからアクセスしてみた / 20261016developersio2026joetsu-accessing-iceberg-in-s3tables-via-agent
kasacchiful
PRO
0
300
AWS CDKを理解するために公式の定義を深掘って解説してみる / Understanding AWS CDK by Digging into Its Official Definition
akihisaikeda
3
290
React Native에 현대적인 빌드 도구 더하기: Rollipop 구현기
leegeunhyeok
0
180
はじめてのPLATEAU
nokonoko1203
1
640
Distance field of Julia set
kinakomoti321
0
310
[JA] Domain Modeling with Vanilla Rails: 「操作」から再考するRailsの設計論
yasaichi
4
1.9k
AIが実装を担う時代の「技術設計」と「チームマネジメント」
kamina_zzz
2
250
React Native経験者が Flutterを30⽇間触って驚いたこと
3saito
0
170
AI時代のFlutter品質設計 — アプリ品質を守るQuality Layers
omatty198
0
370
AI-Powered Domain-Driven Design
ziobrando
0
420
DroidKnights 2026 Android A2UI Jetpack Compose 기반의 안전한 AI UI 렌더링 - 박제창
itsmedreamwalker
1
220
AI時代のTerminal環境を UNIX哲学で設計・運用する
yasunori0418
1
350
Featured
See All Featured
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
1
520
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4.2k
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
480
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.7k
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
68
60k
From π to Pie charts
rasagy
1
440
AI Search: Where Are We & What Can We Do About It?
aleyda
0
8.2k
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
1
1.7k
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
320
Rails Girls Zürich Keynote
gr2m
96
14k
How to train your dragon (web standard)
notwaldorf
96
6.9k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.7k
Transcript
"OESPJEΞϓϦʹ͓͚Δ ෳࡶͳը໘ͱ͖߹͏ ͨΊͷઃܭઓུ גࣜձࣾΠάχεXJUIࣄۀ෦ ాଜݠհ!,B[B,BHP
• ాଜ ݠհ @KazaKago • גࣜձࣾΠάχε • with Android൛ΤϯδχΞ •
iOSग़དྷΔΑʂ
None
ϚονϯάαʔϏε ͋Δ͋Δ
ϓϩϑΟʔϧ͕ ͍ʂʂʂ
ϝΠϯࣸਅ αϒࣸਅ ࣗݾհจ ग़ झຯ ݁ࠗ؍ ͻͱ͜ͱ ډॅ ݂ӷܕ ݁ࠗྺ
ٳ ऩ ֶྺ ৬ۀ ܑఋ࢞ຓ ੑ֨
ϝΠϯࣸਅ ϛογϣϯ ࣗݾհ جຊϓϩϑΟʔϧ ͻͱ͜ͱ ৄࡉϓϩϑΟʔϧ அ݁Ռ αϒࣸਅ ΈΧʔυϕετ ΈΧʔυ
՝ۚϦετΞ ૬ख͔Βݟͨը໘
ͯΜ͜Γʂʂ
͜ΕʹΑͬͯ ։ൃ࣌ʹԿ͕ى͖Δ͔
ͦ͏
ΈΜͳͷ༑ୡ 'BU"DUJWJUZͷొʂ ʢ͍ΘΏΔ'BU$POUSPMMFSঢ়ଶʣ
None
XJUIͷϓϩϑΟʔϧը໘ͷίʔυ MyProfileTopPresenter … 875 line MyProfileTopActivity … 1712 line =
2587 line !!!
ͦΕ͡ΌؼΓ·͢Ͷ ͓ർΕ༷Ͱͨ͠ ͬͯݴ͍ͨ͘ͳΔ ʢʢʢʢ
ͦΜͳંɺ ͜ͷը໘ͷશ໘վम͕ ͍ࠐΜͩ
͜ΕϦϑΝΫλϦϯά νϟϯεͳͷͰʜʁ
৽༷
• ཁૉͷࣗମมΘΒͣ • ը໘ߏͷมߋʹΑͬͯ͜ͷը໘ͷϩδοΫ Ή͠Ζ૿͑ͨ • ݪܕ͕΄΅ͳ͘ɺҰ͔Β࡞Γ͠ • ֓೦্ͷϓϩϑΟʔϧ্ͷηΫγϣϯ͕ଘࡏ͢ Δ
• ୯७ʹίʔυྔΛݮΒ͢ͷ͍͠
վमํ
• ֓೦্ͷηΫγϣϯผʹFragmentʹղ • ActivityFragmentΛஔ͢Δ͚ͩʹప͢Δ • MVP -> MVVMύλʔϯͷҠߦ • Android
Architecture Componentsͷ ViewModel, LiveDataͷ࠾༻ • Java -> KotlinͷҠߦ • CleanArchitectureͷపఈʹΑΔPresentation ͷϩδοΫͷഉআ • Kotlin CoroutinesʹΑΔasync/awaitͷ࠾༻
MyProfileTopActionBarFragment MyProfileTopBasicInfoFragment MyProfileTopEventFragment MyProfileTopKonomiBestFragment MyProfileTopKonomiFragment MyProfileTopMainPhotoFragment MyProfileTopMissionFragment MyProfileTopPersonalityFragment MyProfileTopSelfIntroductionFragment MyProfileTopSubPhotoFragment
͓ޓ͍ͷ'SBHNFOUͷσʔλͷΓऔΓ 7JFX.PEFMͷ-JWF%BUBܦ༝ͰͷΈߦ͏ Fragment Fragment Fragment Fragment Activity ViewModel LiveData Presentation
Layer Domain Layer UseCase UseCase UseCase UseCase
࠷ऴతʹ Ͳ͏ͳ͔ͬͨ
MyProfileTopPresenter … 875 line -> MyProfileTopActivity … 1712 line ->
MyProfileTop**Fragment … MyProfileTopViewModel … 7JFX.PEFMߦͦ͜ଟ͍͕ɺ΄΅ͯ͢ͷ ϩδοΫΛυϝΠϯҠৡ͍ͯ͠ΔͨΊɺ ΄ͱΜͲͷϝιου͕ߦҎԼʹ͑ΒΕͨ 242 line! Deleted! 168 average line! 936 line
ॕʂ'BU"DUJWJUZʂ