Slide 1

Slide 1 text

Carthageを使ってみて 自作ライブラリにも適用してみた話 2016/07/22 Retty Tech Cafe@Retty

Slide 2

Slide 2 text

自己紹介 ・Kohei Tabata(@nerd0geek1) ・iOS/Mac/tvOS Developer ・Saib Studio LLC ・Fastlane大好き ・最近はBLEと仲良し。 Saib Studio LLC Kohei Tabata

Slide 3

Slide 3 text

Next! Remote ・LT/プレゼン用iOS・Macアプリ ・iOSアプリからMacのスライドを操作可能 ・便利なタイマー機能付き! Macアプリはこちら http://saib-stud.io/Next_Installer.pkg

Slide 4

Slide 4 text

目次 ・CocoaPodsとCarthageの違い ・Carthageのプロジェクトへの導入 ・Carthageの自作ライブラリへの適用

Slide 5

Slide 5 text

Carthage使ってますか?

Slide 6

Slide 6 text

CocoaPods vs Carthage

Slide 7

Slide 7 text

CocoaPods ・rubyで書かれたパッケージマネージャー ・Objective-C/Swiftライブラリが対象 ・iOS4以上(Swiftライブラリを使う場合はiOS8以上)で利用可能 ・ライブラリはプロジェクトのビルド時にコンパイルされる。

Slide 8

Slide 8 text

Carthage ・Swiftで書かれたパッケージマネージャー ・Objective-C/Swiftライブラリが対象 (Objective-Cも使える、とご指摘くださった@ikesyoさん、ありがとうございます。) ・iOS8以上で利用可能 ・frameworkをビルドし、プロジェクトに取り込む

Slide 9

Slide 9 text

Carthageのプロジェクトへの導入

Slide 10

Slide 10 text

Swiftがまだ1.x系だった頃…

Slide 11

Slide 11 text

No content

Slide 12

Slide 12 text

ビルド速度改善のために導入 (+static libraryとuse_frameworks!同時に使えなかったため)

Slide 13

Slide 13 text

Cartfile

Slide 14

Slide 14 text

carthageコマンド carthage update --platform iOS platform指定の理由は以下の2つ ・ビルド時間短縮のため(デフォルトでは全platformが対象となる) ・iOS以外のplatformを対象としたビルドでコケることが多いため

Slide 15

Slide 15 text

時間短縮に役立ってくれた (SnapKitだけコケる、ということもたまにありますが)

Slide 16

Slide 16 text

ライブラリの作成とCarthage対応

Slide 17

Slide 17 text

ライブラリの作成 ・同時並行で抱えているプロジェクトが多い (常駐先1-2、自社2、個人2-3) ・似たような機能を実装することが多い ・ライブラリ化して使いまわしたい欲求 ・インターフェイス分離の原則に従った設計を行うために、 実験的にライブラリ化したい

Slide 18

Slide 18 text

ライブラリの作成 ・実装者が2人以上いる場合はREADME.mdを用意 ・ただ、場合によってはリリースを優先してREADMEなどは 後から追加したい場合がある

Slide 19

Slide 19 text

CocoaPodsの場合 ・.podspecの作成 ・README.mdの作成 ・サンプルプロジェクトの作成 ・CocoaPodsへの登録 などなどやることが多い。

Slide 20

Slide 20 text

Carthageの場合 ・Build SchemeをShared Schemeに変更する のみ。

Slide 21

Slide 21 text

まとめ ・Carthageはビルド時間の短縮に良い ・Swiftでライブラリをカジュアルに作って使う、という 最初の一歩が踏み出しやすい

Slide 22

Slide 22 text

ご静聴ありがとうございました

Slide 23

Slide 23 text

参考 • メッセージングアプリ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)