TL;DR:
- 新規でpodをインストールする ->
pod install
- podを削除する ->
pod install
- podのバージョンを上げる ->
pod update [PODNAME]
- 利用可能な新しいバージョンがあるpodをリストアップする ->
pod outdated
CocoaPodsとは
CocoaPodsはiOSで幅広く使われているライブラリ管理ツールです。ライブラリの検索、再帰的な依存性の解決、コードの取得・管理までやってくれる便利なツールで、導入されている方は多いかと思います。
install と update のよくある間違い
CocoaPodsにはpod install
というコマンドとpod update
というコマンドがあります。「CocoaPods」で検索すると上位に入門記事が色々出てくるのですが、これらのコマンドの使い分けについては間違えているものが多いです。多くの場合書いてあるのは、
- プロジェクトに最初に導入する時だけ
pod install
- それ以降は新規インストールでも
pod update
なのですが、これが間違いです。
本当の使い方
実は、この間違いが結構流布されているようで、公式サイトで言及されていました。
CocoaPods Guides - pod install vs. pod update
日本語で紹介している記事はなさそうだったので、冒頭だけ翻訳したいと思います。
Many people starting with CocoaPods seem to think pod install is only used the first time you setup a project using CocoaPods and pod update is used afterwards. But that's not the case at all.
「CocoaPodsを使い始めた多くの人はpod install
をプロジェクトのセットアップ時に1度だけ使い、その後はpod update
を使うと思っているようだが、まったく違う。」
- Use pod install to install new pods in your project. Even if you already have a Podfile and ran pod install before; so even if you are just adding/removing pods to a project already using CocoaPods.
- Use pod update [PODNAME] only when you want to update pods to a newer version.
「新しいpodをインストールするときには
pod install
を使うこと。すでにPodfileが作られており、以前にpod install
していたとしても、すでにCocoaPodsを導入しているプロジェクトのpodを追加/削除するときであってもそうだ。」「
pod update [PODNAME]
はpodを新しいバージョンにアップデートしたいときだけ使うこと。」
はい、そういうことです。
記事中ではさらにコマンドのディテールも紹介されていますので一読されると良いかと思います。ざっくりいうと以下です。
pod install
はPodfile.lock
を見て、まだインストールされていないものだけ依存性を解決し、すでにインストールされているものに関しては利用可能な新しいバージョンがあったとしても何もしない。pod update [PODNAME]
はPodfile.lock
を無視してPodfileで指定されている利用可能なバージョンの最新を取ってくるPODNAME
を省略するとすべてのpodをまとめて更新する。
おわりに
pod update
でも新規インストールできるので、誤情報を信じて新規インストールのたびにpod update
してる方も多いのではないでしょうか。私がそうでした。新規に入れたいだけなのに関係ないpodまで更新されるし、新規に入れるものはPODNAME
に名前を指定できないので困っていたのですが、公式にわかりやすく丁寧な記事があって助かりました。
日本語のブログ記事は結構古いものも多いので、CocoaPodsの公式サイトのGUIDEを読むと正確な情報を得られるし、高機能なツールなので知らなかった使い方などわかってヨイですね。
最後に蛇足ですが、pod outdated
を使うと新しいバージョンがあるかどうかを調べられるので便利です。定期的にライブラリに新しいバージョンが出ていないかチェックするのに使うと良いかと思います。