読者です 読者をやめる 読者になる 読者になる

Carthageクイックスタートガイド

Carthageとは?

こんにちはVASILYでiOSエンジニアをしているニコラスです。
今回はCarthageの紹介をしたいと思います。

CarthageはiOS / OS X開発のための分散型の (decentralized) パッケージマネージャーです。 既にプロジェクトでCocoaPodsを使っていても、同じプロジェクトでCarthageを使うことができます。 CarthageはCocoaPodsと違って中央レポジトリ型ではないので高速です。 また、100%Swiftで作られているため信頼性が高く、欧米のプログラマーコミュニティで特に盛んに利用されています。 Carthageの基本を学べば(たった5分で)すぐ使えるようになります。

Carthageを使うメリット

  • コミュニティの活発さ
    Carthageのコミュニティはとても活発で、バグがあればだいたい1日以内に修正のPRが送られています。
  • 環境依存性の低さ
    Carthageは100%Swiftでできているので、CocoaPodsと違って、環境ごとのRubyバージョンの違いによる問題に悩まされることがありません。
    Swiftでできているので、Rubyが書けなくてもiOS開発者がOSSに貢献することができます。 (私もPull Requestを送りました。)
  • シンプルさ
    Carthageはダウンロードしたらすぐに使うことができます。CocoaPodsの場合はRubyやRubyGemの依存関係により、CocoaPodsのコマンド実行に失敗することがあります。

インストール

Homebrewでインストールする方法

Carthageをインストールする一番簡単な方法は Homebrewです。

[bash] $ brew install carthage [/bash]

直接ダウンロードする

Homebrewがなくても、GitHubから carthage.pkg をダウンロードすることができます。 Releases Page

ソースコードからインストール

最新の開発バージョンをインストールすることもできます。

[bash] $ git clone git@github.com:Carthage/Carthage.git $ cd Carthage $ make install [/bash]

ライブラリをインストール

Cartfileを作成

Cartfileに含めたいライブラリを書いてください。 CartfileはCocoaPodsのPodfileやBundlerのGemfileと似たようなものです。

データフォーマット

CocoaPodsではインストールするライブラリのリストをPodfileというRubyのDSLで管理します。 Carthageでは、Cartfileというファイルに記述します。 これはOGDLというデータフォーマットで書かれていて、YAMLと似たようなフォーマットです。

Cartfileの文法

  • 一つ目のキーワードにgithubgitを指定します。
  • GitHubでホストされている場合はgithubを使い、それ以外でホストされている場合は、gitを使います。
  • githubキーワードでは、ブランチ名の指定やバージョンを制限することができます。

[bash] github "Username/RepositoryName" "BRANCH_NAME" OR == / >= / <= / ~> [VERSION_NUMBER] [/bash]

実例

[bash] github "ReactiveCocoa/ReactiveCocoa" "master" #最新のmasterブランチをインストール github "rs/SDWebImage" ~> 3.7 #v3.7.xx の最新版をインストール github "realm/realm-cocoa" == 0.96.2 #v0.96.2をインストール [/bash]

コマンドを実行してライブラリをインストール

プロジェクトのルートディレクトリで下記のコマンドを実行してください。

[bash] $ carthage bootstrap #ios, mac, watchos, tvosなど、プラットフォームを指定することもできます。 $ carthage bootstrap --platform ios [/bash]

正常に完了すると、[bash] Carthage/Build , Carthage/Checkouts [/bash]という2つのフォルダが作成されます。

Carthage/Build

  • .framework, .framework.dySYM がここに生成されます。

Carthage/Checkouts

  • ライブラリのソースコードファイルがここにダウンロードされます。

Xcode設定

Run Script Phase を追加する

Add Build Phase

  1. プロジェクトファイルを開く
  2. TARGETS内のプロジェクト名を選択
  3. Build Phasesを選択
  4. 左上の「+」ボタンをクリックから"New Run Script Phase"を選択
  5. コマンド入力欄に /usr/local/bin/carthage copy-frameworks と入力
  6. Input Filesのところにインストールするフレームワークを追加します。

.frameworkをリンクする

  1. プロジェクトファイルを選択
  2. Generalを選択
  3. Linked Frameworks and LibrariesにCarthageフォルダからフレームワークを選択して追加します。 Frameworks Image

これでライブラリのインストールが完了し、アプリをビルドすることができます。

Git管理 - Carthage運用のコツ

  • 基本的にgitにコミットするべきものはCartfileCartfile.resolvedCarthage フォルダです。
  • その理由として、いくつかのメリットがあります。
    • git cloneした時や、ブランチを切り替えるたびにcarthage updateをする必要がありません。
    • また、プロジェクトに新しいメンバーが入った時など、carthage updateするタイミングごとにCartfileのバージョンが違ってしまうといったことが避けられます。

まとめ

今回はCarthageの導入方法を紹介しました。

CocoaPodsは根強い人気がありますが、個人的にはiOS開発の本質とは関係ないところでいろいろ問題がありました。
(RubyGemsのバージョンごとのコンフリクトであったり、CocoaPods自身のアップデートでPodsのレポジトリが破損したりなど)

CarthageはSwiftで作られているため、Swiftのライブラリしか依存関係がありません。

CocoaPodsの運用で苦労している方は、ぜひCarthageを使ってみてください。