Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
僕らが考える 最強のアーキテクチャについて 腹を割って話そう
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
nyafunta9858
September 28, 2023
Programming
0
220
僕らが考える 最強のアーキテクチャについて 腹を割って話そう
nyafunta9858
September 28, 2023
Tweet
Share
More Decks by nyafunta9858
See All by nyafunta9858
AIと一緒にレガシーに向き合ってみた
nyafunta9858
0
460
いまから追い上げる、Jetpack Compose トレーニング
nyafunta9858
1
2.7k
KotlinのLinterまなびなおし2024のホコウ
nyafunta9858
1
160
KotlinのLinter まなびなおし2024
nyafunta9858
2
5.8k
もう迷わないCoroutines 〜suspend funとChannelとFlow〜
nyafunta9858
2
7.3k
コルーチン〜Androidと非同期処理〜
nyafunta9858
1
780
Other Decks in Programming
See All in Programming
CDIの誤解しがちな仕様とその対処TIPS
futokiyo
0
180
オブザーバビリティ駆動開発って実際どうなの?
yohfee
3
740
LangChain4jとは一味違うLangChain4j-CDI
kazumura
1
150
開発ステップを細分化する、破綻しないAI開発体制
kspace
0
110
15年目のiOSアプリを1から作り直す技術
teakun
1
610
文字コードの話
qnighy
44
17k
AHC061解説
shun_pi
0
340
Fundamentals of Software Engineering In the Age of AI
therealdanvega
1
220
Claude Codeセッション現状確認 2026福岡 / fukuoka-aicoding-00-beacon
monochromegane
4
400
CSC307 Lecture 12
javiergs
PRO
0
460
Codex の「自走力」を高める
yorifuji
0
1k
どんと来い、データベース信頼性エンジニアリング / Introduction to DBRE
nnaka2992
1
230
Featured
See All Featured
Claude Code のすすめ
schroneko
67
220k
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
67
37k
Balancing Empowerment & Direction
lara
5
930
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
110
We Are The Robots
honzajavorek
0
190
Done Done
chrislema
186
16k
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
190
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.4k
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
0
170
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
170
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
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྆ํͷΞϓϦ͕։ൃՄೳ • ΤϯδχΞͷ֬อ ͳͲ ΫϩεϓϥοτϑΥʔϜʹظ͢Δ͜ͱ
• ֤ϓϥοτϑΥʔϜͰλϑͳ՝ • ΫϩεϓϥοτϑΥʔϜ ~ ֤ϓϥοτϑΥʔϜؒͰςΫχΧϧͳεΩϧ • ٽ͘ٽ֤͘ϓϥοτϑΥʔϜ͝ͱͷ։ൃʹ ͳͲ ΫϩεϓϥοτϑΥʔϜͰΑ͘ݴΘΕΔ͜ͱ
• ֤ϓϥοτϑΥʔϜͰΛ҆৺ͯͤ͠ΒΕΔΤϯδχΞ • ΫϩεϓϥοτϑΥʔϜͰͷ։ൃεΩϧɾέʔύϏϦςΟઓུ • ։ൃϝϯόʔ͚ͩͰͳ͘ɺ৫ɾࣄۀͰͷཧղਂߞɺڠಇ ͳͲ ΫϩεϓϥοτϑΥʔϜͰΑ͘ݴΘΕΔ͜ͱ
Ϋϩʔδϯά
• ΞʔΩςΫνϟɾઃܭٕज़໘Ҏ֎Ͱͷࢹɾ؍Λҙࣝͨ͠έʔεͷհ • ΤϯδχΞΛऔΓר͘ڥͦ͜ΞʔΩςΫνϟͷٞΛ໘ന͍ͯ͘͠Δ • ΑΓσΟʔϓʹΞʔΩςΫνϟɾઃܭͷٞΛ͍ͨ͠ʢ͠·͠ΐ͏ʣ Ϋϩʔδϯά