読者です 読者をやめる 読者になる 読者になる

騒音のない世界 BLOG

コンピュータの話と、音楽の話

CocoaPodsのinstallとupdateを正しく使い分ける

TL;DR:

  • 新規でpodをインストールする -> pod install
  • podを削除する -> pod install
  • podのバージョンを上げる -> pod update [PODNAME]
  • 利用可能な新しいバージョンがあるpodをリストアップする -> pod outdated

CocoaPods

CocoaPodsはiOSで幅広く使われているライブラリ管理ツールです。ライブラリの検索、再帰的な依存性の解決、コードの取得・管理までやってくれる便利なツールで、導入されている方は多いかと思います。

CocoaPods.org

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 installPodfile.lockを見て、まだインストールされていないものだけ依存性を解決し、すでにインストールされているものに関しては利用可能な新しいバージョンがあったとしても何もしない

  • pod update [PODNAME]Podfile.lockを無視してPodfileで指定されている利用可能なバージョンの最新を取ってくる

    • PODNAMEを省略するとすべてのpodをまとめて更新する。

おわりに

pod updateでも新規インストールできるので、誤情報を信じて新規インストールのたびにpod updateしてる方も多いのではないでしょうか。私がそうでした。新規に入れたいだけなのに関係ないpodまで更新されるし、新規に入れるものはPODNAMEに名前を指定できないので困っていたのですが、公式にわかりやすく丁寧な記事があって助かりました。

日本語のブログ記事は結構古いものも多いので、CocoaPodsの公式サイトのGUIDEを読むと正確な情報を得られるし、高機能なツールなので知らなかった使い方などわかってヨイですね。

最後に蛇足ですが、pod outdatedを使うと新しいバージョンがあるかどうかを調べられるので便利です。定期的にライブラリに新しいバージョンが出ていないかチェックするのに使うと良いかと思います。