目的
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 install
とpod 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というのは、導入しているライブラリのバージョンやバージョン指定情報が記載されているファイルのこと。
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