$30 off During Our Annual Pro Sale. View Details »
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
僕らが考える 最強のアーキテクチャについて 腹を割って話そう
Search
nyafunta9858
September 28, 2023
Programming
0
200
僕らが考える 最強のアーキテクチャについて 腹を割って話そう
nyafunta9858
September 28, 2023
Tweet
Share
More Decks by nyafunta9858
See All by nyafunta9858
いまから追い上げる、Jetpack Compose トレーニング
nyafunta9858
1
2.5k
KotlinのLinterまなびなおし2024のホコウ
nyafunta9858
1
140
KotlinのLinter まなびなおし2024
nyafunta9858
1
5.5k
もう迷わないCoroutines 〜suspend funとChannelとFlow〜
nyafunta9858
2
7.1k
コルーチン〜Androidと非同期処理〜
nyafunta9858
1
750
Other Decks in Programming
See All in Programming
これだけで丸わかり!LangChain v1.0 アップデートまとめ
os1ma
6
1.9k
chocoZAPサービス予約システムをNuxtで内製化した話
rizap_tech
0
130
Canon EOS R50 V と R5 Mark II 購入でみえてきた最近のデジイチ VR180 事情、そして VR180 静止画に活路を見出すまで
karad
0
120
生成AIを利用するだけでなく、投資できる組織へ
pospome
2
340
宅宅自以為的浪漫:跟 AI 一起為自己辦的研討會寫一個售票系統
eddie
0
510
Navigation 3: 적응형 UI를 위한 앱 탐색
fornewid
1
340
TUIライブラリつくってみた / i-just-make-TUI-library
kazto
1
390
Claude Codeの「Compacting Conversation」を体感50%減! CLAUDE.md + 8 Skills で挑むコンテキスト管理術
kmurahama
0
230
ID管理機能開発の裏側 高速にSaaS連携を実現したチームのAI活用編
atzzcokek
0
230
TestingOsaka6_Ozono
o3
0
160
tparseでgo testの出力を見やすくする
utgwkk
2
230
【CA.ai #3】Google ADKを活用したAI Agent開発と運用知見
harappa80
0
310
Featured
See All Featured
Large-scale JavaScript Application Architecture
addyosmani
515
110k
The Language of Interfaces
destraynor
162
25k
Statistics for Hackers
jakevdp
799
230k
YesSQL, Process and Tooling at Scale
rocio
174
15k
Done Done
chrislema
186
16k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.3k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
54k
VelocityConf: Rendering Performance Case Studies
addyosmani
333
24k
GraphQLとの向き合い方2022年版
quramy
50
14k
Automating Front-end Workflow
addyosmani
1371
200k
A Tale of Four Properties
chriscoyier
162
23k
Code Reviewing Like a Champion
maltzj
527
40k
Transcript
Β͕ߟ͑Δ ࠷ڧͷΞʔΩςΫνϟʹ͍ͭͯ ෲΛׂͬͯͦ͏ DroidKaigi.onCompletion { 2023@Online } @nyafunta9858
খྛ ܚ߂ Yoshihiro Kobayashi • Mobile Engineer/Money Forward,Inc. • @nyafunta9858
ΞʔΩςΫνϟͱʁ • ιϑτΣΞશମͷઃܭΛநԽͨ͠ͷ • ιϑτΣΞ։ൃશମͷઃܭํઃܭ֓೦ తɾظ • อकੑՄಡੑͷ্ • ςελϏϦςΟ
• ։ൃͷεέʔϦϯά ͳͲ ΞʔΩςΫνϟɾઃܭ • ఏڙ͢ΔՁͷ্ • ܧଓతͳՁఏڙ
None
None
࠷ڧͷΞʔΩςΫνϟ... • ఏڙ͢ΔՁΛ࠷େԽ͍͢͠ • ܧଓͯ͠ՁΛఏڙ͠ଓ͚͍͢ ࠷ڧͷΞʔΩςΫνϟͱ
࠷ڧͷΞʔΩςΫνϟ... • ఏڙ͢ΔՁΛ࠷େԽ͍͢͠ • ܧଓͯ͠ՁΛఏڙ͠ଓ͚͍͢ • ͲΜͳϓϩμΫτͰʁ ࠷ڧͷΞʔΩςΫνϟͱ
ΤϯδχΞɺιϑτΣΞΛऔΓר͘ม • ϓϩμΫτɾαʔϏεͷن • ॴଐࣄۀͷઓུɺࢪࡦͷܭը • ॴଐ৫ͷઓུɺਓࡐҭ • ॴଐاۀͷํɺϛογϣϯ ͳͲͳͲ...
Ͳ͜Ͱ௨༻͢Δͷ͕࠷ڧ͔ʁ
νʔϜΛऔΓר͘ମ੍ڥɺ৫ͷઓུɾํͳͲΛཧղ͠ ٕज़తࢹ͓ΑͼͦΕΒͷࢹΛͬͯݕ౼͞Εͨ ܧଓతͳՁఏڙ͓ΑͼՁͷ࠷େԽʹߩݙ͢ΔΞʔΩςΫνϟ ͜͜Ͱͷ࠷ڧͷΞʔΩςΫνϟɾઃܭͱ
• ٕज़؍Ҏ֎ͷࢹΛ࣋ͬͯΞʔΩςΫνϟɾઃܭΛߟ͑Δֻ͚ͬͱͳΔ • ΑΓσΟʔϓʹΞʔΩςΫνϟɾઃܭͷٞΛͨ͘͠ͳΔ ຊͷඪ
Domain Layer
લͷηΫγϣϯͰઆ໌ͨ͠ΞʔΩςΫνϟʹؔ͢ΔҰൠత ͳݪଇΛߟྀ͢Δͱɺ֤ΞϓϦʹগͳ͘ͱ 2 ͭͷϨΠϠ ͕ඞཁͰ͢ɻ • ը໘ʹΞϓϦσʔλΛදࣔ͢Δ UI ϨΠϠɻ •
ΞϓϦͷϏδωε ϩδοΫΛؚΈɺΞϓϦσʔλΛ ެ։͢ΔσʔλϨΠϠɻ υϝΠϯϨΠϠͱ͍͏ϨΠϠΛՃ͢Δ͜ͱͰɺUI ϨΠϠ ͱσʔλϨΠϠͷؒͷΓऔΓΛ؆ૉԽͰ͖ɺ࠶ར༻Ͱ͖ ·͢ɻ 2 + 1ͷϨΠϠʔυΞʔΩςΫνϟ Ҿ༻ɿhttps://developer.android.com/topic/architecture
2 + 1ͷϨΠϠʔυΞʔΩςΫνϟ Phone/Tablet TV Wear Auto Domain Layer Data
Layer Application class Service class
લͷηΫγϣϯͰઆ໌ͨ͠ΞʔΩςΫνϟʹؔ͢ΔҰൠత ͳݪଇΛߟྀ͢Δͱɺ֤ΞϓϦʹগͳ͘ͱ 2 ͭͷϨΠϠ ͕ඞཁͰ͢ɻ • ը໘ʹΞϓϦσʔλΛදࣔ͢Δ UI ϨΠϠɻ •
ΞϓϦͷϏδωε ϩδοΫΛؚΈɺΞϓϦσʔλΛ ެ։͢ΔσʔλϨΠϠɻ υϝΠϯϨΠϠͱ͍͏ϨΠϠΛՃ͢Δ͜ͱͰɺUI ϨΠϠ ͱσʔλϨΠϠͷؒͷΓऔΓΛ؆ૉԽͰ͖ɺ࠶ར༻Ͱ͖ ·͢ɻ 2 + 1ͷϨΠϠʔυΞʔΩςΫνϟ Ҿ༻ɿhttps://developer.android.com/topic/architecture
લͷηΫγϣϯͰઆ໌ͨ͠ΞʔΩςΫνϟʹؔ͢ΔҰൠత ͳݪଇΛߟྀ͢Δͱɺ֤ΞϓϦʹগͳ͘ͱ 2 ͭͷϨΠϠ ͕ඞཁͰ͢ɻ • ը໘ʹΞϓϦσʔλΛදࣔ͢Δ UI ϨΠϠɻ •
ΞϓϦͷϏδωε ϩδοΫΛؚΈɺΞϓϦσʔλΛ ެ։͢ΔσʔλϨΠϠɻ υϝΠϯϨΠϠͱ͍͏ϨΠϠΛՃ͢Δ͜ͱͰɺUI ϨΠϠ ͱσʔλϨΠϠͷؒͷΓऔΓΛ؆ૉԽͰ͖ɺ࠶ར༻Ͱ͖ ·͢ɻ 2 + 1ͷϨΠϠʔυΞʔΩςΫνϟ Ҿ༻ɿhttps://developer.android.com/topic/architecture RepositoryͷϝιουΛݺΜͰΔ͚ͩ
։ൃνʔϜͷঢ়گ • ։ൃϝϯόʔͷεΩϧϨϕϧ෯ʢ։ൃܦݧͷ͍৽ਓʙϕςϥϯʣ • ظؒͷϔϧϓϝϯόʔࢀը • ػೳ։ൃ͕ඇৗʹଟ͘ٻΊΒΕΔϑΣʔζ ৫ઓུ • ͻͱͭͷνʔϜʹ͘ࡏ੶͢ΔΑΓผͷνʔϜҟಈ͠ɺεΩϧͷ෯Λ͛ͯ΄͍͠
ͦͷଞ • ࣾશମతʹAndroidΞϓϦͰΞʔΩςΫνϟ͕·ͩਁಁ͍ͯ͠ͳ͔ͬͨ ٕज़؍ͩͱ͍·͍͚ͪͩͬͨΕͲ...
ࢥ͍ͬͯͨҎ্ʹײ৮ • ΞʔΩςΫνϟʹೃછΈ͕ͳ͍ϝϯόʔͷ໎͍͕ݮΒͤͨ • εϜʔζͳΦϯϘʔσΟϯά • εΩϧϨϕϧͷߴ͍ϝϯόʔͷϨϏϡʔίετݮ ͳͲ ٕज़؍ͩͱ͍·͍͚ͪͩͬͨΕͲ...
Ϋϩε ϓϥοτϑΥʔϜ
ϓϥοτϑΥʔϜͷબఆ or
• ίʔυڞ௨ԽʹΑΔػೳՃɾ༷มߋͷίετݮ • ҰʹiOS/Android྆ํͷΞϓϦ͕։ൃՄೳ • ΤϯδχΞͷ֬อ ͳͲ ΫϩεϓϥοτϑΥʔϜʹظ͢Δ͜ͱ
• ֤ϓϥοτϑΥʔϜͰλϑͳ՝ • ΫϩεϓϥοτϑΥʔϜ ~ ֤ϓϥοτϑΥʔϜؒͰςΫχΧϧͳεΩϧ • ٽ͘ٽ֤͘ϓϥοτϑΥʔϜ͝ͱͷ։ൃʹ ͳͲ ΫϩεϓϥοτϑΥʔϜͰΑ͘ݴΘΕΔ͜ͱ
• ֤ϓϥοτϑΥʔϜͰΛ҆৺ͯͤ͠ΒΕΔΤϯδχΞ • ΫϩεϓϥοτϑΥʔϜͰͷ։ൃεΩϧɾέʔύϏϦςΟઓུ • ։ൃϝϯόʔ͚ͩͰͳ͘ɺ৫ɾࣄۀͰͷཧղਂߞɺڠಇ ͳͲ ΫϩεϓϥοτϑΥʔϜͰΑ͘ݴΘΕΔ͜ͱ
Ϋϩʔδϯά
• ΞʔΩςΫνϟɾઃܭٕज़໘Ҏ֎Ͱͷࢹɾ؍Λҙࣝͨ͠έʔεͷհ • ΤϯδχΞΛऔΓר͘ڥͦ͜ΞʔΩςΫνϟͷٞΛ໘ന͍ͯ͘͠Δ • ΑΓσΟʔϓʹΞʔΩςΫνϟɾઃܭͷٞΛ͍ͨ͠ʢ͠·͠ΐ͏ʣ Ϋϩʔδϯά