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
各OS1人ずつ開発の辛みあるあるは アーキテクチャで解決出来そう
Search
ginyolith
January 22, 2019
Technology
2
400
各OS1人ずつ開発の辛みあるあるは アーキテクチャで解決出来そう
あるあるLT〜スマホアプリ開発エンジニア〜 Vol.2
2019/01/22 @ginyolith_tech
ginyolith
January 22, 2019
Tweet
Share
More Decks by ginyolith
See All by ginyolith
Google IO 2022 Jetpack Composeのパフォーマンス 社内LT会資料
ginyolith
0
990
複雑なレイアウト組む時あるあるは コンポーネント化で解決しよう
ginyolith
0
1.3k
クリぼっちでも出来る issue駆動開発
ginyolith
0
510
Other Decks in Technology
See All in Technology
元旅行会社の情シス部員が教えるおすすめなre:Inventへの行き方 / What is the most efficient way to re:Invent
naospon
2
300
データ活用促進のためのデータ分析基盤の進化
takumakouno
2
700
AGIについてChatGPTに聞いてみた
blueb
0
100
誰も全体を知らない ~ ロールの垣根を超えて引き上げる開発生産性 / Boosting Development Productivity Across Roles
kakehashi
1
130
[FOSS4G 2024 Japan LT] LLMを使ってGISデータ解析を自動化したい!
nssv
1
190
スクラムチームを立ち上げる〜チーム開発で得られたもの・得られなかったもの〜
ohnoeight
2
320
End of Barrel Files: New Modularization Techniques with Sheriff
rainerhahnekamp
0
290
Engineering at LY Corporation
lycorp_recruit_jp
0
500
エンジニアが一生困らない ドキュメント作成の基本
naohiro_nakata
2
150
TanStack Routerに移行するのかい しないのかい、どっちなんだい! / Are you going to migrate to TanStack Router or not? Which one is it?
kaminashi
0
140
SREの組織類型に応じた リーダシップの考察
kenta_hi
PRO
1
630
サイバーセキュリティと認知バイアス:対策の隙を埋める心理学的アプローチ
shumei_ito
0
350
Featured
See All Featured
Teambox: Starting and Learning
jrom
133
8.8k
Intergalactic Javascript Robots from Outer Space
tanoku
268
27k
Making the Leap to Tech Lead
cromwellryan
133
8.9k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
356
29k
Rebuilding a faster, lazier Slack
samanthasiow
79
8.7k
Large-scale JavaScript Application Architecture
addyosmani
510
110k
Navigating Team Friction
lara
183
14k
5 minutes of I Can Smell Your CMS
philhawksworth
202
19k
Scaling GitHub
holman
458
140k
The MySQL Ecosystem @ GitHub 2015
samlambert
250
12k
YesSQL, Process and Tooling at Scale
rocio
168
14k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
280
13k
Transcript
֤OS1ਓͣͭ։ൃͷਏΈ͋Δ͋Δ ΞʔΩςΫνϟͰղܾग़དྷͦ͏ ͋Δ͋ΔLTʙεϚϗΞϓϦ։ൃΤϯδχΞʙ Vol.2 2019/01/22 @ginyolith_tech
ࣗݾհ.kt data class Ginyolith( val realName : String = “Fumiya
Akagi", val nickName : String = "ぎーにょ", var belongingTo : String = "株式会社アイリッジ", var position : String = "Androidアプリ開発", val loves : List<String> = mutableListOf( "写真", "アカペラ(音楽)", "インドカレー", "仮面ライダー"), val twitterId : String = "@ginyolith_tech" ) : Human()
ࠓ͓͢Δࣄ • ֤OS1ਓͣͭ։ൃͷਏΈ͋Δ͋Δ • Clean Architecture + MVVM • ઃܭϕʔεͰͷOSؒڞಉ։ൃ
• ͬͯΈͨࣄ • ײ • ·ͱΊ
֤OS1ਓͣͭ։ൃͷ ਏΈ͋Δ͋Δ
֤OS1ਓͣͭ։ൃͷਏΈ͋Δ͋Δ • ϨϏϡʔ͕ग़དྷͳ͍ • ཁ݅ɾ༷ͷશ༰͕̍ਓͰѲ͖͠Εͳ͍ • ͕Γͳ͍ • ऐ͍͠
ۮવɺ྆OS͕ Clean Architecture + MVVM Ͱ։ൃ͍ͯͨ͠
Clean Architecture + MVVM .PEFM #VTJOFTT -PHJD 6TF$BTF *NQMFNFOU Domain
Layer Data Layer 3FNPUF %BUB4PVSDF -PDBM %BUB4PVSDF 3FQPTJUPSZ*NQMFNFOU 7JFX %BUB #JOEJOH Presentation Layer 6TF$BTF *OUFSGBDF 3FQPTJUPSZ*OUFSGBDF 7JFX.PEFM ʹ Dependency Direction
ѱຐతર͖ɾɾɾʂ
Clean Architecture + MVVM .PEFM #VTJOFTT -PHJD 6TF$BTF *NQMFNFOU Domain
Layer Data Layer 3FNPUF %BUB4PVSDF -PDBM %BUB4PVSDF 3FQPTJUPSZ*NQMFNFOU 7JFX %BUB #JOEJOH Presentation Layer 6TF$BTF *OUFSGBDF 3FQPTJUPSZ*OUFSGBDF 7JFX.PEFM ʹ Dependency Direction 7JFX$POUSPMMFS "DUJWJUZ'SBHNFOU -JWF%BUBFUDʜ ֤04ຖʹ࣮ํ๏͕όϥόϥ
Clean Architecture + MVVM .PEFM #VTJOFTT -PHJD 6TF$BTF *NQMFNFOU Domain
Layer Data Layer 3FNPUF %BUB4PVSDF -PDBM %BUB4PVSDF 3FQPTJUPSZ*NQMFNFOU 7JFX %BUB #JOEJOH Presentation Layer 6TF$BTF *OUFSGBDF 3FQPTJUPSZ*OUFSGBDF 7JFX.PEFM ʹ Dependency Direction υϝΠϯʢཁ݅ʣʹ ґଘ
Clean Architecture + MVVM .PEFM #VTJOFTT -PHJD 6TF$BTF *NQMFNFOU Domain
Layer Data Layer 3FNPUF %BUB4PVSDF -PDBM %BUB4PVSDF 3FQPTJUPSZ*NQMFNFOU 7JFX %BUB #JOEJOH Presentation Layer 6TF$BTF *OUFSGBDF 3FQPTJUPSZ*OUFSGBDF 7JFX.PEFM ʹ Dependency Direction ֎෦αʔϏεʢ"1*ʣ Ωϟογϡཁ݅ʹґଘ
ϓϨθϯςʔγϣϯҎ֎ɺ ڠྗͯ͠։ൃग़དྷΔ…ʁ
ͱΓ͋͑ͣࢼͯ͠Έͨ
Clean Architecture + MVVM .PEFM #VTJOFTT -PHJD 6TF$BTF *NQMFNFOU Domain
Layer Data Layer 3FNPUF %BUB4PVSDF -PDBM %BUB4PVSDF 3FQPTJUPSZ*NQMFNFOU 7JFX %BUB #JOEJOH Presentation Layer 6TF$BTF *OUFSGBDF 3FQPTJUPSZ*OUFSGBDF 7JFX.PEFM ʹ Dependency Direction ϨϏϡʔ֤04 ࣮ɿ֤04 ϨϏϡʔ૬ޓ ࣮ɿϖΞϓϩ ϨϏϡʔ૬ޓ ࣮ɿ֤04 ϨϏϡʔ૬ޓ ࣮ɿϖΞϓϩ ϨϏϡʔ૬ޓ ࣮ɿ֤04
OSؒ૬ޓϨϏϡʔͷײ • υϝΠϯ؍͔ΒͷιʔείʔυϨϏϡʔ • ಉ͡OSͰଞPJͷΤϯδχΞͩͱෆՄೳ • ϝιουɾม໊ ϩδοΫͷཏੑ • ςετίʔυͷཏੑ
ߟྀύλʔϯࢦఠ • DataSourceͷϨϏϡʔ͕͍͠ • Httpૹ৴ͷॻ͖ํͳͲ͕OSຖͷϥΠϒϥϦʹґଘ
OSؒϖΞϓϩͷײ • ༷ɾཁ݅ʹؔͯ͠ͷ͕ٞߦ͑Δ • ߟྀ࿙Εͷૣظൃ֮ɹͳͲ • ઃܭʹؔ͢Δࣝݴޠʹґଘ͠ͳ͍ςΫχοΫΛֶश͠߹͏ • Rxͷ͍ํɹͳͲ •
ऐ͘͠ͳ͍ɹ • ࡉ͔͍ݴޠ༷ɺ໋໊ɺ֤OSτϦϏΞͰઢ͕ͪ͠ • ϖΞϓϩͷతɾείʔϓͷೝࣝڞ༗ɻيಓमਖ਼ؤுΔ
ؾΛ͚ͭͨࣄ • ϨϏϡʔͷείʔϓΛݶఆ͢Δ • ۀϩδοΫͷਖ਼͠͞ • ༷࿙Εͳ͍͔ɻ • ߟྀ͖͢ύλʔϯଞʹଘࡏ͠ͳ͍͔ •
ͦͷϩδοΫͦͷ෦͕ͱͯ͠ਖ਼͍͔͠ɻ • มɺΫϥε໊ͷωʔϛϯάɻɹ։ൃऀؒͰڞ௨ݴޠΛ૿͢ࣄΛҙࣝ • ͔ٞΒ֎ͨ͠ࣄ • Kotlin/Swiftͷݴޠ༷తʹਖ਼͍͔͠ɻ • OSݻ༗ͷʢҐஔใͷड͚औΓํͳͲʣ
Ұ൪ྑ͔ͬͨࣄ
data class Shop( // 店舗コード val code: String, // 店舗名
val name: String)
ΫϥεઃܭΛྲྀ༻Մೳ
ΫϥεઃܭΛྲྀ༻Մೳ • υϝΠϯͷઃܭͷ͕ͰࡁΉ • ೝෛՙͷߴ͍ઃܭɾ໋໊ͳͲͷλεΫ͕ݮ Δʂ • ෆ҆ʹͳͬͨΒยํͷઃܭΛৗʹ֬ೝՄೳ
·ͱΊ
·ͱΊ • ྆OSͰࣅͨઃܭʹͯ͠OSؒͰڠྗͨ͠Βɺ ։ൃޮ͕UPͨ͠ • ߟྀ/༷࿙ΕΛະવʹ͙͜ͱͷग़དྷΔ֬ UP • ͳʹΑΓऐ͘͠ͳ͍ɾָ͍͠
ࢀߟ • Android Architecture Blueprints • https://github.com/googlesamples/ android-architecture