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
App Architecture By Manual DI
Search
Yoshikuni Kato
September 20, 2017
Programming
2
500
App Architecture By Manual DI
@ 集まれSwift好き!Swift愛好会 vol23
https://love-swift.connpass.com/event/63840/
Yoshikuni Kato
September 20, 2017
Tweet
Share
More Decks by Yoshikuni Kato
See All by Yoshikuni Kato
The Elm Architecture & Swift
yoching
0
860
iOS developers community in Tokyo
yoching
0
620
Swiftエンジニアが海外のポジションに応募する
yoching
10
2.8k
App Architecture By Manual DI
yoching
0
630
Passing function to function arguments
yoching
0
600
「新規アプリの設計」を設計する
yoching
1
1.7k
関数を引数として渡す書き方のポイント
yoching
0
740
App Architecture Sample
yoching
0
89
San Francisco Report
yoching
0
630
Other Decks in Programming
See All in Programming
エラーレスポンス設計から考える、0→1開発におけるGraphQLへの向き合い方
bicstone
5
1.5k
Why Prism?
kddnewton
4
1.7k
Jakarta EE meets AI
ivargrimstad
1
480
GenU導入でCDKに初挑戦し、悪戦苦闘した話
hideg
0
160
オートマトン学習しろ / Do automata learning
makenowjust
3
130
実践 Advanced CallKit 〜快適な通話の実現に向けて〜
mot_techtalk
3
140
サーバーレスで負荷試験!Step Functions + Lambdaを使ったk6の分散実行
shuntakahashi
6
1.5k
Kotlin 2.0 and Beyond
antonarhipov
2
150
The Shape of a Service Object
inem
0
520
KSPの導入・移行を前向きに検討しよう!
shxun6934
PRO
0
220
メモリ最適化を究める!iOSアプリ開発における5つの重要なポイント
yhirakawa333
0
410
マイグレーションコード自作して File-Based Routing に自動移行!! ~250 ページの歴史的経緯を添えて~
cut0
1
260
Featured
See All Featured
The MySQL Ecosystem @ GitHub 2015
samlambert
250
12k
Code Reviewing Like a Champion
maltzj
517
39k
The Cult of Friendly URLs
andyhume
76
6k
Music & Morning Musume
bryan
46
6k
How To Stay Up To Date on Web Technology
chriscoyier
786
250k
GraphQLとの向き合い方2022年版
quramy
43
13k
Agile that works and the tools we love
rasmusluckow
327
20k
4 Signs Your Business is Dying
shpigford
179
21k
Product Roadmaps are Hard
iamctodd
PRO
48
10k
Building Better People: How to give real-time feedback that sticks.
wjessup
359
19k
Done Done
chrislema
180
16k
Fireside Chat
paigeccino
31
2.9k
Transcript
App Architecture by Manual DI @yoshikuni_kato SwiftѪձ vol23 2017/09/20 1
Who am I ? • Yoshikuni KatoʢՃ౻༝܇ʣ @yoshikuni_kato • iOS
Engineerʢ2.5 yearsʣ • Yahoo! Japan -> OHAKO • Radi-Hey → 2
Presentation at iOSDC 2017 1 1 https://speakerdeck.com/yoching/guan-shu-woyin-shu-tositedu-sushu-kifang-falsepointo 3
Self Introduction - Interests • Software Design • App Architecture
Patterns • Test • Functional Reactive Programming (ReactiveSwift) • Functional Approach • UI Implementation • AutoLayout (priority / ...) • UIStackView • UIViewPropertyAnimator • Custom Transition 4
Self Introduction - Few experiences • Older OS • Objective-C
• Maintenance / Operation • DB Management • CoreAnimation / CoreGraphics 5
App Architecture by Manual DI 6
Sample Code • yoching/iOSAppArchitectureSample 2 2 https://github.com/yoching/iOSAppArchitectureSample 7
Past Architecture • MVVM-C • ը໘ભҠͷཧͱMVVM 3 • Coordinatorύλʔϯͷ࣮ફ 4
4 https://speakerdeck.com/yoching/coordinatorpatanfalseshi-jian 3 https://speakerdeck.com/yoching/hua-mian-qian-yi-falseguan-li-tomvvm 8
https://speakerdeck.com/yoching/hua-mian-qian-yi-falseguan-li-tomvvm 9
Past Architecture Problems • 2 tasks in Coordinator • View
Transition • Dependency Injection • hard to test • cannot replace with stub objects 10
Inspirations • Minimizing Decision Fatigue to Improve Team Productivity @
try! swift 2017 5 • Application / UI / Components (Project Organization) • ґଘੑͷೖʢDependency Injection) @ wikipedia 6 • खಈͰͷDI / ࣗಈతͳDI • Deep Linking at Kickstarter @ SwiftTalk 7 • Routing logics 7 https://talk.objc.io/episodes/S01E49-deep-linking-at-kickstarter 6 https://ja.wikipedia.org/wiki/%E4%BE%9D%E5%AD%98%E6%80%A7%E3%81%AE%E6%B3%A8%E5%85%A5 5 https://www.slideshare.net/DerekLee/minimizing-decision-fatigue-to-improve-team-productivity 11
Architecture 12
2 Types of Objects • Runtime Objects • several objects
for app runtime • testable (all dependencies are injected) • Dependency Management • doing Dependency Injection • no need to test (like setting file) 13
Sample Code • yoching/iOSAppArchitectureSample 2 2 https://github.com/yoching/iOSAppArchitectureSample 14
Development Workflow situation workflow make service make service -> update
components make view make VC & VM -> make function at ViewFactory make transition update coordinator 15
Result • Coordinator: only view transition • Factory & Components:
Dependency Injection • No Singleton! • App / Components / UI is good for object organizing (not only folder structures) 16
Thank you! 17