CarthageでCocoa(OSX/iOS)ライブラリを管理しよう


Cocoaフレームワークにおけるライブラリ管理ツール、Carthageの導入と使い方について紹介したいと思います。

なお執筆時の筆者の動作環境は以下になります。

  • OS X 10.11.5
  • Xcode 7.3.1
  • Swift 2.2

Carthageとは

Carthageはシンプルな機能を持つことを目指して作られた、
CocoaフレームワークのSwift製ライブラリ依存関係管理ツールです。
CocoaのライブラリはCocoaPodsが有名ですが、より柔軟に扱えるのがCarthageです。
豊富な機能を備えたCocoaPodsに対して、gitやXcodeに出来ることはそれらに任せようというのがCarthage開発の思想のようです。

ところでCarthageの読み方ですが、カルタゴとカーセッジのどちらが主流なんでしょうか…。
ご存知の方教えてください。

Carthageのインストール

Carthageをインストールする方法は二つあります。

  1. pkgファイルを使う
  2. Homebrewを使う

pkgの場合はCarthage公式リリースからCarthage.pkgをダウンロード・実行し、あとは画面の指示に従ってください。

Homebrewが導入済みの環境であれば次のコマンドを実行すればOKです。
(Homebrewについてはこちら
 $ brew update   
 $ brew install carthage 

一応他に直接cloneしてインストールする方法もありますがオススメはしません。

Carthageを使う

まずはライブラリを導入したいCocoaプロジェクトを用意しておきましょう。
今回はSwiftのhttp通信ライブラリの定番Alamofireをプロジェクトに導入することにします。

Cartfileの作成・編集

プロジェクトのディレクトリ(.xcodeprojのあるディレクトリ)に移動し、Cartfileを作成します。
Cartfileは導入したいライブラリのリポジトリを記述するファイルになります。
 $ cd CarthageSample   
 $ touch Cartfile 

vimなどでCartfileを編集します。
 $ vim Cartfile   
次のように記述してください。
 github “Alamofire/Alamofire”  
また、ここでライブラリのバージョン指定することも可能です。

ライブラリのビルド

次のコマンドでCartfilemに記述したライブラリをビルドします。
 $ carthage update –platform ios   
–platform指定がないと全プラットフォーム向けがビルドされてしまうので、必要なものを指定しておきましょう。

無事完了すれば、プロジェクトのディレクトリにCartfile.resolvedというファイルと
Carthage/Buildというディレクトリが出来ているはずです。
Carthage/Build以下にプラットフォームごとに.frameworkがあります。
carthage_dir

プロジェクトにライブラリを追加

ここからXcode上での作業に移ります。
プロジェクトファイルのGeneral->Embedded Binaries-> + と移動しビルドした.frameworkを指定します。
Add embedded binaries hereに直接ドラッグ&ドロップでも可です。
CarthageSample_xcodeproj

carthage_embedded

次にBuild Phases-> + -> New Run Script Phaseを選択してください。
carthage_new_script

Run Scriptという項目ができるので、選択します。
Shell項目の下の空白に次の記述をしてください。
 /usr/local/bin/carthage copy-frameworks   
またInput Filesにライブラリのパスを次のように指定します。
 $(SRCROOT)/Carthage/Build/iOS/Alamofire.framework   

carthage_run_script_ex

以上でプロジェクトへのライブラリの導入は完了です。

あとはSwiftソースファイルでimport Alamofireを書くことで使えるようになります。

 

まとめ

Cocoaフレームワークにおけるライブラリ管理ツールCarthageの使い方を紹介しました。
CarthageリポジトリのREADMEで謳っている通り、非常にシンプルで扱いやすいツールだと思います。

これから新しいプロジェクトを作成する際には採用してみてはいかがでしょうか。

  • このエントリーをはてなブックマークに追加

PAGE TOP