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
CocoaPods/Carthage/SwiftPM
Search
Kohei Tabata
July 31, 2016
Programming
1k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
CocoaPods/Carthage/SwiftPM
Kohei Tabata
July 31, 2016
More Decks by Kohei Tabata
See All by Kohei Tabata
AIと協業する開発の進め方
nerd0geek1
0
180
営業活動なしで継続的に案件を受注する方法 / how to get a contract without sales as a freelance
nerd0geek1
2
990
生体データを取り扱うアプリ開発の勘所
nerd0geek1
1
150
動線改善とステータス可視化で家庭内のストレスを軽減した話
nerd0geek1
3
4.6k
家庭をプロジェクトとして運営した話
nerd0geek1
2
4.4k
fastlaneの勉強会を主催して学んだこと、得たこと、悩んだこと
nerd0geek1
1
1.3k
みんなで育てるprecheck
nerd0geek1
1
850
matchとは?match導入のメリット
nerd0geek1
4
630
Improve your workflow with Sketch plugin
nerd0geek1
3
1.6k
Other Decks in Programming
See All in Programming
The Bowling Game- From Imperative to Functional Programming - Part 1
philipschwarz
PRO
0
350
音楽のための関数型プログラミング言語mimiumにおける多段階計算の活用
tomoyanonymous
1
360
為什麼你並不需要ViewModel / No, you don't need a ViewModel
lovee
1
430
【やさしく解説 設計編 #0】DDDのコード、読めるのに分からない人へ
panda728
PRO
2
280
複数の Claude Code が"放置"されてしまう問題をCLI ダッシュボードを自作して解決した話
sumihiro3
0
330
FDEが実現するAI駆動経営の現在地
gonta
2
230
광주소프트웨어마이스터고등학교 DevFest 특강 - 바이브 코딩 시대에서 주니어 개발자로 살아남는 방법
utilforever
1
150
壊れたパーサから始める関数型設計と構成的なパーサ #fp_matsuri
raiga0310
2
410
PHP に部分適用が来るぞ!……ところで何それ?おいしいの? #phpcon / phpcon-2026
shogogg
0
400
数百円から始めるRuby電子工作
tarosay
0
110
5分で問診!Composer セキュリティ健康診断
codmoninc
0
670
ここ半年くらいでAIに作らせたR用ツール
eitsupi
0
320
Featured
See All Featured
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
430
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
1
430
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
1
3.7k
Game over? The fight for quality and originality in the time of robots
wayneb77
1
230
Paper Plane
katiecoart
PRO
2
52k
The SEO identity crisis: Don't let AI make you average
varn
0
520
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
1
1.5k
Ethics towards AI in product and experience design
skipperchong
2
330
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
4k
What does AI have to do with Human Rights?
axbom
PRO
1
2.3k
Heart Work Chapter 1 - Part 1
lfama
PRO
8
36k
Six Lessons from altMBA
skipperchong
29
4.4k
Transcript
CocoaPods/Carthage/SwiftPM 2016/07/31 集まれSwift好き!Swift愛好会
自己紹介 ・Kohei Tabata(@nerd0geek1) ・Saib Studio LLC ・iOS/Mac/tvOS Developer from 2011(MRCの時代から…)
・Fastlane大好き ・最近はBLEと仲良し。 Saib Studio LLC Kohei Tabata
http://next.saib-stud.io
背景 ・関わってるプロジェクトが多い(4〜8) ・コード再利用したい & コピペしたくない ・ライブラリ化したい ・Swift3リリース前にいい感じの方法論考えてみたい。
目次 ・ライブラリ管理の変遷 ・submodule/CocoaPods/Carthage/Swift PM ・各管理手法のメリット・デメリット(利用側) ・各管理手法のメリット・デメリット(作成側)
ライブラリ管理の変遷
Before CocoaPods… ・ライブラリのソースコードをそのまま取り込む(svn時代) ・gitのsubmoduleを利用し、リポジトリに追加 ・そこからsubmoduleした中からファイルを選択して追加
In 2011…
CocoaPods Initial Release!!
None
CocoaPodsの独壇場に
At the end of 2014…
Carthage Initial Release!!
感度高い人達が試し始める
None
夏頃には実戦投入するところも。
Swift Package Manager Coming soon…
submodule/CocoaPods/Carthage/Swift PM
submodule ・gitの機能 ・言語的な制約なし ・OSバージョンによる制約なし ・ライブラリのソースコードを手動でプロジェクトに追加する
submodule git submodule add
[email protected]
:nerd0geek1/PausableTimer.git git submodule add
[email protected]
:nerd0geek1/Logger.git .gitmodule
git submodule update
CocoaPods ・rubyで書かれたパッケージマネージャー ・Objective-C/Swiftライブラリが対象 ・iOS4以上(Swift使う場合はiOS8以上)で利用可能 ・ワークスペースが作成され、アプリのプロジェクトビルド時に ライブラリもコンパイルされる(ObjCの場合)。
CocoaPods pod init Podfile pod install(or update)
Carthage ・Swiftで書かれたパッケージマネージャー ・Objective-C/Swiftライブラリが対象 (Objective-Cも使える、とご指摘くださった@ikesyoさん、ありがとうございます。) ・iOS8以上で利用可能 ・frameworkをビルドし、プロジェクトに取り込む
Carthage vi Cartfile Cartfile carthage update (--platform iOS)
Swift Package Manager ・Swiftで書かれたパッケージマネージャー ・Apple公式! ・Swiftライブラリのみが対象 ・Swift3(=Xcode8、iOS10)から利用可能 ・Swift Modulesで対応ライブラリを確認可能
Swift Package Manager vi Package.swift Package.swift swift build
各管理手法のメリット・デメリット (利用側)
submodule メリット ・4つの手法の中で、最も制約が少ない(言語、バージョン) デメリット ・ライブラリの導入、削除が煩雑 ・手動操作が多いため、最もミスが起きがち
CocoaPods メリット ・パッケージマネージャーの中で最もサポート範囲が広い (CocoaPods: iOS4( or iOS8)〜、Carthage:iOS8〜、SwiftPM:iOS10〜) ・ObjC、Swiftのライブラリで利用可能 ・パッケージマネージャーの中で最も情報が豊富 ・Podfileへの記述のみでライブラリのimportが完了するため、楽。
デメリット ・ObjCのライブラリについては、ビルド時に同時にコンパイルされるため、 ビルド時間は長くなる。
Carthage メリット ・ビルド時間が短縮される ・ObjC・Swiftのライブラリで利用可能 デメリット ・iOSの対象バージョンがやや狭い ・CocoaPodsより対応ライブラリが少ない ・初回ビルドがかなり長い。 ・情報がまだそれほど多くない ・オプションなしだとコケることがある(特にtvOSで。)
Swift Package Manager メリット ・対応プラットフォームが最も広い(iOS/MacOS/Linux) デメリット ・iOSの対象バージョンが最も狭い(iOS10〜) ・Swift3のライブラリでのみ利用可能。 ・対応ライブラリがメジャーなもののみ ・公式リリース前なので、情報が少ない
各管理手法のメリット・デメリット (作成側)
submodule メリット ・特別なことを何もしなくて良い ・仕様変更に伴い、ライブラリ側でアップデートを行う必要がない デメリット ・ライブラリ導入の手間が煩雑なため、あまり利用されない可能性あり
CocoaPods メリット ・現在、最も広く使われているので使われやすい。 ・公開のタイミングで、@CocoaPodsFeedがツイートしてくれる デメリット ・ライブラリ登録申請時までに用意するものが少し多い。 (.podspec, README.md、サンプルプロジェクト、Specsへの登録等々)
Carthage メリット ・Build SchemeをShared SchemeにするだけでCarthage対応となるので楽。 デメリット ・まだあまり導入しているところが多くないので、広まりにくい印象。
Swift Package Manager メリット ・複数Platformをカバーできる。 デメリット ・CocoaPods以上に面倒 ・プロジェクト構成などが他の手法と違うため、最初は戸惑いそう。
個人的所感 ・Objective-Cの資産については、CocoaPods/Carthageという形で残る。 ・Carthageは、ビルド時間の削減のために使われていきそう。 ・正直、現時点ではSwiftPMを使うメリットが見いだせない。。。 ・Perfectや、SwiftonのようなWeb frameworkが使われるようになれば、 クライアント・サーバのため、というところで使われるようになる?
ご静聴ありがとうございました
参考 • iOS SDK開発でOSSライブラリを使う際の基礎知識 (1/2) (http://www.atmarkit.co.jp/ait/articles/1304/12/news032.html) • CocoaPods/CocoaPods (https://github.com/CocoaPods/CocoaPods) •
メッセージングアプリSync開発の舞台裏(iOS) (http://engineer.wantedly.com/2015/09/09/sync-messenger-ios-project.html) • Carthage/Carthage (https://github.com/Carthage/Carthage) • Swiftのオープンソース化、Swift 3.0のロードマップ (https://realm.io/jp/news/swift-opensource/) • Swift Modules (https://swiftmodules.com/) • Practical Cross-Platform Swift (https://speakerdeck.com/jpsim/practical-cross-platform-swift)