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
Practical iOS application modularity
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Bryan Irace
August 28, 2015
Technology
730
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
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
More Decks by Bryan Irace
See All by Bryan Irace
iOS at Tumblr
irace
2
1.6k
Building Tumblr for iOS
irace
0
750
Modularity in mobile applications
irace
0
170
When the iOS SDK says “Jump,” ask “How High?”
irace
7
1.5k
Don't be "an Objective-C" or "a Swift Developer"
irace
5
890
Tumblr iOS architecture
irace
5
680
Node.js for mobile developers
irace
1
200
Introduction to Objective-C and Cocoa Touch
irace
7
830
Building apps that play nicely with other apps
irace
1
460
Other Decks in Technology
See All in Technology
スクラムで身についていた動き方を、XPで捉え直してみた
codmoninc
PRO
1
310
WAF 運用改善の承認サイクル/SRE_BizReach_MIXI_1
visional_engineering_and_design
1
370
Nav2、Nav3 ... はたまた自作?〜 作って理解する Nav3 の設計意図 〜 / Nav2, Nav3 ... or Build Your Own? — Understanding Nav3's design intent by building it from scratch
yanzm
0
260
動画配信アプリでの Engage SDK 導入 — TVer Android が Play ストアにコンテンツを届けるまで
techtver
PRO
0
150
全員がプロダクトへ向き合う組織を持続成長させるために——組織づくりのフライホイールと4象限 / The Flywheel Model and Four Quadrants for Organizational Design
hiro_torii
4
900
Azure Cost Management の FOCUS コストデータを迷わず読むための“3つの軸”
tetsuyaooooo
0
160
AI時代に、プロダクトの数だけ積み上がる所有コストをどうエンジニアリングするか / Engineering the Cost of Ownership
kzkmaeda
1
1.1k
[DroidKaigi 2026] Making UI specifications visible: Android UI development in the AI agent era supported by Compose Screenshot Testing and galleries
syarihu
0
600
GoCon2026 - Open Source, Open World
sanposhiho
1
360
KPIだけでは評価できないプロダクトが考えるべき Evalsという第二の評価系 / Beyond KPIs: Evals as a Second Evaluation Framework for Products #PdEConf
aki_iinuma
4
3.7k
【視聴者参加型!】AWSセキュリティアンチパターンクイズ
syoshie
0
460
Amazon S3 Tablesに全部任せてみた結果——コンパクション/スナップショット管理は本当に手放せるか
shigeruoda
0
410
Featured
See All Featured
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
320
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
6.2k
KATA
mclloyd
PRO
35
15k
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
Producing Creativity
orderedlist
PRO
348
41k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
Information Architects: The Missing Link in Design Systems
soysaucechin
1
1.1k
Ethics towards AI in product and experience design
skipperchong
2
360
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
570
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
250
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.6k
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
3
1.2k
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]