CocoaPodsインストール方法(Bundler経由編)

注意: この記事は1年以上前に掲載されたものです。情報が古い場合がありますのでお気を付け下さい。

CocoaPodsのインストール方法ではCocoaPodsのインストール方法について説明を行っていたが、その中で現在私がよく使う方法についての説明が漏れていたので、今回はその方法について記載を行いたい。

Bundlerを使ってCocoaPodsを導入する

前回の記事で私が説明していなかったのは、Bundlerを使ってCocoaPodsを導入、使用する方法であった。この方法は他の方法とは違ったある特徴を持っている。その特徴がある面ではかなり便利である。

CocoaPodsはRubyGemsやHomebrewなどを使ってシステムレベル、あるいはユーザーレベルで導入することができるが、Bundlerを使った場合は、アプリ/フレームワークのプロジェクトレベルにCocoaPodsの範囲を絞ることができる。

この方法を使うことで、複数のアプリプロジェクトごとに違うバージョンのCocoaPodsを混在させることができるようになり、複数人で開発を行った際のCocoaPodsのバージョン差異に起因するさまざまな問題を防ぐことができるようになる。また、rbenvを併用した場合は、Rubyバージョンも指定することができるようになる。

インストール手順

Bundlerをインストール済みかどうか確認する

以下のコマンドで、Bundlerをインストール済みかどうか確認する。

bundle version

もし、Bundler version 1.17.2 (2018-12-19 commit 3fc4de72b)のようにバージョンが表記されたら、インストール済みなので、Bundleのインストールに進む。未インストールであれば、

Bundlerをインストールする(Bundler未インストール時の場合)

RubyGems Bundlerのインストールが完了していない場合は、以下のコマンドでBundlerをインストールする。

macOS付属のRubyを使ってインストールする場合
sudo gem install bundler
rbenv等でインストールしたRubyを使ってインストールする場合
gem install bundler

CocoaPodsをプロジェクトにインストールする

Gemfileを作成する

Bundlerが利用可能であれば、CocoaPodsをインストールしたいアプリのプロジェクトのある場所で以下のコマンドを実行する。

bundle init

上記のコマンドを実行することで、Gemfileの雛形が生成される。生成されたら、編集を行い、CocoaPodsをインストールすることを明示する。

# frozen_string_literal: true

source "https://rubygems.org"

git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }

gem "cocoapods" # ←これを追加する

その後、以下のコマンドでCocoaPodsをはじめとした必要なパッケージ群をインストールする。

bundle install --path=vendor/bundle

上記の対応でインストールが完了すれば、プロジェクトでCocoaPodsが利用可能になる。

利用方法

Bundlerを使用してCocoaPodsをインストールした場合でも、通常のようにCocoaPodsを利用することができる。ただし、Bundler経由でインストールをした場合は、CocoaPodsのコマンドの前に「bundle exec」を付与する必要がある。

例えば、CocoaPodsのパッケージをインストールする場合は

pod install

というコマンドで行うが、Bundler経由でインストールを行った場合は

bundle exec pod install

とする必要がある。

メリットとデメリット

Bundlerを使用してCocoaPodsを使う方法のメリットとしては、まずシステムまたはユーザー単位でなく、プロジェクト単位でCocoaPodsをインストールすることで、それぞれのプロジェクトごとにバージョンを振り分けることができる点が大きい。特に複数人で開発を行う場合、ユーザー単位でインストールするCocoaPodsを使った場合、それぞれの環境でCocoaPodsのバージョンに差異が発生しないようにする必要があるが、Bundlerを使ってインストールした場合は、プロジェクトごとになるため、システムに依存するCocoaPodsを使うということでなければ、バージョンの差異を減らすことができる。また、Rubyのバージョンもrbenvなどを使うことで統一を測ることもできる。

一方で、デメリットもある。デメリットとしては、プロジェクトごとに独立したCocoaPodsをインストールする必要があるため、開発環境のストレージを圧迫する可能性が高まる点、Rubyのバージョンを統一する場合はrbenvなどと併用する必要がある点、コマンドの記述量がやや増える点などがあげられる。

上記のようなメリットとデメリットがあるが、個人的には複数人での開発を考えた時にはツール類のバージョンの差異が発生しないようにできるという点を鑑みるとBundlerを使用してインストールという方法はかなり理にかなっているものと考えている。

最後に

今回は、Bundlerを使用してCocoaPodsを導入する方法について説明を行った。最近はCarthageやSwift Package Managerなども登場しており、かつてのようなCocoaPods優勢ということもなくなっているものの、一方で依然としてCocoaPodsでないと利用できないパッケージもあることから、必要に応じて使い分ける必要があり、CocoaPodsも重要なパッケージ管理ツールであると言える。

その上で、今回はCocoaPodsをBundlerを使ってプロジェクトレベルでインストールするようにして、それぞれのプロジェクトで独立したCocoaPodsにすることで複数人の開発だったりとか複数のプロジェクトが絡んだ時に影響が起きないようにするために有効な方法について書いてみた。

タイトルとURLをコピーしました