Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
Practical iOS application modularity
Bryan Irace
August 28, 2015
Technology
1
510
Practical iOS application modularity
Slides from Yahoo’s NYC Mobile Developer Conference (
http://ymdcnyc.tumblr.com
) on 8/26/2015.
Bryan Irace
August 28, 2015
Tweet
Share
More Decks by Bryan Irace
See All by Bryan Irace
iOS at Tumblr
irace
2
1.3k
Building Tumblr for iOS
irace
0
530
Modularity in mobile applications
irace
0
110
When the iOS SDK says “Jump,” ask “How High?”
irace
7
1.3k
Don't be "an Objective-C" or "a Swift Developer"
irace
5
750
Tumblr iOS architecture
irace
5
480
Node.js for mobile developers
irace
1
120
Introduction to Objective-C and Cocoa Touch
irace
7
540
Building apps that play nicely with other apps
irace
1
280
Other Decks in Technology
See All in Technology
データ分析基盤の要件分析の話(202201_JEDAI)
yabooun
0
260
OpenShiftのリリースノートを整理してみた
loftkun
2
370
SPA・SSGでSSRのようなOGP対応!
simo123
2
150
立ち止まっても、寄り道しても / even if I stop, even if I take a detour
katoaz
0
580
組織に対してSREを適用するとどうなるか
kuniim
7
2.7k
MarvelClient Upgrade 64bit クライアントへの自動アップグレード設定
mitsuru_katoh
0
150
Bill One 開発エンジニア 紹介資料
sansantech
PRO
0
110
経営統合をきっかけに会社をエンジニアリングした話 / btconjp-2023
carta_engineering
0
150
Hatena Engineer Seminar #23 「チームとプロダクトを育てる Mackerel 開発合宿」
arthur1
0
490
日本ディープラーニング協会主催 NeurIPS 2022 技術報告会講演資料
tdailab
0
1.1k
Oktaの管理者権限を適切に移譲してみた
shimosyan
2
270
メドレー エンジニア採用資料/ Medley Engineer Guide
medley
3
5.1k
Featured
See All Featured
A Tale of Four Properties
chriscoyier
149
21k
The Web Native Designer (August 2011)
paulrobertlloyd
76
2.2k
Pencils Down: Stop Designing & Start Developing
hursman
114
10k
Why You Should Never Use an ORM
jnunemaker
PRO
49
7.9k
Automating Front-end Workflow
addyosmani
1351
200k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
120
29k
How STYLIGHT went responsive
nonsquared
89
4.2k
Agile that works and the tools we love
rasmusluckow
320
20k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
109
16k
Designing with Data
zakiwarfel
91
4.2k
Bootstrapping a Software Product
garrettdimon
299
110k
The Straight Up "How To Draw Better" Workshop
denniskardys
226
130k
Transcript
Mobile Developer Conference N Y C 8 26 15 Practical
iOS application modularity Bryan Irace
M D C N Y C
M D C N Y C
M D C N Y C
M D C N Y C + (UIApplication *)sharedApplication NS_EXTENSION_UNAVAILABLE_IOS
M D C N Y C Limit which parts of
the codebase know about which other parts.
M D C N Y C When concerns are well-separated,
individual sections can be reused, as well as developed and updated independently. -Wikipedia
M D C N Y C One big codebase Small
Isolated Knowable Components Many Easily or
M D C N Y C Modularity = • Easier
to build separate applications • New products • iOS or OS X • iOS extensions • watchOS applications
M D C N Y C Modularity = • Additional
overhead • More repositories, READMEs to update, version numbers to increment • Tooling complexity • CocoaPods, Carthage, Gradle, etc.
M D C N Y C { "name": "ComposeUI", "summary":
“Tumblr’s composition UI for iOS.", "platforms": { "ios": "8.0" }, "requires_arc": true, "frameworks": [ "Foundation", "UIKit", ], "source_files": "Classes/**/*.{h,m}", "resources": "Resources/*", "dependencies": { "SharedUI": [], } } { "name": "SharedUI", "summary": "UI components shared across Tumblr’s apps and extension", "platforms": { "ios": "8.0" }, "requires_arc": true, "frameworks": [ "Foundation", "UIKit" ], "source_files": "Classes/**/*.{h,m}", "resources": "Resources/*" }
M D C N Y C pod 'Reachability', '3.2' pod
'MTMigration', '0.0.3' pod 'HockeySDK', '3.7.1' pod '1PasswordExtension', '1.1.0'
M D C N Y C Development pods
M D C N Y C Development pods • No
need to version • Can be anywhere on disk, e.g. in the app’s repository • Easy to make one pull request against multiple modules
M D C N Y C pod 'ComposeUI', :path =>
‘Components/ComposeUI' pod 'ExploreUI', :path => 'Components/ExploreUI' pod 'SharedUI', :path => 'Components/SharedUI' pod 'CoreTumblr', :path => 'Components/CoreTumblr' pod 'CoreExplore', :path => 'Components/CoreExplore' pod 'Logger', :path => 'Components/Logger'
M D C N Y C Compose UI Core Tumblr
Tumblr SDK Explore UI Core Explore Network Abstractions Shared UI Logger Video Player Audio Share extension Today widget App
M D C N Y C Compose UI Core Tumblr
Tumblr SDK Explore UI Core Explore Network Abstractions Shared UI Logger Video Player Audio
M D C N Y C Flexibility • Can always
turn dev. pods into “real pods” • Xcode project only knows about .framework files • Could always move away from CocoaPods
M D C N Y C Summary • Modular codebases
facilitate rapid product development • “Development pods” provide many benefits of modularity without too much overhead
M D C N Y C : bryan : irace
Thank you!
[email protected]