ライブラリ管理ツール CocoaPodsのセットアップ

すでに多くの人が書いていますけど、自分の覚書として書き残しておきたいと思います。

iOS appを作っていて、「あー、このUIライブラリ使ってみたいかも。で、CocoaPodsってなにそれおいしいの。」がことの発端。

CocoaPodsって何?

わざわざ説明するようなものでもないですが、CocoaPodsとは何かについて、

CocoaPods is a dependency manager for Swift and Objective-C Cocoa projects. It has over 58 thousand libraries and is used in over 3 million apps. CocoaPods can help you scale your projects elegantly.

と、公式ページに書いている通り、Swift及びObjective-CCocoaプロジェクトのdependency managerがCocoaPodsのようです。

まあ平たく言うと、Swift/Objective-Cのライブラリ管理ツールですかね。

環境

CocoaPodsはrubyで実装されているのでrubyがいります。幸いなことにmacにはrubyがpreinstallされているので、新規にインストールする必要はないです。

rubygemsのインストールが済んでいない方は、

$ sudo gem update --system

上記コマンドでPermissionエラーが出る方は、以下のコマンドをお試しください。

$ sudo gem update --system -n /usr/local/bin

/usr/local/bin はgemのインストール先になります。

CocoaPodsのセットアップ

まずはインストール。CocoaPodsのインストール自体は非常に簡単です。rubyrubygemsの準備ができていれば以下のコマンドを叩くだけです。

sudo gem install -n /usr/local/bin cocoapods

インストールが完了したら、続いてCocoaPodsの環境をセットアップします。

$ pod setup
Setting up CocoaPods master repo
  $ /usr/bin/git clone https://github.com/CocoaPods/Specs.git master --progress
  Cloning into 'master'...
  remote: Enumerating objects: 335, done.        
  remote: Counting objects: 100% (335/335), done.        
  remote: Compressing objects: 100% (258/258), done.        
  remote: Total 2838443 (delta 119), reused 144 (delta 69), pack-reused 2838108        
  Receiving objects: 100% (2838443/2838443), 616.70 MiB | 4.28 MiB/s, done.
  Resolving deltas: 100% (1689056/1689056), done.
  Checking out files: 100% (306661/306661), done.
Setup completed

CocoaライブラリのすべてのSpec(jsonファイル)をgithubからcloneするので、結構時間がかかります。さすが58000相当のライブラリがあるだけありますね。

Setup completed がコンソールに表示されたらセットアップ完了です。

Podsのインストール

CocoaPodsのセットアップが完了したら、実際に開発を行うXcodeプロジェクト内にPods(ライブラリ)をインストールします。

プロジェクトのホーム、つまり ..xcodeprojの置いてあるディレクトリに移動し、pod initのコマンドを実行しましょう。そうするとPodfileが生成されます。

Podfileは必要なライブラリ群を記述するファイルであり、npmでいうpackage.jsonpipで言うrequirements.txtのような存在ですね。

# Uncomment the next line to define a global platform for your project                                                                                                                                      
platform :ios, '9.0'

target 'hoge' do
  # Comment the next line if you're not using Swift and don't want to use dynamic frameworks                                                                                                                
  use_frameworks!

  # Pods for hoge                                                                                                                                                                                  
  pod 'SkyFloatingLabelTextField', '~> 3.0'

end

上記が今回私が編集したPodfileになります。

Xcodeプロジェクト名がhogeという形で記入されていますが、みなさんの環境ではそれぞれのXcodeプロジェクト名が自動で入っているかと思います。

またコメントの記載がある通り、platform :ios, '9.0'の部分はコメントアウトを取り除き、対象となるOS ios、対象となるOSバージョン 9.0を記載しておきましょう。

最後に#Pods for hogeの次の行に必要なPodをバージョンと共に記載します。今回私はSkyFloatingLabelTextFieldというテキストフィールドのライブラリを使いたかったので、上記のように記載しています。

SkyFloatingLabelTextFieldについてはこちらを参照ください。

Podfileの準備ができたら、次は実際にpod installを使ってPodsのインストールを行います。

$ pod install
Analyzing dependencies
Downloading dependencies
Installing SkyFloatingLabelTextField (3.6.0)
Generating Pods project
Integrating client project

[!] Please close any current Xcode sessions and use `hoge.xcworkspace` for this project from now on.
Sending stats
Pod installation complete! There is 1 dependency from the Podfile and 1 total pod installed.

上記でインストールが完了です。

インストール時のログにも書いてありますが、CococaPodsを使ってPodsをインストールした後は今まで使っていたXcodeプロジェクトではなく、Xcodeワークスペースで作業することになります。今回の例ではhoge.xcworkspaceになりますね。

あとは実際にSwiftの中で使ってみるだけ。import SkyFloatingLabelTextFieldでライブラリをインポートして、実際にライブラリを使ってみてください。

まとめ

今回はCocoaPodsをセットアップしCocoaなライブラリをインストールしてみました。このあたりのライブラリの管理に関しては、比較的モダンな言語やフレームワークを使うときは楽で良いですね。

ライブラリを使えると開発がぐっと楽になるので、今後も有用なケースで積極的にライブラリを使っていきたいと思います。

実は初のSwift記事だったりします。実際にiOSのアプリをSwiftで製作中なので、完成次第ここでリリースを告知できたらと思います。乞うご期待。