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
Carthageを使ってみて自作ライブラリにも適用してみた話
Search
Kohei Tabata
July 22, 2016
Programming
0
800
Carthageを使ってみて自作ライブラリにも適用してみた話
Kohei Tabata
July 22, 2016
Tweet
Share
More Decks by Kohei Tabata
See All by Kohei Tabata
AIと協業する開発の進め方
nerd0geek1
0
120
営業活動なしで継続的に案件を受注する方法 / how to get a contract without sales as a freelance
nerd0geek1
2
930
生体データを取り扱うアプリ開発の勘所
nerd0geek1
1
110
動線改善とステータス可視化で家庭内のストレスを軽減した話
nerd0geek1
3
4.3k
家庭をプロジェクトとして運営した話
nerd0geek1
2
4.2k
fastlaneの勉強会を主催して学んだこと、得たこと、悩んだこと
nerd0geek1
1
1.1k
みんなで育てるprecheck
nerd0geek1
1
740
matchとは?match導入のメリット
nerd0geek1
4
580
Improve your workflow with Sketch plugin
nerd0geek1
3
1.4k
Other Decks in Programming
See All in Programming
C++20 射影変換
faithandbrave
0
500
来たるべき 8.0 に備えて React 19 新機能と React Router 固有機能の取捨選択とすり合わせを考える
oukayuka
2
820
GraphRAGの仕組みまるわかり
tosuri13
7
450
TypeScript LSP の今までとこれから
quramy
1
510
Go1.25からのGOMAXPROCS
kuro_kurorrr
1
780
XP, Testing and ninja testing
m_seki
2
120
ドメインモデリングにおける抽象の役割、tagless-finalによるDSL構築、そして型安全な最適化
knih
11
1.9k
カクヨムAndroidアプリのリブート
numeroanddev
0
430
XSLTで作るBrainfuck処理系
makki_d
0
210
実践ArchUnit ~実例による検証パターンの紹介~
ogiwarat
2
280
地方に住むエンジニアの残酷な現実とキャリア論
ichimichi
2
630
KotlinConf 2025 現地で感じたServer-Side Kotlin
n_takehata
1
220
Featured
See All Featured
The Pragmatic Product Professional
lauravandoore
35
6.7k
Bootstrapping a Software Product
garrettdimon
PRO
307
110k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
44
2.4k
Intergalactic Javascript Robots from Outer Space
tanoku
271
27k
What's in a price? How to price your products and services
michaelherold
245
12k
Building Better People: How to give real-time feedback that sticks.
wjessup
367
19k
Producing Creativity
orderedlist
PRO
346
40k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
48
5.4k
VelocityConf: Rendering Performance Case Studies
addyosmani
330
24k
Mobile First: as difficult as doing things right
swwweet
223
9.7k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
29
9.5k
Building a Modern Day E-commerce SEO Strategy
aleyda
41
7.3k
Transcript
Carthageを使ってみて 自作ライブラリにも適用してみた話 2016/07/22 Retty Tech Cafe@Retty
自己紹介 ・Kohei Tabata(@nerd0geek1) ・iOS/Mac/tvOS Developer ・Saib Studio LLC ・Fastlane大好き ・最近はBLEと仲良し。
Saib Studio LLC Kohei Tabata
Next! Remote ・LT/プレゼン用iOS・Macアプリ ・iOSアプリからMacのスライドを操作可能 ・便利なタイマー機能付き! Macアプリはこちら http://saib-stud.io/Next_Installer.pkg
目次 ・CocoaPodsとCarthageの違い ・Carthageのプロジェクトへの導入 ・Carthageの自作ライブラリへの適用
Carthage使ってますか?
CocoaPods vs Carthage
CocoaPods ・rubyで書かれたパッケージマネージャー ・Objective-C/Swiftライブラリが対象 ・iOS4以上(Swiftライブラリを使う場合はiOS8以上)で利用可能 ・ライブラリはプロジェクトのビルド時にコンパイルされる。
Carthage ・Swiftで書かれたパッケージマネージャー ・Objective-C/Swiftライブラリが対象 (Objective-Cも使える、とご指摘くださった@ikesyoさん、ありがとうございます。) ・iOS8以上で利用可能 ・frameworkをビルドし、プロジェクトに取り込む
Carthageのプロジェクトへの導入
Swiftがまだ1.x系だった頃…
None
ビルド速度改善のために導入 (+static libraryとuse_frameworks!同時に使えなかったため)
Cartfile
carthageコマンド carthage update --platform iOS platform指定の理由は以下の2つ ・ビルド時間短縮のため(デフォルトでは全platformが対象となる) ・iOS以外のplatformを対象としたビルドでコケることが多いため
時間短縮に役立ってくれた (SnapKitだけコケる、ということもたまにありますが)
ライブラリの作成とCarthage対応
ライブラリの作成 ・同時並行で抱えているプロジェクトが多い (常駐先1-2、自社2、個人2-3) ・似たような機能を実装することが多い ・ライブラリ化して使いまわしたい欲求 ・インターフェイス分離の原則に従った設計を行うために、 実験的にライブラリ化したい
ライブラリの作成 ・実装者が2人以上いる場合はREADME.mdを用意 ・ただ、場合によってはリリースを優先してREADMEなどは 後から追加したい場合がある
CocoaPodsの場合 ・.podspecの作成 ・README.mdの作成 ・サンプルプロジェクトの作成 ・CocoaPodsへの登録 などなどやることが多い。
Carthageの場合 ・Build SchemeをShared Schemeに変更する のみ。
まとめ ・Carthageはビルド時間の短縮に良い ・Swiftでライブラリをカジュアルに作って使う、という 最初の一歩が踏み出しやすい
ご静聴ありがとうございました
参考 • メッセージングアプリSync開発の舞台裏(iOS) (http://engineer.wantedly.com/2015/09/09/sync-messenger-ios-project.html) • Carthage/Carthage (https://github.com/Carthage/Carthage) • CocoaPods/CocoaPods (https://github.com/CocoaPods/CocoaPods)