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
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
770
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
910
App Architecture Sample
yoching
0
130
Other Decks in Programming
See All in Programming
Snowflake Openflow Connector利用の勘所 / 20261024developersio2026tokyo-snowflake-openflow
kasacchiful
PRO
0
220
AIがコードを書いてくれる時代、我々は何を確かめるのか
yosuke_furukawa
PRO
12
5k
Spec-Driven Development - Why Vaadin Is the Perfect Fit
simas
PRO
0
150
見えないものを探る要求要件定義に必要な基本的思考 / invisible-requirement-thinking
minodriven
15
8.9k
動画プレイヤーはなぜカクつくのか 〜Flutterのレンダリングとネイティブの境界を解剖する〜
naruogram
0
170
【加筆修正版】Laravel のアプリケーションをどこにデプロイするか #phpcon_ehime
akase244
0
160
プロジェクトコードをキレイキレイしよう!暗黙的な参照を読み解く静的解析
ostk0069
0
130
作れる、でも消せるか?──安全に「枯らして消す」機能削除術 / Drain, Then Delete
chobishiba
2
1.2k
SFCで実現する病院・医療システムの動的組み立て式UI
koukimiura
1
130
JIS keyboard support in Omarchy
lef237
0
160
クラウドエージェントは、 何がそんなに便利なのか / what makes cloud agents so useful
rkaga
3
600
全ての永続トークンを、生まれる前に消し去りたい!
sylph01
2
1.5k
Featured
See All Featured
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
35
2.9k
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
580
WENDY [Excerpt]
tessaabrams
14
40k
The Curse of the Amulet
leimatthew05
3
16k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
33
5.4k
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2.2k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
2.1k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
3k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
23k
Ruling the World: When Life Gets Gamed
codingconduct
0
420
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
610
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