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
nyafunta9858
September 28, 2023
Programming
0
130
僕らが考える 最強のアーキテクチャについて 腹を割って話そう
nyafunta9858
September 28, 2023
Tweet
Share
More Decks by nyafunta9858
See All by nyafunta9858
いまから追い上げる、Jetpack Compose トレーニング
nyafunta9858
1
1.6k
KotlinのLinterまなびなおし2024のホコウ
nyafunta9858
1
86
KotlinのLinter まなびなおし2024
nyafunta9858
1
4.2k
もう迷わないCoroutines 〜suspend funとChannelとFlow〜
nyafunta9858
2
6.1k
コルーチン〜Androidと非同期処理〜
nyafunta9858
1
640
Other Decks in Programming
See All in Programming
プログラミング言語学習のススメ / why-do-i-learn-programming-language
yashi8484
0
130
Kubernetes History Inspector(KHI)を触ってみた
bells17
0
230
なぜイベント駆動が必要なのか - CQRS/ESで解く複雑系システムの課題 -
j5ik2o
12
4.1k
メンテが命: PHPフレームワークのコンテナ化とアップグレード戦略
shunta27
0
120
もう僕は OpenAPI を書きたくない
sgash708
5
1.8k
Pulsar2 を雰囲気で使ってみよう
anoken
0
240
dbt Pythonモデルで実現するSnowflake活用術
trsnium
0
170
SwiftUIで単方向アーキテクチャを導入して得られた成果
takuyaosawa
0
270
社内フレームワークとその依存性解決 / in-house framework and its dependency management
vvakame
1
560
Djangoアプリケーション 運用のリアル 〜問題発生から可視化、最適化への道〜 #pyconshizu
kashewnuts
1
250
SpringBoot3.4の構造化ログ #kanjava
irof
2
1k
How mixi2 Uses TiDB for SNS Scalability and Performance
kanmo
38
14k
Featured
See All Featured
How STYLIGHT went responsive
nonsquared
98
5.4k
Git: the NoSQL Database
bkeepers
PRO
427
64k
Practical Orchestrator
shlominoach
186
10k
Typedesign – Prime Four
hannesfritz
40
2.5k
Statistics for Hackers
jakevdp
797
220k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
33
2.1k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.1k
Code Reviewing Like a Champion
maltzj
521
39k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
248
1.3M
Optimizing for Happiness
mojombo
376
70k
Building Flexible Design Systems
yeseniaperezcruz
328
38k
The Power of CSS Pseudo Elements
geoffreycrofte
75
5.5k
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྆ํͷΞϓϦ͕։ൃՄೳ • ΤϯδχΞͷ֬อ ͳͲ ΫϩεϓϥοτϑΥʔϜʹظ͢Δ͜ͱ
• ֤ϓϥοτϑΥʔϜͰλϑͳ՝ • ΫϩεϓϥοτϑΥʔϜ ~ ֤ϓϥοτϑΥʔϜؒͰςΫχΧϧͳεΩϧ • ٽ͘ٽ֤͘ϓϥοτϑΥʔϜ͝ͱͷ։ൃʹ ͳͲ ΫϩεϓϥοτϑΥʔϜͰΑ͘ݴΘΕΔ͜ͱ
• ֤ϓϥοτϑΥʔϜͰΛ҆৺ͯͤ͠ΒΕΔΤϯδχΞ • ΫϩεϓϥοτϑΥʔϜͰͷ։ൃεΩϧɾέʔύϏϦςΟઓུ • ։ൃϝϯόʔ͚ͩͰͳ͘ɺ৫ɾࣄۀͰͷཧղਂߞɺڠಇ ͳͲ ΫϩεϓϥοτϑΥʔϜͰΑ͘ݴΘΕΔ͜ͱ
Ϋϩʔδϯά
• ΞʔΩςΫνϟɾઃܭٕज़໘Ҏ֎Ͱͷࢹɾ؍Λҙࣝͨ͠έʔεͷհ • ΤϯδχΞΛऔΓר͘ڥͦ͜ΞʔΩςΫνϟͷٞΛ໘ന͍ͯ͘͠Δ • ΑΓσΟʔϓʹΞʔΩςΫνϟɾઃܭͷٞΛ͍ͨ͠ʢ͠·͠ΐ͏ʣ Ϋϩʔδϯά