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
내가 안드로이드 개발자가 되었을 때 아무도 알려주지 않은 것들(+MVP / MVVM ...
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Sa-ryong Kang
April 21, 2018
Programming
4.5k
8
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
내가 안드로이드 개발자가 되었을 때 아무도 알려주지 않은 것들(+MVP / MVVM 이야기) - DroidKnight 2018
Sa-ryong Kang
April 21, 2018
More Decks by Sa-ryong Kang
See All by Sa-ryong Kang
Gen AI on Android
saryong
0
890
(Unofficial) Guide to App Architecture Guide Vol. 2 - DroidKaigi 2023
saryong
0
290
[EN] (Unofficial) Guide to App Architecture Guide Vol 1 - DroidKaigi 2022
saryong
0
560
[JA] (Unofficial) Guide to App Architecture Guide (Vol 1) - DroidKaigi 2022
saryong
2
1.3k
Android Testing Best Practices [ko]
saryong
0
270
Jetpack Compose: Beyond I/O 2021
saryong
0
210
Google의 개발문화와 프로세스(2) - Feedback & Code Review
saryong
0
700
Google의 개발문화와 프로세스(1): Scale & Efficiency / Testing
saryong
2
600
한때 개발을 접었던 창업자 출신 엔지니어를 구글로 인도해준 어떤 방법론
saryong
1
590
Other Decks in Programming
See All in Programming
機械に任せるテスト、人が見るテスト ⽣成AIで引き直した、運⽤保守フェーズの線引き
dske104
0
170
dotNET_vulnclicker_intro.pdf
deka_morita
0
130
Workers Cache を知る
syumai
0
350
JRuby: Past, Present, and Future
headius
0
230
コードレビューのボトルネックを"する側"と"される側"の両面から解消する
yub0n
2
1.5k
Simple Storage Service(S3) is not simple
iwatsukayura
0
230
残高管理から台帳サービスへの進化
artoy
0
180
難しいけど、読めた。- OSSの入口に立った話。
sts11142
0
140
Findy - エンジニア向け会社紹介/Findy Company Deck
findyinc
6
400k
mrbgem 三角測量 開発
ogom
0
220
GemmaをJevのように使ってみる / Use Gemma like Jev
kishida
5
740
気持ちぃ〜角丸 Squircle
ryu1013
0
150
Featured
See All Featured
The Impact of AI in SEO - AI Overviews June 2024 Edition
aleyda
6
1.2k
Fashionably flexible responsive web design (full day workshop)
malarkey
409
67k
Embracing the Ebb and Flow
colly
88
5.2k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
10k
The World Runs on Bad Software
bkeepers
PRO
72
12k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.8k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
20k
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
350
How to make the Groovebox
asonas
2
2.5k
[RailsConf 2023] Rails as a piece of cake
palkan
59
7.1k
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
1
450
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.5k
Transcript
ղо উ٘۽٘ ѐߊо غਸ ٸ ইޖب ঌ۰ ঋ Ѫٜ Speaker.
ъࢎܕ
Who is this guy? • ҃۱ 18֙ର SW ূפয (ݽ߄ੌ,
ߔূ٘, ਢ ۿূ٘ ೧ࠆ) • ತস ޙо: Ҵীࢲ ೠ ߣ, ೠҴীࢲ ف ߣ झఋস ೮ ݈ইݡ • ੌࠄ झఋসীࢲ ݽ߄ੌ ইఃఫ۽ Ӕޖ • ӝ۞ӝ ইࡅ: ೠҴী ইղ৬ ف ইٜҗ ъই৬ Ҋনܳ فҊ • ӓೠ ѐߊ: അ 6ѐ Android / iOS জ ܻਸ
• ࢸ݀ೠ 4.5֙ ػ झఋস • ੌࠄ ୭ ਭই ࠁ
ࢲ࠺झ ࠁਬ • but ت ਬਗ Үࢎ ٘ ࢲ࠺झ۽.. • ৻ࠗ ై ഃ হ ࣽ ై݅ਵ۽ Ҋࣘ ࢿ • ী࠺झ(ੌࠄ о۽ࣻӡ?) Ӕࢎೠ 9க ࠽٬ਸ ా૩۽ ॹ • Business-aware Engineerٜী ೧ ח ഥࢎ • ঠӔ Ә / ോੌ Ӕޖ Ә
दೞӝ ী... • ݽٚ ղਊਸ ೠ ߣী ೧ೞ ޅೞ࣊ب ҡଳणפ
• о߶ ӝ࠙ਵ۽ ٮۄয়दݶ ؾפ • ۖಬ ݀: ࢚ࣻ ղਊ iOSীب Ӓ۽ ਊ оמפ • ࠂण оמ: ठۄ٘ ղਊ ইې ݂ীࢲ ߉ਵप ࣻ णפ • https://speakerdeck.com/saryong/mvvm-iyagi-droidknight-2018
Buckle Up!
Chapter 1. ࢲۿ
ݽٚ ࠺ӓ द • যוզ ࢎש աܳ ઑਊ ࣑ࠗܰ...
֎... ߄ ೡ ঌ? Dilbert © 2018, Andrews McMeel
Syndication
উ٘۽٘ য ખ ٜ݅য ࠊ. ֎?! औѱ ೡ ࣻ ਗ਼ই.
Dilbert © 2018, Andrews McMeel Syndication
ୡࠁ ݽ߄ੌ ѐߊ Ҋҵ࠙ై • Device/version fragmentation: пয়ח ೮݅, ޖਸ
࢚࢚ೞٚ উ٘۽٘ח ӝ ޅೠ Ҕীࢲ ٍాࣻܳ . • લੌ ֈ ࠺زӝ: оՔঀ ࢤп೮؍ Ѫҗ ഃ ܲ ߑೱਵ۽ ۽ प೯ػ. ӒѪب ೦࢚ അغח Ѫب ইפ. • ঌоب ݽܳ Life Cycle ޙઁ: যڃ ҃ח ౠ Fragmentо दೞח दਸ ইղӝ ࠛоמ೧ࠁח ҃о . ೞ ઁੌ ਃೠ ചݶীࢲ.. • ҳӖ ޥо ࢜۽ Ѧ ղ֬ਸ ٸ݃ ઁח ૐࠗఠ դ. ח Ѫࠗఠ ઁ۽ ખ جইоѱ ٜ݅ۄҊ!! ଵҊ: Fxxx you Android Framework https://medium.com/@drinfo/fuck-you- android-framework-ddbb02c4ae48
ೞ݅.. উ જ ੌ݅ ח Ѥ ইפ.
୷ೞפ! ә ѐߊо غ࣑णפ.
ૌѢ ۨ߰স ࢤഝ • য ܐ۽ ׀ਸ جܻݶ ৻۽ ೞҊ
ࣁೠ ࠁٜ ݆. झఖয়ߡ۽, ݆ࣻ ౚషܻٜ.. • যଧযଧ ೞࠁפ ֢ೞب ࢤ҂ • উ٘۽٘ ߡ߹ ߨ, ۄࢎ , ա݅ ٣ߡӒ ֢ೞ, ߑয ٬, ... • Kotlin - ࠺Ү ֢۱ਵ۽ ࢜۽ যܳ ߓਕ ٬ೞח ب ॕॕ
Ӓ۞ա...
ҍ оয়ח ठۢ • җ э ࣘب۽ח प۱ ט ঋח
• ੋఠ֔ী ୡә ࢚ ࣻળ ܐח Ѣ হ • ҡଳ ܐܳ ও रਵݶ ցޖ য۰ਕ Ѣ ࢶޙ ࣻળ.. ױೠ Ѥ ঌѷח ؘ ޤۄח ݽܰѷ. • ޖࠁ ߸ী ޛযࠅ ࢎۈ হ. ղо ੜ ೞҊ ח ঌ ӡ হ
ղо উ٘۽٘ ѐߊо غਸ ٸ ইޖب ঌ۰ ঋও؍ Ѫٜ:
־ҵо ীࢲ ೞѱ ঌ۰ݶ ଵ જওਸ Ѫ э ޙٜ .
Clean Architecture - ѐߊ ҳਗੋо, ࢤࢎۈ ח ࢚ࣿੋо? •
ইפ.. ೞۄח ѱ ৵ ۧѱ ݆ই?! • ٜ ਃೞҊٜ ೞחؘ.. ઁ۽ ॳח ࢎۈ ߹۽ উ ࠁੋ. • زӒۆ җ֘ Ӓܿ ݈Ҋ ೧ ফӝח হפ?
MVVM, ԙ ೧ࠁҊ रणפ! • Ӕؘ যଧ೧ঠೡ ݽܰѷ. •
ॳݶ ଵ જחؘ.. ցޖ ࠂೞ. • ઁٜ ؘ݆, ٜ ઁпп. ޖट ইఃఫо ۧѱ ೧ ѱ হয?
MVP.. ઁ۽ ॄࠁҊ र. • ੌױ MVVMࠁח ए Ѫ э.
• ীח જ Ѫ эওחؘ.. ۽ંܳ ೯ೞࠁפ ژ ܲ ஶ܀۞ܳ ٜ݅Ҋ ח Ѫ э ӝ࠙ ৵ੌ ө..
RxJava: somebody help! • য۵! ഁтܽ! ־ҵо ખ ب৬!! •
ݒಿ LiveDataח ખ ए Ѫ эؘ ӒѪ݅ ыҊח গݒೠ ٠ب..
How the fxxx can I inject dependency? • ઓࢿ ੑ..
ূ ए Ѫ эওחؘ.. • হח decision making োࣘ - оݶ т ࣻ۾ ౠ ੋझఢझী ೠ injectionਸ যڌѱ ೧ঠ ബҗੋ Ѥ ցޖ ഁтܽ.
Test-Driven Developement: ೞݶ જחؘ.. ଵ જחؘ.. • Ӓ ݆Ҋ
݆ ਬ పझ ౚషܻٜ ীࢲ पઁ ࢚ਊ ۽ં ࣻળ ਬ పझܳ ݅٘ח ߨਸ ঌ۰ח Ѥ ೞաب হ. • જח Ѣ ࡤੋѢ ইջ?
None
ചੑ݃ী ࡅ दפয ѐߊ ഋ ૐ࢚ • ࠺ҙ: ই, ӒѢ?
࢜۽ Ѫب হח Ӓր ਬ೯ঠ.. Ӓ۠ Ѣ হযب ઁө ੜ ѐߊ೧৳Ҋ. • ౹یӈ ૐറҵ: ޤ ࢜۽ ѱ ա৳Ҋ? য়ט ਊ೧ࠁ. • ో ݅מ: ॶ ইח ో, ঌҊ ח ۄ࠳۞ܻ ंо ҍ प۱? • Low-hanging fruit: ए ޙઁী݅ ೞӝ
Chapter 42. উ٘۽٘ܳ ৈ೯ೞח ೞழܳ ਤೠ উղࢲ
ѐߊ ѐࢿী ٮۄ ݆ झఆ ܻо ݅.. Ӓېب
ف оо ਃೞҊ ࢤпפ.
1. Solution Provider • ঌҊ્ܻী ೠ Ө ೧: ܲ ࢎۈۄݶ
ҳഅೞ ޅೡ Ѫ э Ѫਸ, ܲ ࢎۈࠁ ف ߓח ࡅܰѢա ࢎૉ۽ زೞѱ ٜ݅ ࣻ ח ࢎۈ • Kotlin ژח Java য semantics Ө ਗܻ৬ য ࢸ҅ ୍ী ೠ ೧ • Dalvik ز ਗܻী ೠ ೧ • Activity / Fragment ਃೠ زਸ ۖಬ ٘ ۨ߰ীࢲ ೧ • উ٘۽٘о ചݶਸ ۪؊݂ ೞח ݒழפ્ ೧ • …
2. Architect • ղ ۽ંܳ, рױೠ README.md ੌ ৻ী ইޖ
ࢸݺ হب ܲ ѐߊ ীѱ ੋࣻੋ҅ೡ ࣻ • ղ ٘ܳ 1֙ ٍী द ࠌਸ ٸ ҍ߄۽ ೧ೡ ࣻ • ӏݽ ҳઑ ࣻب 1~2ੌ ղী ೧յ ࣻ ਸ ب۽ ਬোೞѱ ҳઑܳ ݅ٚ • Jr ূפযীѱ റࣘ ٬ਸ উबೞҊ ކٶ ځֈѹب ؼ ࣻળਵ۽ ӝࠄ ҳઑо ѼҊೞѱ ࢿೠ. ޖࠁ.. ੜޅػ ߑधਵ۽ ҳഅೞӝо ݒ য۵ب۾ ҳઑ ܳ ٜ݅ উ
উ٘۽ݫܳ ݒח ә ѐߊٜਸ ਤೠ উղ
द ߈ • ࠺ҙܳ ߡܻҊ ੌױ ࠗ٭ഃ ࠁࣁਃ! • ೧ࠁ
ঋਵݶ ೧ೞӝ য۰ ѐ֛ ݆ • द ৻۽ ए: Ѣ ݽٚ ࠙ঠীࢲ ੑޙਊ ౚషܻਸ औѱ ਵप ࣻ
–George Bernard Shaw “ف ࢎۈ п ыҊ ח ࢎҗ ೞաܳ
Үജೠݶ ৈ ೞաঀ ࢎҗ݅ ыҊ ਸ Ѫ. ೞ݅ ই٣যܳ Үജೞݶ п ف ѐঀਸ ыѱ ػ.”
ҕਬ ൨ • ֢ೞٚ Ҋٚ ݈ೡ Ѣܻо ࢤ҂ݶ, न धਸ
Բળ ҕਬೞࣁਃ. • ࠺तೠ ҙबࢎ ূפযٜਸ Բળ ݅աࠁࣁਃ. • ࠶۽Ӓח যڄөਃ? • : झܽࢫਵ۽ بߓೞח tutorial, ױࣽ ࢸߨب જ݅.. ӝ৴ݶ न ࢤп ٜযр Ӗ झझ۽ীѱب ةীѱب ؊ ب ؾפ.
ੌࠄ ҃ • ࠶۽Ӓܳ ాೠ ҕਬо ੌ࢚ച: Qiita, Hatena Blog
• ҕࠗഥ: ۽ ױਤ ࣁա. eg. Sibuya.apk, Akiba.swift, ... • Moku-moku meeting: Ӓր п ٬ ݽ 1.5 ~ 2दр ѐ߹ স റ যڃ সਸ ೮ח ی/Ҋ/ઑ ա׃ • Network Party ӝо ҳഅೠ ইఃఫ, పझ ١ ҳੋ ࠗ࠙ী ೧ࢲ धਸ Үജೞח ݽ
None
ୡәࠗఠ Ҋәө নೠ ߊ: 10~15࠙ঀ աݶ 1.5दр زউ ֎ਕ ౭
ழ߁२ • ٣ষ ࠶۽Ӓ https://medium.com/@justfaceit • 5ਘ 5ੌ ҕѐؾפ. •
ݽ߄ੌীࢲ TDD, MVVM, DDD, DI ١ী ೧ࢲ पੋ ղਊਸ ҕਬೞҊ פ.
Chapter 3. MVP & MVVM
MVC is not evil • Modelҗ Viewח ੌઙ ۨҊ ࠶۟:
Model(+ Domain) ҅கীࢲח ࠺ૉפझ ۽ਸ, View ח UI۽ਸ ઁҕ. • Controllerח ۨҊ ࠶۟ ઑ݀ਸ . • Cח যڃ Viewܳ ࠁৈ Ѫੋоܳ Ѿ೧ࢲ Modelীࢲ ߉ ؘఠܳ View۽ ֈѹષ. • ӒܻҊ ী۞ܳ যڌѱ ࠁৈܳ Ѿ೧ࢲ View۽ ֈѹષ
৵ Android MVCח աࢂо? • ݽ߄ੌ ജ҃ ޙઁ: ࠂೠ ࠺زӝ
ܻ, ۄ ࢎ ܻ • উ٘۽٘ ޙઁ: View - Controller ܻ࠙о গݒೞ. • Fat Activity: Activity-Fragmentী ցޖ ݆ ۽ ٜযр. • Unit Testܳ ٜ݅ӝо ݒ ө܂. • Ӓ Ѿҗ == ୨ դҴ • ୭ঈ оةࢿ: ੌ ә߅೧ઉب ܲ ূפযীѱ بਸ ਃೞӝ য۵. ࢸݺೞח ѱ ؊ झۨझۄ.. ୭ ղо ࠊب ഁтܻחؘ যڌѱ ࢸݺਸ.. • ೞաೞա ېझٜ ցޖ ݆ ೡਸ -> ਬࠁࣻ ਊࢿ, ࣻಞࢿ, оةࢿ ١ ݆ ࠗ࠙ীࢲ ஂডೠ ٘о غߡܿ
Model-View-Presenter? • 90֙ ઁউ, 2006֙ Martin Fowler ࣗѐ۽ օܻ ঌ۰
ଵઑ: GUI Architectures https://martinfowler.com/eaaDev/uiArchs.html • ࢎप উ٘۽٘ ୡӝࠗఠ ҳਵ۽ ೧ઉ ৳؍ ইఃఫ • Viewח ࠺ૉפझ ۽ী ҙ۲ػ ࠗ࠙ਸ ҙৈೞ ޅೞب۾ ܻ࠙, Presenter ۽ ֈӣ
Presenter View Model ࢎਊ ੑ۱ਸ ాࠁ ؘఠ јन ਃ ؘఠ
߸҃ ాࠁ ࠭ ߸҃ ਃ
MVP • Fat activity/fragment ߑ • ೠ ೡ(responsibility) ܻ࠙۽
ੋ೧ ࣗझ оةࢿ + ಿ ز߈ ࢚थ • ۖಬ ઓੋ UI ܻח View ଃਵ۽ ܻ࠙೮ӝ ٸޙী Presenterח औѱ పझ ࢿ оמ • Clean Architecture৬ 1:1 mapping оמ. CAܳ Ӓ۽ ਊೞݶ ࢸ҅ ҙ۲ ֢۱ب ୭ࣗച
What is not MVVM? • MVVM ౠ Life Cycle? •
Android Architecture Component ౠੌ ࡺ • Data Binding? - ࣻח ইפա ࢎਊೞݶ ࢤࢿী ഛपೠ ب ؽ • RxMVVM? - द ࣻח ইפ݅.. Rx হח ݒ ࠛಞೣ • ਊযীࢲ য়ח ഒۆ: ViewModel গୡী ੜޅػ ѐ֛? • Modelҗ э ױਤ۽ ଂѐઉ ঋؘ, ాनী ߹ ѱ ٜযоח ഋకۄ য়೧ೡ ࣻ • Viewܳ ਤೠ Model(Entity)ۄח ѐ֛, ױߑೱ presenterۄח ف ѐ ѐ֛ਸ, ViewModelۄח ೞա ܴਵ۽ ыҊ
M-V-ViewModel? • द ݃౯ ۞ Presentation Domain Separation (PDS)о दୡ
• 2004֙ ࣗѐػ Presentation Model ਗഋ • ଵઑ: https://martinfowler.com/eaaDev/PresentationModel.htmlɹ • Microsoftীࢲ ҳഅೣ • ViewModel: Uni-directional Mediator • Presenter৬ ݒ ਬࢎೞա, ViewModel Viewܳ ઁযೞ ঋ • Viewח ViewModelਸ ഐೞغ, Ѿҗח Callback / Observable ഋక۽ ߉
http://kyubid.com/blog/understanding-mvvm-on-android-tutorial-05-introduction-to-reactive-programming-with-rxjava/
MVVM vs MVP: ষ݃о જই, ইࡅо જই? • ل
ഴܯೠ ҳઑ. بੋ ਤח হ • ٮۄࢲ റ ࢸݺب ݒ ࢚ݴ, ۽ં ࢿѺী ٮۄ ܰѱ ߉ইٜৈ ࣻ
MVP ࠺Үਤ • दೞӝо औ. ੌױ ӝઓ ஶ܀۞ ۽ٜਸ ో
refactor ӝמਵ۽ ୶ (extract method)೧ࢲ Presenter۽ ӝח Ѫࠗఠ दೞݶ ؽ • ӝઓ ۽ંܳ Ҋঠ ೞח ҃: Legacy code ࠙ ݆Ѣա, ҳઑ ѐࢶী য दр ݒ ૣ ҃ MVPо ؊ ਬܻ • Rxҕನૐ ח ҃: RxJavaܳ উ ॄب ഴܯೠ ҳઑܳ ٜ݅ ࣻ . (ޛۿ RxJavaܳ ॳݶ ؊ જ ٘ܳ ૢ ࣻ )
MVVMח? • ୡӝ ੑ߷ ࠙ݺ ӝઓ ѐߊ ѐ֛ী ࠺೧
ಁ۞ ജ ਃ. بੑ ୡӝূ যו ب ా хࣻ೧ঠೣ. • View ࢚క ҙܻо ࠂೠ ҃ (== ࠗ࠙ ࠂೠ জ) ViewModelীࢲ ܻо ؊ োझۣ. ഥࢎীࢲ MVVMਸ ݆ٜ ਊೞח ਬ • Android Architecture Component റҟ ബҗ LifeCycle - ViewModel - LiveData - Room ઑ ઁب ݆ • Cross Platform ҳഅী ખ ؊ ਬܻ Data Binding, LiveData, Roomਸ ನӝೡ ҃, Kotlinਸ Swift۽ ӝח Ѫ݅ਵ۽ب View ৻ ࣗझ 70% ࢚ਸ ࢎਊ оמ
MVVM - MVP ҕా • ѐߊ ࣘبо ݻ ߓח
ࡈۄ (: ѐੋର . ୡӝ 2~3р ѐߊ ࣘبח ݻ ߓח ו۰ ࣻ ) • ٘ ߸҃ী ೠ ف۰ (Ѣ) হয. • ٸ۰Ҋ र ӝദо әѺೠ ࢎন ߸҃ਸ ਃ೧ب ਓਵݶࢲ ೡ ࣻ • 1֙ ٍী द ٘ܳ ࠊب द য٣ܳ Ҋঠೞח ঌইରܾ ࣻ • ܲ ূפযীѱ ٘ܳ ࠁৈب ଃ౹ܻ ঋח
None
৴ƀ ݈ જؘ? ܻب ઁ ҍ गಌ ѐߊ غחѹ?
Ӓۧѱ ࢤп೮ਵա.. Ӓ۽ࠗఠ ݻ ѐਘ റ..
None
۽ં ࢎૉо ழݶࢲ.. ٘о ӝ৬ח ׳ܻ ࠙೧Ҋ . ରۄܻ
ށۋਵݶ જওਸ Ѧ.. Ҋ݅ ט.
Ӓېࢲ ળ࠺೧ࠌणפ.
Chapter 4. MVP / MVVM at Scale
1. Fat Presenter • ઁח Presenterо ցޖ ݆ਸ ੌਸ ೠ!
• పझ ாझܳ ٜ݅ӝо য۰ਕ • ࠁח Ӓېب ի݅.. ৈ ٘о ࠙ೞ. • ݃ Activity Manager э ѱ ೞա טযաӝ݅ ೠ ו՝? • ػ ਗੋ ೞաח Presenterܳ View৬ ݺഛ ܻ࠙ೞ ঋ Ѫ
೧Ѿ଼ • ѱ Ҋೞ ঋইب View৬ Presenterܳ ੜޅ ҳഅೞӝ য۵ب۾
ೞח о ਃ • Viewח ߮ܳ ߊࢤदఃҊ, UIܳ Ӓ۰ח ೡ݅ਸ , ࠺ૉפझ ۽ ա ݽ؛ ՙযٜ ࣻ ח ৈܳ ରױ • Presenterо View ࣁࠗ ࢎ೦ਸ ঌ ࣻ হب۾, Pח Viewܳ ୶࢚ച दఅ ഋక ۽݅ ଵઑೞب۾ ݅ٝ
• View Interfaceܳ ాೠ ܻ࠙ • Mock Objectܳ ాೠ Unit
Testо ݒ एਕ • Presenterח ࠺ૉפझ ۽ ܻ݅ • Viewח Ӓܻӝ݅ • ؘఠ ܻ࠙ب ೣԋ ܞ: Viewח Modelী ೧ ঌ ਃب, ঌ ࣻب হѱ ؽ • ਃೠ ҃, Presenterө Interfaceച दఇ MVP: Contractor Pattern
• ژ द Martin Fowlerо ೠ ѐ֛ • ଵઑ: https://martinfowler.com/eaaDev/PassiveScreen.html
• Fluxীࢲח Dumb Client, Clean Architectureীࢶ Humble ObjectۄҊ ܴࠗ • Viewח (ۖಬ ઓੋ) Ӓܻӝ ৻ীח ইޖѪب ঌ ࣻ হب۾ ೣ • ۽Ӓੋ ചݶۄݶ, അ ࢲߡ ࣘ ੋ ৈࠗ, ۽Ӓੋ ࢿҕ ৈࠗ ١ઑରب View о ݽܰب۾.. -> isLoadingী true ߮о য়ݶ द, ী۞ ী ࡸ۰ ޙ о য়ݶ दೡ ࡺ 2. MVVM Best Practice: Passive View
• ޥо ࢚ೠؘ? • Lighter View, Fatter ViewModel ->
Ӓ۞ݶ ViewModel ؊ Ѣ೧ח ؘ ҡଳо?? • بػ Ѿҗ - MVVM ؊ ա ҳઑ۽ оӝ ਤೠ ਃೠ оҮ যۄ?
– Nataliya Patsovska “MVVM is not an architecture.”
3. ࠺ૉפझ ۽ ࠺ച • Presenterա ViewModel بݫੋ ۽, хೡ
ࣻ হח ӝо غח ࢚ട ৡ. • о જ ೧Ѿ଼ Single Responsibility Principle ਊ • ݽߧ উ : ߄۽ Clean Architecture! • Presenterীࢲ بݫੋ ۽ਸ ܻ࠙ оמ • Data ҅க ࣁ࠙ചܳ ా೧ ؊ ୶࢚ചػ ഋక ҳઑ оמ
https://qiita.com/koutalou/items/07a4f9cf51a2d13e4cdc
[ઁ ٘]
None
• Clean Architecutre : Single Responsibility Principle पೠ ׳ࢿ •
Presenter / Domain / Data ҅க ܻ࠙۽ ੋ೧ ۽ ܴ ੌݾਃো ೧ -> оةࢿ ә࢚थ • ౠ ېझо ࠺೧ח Ѫਸ ߑ • п layerр ҳ࠙ ݺഛೞ۽, п ೱ ߧਤب ݺഛ • ױ, ېझ әѺ ૐо -> ೠ ߣী ҳഅೞ۰ ೞݶ ѐߊࣘب ೞ৬ ߡӒ নਸ ঠӝೡ ࣻب ଵ औભ?
• 6ѐ ېझ, 2ѐ ੋఠಕझ.. (3ѐ ࢤۚ) • Incremental Improvement
• Clean Architectureী ࣼೞ ঋѢա ࠂೠ दझమ ࢸ҅ ҃ হח ҃ , ݽٚ Ѧ ٮۄೡ ਃח হ • ੌױ ܻઃప࣌ ۽ ܻചࠗఠ द • View - ViewModel/Presenter - Repository - Model(Entity) • بݫੋ / ؘఠ ۽ ਃ ೧ ਵ۽ ೞח Ѫ ܻ
Google Guide to App Architecture
Ӓېب.. જӟ ೠؘ.. • ېझо ցޖ ݆! • ੋ ҳઑܳ
ы୶ח ؘী ঋ दр ٜযр • Ӓ۞ա જ ߑߨ..! • ݽٚ Ѧ زਵ۽ ٜ݅য ח ۞Ӓੋ ! https://github.com/kiuchikeisuke/Android-Studio-CleanArchitecture- template-forKotlin • RxJava, Dagger, Retrofit, AAC, Presenter/ViewModel ٘ө ކٶ ݅ ٜয ષ • Swagger ਗਵ۽ REST API call ੋఠಕझب زਵ۽ ٜ݅য ષ
3. ݻ о դઁٜ.. • ҳઑ ୍ ޙઁ: Presenter ࠺ૉפझ
۽җ, Use Case ࠺ૉפझ ۽ ޤо ౣܽо? • بݫੋ ۽ Use Caseী ٜযр • ࢎস ࠗࢲ ࢎۈٜب ঌҊ যঠ ೞח ۽ۄݶ, بݫੋ ۽
https://qiita.com/koutalou/items/07a4f9cf51a2d13e4cdc ࠂण
RecyclerView in MVP • Presenter۽ ReclyerView - Adapterܳ যڌѱ ೧ঠೞחоח
ݒ ө۽ ޙઁ.. হणפ 1. Activity/Fragmentо (Presenter ݺ۸ਸ ߉ই) Adapterܳ ઁয - ױࣽ ೠ ಁఢ ܻझীח ബҗ. Groupie э ۄ࠳۞ܻܳ ࢎਊೞݶ ؊ ബҗ 2. Adapter৬ ݒೝغח Presenterܳ ҳഅ 3. ѐ߹ itemҗ пп 1:1 ݒೝغח Presenterܳ ҳഅ
RecyclerView in MVVM • Presenterী ࠺೧ࢶ ױࣽೠ ޙઁ. Data bindingਵ۽
Ӓ۽ ViewModel োѾ оמ • ࠂೠ ҃о ইפۄݶ Adapterী ViewModel োѾ • ࠂೞݶ п Itemҗ ݒೝغח ViewModelਸ ҳഅ • ҃ ViewModel Viewܳ ਤ೧ оҕػ Modelӝ ٸޙী যڃ ী ࢲ ೠ ViewModel.. • ࢎ೦: AACܳ ਊ೧ small ViewModelਸ ࢤࢿೡ ҃, providerী ۄ ఠܳ ߹ب ೧ঠ ೣ. ରۄܻ ࢚ਤ ViewModel ࢤࢿೞח ѱ ؊ જਸ ࣻ ب
୭Ӕ ҃ • ઑѤ: 6ѐ ݽ߄ੌ ࢲ࠺झ(ب 12ѐ জ)о 100%
৻ ѐߊ۽ ҳഅػ জਵ ۽ ࢲ࠺झ غҊ ח ࢚ട • җઁ: 3ѐ ࢲ࠺झ(6ѐ জ)ٜਸ 7ѐਘ ղ۽ ܻ • য۰ : ࠺ૉפझ ҙীࢶ জ ҳઑ ѐࢶ оо হ. ઁա Ӓۧ٠ ޙઁח ࢜۽ ӝמٜਸ ݃ա ࡅܲ ࣘب۽ ֍וջ.. • নզ Ѩ: ߬թ ѐߊ ઑ - ࣚ ࡅؘܲ.. ଵ ࡅؘܲ.. • নզ Ѩ 2: ঠӔ Ә -> Ҋب۽ ബਯੋ স ਃ
әೠ ੌ әೞ ঋ ੌ ਃೠ ੌ ো.. न ӝמ
ҳഅ ߡӒ ࣻ + জ উച Java -> Kotlin ߸ജ ViewModel or Presenter ജ য়ېػ ۄ࠳۞ܻ тইఋӝ ਃೞ ঋ ੌ пઙ ഥ ଵࢳ ࢚ೠ ߸ࣻݺ, ݫࣗ٘ݺ ߸҃ ٜৈॳӝ ߸҃ ӝఋ झఋੌ ࣻ
Ѿҗ • 1ߣ૩ ࢲ࠺झ: ߬࠺ दఠ জ • ݶੋ ҳઑ
ѐࢶ ӭՔೞѱ ನӝ. बয iOSח ӝઓ ҳઑܳ ৮ ਬೠ ۽ नӝ מ݅ ୶о೮. Rx ࢎਊب ನӝ. न API Callback ܻܳ ӭՔೞѱ ೡ ࣻ ח ҕా ېझ ҳഅ೧ࢲ উࢿ/ࢤࢿਸ Ҋ • উ٘۽٘ח о ਃೠ ࣁ ѐ Fragment݅ MVP۽ ࣻ. աݠח नӏ ചݶ݅ MVP۽ ҳഅ • ݽٚ ࣗझܳ Kotlinਵ۽ ز߸ജਸ ਊ೧ࢲ ߸ജೞغ, ੌࠗ ޙઁ ࣗח ٘(Non- null ܻ)ܳ ઁ৻ೞҌ ۨѢद ٘ܳ ޖܻೞѱ Kotlinझ۞ ٘۽ Ҋ۰Ҋ ೞח ঋ • AAC Life Cycle ӝמਸ ਊೞӝ ਤ೧ ViewModelਸ ࢚ࣘ ߉ই Presenter ҳഅ • 7 to 9 principle ࣁ. য়റ 7~9दী݅ restructuring / refactoring স
Ѿҗ • 1ߣ૩ ࢲ࠺झ: ߬࠺ दఠ জ (҅ࣘ) • ӝઓ
Challengingೠ ੌਸ, ޖ۰ 3ੌ ױ୷೧ࢲ োղ ܾܻૉ ࢿҕ • ѱо दܳ ౣ খفҊ CPO۽ࠗఠ цझۣѱ оੑ ࢎਊܳ ਤೠ ѱझ ݽ٘ܳ ٜ݅য ׳ۄח ਃਸ ߉ -> ਗې ഥਗ ਊਵ۽݅ ٣ੋ غ؍ জۄ ࢚ೠ ҕࢎਵա.. 1ੌ݅ী ৮ܐ (ҳഅ 3दр, ٣ߡӦ/৻ࢎ೦ ܻ 5दр)
Ѿҗ • 2ߣ૩ ࢲ࠺झ: झ জ • উ٘۽٘, iOS ݽف
MVVM ਊ • ۖಬ ݀ࢿਸ ਤ೧ RxJava/RxSwift - Realm ࢎਊ, Data Binding ࢎਊೞ ঋ • ଵҊ: 4 Reasons I’m not Using Android Data Binding https://medium.com/@Miqubel/4-reasons-im-not-using-android-data- binding-e62127c2650c (ח ݽف زೞח ঋणפ݅..) • 3ߣ૩ ࢲ࠺झ: ҳੋ/ҳ জ • ઃ ҕ ݽ٘: 2ߣ૩ীࢲ ݅ٚ ҳઑܳ Ӓ۽ ഝਊ೧ࢲ ନযղҊ
хࢎפ!
• ਗ झணۄ ӝ߈ ಽ झఖ ূפয • ઑѤ •
҃۱, ۱ ޖҙ • ߔূ٘/ݽ߄ੌ/ۿূ٘ ١ ࠙ঠ ޖҙ • ୡ١Ү 3֙ ࣻળ ੌࠄয • ࠙ঠ, ѐߊযח оܻ ঋ: о न ח য ٬ प۱݅ ࠆ (য়࠘ ٬ పझ ) • ઁѱ ݫੌ۽ CV दݶ ࢚೧٘݀פ. Nextbeatח ҳੋ! • ठۄ٘ ݂: https://speakerdeck.com/saryong/ mvvm-iyagi-droidknight-2018 • ࠶۽Ӓ ݂ (5/5): https://medium.com/@justfaceit • Email:
[email protected]