$30 off During Our Annual Pro Sale. View Details »
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Yahoo! JAPANアプリとLayered Architecture
Search
Takuya Shigemoto
March 12, 2018
Technology
2
2.2k
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
750
Other Decks in Technology
See All in Technology
組織の“見えない壁”を越えよ!エンタープライズシフトに必須な3つのPMの「在り方」変革 #pmconf2025
masakazu178
1
1.1k
useEffectってなんで非推奨みたいなこと言われてるの?
maguroalternative
1
480
確実に伝えるHealth通知 〜半自動システムでほどよく漏れなく / JAWS-UG 神戸 #9 神戸へようこそ!LT会
genda
0
160
[続・営業向け 誰でも話せるOCI セールストーク] AWSよりOCIの優位性が分からない編(2025年11月21日開催)
oracle4engineer
PRO
1
150
学術的根拠から読み解くNotebookLMの音声活用法
shukob
1
510
ページの可視領域を算出する方法について整理する
yamatai1212
0
110
小規模チームによる衛星管制システムの開発とスケーラビリティの実現
sankichi92
0
160
Active Directory 勉強会 第 6 回目 Active Directory セキュリティについて学ぶ回
eurekaberry
12
4.4k
AI時代のインシデント対応 〜時代を切り抜ける、組織アーキテクチャ〜
jacopen
4
170
私も懇親会は苦手でした ~苦手だからこそ懇親会を楽しむ方法~ / 20251127 Masaki Okuda
shift_evolve
PRO
4
380
.NET 10 のパフォーマンス改善
nenonaninu
1
1.2k
Design System Documentation Tooling 2025
takanorip
0
290
Featured
See All Featured
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.3k
GitHub's CSS Performance
jonrohan
1032
470k
A Modern Web Designer's Workflow
chriscoyier
697
190k
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
Unsuck your backbone
ammeep
671
58k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.3k
Java REST API Framework Comparison - PWX 2021
mraible
34
9k
Agile that works and the tools we love
rasmusluckow
331
21k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.2k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
9
990
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
118
20k
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!