CocoaPodsについて

ドキュメントを読んでみよう

CocoaPods は、Xcode プロジェクトのライブラリ依存関係を管理します。

ライブラリ管理システムということですね。そういえばたしかに普段iosディレクトリにいって、pod updateしてました。

プロジェクトの依存関係は、Podfile と呼ばれる単一のテキスト ファイルで指定されます。CocoaPods は、ライブラリ間の依存関係を解決し、結果のソース コードをフェッチしてから、Xcode ワークスペースでそれらをリンクしてプロジェクトをビルドします。

ライブラリ間の依存関係とは、ライブラリAを実行するためにはライブラリBが必要という状況は、ライブラリAはライブラリBに依存しているといえる。
この依存関係を解決して、結果のソースコードを読み込んでから、Xcode workspaceでライブラリとリンクしてプロジェクトをビルドしている。

CocoaPods は Ruby で構築されており、macOS で利用可能なデフォルトの Ruby でインストールできるそうで、日本で開発されたRubyで構築されてるとか少し感動する。

pod install と pod updateはいつ使用すればいい?

pod install

プロジェクトのライブラリを初めて取得するときに使用するが、Podfileを編集してライブラリを追加、更新、または削除するときにも使用する。

  • 新しいライブラリがダウンロードされるたびに、ライブラリごとにインストールしたバージョンがPodfile.lockに書き込まれる。Podfile.lockは各ライブラリのバージョンを追跡してバージョンを保持する。そうすることで共同開発などでライブラリのバージョンの差異を防ぐ。

  • pod installを実行するとPodfile.lockにまだリストされていないライブラリの依存関係が解決される。

最初だけ使用するコマンドだとおもっていたけど、追加や更新のときもinstallするんですね。

pod update

CocoaPods はにリストされているバージョンを考慮せずpod update PODNAMEに、ポッドの更新されたバージョンを見つけようとする。Pod を可能な限り最新のバージョンに更新する。

Pod名を指定せずに実行するpod updateはリストにあるすべてのPodを可能な限り最新バージョンに更新する。

いつもpod update だけ使用しているけど、特定のライブラリをupdateできるみたい。

インストールについて

CocoaPodsはbrewでもgemでもインストールすることができる。
どちらもインストールしてるとうまく動かないことがあり、当初brewでインストールしていたけど公式はgemでのインストールを案内してたので、gemのインストールに切り替えた。
今動いているpodが、brewでいれたものかどうかは、pathをみればわかる。

$which pod

PodfileとPodfile.lock

Podfileは「ライブラリのバージョン指定などをするファイル」です。
Podfile.lockは「ロック(固定)されたバージョンの情報が格納されているファイル」です。.lockファイルは、pod initやpod install時に書き換えられる。

Podfile.lockをGit管理することで、共同開発するときのバージョン差異をふせぐことができます。わかりやすく説明してる記事がありました。


この記事が気に入ったらサポートをしてみませんか?