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
1k
生体データを取り扱うアプリ開発の勘所
nerd0geek1
1
160
動線改善とステータス可視化で家庭内のストレスを軽減した話
nerd0geek1
3
4.6k
家庭をプロジェクトとして運営した話
nerd0geek1
2
4.4k
fastlaneの勉強会を主催して学んだこと、得たこと、悩んだこと
nerd0geek1
1
1.3k
みんなで育てるprecheck
nerd0geek1
1
860
matchとは?match導入のメリット
nerd0geek1
4
650
Improve your workflow with Sketch plugin
nerd0geek1
3
1.6k
Other Decks in Programming
See All in Programming
異なる設計思想のフレームワークを経験して得た学び
amekuhideki
2
1.5k
Foundry Localでエージェント開発
seosoft
0
120
GraphRAGのKnowledge Graphを 直接!見る/View-GraphRAG's-KnowledgeGraph-directly!
tyumugi1113
0
210
iOS開発×AI駆動開発 〜最近使って便利だったスキルの話〜
nogu66
0
140
MIZARU@SPAJAM2026 第二回予選
1901drama
0
100
AIエージェント時代のコードレビューを設計する
nogu66
5
2.5k
Pythonの実行はどこまで賢くなったのか? CPythonとPyPyから見る最適化のしくみ
curekoshimizu
4
2.8k
Laravelのアプリケーションをどこにデプロイするか #ツナギメオフライン.9
akase244
0
110
go-spidermonkeyでAIエージェントのCode Modeを実装する
syumai
3
1.5k
AI に Inclusive UI を書かせよう — Design Rules Skill で Compose UI を作り直す
theoriatec2024
1
440
一参加者から『中の人』へ 〜全通PHPerがブースに立って学んだ、カンファレンスを100倍楽しむコツ〜
wp_daisuke
0
110
GKE アップグレード前に知っておきたい Blue/Green と PDB の関係
stkk
0
140
Featured
See All Featured
So, you think you're a good person
axbom
PRO
2
2.1k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
3k
Code Reviewing Like a Champion
maltzj
528
40k
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
550
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
510
Tell your own story through comics
letsgokoyo
1
1.1k
30 Presentation Tips
portentint
PRO
1
390
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.5k
The Spectacular Lies of Maps
axbom
PRO
1
970
Designing for humans not robots
tammielis
254
26k
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
1
2.9k
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
660
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)