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
ぎーにょ
January 22, 2019
Technology
2
420
各OS1人ずつ開発の辛みあるあるは アーキテクチャで解決出来そう
あるあるLT〜スマホアプリ開発エンジニア〜 Vol.2
2019/01/22 @ginyolith_tech
ぎーにょ
January 22, 2019
Tweet
Share
More Decks by ぎーにょ
See All by ぎーにょ
AndroidにおけるNotificationのおさらい & Android16の新API Progress-centric Notifications
ginyolith
0
100
Google IO 2022 Jetpack Composeのパフォーマンス 社内LT会資料
ginyolith
0
1.2k
複雑なレイアウト組む時あるあるは コンポーネント化で解決しよう
ginyolith
0
1.3k
クリぼっちでも出来る issue駆動開発
ginyolith
0
570
Other Decks in Technology
See All in Technology
UDDのススメ - 拡張版 -
maguroalternative
1
610
Telemetry APIから学ぶGoogle Cloud ObservabilityとOpenTelemetryの現在 / getting-started-telemetry-api-with-google-cloud
k6s4i53rx
0
160
Serverless Meetup #21
yoshidashingo
1
130
Autonomous Database Serverless 技術詳細 / adb-s_technical_detail_jp
oracle4engineer
PRO
18
52k
コミュニティと計画的偶発性理論 - 出会いが人生を変える / Life-Changing Encounters
soudai
PRO
6
290
S3 Glacier のデータを Athena からクエリしようとしたらどうなるのか/try-to-query-s3-glacier-from-athena
emiki
0
240
アカデミーキャンプ 2025 SuuuuuuMMeR「燃えろ!!ロボコン」 / Academy Camp 2025 SuuuuuuMMeR "Burn the Spirit, Robocon!!" DAY 1
ks91
PRO
0
150
Eval-Centric AI: Agent 開発におけるベストプラクティスの探求
asei
0
150
文字列の並び順 / String Collation
tmtms
1
110
形式手法特論:位相空間としての並行プログラミング #kernelvm / Kernel VM Study Tokyo 18th
ytaka23
3
1.5k
Infrastructure as Prompt実装記 〜Bedrock AgentCoreで作る自然言語インフラエージェント〜
yusukeshimizu
1
160
✨敗北解法コレクション✨〜Expertだった頃に足りなかった知識と技術〜
nanachi
1
770
Featured
See All Featured
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.8k
The Power of CSS Pseudo Elements
geoffreycrofte
77
5.9k
The Cult of Friendly URLs
andyhume
79
6.5k
Documentation Writing (for coders)
carmenintech
73
5k
Writing Fast Ruby
sferik
628
62k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
50
5.5k
The Cost Of JavaScript in 2023
addyosmani
53
8.8k
Site-Speed That Sticks
csswizardry
10
770
Into the Great Unknown - MozCon
thekraken
40
2k
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
Facilitating Awesome Meetings
lara
55
6.5k
How to Think Like a Performance Engineer
csswizardry
25
1.8k
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