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
App Architecture By Manual DI
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Yoshikuni Kato
September 20, 2017
Programming
640
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
App Architecture By Manual DI
@ 集まれSwift好き!Swift愛好会 vol23
https://love-swift.connpass.com/event/63840/
Yoshikuni Kato
September 20, 2017
More Decks by Yoshikuni Kato
See All by Yoshikuni Kato
Fun of writing Unison
yoching
0
750
The Elm Architecture & Swift
yoching
0
1.3k
iOS developers community in Tokyo
yoching
0
990
Swiftエンジニアが海外のポジションに応募する
yoching
10
3.4k
App Architecture By Manual DI
yoching
0
950
Passing function to function arguments
yoching
0
990
「新規アプリの設計」を設計する
yoching
1
2.2k
関数を引数として渡す書き方のポイント
yoching
0
900
App Architecture Sample
yoching
0
130
Other Decks in Programming
See All in Programming
パーソナライズPodcastを作った話
repunit11
0
120
半永久的に提供し続けられるプライベートクラウドを目指して ― 利用者の認知負荷を抑えるAPI抽象化とハードウェア世代交代の基盤設計
tomokon
0
450
CodeRabbitの効果検証と過ごしてみた3ヶ月
armondando
0
160
[2026-09-26]空論ジェネリックプロセス~テスト資産とAIで紡ぐ、再現可能なパフォーマンスチューニングの話~
tosite
0
260
プロダクトコードからライブラリの境界を見つける
elmetal
PRO
0
110
外から家のPCの電源入れたい!をPHPで解決する
kawashimo0
1
110
Security issues being discussed on Web Platforms
petamoriken
0
1.4k
Agentic Software Factoryに、すごく賢いIF文を。 / super smart IF statement into the Agentic Software Factory.
rkaga
8
1.9k
Rでドレミ/Do-Re-Mi_with_R
florets1
0
120
GitHubハンズオン講座 — 実務レベルのチーム開発のフローを身につけよう
junhat6
0
120
機械に任せるテスト、人が見るテスト ⽣成AIで引き直した、運⽤保守フェーズの線引き
dske104
0
160
更なる可用性を求めて、5年間運用したKotlinのアプリケーションをGoでリプレイスする話
ken_tunc
0
450
Featured
See All Featured
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
610
Six Lessons from altMBA
skipperchong
29
4.5k
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
260
Scaling GitHub
holman
464
140k
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
2
2k
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
490
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
420
The Curse of the Amulet
leimatthew05
3
15k
AI: The stuff that nobody shows you
jnunemaker
PRO
10
1.1k
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
1
550
Fireside Chat
paigeccino
43
4.1k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
2.2k
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