LoginSignup
6
4

More than 3 years have passed since last update.

CocoaPodsでライブラリを簡単に管理する

Posted at

この記事に関して

この記事ではCocoaPodsで外部ライブラリを利用する場合の方法を説明していきます。
※CocoaPodsでのライブラリ公開方法に関しては触れていません。

  • 想定読者: CocoaPodsを初めて利用する方
  • CocoaPodsのバージョン: 1.9.0

CocoaPodsとは

  • SwiftとObjective-CのためのDependency Manager
  • 7万以上のライブラリがCocoaPodsから利用可能
  • 依存関係はPodfileというひとつのテキストファイルで管理する

CocoaPodsのインストール方法

下記実行するだけ。CocoaPodsのバージョンをあげたい場合も下記でOK

sudo gem install cocoapods

CocoaPodsをプロジェクトで利用開始するには

  • プロジェクトのルートディレクトリで pod init コマンドをたたく
  • pod init を実行するとプロジェクト配下に Podfile という設定ファイルが作成されているので開く。Podfileに利用したいライブラリとバージョンを記述していく。
    • Podfileの最初の行はサポートバージョンとプラットフォームを記述する
    • targetセクションは target $TARGET_NAME do で作成し end で終了する
platform :ios, '8.0'
use_frameworks!

target 'MyApp' do
  pod 'AFNetworking', '~> 2.6'
  pod 'ORStackView', '~> 3.0'
  pod 'SwiftyJSON', '~> 2.3'
end
  • Podfileを編集して利用したいライブラリの記述が完了したら、 pod install コマンドをたたく
  • pod install 実行後、依存関係が解決するとワークスペースが自動的に作成されるので、Xcodeでプロジェクトを開いている場合は一度閉じてワークスペースを開き直す
  • ワークスペースを開くと、 Pods というプロジェクトが新たに作成されていることを確認できる。Podsディレクトリ配下に追加したライブラリが格納される
  • 以上でライブラリをimportできるようになる
  • 特定のライブラリをRemoveしたい場合は、Podfileからそのライブラリの記述を削除した上で pod install を実行するとそのライブラリとの依存関係が解消される

既存のワークスペースとCocoaPodsを統合したい場合

  • CocoaPodsを利用すると自動的にワークスペースが作成されるが、既にワークスペースを利用しているプロジェクトでCocoaPodsを利用したい場合はどうすれば良いか
    • Podfileのtargetブロックの外側に、ワークスペース名を一行足すだけでOK
workspace 'MyWorkspace'

pod installpod update の使い分け

pod installpod update コマンドはどう使い分けるか混同されるケースが多く、 pod install はプロジェクトをセットアップする際の最初の1回だけ実行してそれ以降は pod update を使用すると思われがちだが、そうとは限らない。原則として ライブラリを最新バージョンに更新したい場合のみ pod update 、それ以外は pod install を使用する

pod install を実行した場合の挙動

  • pod install コマンドを実行して新しいライブラリをインストールするたびにPodfile.lockにインストールされたライブラリのバージョンが書き込まれる。 Podfile.lockは各ライブラリのバージョンをトラッキングする
  • pod install ではPodfile.lockに記述されたバージョンをインストールし、そのライブラリに最新のバージョンがあるかどうかは確認しない
  • ライブラリがPodfile.lockにまだ記述されてない場合、Podfileに記述されているライブラリのバージョンを取得する
  • CocoaPodsは pod update が実行されない限り、Podfile.lockに記述されたバージョンを優先する

pod update を実行した場合の挙動

  • pod update は特定のライブラリを最新バージョンにあげたい場合のみ実行する
  • Podfileで指定したバージョン制限を超えてない場合、最新のバージョンに更新する

Podfile.lock はgit管理に含めよう

  • Podfile.lock ファイルは pod install を実行すると自動的に作成される、ライブラリバージョンをトラッキングするためのファイル
  • 開発チーム内での意図しないライブラリ更新を防ぐためにも、 Podfile.lock はgit管理に含めた方が良い
    • 例えばプロジェクトでライブラリCの1.0.0を利用していた場合、ライブラリCが最新バージョンの2.0.0をリリースしていてもPodfile.lockがあることで1.0.0を利用していることが担保される
    • 開発メンバー間で同じバージョンのライブラリを利用していることを担保するには、 Podfile.lock をgit管理して pod installpod update コマンドを適切に使い分ける必要がある

Podsディレクトリはバージョン管理すべきか否か

  • Podsディレクトリ配下に追加したライブラリが格納される
  • Podsディレクトリは公式ではgit管理に含めて .gitignore しないことが推奨されいている

git管理する場合のメリット

  • 開発メンバーがCocoaPodsをマシンにインストールしてなくてもリポジトリをcloneしたらすぐにビルドしてアプリを起動できる
  • clone元とclone後で利用しているライブラリが同じであることが担保される

git管理しない場合のメリット

  • リポジトリのサイズが小さくなる
  • 異なるライブラリのバージョンに依存関係を変更した上でブランチをマージする際などにコンフリクトの心配がない

参考
https://guides.cocoapods.org/

6
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
4