自分専用で使う CocoaPods 用の非公式 Pods を作成する

CocoaPods

自分で作ったライブラリを管理するのにも CocoaPods が便利そうだったので、自分専用の Pods リポジトリを作成してみました。

公式の Pods のようにバージョンによるライブラリの管理も簡単です。


以前にCocoaPods を使ってオープンソースのライブラリをプロジェクトで簡単に管理する で使ってみたCocoaPods ですが、これを自作ライブラリの管理に使うのも便利そうに思えてきました。

CocoaPods は通常、公式の Pods リポジトリ を使ってライブラリのインストールを行いますが、CocoaPods では公式の Pods リポジトリだけでなく、非公式のものを自分で用意して使えるようになっています。

非公式な Pods リポジトリを作成する

CocoaPods の非公式 Pods リポジトリを作成するのにpod repo という便利なコマンドがあるのですけど、まずはそれを使わずに、ターミナルから所定の場所 (~/.cocoapods/repos/ ) へリポジトリを用意する方法でやってみます。

便利なpod repo コマンドの使い方と動きについては後半で紹介します。

Pods リポジトリを作成する

CocoaPods で使う Pods リポジトリは ~/.cocoapods/repos/ ディレクトリに置く必要があります。

今回は ESPods という名前のリポジトリを、このディレクトリに作成してみることにしました。手順としては、まずESPods ディレクトリを作成して、それをgit init で初期化します。

mkdir ~/.cocoapods/repos/ESPods
git init ~/.cocoapods/repos/ESPods

Podspec ファイルを作成する

リポジトリを作成したら、そこに podspec ファイルを "ポッド名/バージョン/ポッド名.podspec" という階層で作成します。

たとえば "Swim" というポッド名で、バージョンが "1.0.0" であれば、用意する podspec ファイルは~/.cocoapods/repos/ESPods/Swim/1.0.0/Swim.podspec になります。


これをターミナルから直接用意する場合、まずは次のような操作で、格納するディレクトリを作成します。

cd ~/.cocoapods/repos/ESPods

mkdir Swim
mkdir Swim/1.0.0

そしてここに Swim.podspec を作成します。このファイルの中身はこちら で記したように用意します。

これで、非公式な Pods リポジトリが出来上がりました。

作成した Pods リポジトリを検証する

必要に応じて、次のコマンドを実行すれば、作成した非公式リポジトリ内にある podspec ファイルの記載が正しいかを検証できます。

pod repo lint ~/.cocoapods/repos/ESPods

このようにすると、指定した Pods リポジトリ内の podspec ファイルが検証されて、問題なければ次のようなメッセージが出力されます。

Linting spec repo `ESPods`

.

Analyzed 1 podspecs files.

All the specs passed validation.

自作の非公式 Pods リポジトリを使用する

このようにして ~/.cocoapods/repos/ に自分用の Pods リポジトリを用意すれば、あとはこちら で記したような普段どおりの使い方で、自作した Pods リポジトリ内のライブラリを扱うことができます。

もちろん、自作の Pods リポジトリに複数のバージョンを登録して、それらを Podfile でバージョン指定して使うといったことも可能になります。

非公式 Pods リポジトリを簡単に管理する

CocoaPods には自作 Pods リポジトリを管理する pod repo コマンドが用意されていて、それを使えば、上記で手作業で行った操作が簡単になります。

Pods リポジトリを作成する

まず、非公式 Pods を格納する Git リポジトリを作成します。

リポジトリはどこにあっても構いませんが、今回はこちら で用意したGitLab にリポジトリを作成しました。

リポジトリの作成は特に難しいことなく、自由な名前で空のリポジトリを作成すれば大丈夫です。

今回は "ESPods" という名前のリポジトリを作成しました。このリポジトリには、自宅のネットワークから "ssh://gitlab.local/tomohiro/espods.git" でアクセスできるようになっています。

Pods リポジトリを CocoaPods に登録する

リポジトリを用意できたら、これを自分の Mac の CocoaPods に登録します。

pod repo add ESPods ssh://gitlab.local/tomohiro/espods.git

このようにすると、先ほど作成したリポジトリ "ssh://gitlab.local/tomohiro/espods.git" が "ESPods" という名前で、ローカルの CocoaPods に登録されます。

具体的には、Pods リポジトリを登録する所定の場所 ~/.cocoapods/repos/ESPods という名前のローカルリポジトリが生成されます。

Pods リポジトリに podspec ファイルを登録する

登録した Pods リポジトリに podspec ファイルを登録するのも簡単です。

まず、どこでもいいので Mac 内に podspec ファイルを作成します。そして、それを pod repo push を使って Pods リポジトリに登録します。


たとえば Swim.podspec というファイルを作成した場合、これを "ESPods" リポジトリに取り込む場合は、次のコマンドを実行します。

pod repo push ESPods Swim.podspec

このようにすると Swim.podspec の内容が検証された後、問題なければ ESPods リポジトリ (~/.cocoapods/repos/ESPods/ に podspec ファイルが登録されます。

このとき、podspec ファイルの中身に沿って、適切なバージョン番号のディレクトリが自動的に作成されるので便利です。


また、pod repo add で登録したリポジトリそのものにも変更がプッシュされます。

今回は ESPods として "ssh://gitlab.local/tomohiro/espods.git" を登録しましたが、ローカルの ESPods リポジトリだけでなく、このリポジトリにも同時に変更が反映されるので、Pods リポジトリを簡単に最新の状態に保てます。

登録するために作成した podspec ファイルは Pods リポジトリに取り込まれるので、それ以降は元の podspec ファイルは不要になります。そのまま残しておいても、バージョンアップしたときにそれを書き換えて使えて便利です。