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
560
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
940
iOS developers community in Tokyo
yoching
0
690
Swiftエンジニアが海外のポジションに応募する
yoching
10
3k
App Architecture By Manual DI
yoching
0
670
Passing function to function arguments
yoching
0
660
「新規アプリの設計」を設計する
yoching
1
1.8k
関数を引数として渡す書き方のポイント
yoching
0
790
App Architecture Sample
yoching
0
95
San Francisco Report
yoching
0
690
Other Decks in Programming
See All in Programming
DataStoreをテストする
mkeeda
0
230
custom_lintで始めるチームルール管理
akaboshinit
0
180
Fluent UI Blazor 5 (alpha)の紹介
tomokusaba
0
150
SQL Server ベクトル検索
odashinsuke
0
130
Productivity is Messing Around and Having Fun
hollycummins
0
160
複雑なフォームと複雑な状態管理にどう向き合うか / #newt_techtalk vol. 15
izumin5210
4
3.6k
Modern Angular:Renovation for Your Applications @angularDays 2025 Munich
manfredsteyer
PRO
0
160
Boost Your Performance and Developer Productivity with Jakarta EE 11
ivargrimstad
0
530
Day0 初心者向けワークショップ実践!ソフトウェアテストの第一歩
satohiroyuki
0
500
Denoでフロントエンド開発 2025年春版 / Frontend Development with Deno (Spring 2025)
petamoriken
1
1.3k
The Weight of Data: Rethinking Cloud-Native Systems for the Age of AI
hollycummins
0
200
AtCoder Heuristic First-step Vol.1 講義スライド
terryu16
3
1.1k
Featured
See All Featured
Writing Fast Ruby
sferik
628
61k
Producing Creativity
orderedlist
PRO
344
40k
Raft: Consensus for Rubyists
vanstee
137
6.9k
The Pragmatic Product Professional
lauravandoore
33
6.5k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
28
9.4k
Git: the NoSQL Database
bkeepers
PRO
430
65k
[RailsConf 2023] Rails as a piece of cake
palkan
53
5.4k
Building an army of robots
kneath
304
45k
Product Roadmaps are Hard
iamctodd
PRO
52
11k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
28
1.6k
Fontdeck: Realign not Redesign
paulrobertlloyd
83
5.5k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
160
15k
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