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
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Yoshikuni Kato
September 20, 2017
Programming
2
610
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
Fun of writing Unison
yoching
0
480
The Elm Architecture & Swift
yoching
0
1.2k
iOS developers community in Tokyo
yoching
0
890
Swiftエンジニアが海外のポジションに応募する
yoching
10
3.3k
App Architecture By Manual DI
yoching
0
860
Passing function to function arguments
yoching
0
880
「新規アプリの設計」を設計する
yoching
1
2.1k
関数を引数として渡す書き方のポイント
yoching
0
850
App Architecture Sample
yoching
0
110
Other Decks in Programming
See All in Programming
社内規程RAGの精度を73.3% → 100%に改善した話
oharu121
12
7.3k
「ブロックテーマでは再現できない」は本当か?
inc2734
0
1.1k
AI駆動開発の本音 〜Claude Code並列開発で見えたエンジニアの新しい役割〜
hisuzuya
4
460
AI主導でFastAPIのWebサービスを作るときに 人間が構造化すべき境界線
okajun35
0
470
Agent Skills Workshop - AIへの頼み方を仕組み化する
gotalab555
13
7.7k
go directiveを最新にしすぎないで欲しい話──あるいは、Go 1.26からgo mod initで作られるgo directiveの値が変わる話 / Go 1.26 リリースパーティ
arthur1
2
430
クライアントワークでSREをするということ。あるいは事業会社におけるSREと同じこと・違うこと
nnaka2992
1
290
あなたはユーザーではない #PdENight
kajitack
4
290
encoding/json/v2のUnmarshalはこう変わった:内部実装で見る設計改善
kurakura0916
0
210
ご飯食べながらエージェントが開発できる。そう、Agentic Engineeringならね。
yokomachi
1
280
new(1.26) ← これすき / kamakura.go #8
utgwkk
0
1.4k
What Spring Developers Should Know About Jakarta EE
ivargrimstad
0
160
Featured
See All Featured
A Modern Web Designer's Workflow
chriscoyier
698
190k
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.3k
Scaling GitHub
holman
464
140k
HDC tutorial
michielstock
1
480
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
68
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.1k
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
95
KATA
mclloyd
PRO
35
15k
Google's AI Overviews - The New Search
badams
0
930
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.2k
Rebuilding a faster, lazier Slack
samanthasiow
85
9.4k
Fashionably flexible responsive web design (full day workshop)
malarkey
408
66k
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