Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
Yahoo! JAPANアプリとLayered Architecture
Takuya Shigemoto
March 12, 2018
Technology
2
1.8k
Yahoo! JAPANアプリとLayered Architecture
2018.03.12(Mon)にBonfire Android #3で発表した資料です。
Takuya Shigemoto
March 12, 2018
Tweet
Share
More Decks by Takuya Shigemoto
See All by Takuya Shigemoto
Google I/O Extended Tokyo 2018レポート
shgmn
1
560
Other Decks in Technology
See All in Technology
サイボウズの アジャイル・クオリティ / Agile Quality at Cybozu
cybozuinsideout
PRO
2
1.6k
マネージャーからみたスクラムと自己管理化
shibe23
0
940
What's Data Lake ? Azure Data Lake best practice
ryomaru0825
2
710
MoT TechTalk #12 タクシーアプリ『GO』大規模トラフィックを捌く分析データ基盤の全容に迫る!
mot_techtalk
0
270
Implementing Kubernetes operators in Java with Micronaut - TechWeek Java Summit 2022
alvarosanchez
0
110
suppress-ts-errors を使って TypeScriptの型チェックを漸進的に強化する / Introducing-suppress-ts-errors
kawamataryo
2
100
出張スクラムマスターとしての FEARLESS CHANGE な生き方
naitosatoshi
1
1.1k
miisan's career talk
mii3king
0
210
ウォーターフォールとアジャイルと楽楽明細/Waterfall×Agile×Rakurakumeisai
whitefox_73
1
340
アーキテクチャを明文化して開発に臨んだ話
akihiyo76
0
230
Target SDK Versionを上げない Notification runtime permission対応
napplecomputer
0
110
ROS再入門-はじめてのSLAM-
miura55
0
330
Featured
See All Featured
Imperfection Machines: The Place of Print at Facebook
scottboms
253
12k
ParisWeb 2013: Learning to Love: Crash Course in Emotional UX Design
dotmariusz
100
5.9k
Infographics Made Easy
chrislema
233
17k
10 Git Anti Patterns You Should be Aware of
lemiorhan
638
52k
Visualization
eitanlees
124
11k
Product Roadmaps are Hard
iamctodd
34
6.5k
Ruby is Unlike a Banana
tanoku
91
9.2k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
7
1.1k
GitHub's CSS Performance
jonrohan
1020
420k
Facilitating Awesome Meetings
lara
29
4k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
12
920
Learning to Love Humans: Emotional Interface Design
aarron
261
37k
Transcript
Yahoo! JAPANΞϓϦͱ Layered Architecture Ϡϑʔגࣜձࣾ ॏݩ
About me • ॏݩ ʢtwitter: @shgmn9ʣ • Android / iOS
• Ϡϑʔגࣜձࣾʢ2017.07ʙʣ • Android൛ Yahoo! JAPANΞϓϦ • Χϝϥͱੜ͖͕͖ • ञ
ΞδΣϯμ • Yahoo! JAPANΞϓϦ๊͕͍͑ͯͨ • Layered Architectureಋೖ • Layered ArchitectureಋೖͷՌ
• ઃܭΛҡ࣋͢ΔऔΓΈ • ͜Ε͔Β • ·ͱΊ
Yahoo! JAPANΞϓϦ͕ ๊͍͑ͯͨ ࣸਅɿΞϑϩ
ࣸਅɿΞϑϩ • େਓͷ։ൃͰɺෳҊ͕݅ฒߦͯ͠Δ • ໌֬ͳઃܭํ͕ແ͍ • Ϣχοτςετ͕ॻ͖ͮΒ͍
ઃܭͷબ ࣸਅɿΞϑϩ
Model View Whateverʁ ࣸਅɿΞϑϩ • Model View Whatever • MVP…ModelͱViewͱPresenter
• MVVM…ModelͱViewͱViewModel • Presentation Domain SeparationʢPDSʣ • Presentation…ೖྗΛड͚औΔɺݟͨΛ࡞Δ • Domain…ͦΕҎ֎
Presentationʹ͍ͭͯ ࣸਅɿΞϑϩ • Presentationͷ࣮ݱ • MVP…ViewͱPresenter • MVVM…ViewͱViewModel
Domainʹ͍ͭͯ ࣸਅɿΞϑϩ • Domainʁ • MVPMVVMͷMʢModelʣͷ͜ͱ • Domainͷઃܭʹ͍ͭͯMVWͰ৮Ε͍ͯͳ͍
Layered Architectureಋೖ ࣸਅɿΞϑϩ
goo.gl/GTAfLv
Application Presentation Domain Infrastructure ViewͱWhatever Model
Application Presentation Domain Infrastructure Ϣʔβೖྗɺදࣔ Presentation͕ୟ͘૭ޱ υϝΠϯΞΫηε͠ϢʔεέʔεΛ࣮ݱ ϏδωεϩδοΫ ֎෦ͷΞΫηεʢωοτϫʔΫɾDBɾetc…ʣ
ಋೖํ๏ • ϨΠϠʔׂΛ࣮ࡍʹίʔυʹద༻͢ΔͨΊʹ • ઃܭنҧΛػցతʹ͘Έ͕ඞཁ • ֤ϨΠϠʔผϞδϡʔϧʹׂ ࣸਅɿΞϑϩ
Application Presentation Domain Infrastructure compile project(‘:Application’) compile project(‘:Domain’) compile project(‘:Infrastructure’)
Application Presentation Domain Infrastructure Observable Observable Observable
αʔϏεͷάϩʔε • ػೳՃࢭ·Βͳ͍ • ಉҰػೳͷϦϑΝΫλϦϯάͱػೳՃ͕ಉ࣌ʹΒͳ ͍Α͏ʹεέδϡʔϧΛҾ͍ͨ ࣸਅɿΞϑϩ
࣭ • େنͳϦϑΝΫλϦϯάͷલޙͰͷ࣭୲อ • ApplicationϨΠϠʔҎԼϢχοτςετʢC0ʣΛٛ ͚ͨ • Coverage 80%Ҏ্ ࣸਅɿΞϑϩ
ఘΊͨ͜ͱ • DIಋೖ • Dagger2ֶशίετΛߟ͑ͯಋೖΛఘΊͨ ࣸਅɿΞϑϩ
Layered Architecture ಋೖͷՌ ࣸਅɿΞϑϩ
ಘͨͷ • ίʔυ͕͖Ε͍ʹͳͬͨ • ػೳՃͷࡍʹΉ͜ͱ͕ݮͬͨ • ϝϯόͷٕज़Ϩϕϧ͕ͨ͠ • ৽نʹδϣΠϯ͘͢͠ͳͬͨ ࣸਅɿΞϑϩ
Layered ArchitectureΛ ҡ࣋͢ΔऔΓΈ ࣸਅɿΞϑϩ
• ίϛολʔ੍ • ༷ڞ༗ձ • ઃܭϨϏϡʔձ ࣸਅɿΞϑϩ
ίϛολʔ੍ • ֓ཁ • ઃܭɾ࣮ํΛཧղͨ͠ϝϯόʔʢίϛολʔʣʹϓϧϦΫΤε τͷϨϏϡʔͷΛෛͬͯΒ͏ • ϓϧϦΫΤετͷϚʔδʹɺ࠷1ਓͷίϛολʔͷঝೝ͕ඞཁ • త
• େنϦϑΝΫλϦϯάޙͷίʔυΛܧଓతʹ͖Ε͍ͳঢ়ଶʹอͭ • ݱࡏʢ2018.03ʣ • ։ൃϝϯό21ਓʹର͠ίϛολʔ5ਓ ࣸਅɿΞϑϩ
༷ڞ༗ձ • ֓ཁ • Ҋ༷݅Λ؆୯ʹυΩϡϝϯτʹ·ͱΊɺΤϯδχΞ ؒͰڞ༗͢Δձ • త • ଐਓԽΛղফ͢Δ
• ༷ͷٕज़తͳݒ೦Λઃܭલʹચ͍ग़͢ • ଞҊ݅ͱͷฒߦ։ൃͷ࣮ݱՄೳੑΛݕ౼͢Δ ࣸਅɿΞϑϩ
ࣸਅɿΞϑϩ ઃܭϨϏϡʔձ • ֓ཁ • ༷ڞ༗ձͰγΣΞ༷ͨ͠ʹؔ͢ΔઃܭΛυΩϡϝ ϯτʹ·ͱΊɺΤϯδχΞؒ • త •
ઃܭํΛἧ͑ɺΞϓϦͷઃܭɾ࣭Λҡ࣋͢Δ
͜Ε͔Β ࣸਅɿΞϑϩ
͍͖͍ͬͯͨऔΓΈ • UIͷςετ • DI • AACʢLifecycleɺViewModelɺLiveDataʣ • ϏϧυͷߴԽ •
ػೳ͝ͱͷϚϧνϞδϡʔϧԽ ࣸਅɿΞϑϩ
·ͱΊ
·ͱΊ • ղܾ͍ͨ͠Λ͖ͪΜͱݟఆΊͯಋೖ͢ΔઃܭΛܾΊ Δ͜ͱ • ઃܭͷಋೖʹ͋ͨͬͯɺແཧ͠ͳ͍͜ͱ • ϏδωεଆͷཧղΛ͖ͪΜͱಘΔ͜ͱ • ઃܭΛҡ࣋͢ΔͨΊͷࢪࡦΛ͖ͪΜͱߦ͏͜ͱ
Yahoo! JAPANͰ ༷ʑͳྖҬͰΤϯδχΞΛืू͍ͯ͠·͢ʂ https://about.yahoo.co.jp/hr/ ࣸਅɿΞϑϩ
Thank you!