目的

iOSアプリで使うライブラリ管理ツールとして「CocoaPods」があります。
そのCocoaPodsについてのメモ。

CocoaPodsの使い方としては
アプリディレクトリ配下に設置したPodfileに利用したいライブラリ名を記載後、podのコマンドを実行するだけ。

なんですが、
たったこれだけの運用でも注意しておいた方がよい事があります。


Git管理について

CocoaPodsで追加したものを、Gitとかのソース管理ツールで管理するか問題について。
公式ページCocoaPodsには、

Whether or not you check in your Pods folder is up to you, as workflows vary from project to project. We recommend that you keep the Pods directory under source control, and don’t add it to your .gitignore. But ultimately this decision is up to you:

管理することが勧められているので、した方が良いと思う。(ignoreしない。)

バージョンの記載

Podfileの設定ではライブラリ名の記載と一緒にそのライブラリのバージョンも記入できて、インストールするバージョンを規制できる。

バージョンを記載するかどうかの問題については、
上でかいたGit管理するのであれば、書いていなくても問題ないような気がします。

ただ、その状況でpod installを実行してしまうと、導入ライブラリのバージョンがドカンと変わる可能性があり、ライブラリの利用方法がかわってしまったものがあると、運用にも影響してしまいます。

なので、
*Podfileにはバージョンを記載しておいた方が良い*と思います。
安定verがどれなのか示すためにも。

# 一定のメジャーバージョンに固定
# 以下の場合4.7.XのXの部分だけのマイナーアップデートのみ更新する。

pod ‘Alamofire’, ‘~> 4.7.2’



導入コマンドについて

ライブラリをインストール/アップデートするpodのコマンドとしてはpod installpod update がある。 それぞれの違いを確認するため、helpを見てみると

install Install project dependencies according to versions from a Podfile.lock

update Update outdated project dependencies and create new Podfile.lock


簡単に言うと

  • installは実行時にPodfile.lockを見る。
  • updateはPodfile.lockを見ない。

Podfile.lockというのは、導入しているライブラリのバージョンやバージョン指定情報が記載されているファイルのこと。

公式ページ CocoaPodsには、

When you run pod update PODNAME, CocoaPods will try to find an updated version of the pod PODNAME, without taking into account the version listed in Podfile.lock. It will update the pod to the latest version possible (as long as it matches the version restrictions in your Podfile). If you run pod update with no pod name, CocoaPods will update every pod listed in your Podfile to the latest version possible.


updateはPodfile.lockは関係なしで、既存のプロジェクトに適応できる最新のライブラリを取得してくるようである。

なので、普段はpod installでの運用が良いと思います。


ちなみに、特定のライブラリのみ最新にアップデートする(複数指定可能)

$ pod install Alamofire SwiftyJSON



ライブラリのバージョンの確認

ライブラリのバージョンを確認する方法は以下。

$ pod outdated
  • インストールされているライブラリのバージョン
  • 現設定でインストールが可能なバージョン
  • インストールしているライブラリの最新バージョン

かどうかが確認できる。

自分の環境の場合、

−Alamofire 4.7.3 -> 4.7.3 (latest version 5.0.0-beta.4)

−Firebase 5.15.0 -> (unused) (latest version 5.20.1)

−RealmSwift 3.11.2 -> 3.14.0 (latest version 3.14.0)

  • :アップデートできないライブラリ
  • :現状使われていないライブラリ
  • :アップデート可能ライブラリ

で表示された。


CocoaPodsの削除

CocoaPodsを使わなくなった場合
以下の削除コマンドを実施

rm Podfile
rm Podfile.lock
rm -rf Pods
rm -rf my-project.xcworkspace