Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Eight iOSを支えるアーキテクチャ
Search
Masashi
June 15, 2019
Programming
640
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Eight iOSを支えるアーキテクチャ
Developers Boost KANSAI
https://event.shoeisha.jp/devboost/20190615
Masashi
June 15, 2019
More Decks by Masashi
See All by Masashi
SpeechAnalyzerによるSpeech to Textの進化を探る
kawabe
0
18
Speech Frameworkを使った音声認識の基本
kawabe
0
91
これだけは伝えたい設計の技術
kawabe
0
1.4k
EightのUI Component化の取り組み
kawabe
0
150
Other Decks in Programming
See All in Programming
あなたの await、OS まで届いてる? strace で覗く JavaScript の非同期
hasutosasaki
1
2.3k
Claude Code ハーネスDeep Dive – 君はどこまで制御する? -
takateeen_knj
5
3.8k
조합이폭발하는디자인시스템이걸눈으로도테스트하라고요
giljongyu
0
740
AIが実装を担う時代の「技術設計」と「チームマネジメント」
kamina_zzz
2
240
Long Living Tokens, Die, Die, Die! (or: The One Ring is Banned in Modern)
sylph01
0
410
TanStack Vue Query と Pinia Colada から学ぶ非同期状態の型設計
aoshi
0
630
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
200
AI時代のFlutter品質設計 — アプリ品質を守るQuality Layers
omatty198
0
360
Zero-Tap Sign-In対応、結局何をすればいいの?
mitohato14
0
1.9k
複数ドメインを一つのアプリに統合するFlutterの設計と運用_FlutterKaigi2026登壇資料(須永高弘)
takahirosunaga
0
160
Vue.jsで作る空間解析アプリとCapacitorプラグインのData Bridge
hal_spidernight
1
170
SFCで実現する病院・医療システムの動的組み立て式UI
koukimiura
1
170
Featured
See All Featured
Paper Plane
katiecoart
PRO
5
55k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
3.1k
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
2.2k
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
4.5k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
Documentation Writing (for coders)
carmenintech
77
5.6k
Exploring anti-patterns in Rails
aemeredith
4
560
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.6k
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
2
980
Building a Modern Day E-commerce SEO Strategy
aleyda
45
9.3k
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.9k
Transcript
ɹ&JHIUJ04Λࢧ͑ΔΞʔΩςΫνϟ Տลխ࢙ 4BOTBOגࣜձࣾ
Տลխ࢙ɹMasashi Kawabe Sansanגࣜձࣾ Eightࣄۀ෦ Engineering Group iOS ΤϯδχΞ 20184݄ Sansanגࣜձࣾ৽ଔೖࣾ
Eight iOS ͷ։ൃʹैࣄ
2018/04 2018/07 2018/12 2019/02 2019/04 2019/06 Sansanגࣜձࣾ ৽ଔೖࣾ / Eightࣄۀ෦ଐ
ϝϯγϣϯػೳͷ࣮ Eight iOS v9.0.0 ϦϦʔε Sansanࣄۀ෦ҟಈ Sansan iOS v5.0.0 ϦϦʔε / Eightࣄۀ෦ҟಈ ೋஈ֊ೝূػೳͷ࣮
2018/04 2018/07 2018/12 2019/02 2019/04 2019/06 Sansanגࣜձࣾ ৽ଔೖࣾ / Eightࣄۀ෦ଐ
ϝϯγϣϯػೳͷ࣮ Eight iOS v9.0.0 ϦϦʔε Sansanࣄۀ෦ҟಈ Sansan iOS v5.0.0 ϦϦʔε / Eightࣄۀ෦ҟಈ ೋஈ֊ೝূػೳͷ࣮
None
2018/04 2018/07 2018/12 2019/02 2019/04 2019/06 Sansanגࣜձࣾ ৽ଔೖࣾ / Eightࣄۀ෦ଐ
ϝϯγϣϯػೳͷ࣮ Eight iOS v9.0.0 ϦϦʔε Sansanࣄۀ෦ҟಈ Sansan iOS v5.0.0 ϦϦʔε / Eightࣄۀ෦ҟಈ ೋஈ֊ೝূػೳͷ࣮
ϝϯγϣϯػೳͷ࣮ ओʹϝϯγϣϯͷදࣔɺΞϓϦىಈ࣌ʹදࣔ ͢Δػೳઆ໌ͷφϏήʔγϣϯ࣮Λ୲
2018/04 2018/07 2018/12 2019/02 2019/04 2019/06 Sansanגࣜձࣾ ৽ଔೖࣾ / Eightࣄۀ෦ଐ
ϝϯγϣϯػೳͷ࣮ Eight iOS v9.0.0 ϦϦʔε Sansanࣄۀ෦ҟಈ Sansan iOS v5.0.0 ϦϦʔε / Eightࣄۀ෦ҟಈ ೋஈ֊ೝূػೳͷ࣮
Eight iOS v9.0.0 ϦϦʔε ओʹձࣾϑΥϩʔҰཡը໘ɺձࣾϑΥϩʔɾ ΞϯϑΥϩʔػೳɺ͓Βͤը໘ɺϑΟʔυ UI ৽ɺ UI Component
ಋೖΛ୲
2018/04 2018/07 2018/12 2019/02 2019/04 2019/06 Sansanגࣜձࣾ ৽ଔೖࣾ / Eightࣄۀ෦ଐ
ϝϯγϣϯػೳͷ࣮ Eight iOS v9.0.0 ϦϦʔε Sansanࣄۀ෦ҟಈ Sansan iOS v5.0.0 ϦϦʔε / Eightࣄۀ෦ҟಈ ೋஈ֊ೝূػೳͷ࣮
Sansan iOS v5.0.0 ϦϦʔε ओʹ໊Ұཡը໘ͷ࣮ɺ UI Component ಋೖΛ୲
2018/04 2018/07 2018/12 2019/02 2019/04 2019/06 Sansanגࣜձࣾ ৽ଔೖࣾ / Eightࣄۀ෦ଐ
ϝϯγϣϯػೳͷ࣮ Eight iOS v9.0.0 ϦϦʔε Sansanࣄۀ෦ҟಈ Sansan iOS v5.0.0 ϦϦʔε / Eightࣄۀ෦ҟಈ ೋஈ֊ೝূػೳͷ࣮
໊ࡱӨ ࿈བྷઌҰཡ ϑΟʔυ ϓϨϛΞϜػೳ
໊ࡱӨ ࿈བྷઌҰཡ ϑΟʔυ ϓϨϛΞϜػೳ ը໘ʹө͢Δঢ়ଶ͕ଟ͘ෳࡶ
ઃܭͱʁ ؔ৺ͷʹΑͬͯɺෳࡶͳΛ ୯७ͳͷ܈ͱͯ͠Γ͚Δ͜ͱ Ҿ༻J04ΞϓϦઃܭύλʔϯೖ IUUQTQFBLTDDCPPLTJ04@BSDIJUFDUVSF
αʔόʔ͔ΒϑΥϩʔ͍ͯ͠ΔਓϦετΛऔಘͯ͠ɺ ਓใΛ࣋ͭ Entity ʹ parse ͯ͠ɺΩϟογϡʹ औಘͨ͠ใΛอଘͯ͠ɺ View ʹදࣔ͢Δ
αʔόʔ͔ΒϑΥϩʔ͍ͯ͠ΔਓϦετΛऔಘͯ͠ɺ ਓใΛ࣋ͭ Entity ʹ parse ͯ͠ɺΩϟογϡʹ औಘͨ͠ใΛอଘͯ͠ɺ View ʹදࣔ͢Δ ෳࡶ
௨৴͍ͨ͠ αʔόʔ͔ΒϑΥϩʔ͍ͯ͠ΔਓϦετΛऔಘͯ͠ɺ ਓใΛ࣋ͭ Entity ʹ parse ͯ͠ɺΩϟογϡʹ औಘͨ͠ใΛอଘͯ͠ɺ View ʹදࣔ͢Δ
σʔλΛΈཱ͍ͯͨ αʔόʔ͔ΒϑΥϩʔ͍ͯ͠ΔਓϦετΛऔಘͯ͠ɺ ਓใΛ࣋ͭ Entity ʹ parse ͯ͠ɺΩϟογϡʹ औಘͨ͠ใΛอଘͯ͠ɺ View ʹදࣔ͢Δ
σʔλΛอଘ͍ͨ͠ αʔόʔ͔ΒϑΥϩʔ͍ͯ͠ΔਓϦετΛऔಘͯ͠ɺ ਓใΛ࣋ͭ Entity ʹ parse ͯ͠ɺΩϟογϡʹ औಘͨ͠ใΛอଘͯ͠ɺ View ʹදࣔ͢Δ
ϨΠΞτ͍ͨ͠ αʔόʔ͔ΒϑΥϩʔ͍ͯ͠ΔਓϦετΛऔಘͯ͠ɺ ਓใΛ࣋ͭ Entity ʹ parse ͯ͠ɺΩϟογϡʹ औಘͨ͠ใΛอଘͯ͠ɺ View ʹදࣔ͢Δ
௨৴͍ͨ͠ αʔόʔ͔ΒϑΥϩʔ͍ͯ͠ΔਓϦετΛऔಘͯ͠ σʔλΛΈཱ͍ͯͨ ਓใΛ࣋ͭ Entity ʹ parse ͢Δ σʔλΛอଘ͍ͨ͠ Ωϟογϡʹऔಘͨ͠ใΛอଘ͢Δ
ϨΠΞτ͍ͨ͠ View ʹදࣔ͢Δ
ઃܭΛ͢Δࡍʹཱͭͷ͕ઃܭύλʔϯ ༗໊ͳͷɺ GoF ͷ 23ݸͷσβΠϯύλʔϯ
ઃܭύλʔϯΛΔϝϦοτ - ࠶ར༻ੑͷߴ͍ॊೈͳઃܭ͕Ͱ͖Δ - ։ൃऀؒͷҙࢥૄ௨͕༰қʹͳΔ https://www.techscore.com/tech/DesignPattern/foundation/foundation1.html/#dp0-3 YYYύλʔϯͰ͢
ΞʔΩςΫνϟύλʔϯ - ΞϓϦΛಈ͔͢ͱ͍͏ෳࡶͳɺେ·͔ͳෳͷʢ୯७ͳʣʹ Γ͚ΒΕΔ - ͦ͜Ͱ׆༻͞ΕΔͷ͕ΞʔΩςΫνϟ - Eight iOS Ͱ
MVVM ύλʔϯΛ࠾༻
ͳͥ MVVM Λ࠾༻ʁ αʔϏεͷॳظஈ֊໊ཧΞϓϦͩͬͨͨΊɺ MVC Ͱ ྑ͔͔ͬͨ͠Εͳ͍
ͳͥ MVVM Λ࠾༻ʁ - αʔϏε͕͢ΔʹͭΕͯɺSNS ػೳͷΑ͏ͳ ಈతʹঢ়ଶ͕มΘΔͷ͕૿͖͑ͯͨ - ඇಉظॲཧΛநԽ͢ΔͨΊʹར༻͍ͯ͠Δ RxSwift
ͷ binding ػߏΛ࠷େݶʹ׆͔͢͜ͱ͕ Ͱ͖Δ
MVVM ύλʔϯ 7JFX 7JFX$POUSPMMFS 7JFX.PEFM .PEFM 6*&WFOUT 3FRVFTUT %BUB %BUB#JEJOH
"QQMF͕ఏڙ͢Δ6*,JUʹ6*7JFX$POUSPMMFSͱ͍͏7JFXΛཧ͢ΔΫϥε͕͋Γɺ ը໘ͷϥΠϑαΠΫϧͱը໘ભҠΛ୲͏
MVVM ύλʔϯ 7JFX 7JFX$POUSPMMFS 7JFX.PEFM .PEFM 6*&WFOUT 3FRVFTUT %BUB %BUB#JEJOH
MVVM ύλʔϯ 7JFX 7JFX$POUSPMMFS 7JFX.PEFM .PEFM 6*&WFOUT 3FRVFTUT %BUB %BUB#JEJOH
MVVM ύλʔϯ 7JFX 7JFX$POUSPMMFS 7JFX.PEFM .PEFM 6*&WFOUT 3FRVFTUT %BUB %BUB#JEJOH
MVVM ύλʔϯ 7JFX 7JFX$POUSPMMFS 7JFX.PEFM .PEFM 6*&WFOUT 3FRVFTUT %BUB %BUB#JEJOH
MVVM ύλʔϯ 7JFX 7JFX$POUSPMMFS 7JFX.PEFM .PEFM 6*&WFOUT 3FRVFTUT %BUB %BUB#JEJOH
7JFX - " ͖͢͜ͱ - UI Λఆٛ͢Δ - ViewModel ʹ
UI Events Λ͑Δ - ViewModel ͔Βड͚औͬͨσʔλΛө͢Δ - # ͖͢Ͱͳ͍͜ͱ - ϓϨθϯςʔγϣϯϩδοΫΛఆٛ͢Δ - ௨৴σʔλૢ࡞Λߦ͏
MVVM ύλʔϯ 7JFX 7JFX$POUSPMMFS 7JFX.PEFM .PEFM 6*&WFOUT 3FRVFTUT %BUB %BUB#JEJOH
7JFX.PEFM - " ͖͢͜ͱ - UI Events Λࢹ͠ɺModel ʹॲཧΛґཔ͢Δ -
Model ͔Βड͚औͬͨσʔλΛ View Ͱར༻͢Δͷʹ ࠷దͳܗʹՃ͢Δ - # ͖͢Ͱͳ͍͜ͱ - UI Λఆٛ͢Δ - ௨৴σʔλૢ࡞Λߦ͏
MVVM ύλʔϯ 7JFX 7JFX$POUSPMMFS 7JFX.PEFM .PEFM 6*&WFOUT 3FRVFTUT %BUB %BUB#JEJOH
.PEFM - " ͖͢͜ͱ - σʔλߏΛఆٛ͢Δ - σʔλΛӬଓԽ͢Δ - σʔλΛૢ࡞͢Δ
- # ͖͢Ͱͳ͍͜ͱ - UI Λఆٛ͢Δ - σʔλΛ View Ͱར༻͢Δͷʹ࠷దͳܗʹՃ͢Δ
MVVM ύλʔϯ 7JFX 7JFX$POUSPMMFS 7JFX.PEFM .PEFM 6*&WFOUT 3FRVFTUT %BUB %BUB#JEJOH
7JFX 7JFX$POUSPMMFS 7JFX.PEFM 6*&WFOUT 3FRVFTUT %BUB %BUB#JEJOH .PEFM &OUJUZ 3FQPTJUPSZ
3FRVFTU 6TF$BTF .PEFM
- Entity - σʔλߏΛఆٛ͢Δߏମ - Repository - Entity ͷ CRUD
ૢ࡞Λఏڙ͢Δ - SQLite UserDefaults ͷ DataSource ΛӅṭ - Request - HTTP Request Λ͛ΔॲཧΛఆٛ͢Δ - UseCase - ϏδωεϩδοΫΛهड़͢Δ
7JFX 7JFX$POUSPMMFS 3RVFTUT %BUB 6*&WFOUT %BUB#JEJOH 7JFX.PEFM 6TF$BTF 3FRVFTU 3FQPTJUPSZ
&OUJUZ 3FRVFTU 3FTQPOTF $36% %BUB 3FTVMU ,OPXTBCPVU ,OPXTBCPVU
௨৴͍ͨ͠ αʔόʔ͔ΒϑΥϩʔ͍ͯ͠ΔਓϦετΛऔಘͯ͠ σʔλΛΈཱ͍ͯͨ ਓใΛ࣋ͭ Entity ʹ parse ͢Δ σʔλΛอଘ͍ͨ͠ Ωϟογϡʹऔಘͨ͠ใΛอଘ͢Δ
ϨΠΞτ͍ͨ͠ View ʹදࣔ͢Δ
௨৴͍ͨ͠ αʔόʔ͔ΒϑΥϩʔ͍ͯ͠ΔਓϦετΛऔಘͯ͠ σʔλΛΈཱ͍ͯͨ ਓใΛ࣋ͭ Entity ʹ parse ͢Δ σʔλΛอଘ͍ͨ͠ Ωϟογϡʹऔಘͨ͠ใΛอଘ͢Δ
ϨΠΞτ͍ͨ͠ View ʹදࣔ͢Δ ίʔυΛݟͯΈ·͠ΐ͏$ ⚠આ໌ͷͨΊʹίʔυ؆ུԽ͍ͯ͠·͢
7JFX 7JFX$POUSPMMFS 3RVFTUT %BUB 6*&WFOUT %BUB#JEJOH 7JFX.PEFM 6TF$BTF 3FRVFTU 3FQPTJUPSZ
&OUJUZ 3FRVFTU 3FTQPOTF $36% %BUB 3FTVMU ,OPXTBCPVU ,OPXTBCPVU
Entity ߏମͰσʔλΛఆٛ
7JFX 7JFX$POUSPMMFS 3RVFTUT %BUB 6*&WFOUT %BUB#JEJOH 7JFX.PEFM 6TF$BTF 3FRVFTU 3FQPTJUPSZ
&OUJUZ 3FRVFTU 3FTQPOTF $36% %BUB 3FTVMU ,OPXTBCPVU ,OPXTBCPVU
Request 3FTQPOTFͷܕΛఆٛ
Request )551.FUIPEΛఆٛ
Request )551.FUIPEΛ͛Δ1BUIΛఆٛ
Request 3FTQPOTFΛड͚औͬͨࡍͷॲཧΛఆٛ
7JFX 7JFX$POUSPMMFS 3RVFTUT %BUB 6*&WFOUT %BUB#JEJOH 7JFX.PEFM 6TF$BTF 3FRVFTU 3FQPTJUPSZ
&OUJUZ 3FRVFTU 3FTQPOTF $36% %BUB 3FTVMU ,OPXTBCPVU ,OPXTBCPVU
Repository 1SPUPDPM *OUFSGBDF Ͱ$36%ૢ࡞Λఆٛ
Repository ఆٛͨ͠$36%ૢ࡞Λ࣮
7JFX 7JFX$POUSPMMFS 3RVFTUT %BUB 6*&WFOUT %BUB#JEJOH 7JFX.PEFM 6TF$BTF 3FRVFTU 3FQPTJUPSZ
&OUJUZ 3FRVFTU 3FTQPOTF $36% %BUB 3FTVMU ,OPXTBCPVU ,OPXTBCPVU
UseCase ۩ମܕͰͳ͘நʹґଘ *OJUJBMJ[FSͰґଘੑʢඞཁͳͷʣΛೖ
UseCase - ґଘؔٯసͷݪଇΛద༻ - มԽ͍͢͠۩Ͱͳ͘ɺ҆ఆͨ͠நʹґଘ - Dependency Injection Λద༻ -
Ϋϥεͷ֎͔Βґଘ͍ͯ͠ΔΛೖ - நʹґଘ͠ɺΫϥεͷ֎͔ΒඞཁͳͷΛೖ͢Δ͜ͱͰςελϒϧʹ
UseCase ϏδωεϩδοΫΛ࣮
7JFX 7JFX$POUSPMMFS 3RVFTUT %BUB 6*&WFOUT %BUB#JEJOH 7JFX.PEFM 6TF$BTF 3FRVFTU 3FQPTJUPSZ
&OUJUZ 3FRVFTU 3FTQPOTF $36% %BUB 3FTVMU ,OPXTBCPVU ,OPXTBCPVU
ViewModel 7JFXͰදࣔ͢Δ&OUJUZΛެ։
ViewModel 7JFX͔Β6*&WFOUΛऔಘ
ViewModel .PEFMʹॲཧΛґཔ
7JFX 7JFX$POUSPMMFS 3RVFTUT %BUB 6*&WFOUT %BUB#JEJOH 7JFX.PEFM 6TF$BTF 3FRVFTU 3FQPTJUPSZ
&OUJUZ 3FRVFTU 3FTQPOTF $36% %BUB 3FTVMU ,OPXTBCPVU ,OPXTBCPVU
View ը໘ىಈͷΠϕϯτΛ௨
View 7JFX.PEFMʹΠϕϯτΛ͑Δ
View 7JFX.PEFM͔Βड͚औͬͨ σʔλΛө
7JFX 7JFX$POUSPMMFS 3RVFTUT %BUB 6*&WFOUT %BUB#JEJOH 7JFX.PEFM 6TF$BTF 3FRVFTU 3FQPTJUPSZ
&OUJUZ 3FRVFTU 3FTQPOTF $36% %BUB 3FTVMU ,OPXTBCPVU ,OPXTBCPVU
·ͱΊ - Eight iOS Ͱ MVVM ύλʔϯΛ࠾༻ - ֤ͷ͖͢͜ͱɾ͖͢Ͱͳ͍͜ͱΛҙ࣮ࣝͯ͠ -
มԽ͍͢͠۩ͷґଘආ͚ɺநґଘ
None
None