CocoaPodsとは、SwiftとObjective-CによるCocoaプロジェクトで使用可能な、自分の作ろうとしているアプリケーションで、外部ライブラリ(Pod)を利用する際に必要な依存性の解決を自動的に行ってくれるソフトウェアです。
わかりやすい例で例えると、ある料理を作ろうとしているときに、プロの料理人が料理器具の準備から食材の下ごしらえまでを全部やってくれる、といった感じでしょうか。あくまでもメインで料理を行うのはあなた自身です。CocoaPodsを使ったからと言って簡単にアプリが完成するわけではありませんが、アプリの基盤を整える時短には良い方法だと考えています。
iOSやOSXアプリケーション向けであるため、WindowsやLinuxでは使用できません。
CocoaPodsをお手持ちのmacにインストールすることから始めましょう。手順を示します。https://cocoapods.org本家サイトには最新の情報がありますので、必ず確認をしてください。
目次
CocoaPodsのインストール
ターミナルからCocoaPodsをインストール(エラー回避も)
ターミナルを起動しましょう。「アプリケーション>ユーティリティ>ターミナル」にあります。ターミナルとは、1行毎に命令を打っていくコマンドラインツールを使用するための端末(ターミナル)プログラムです。
Windowsで言うところのコマンドプロンプト(cmd.exe)に当たります。CocoaPodsを使用する際には必ずターミナルを使うことになると思いますので、このようにDockへ追加しておくと起動が楽ですよ。
Dockへ追加するためには、アプリのアイコンを「control + クリック」(右クリックもしくは副ボタンのクリックとも呼ぶ)し、「オプション」>「Dockへ追加」にて追加することが出来ます。
このターミナルで下記のコマンドを打ちます。※$の後から打ちます。
$ sudo gem install cocoapods -n /usr/local/bin
コマンドの最後にはenterキーを押してください。
※追記 macOS High sierra以降では「-n /usr/local/bin」の追加が必要になります。
追加していない場合、エラーになりますので注意してくださいね!
gem install -nの-nオプションはバイナリファイルを置く場所を指定するということ。
そしてパスワードを聞かれますので、現在のログインパスワードを入力しenterキーを押すと暫くしてインストールが完了します。(管理者権限を持っているアカウントでログインしている必要があります)
以上にてCocoaPodsをお使いのMacにインストールできました。次はXcodeで使うための設定ファイルであるPodfileの準備をしましょう。
Podfileの準備
CocoaPodsはPodfileと呼ばれるテキストファイルに入れたいPodの情報を記載することで使うことが出来ます。まずはPodfileを用意しましょう。ファイル名は「Podfile」です。拡張子は不要です。ファイルの配置場所はXcodeプロジェクトファイルのルートフォルダ(hogehoge.xcodeprojファイルがある場所)です。
Podfileの中身
Podfileの中身はこのようなテキストファイルになっています。
platform :ios, '8.0' use_frameworks! target 'MyApp' do pod 'AFNetworking', '~> 2.6' pod 'ORStackView', '~> 3.0' pod 'SwiftyJSON', '~> 2.3' end
Xcodeで新規emptyファイルから作成し、0から全て手で記述してもよいのですが、より簡便で確実な方法を取りましょう。
Pod initコマンドで自動的にPodfileを生成する
ターミナルでXcodeプロジェクトのあるフォルダに移動します。ターミナルに「cd」と打ち込んだあと、1つだけスペースをいれ、目的のフォルダをドラッグアンドドロップする事でパスが入力されます。ちなみにcdとはchange directoryの略で、コマンドラインでディレクトリ(フォルダ)を移動する際に使うコマンドです。「cd 目的ディレクトリ」というように使用します。
ドラッグアンドドロップでそのフォルダ(ディレクトリ)までのパスが自動的に入力されます。
ここでenterを押すとそのフォルダに移動します。
$ ls
とタイプしenterを押すとディレクトリの中身が表示されます。
$ pod init
とタイプすることでXcodeプロジェクトから自動的にPodfileが生成されます。生成されたPodfileの中身はこのようになっています。
# Uncomment this line to define a global platform for your project # platform :ios, '9.0' target 'ChozaiCalcLegacy' do # Comment this line if you're not using Swift and don't want to use dynamic frameworks use_frameworks! # Pods for ChozaiCalcLegacy target 'ChozaiCalcLegacyTests' do inherit! :search_paths # Pods for testing end target 'ChozaiCalcLegacyUITests' do inherit! :search_paths # Pods for testing end end
このファイルの中にはターゲット毎にPodfileを指定できる状態になっています。この内部の9行目にある# Pods for 〜〜〜の行の直下にインストールしたいPodsを書いていきます。
記載後の部分を抜粋します。
# Pods for ChozaiCalcLegacy pod 'AFNetworking', '~> 2.6' pod 'ORStackView', '~> 3.0' pod 'SwiftyJSON', '~> 2.3'
ここでは3つのPodsをインストールするように設定しています。なお、どのようなPodsが存在するかを調べるには、CocoaPodsの公式サイトを使いましょう。この記事の下部で紹介いたします。
pod installコマンドでPodfileを元にpodをインストール
Podfileを記述した後はインストール作業になります。そのまま続けてコマンドを打ちます。
$ pod install
このコマンドにてXcodeプロジェクトフォルダに対して変更が加えられ、Podがインストールされます。
これでCocoaPodsによるPodのプロジェクトへのインストールが完了しました。各Podの動作に必要なframewrokなどをプロジェクトに追加してくれています。
なお、Podのバージョンが上がった時などにPodをアップデートしたい場合はpod updateと打つことでプロジェクト内部のPodのバージョンアップを行うことが出来ます。ただし、必ずプロジェクトのバックアップを取ってから行うようにしてください。Podのアップデートが原因でバグを起こすことがあります。
プロジェクト名.xcworkspaceファイルから起動する
プロジェクト名.xcworkspaceという白いアイコンのファイルからプロジェクトを開くことが出来ます。xcworkspaceからプロジェクトを開くことでPodを使うことが出来たり、Podfileを編集したり出来ます。導入されたPodで有れば使うことが出来るようになります。
#import <Reachability/Reachability.h>
と.mファイルに書けばすぐにReachabilityが使えるようになります。
CocoaPods自体が存在していなかったときは、必要なライブラリ(frameworkなど)を自分でプロジェクトに使いする必要がありました。多数の外部ライブラリを導入する際には骨が折れる作業だったと思います。
ただ、CocoaPodsも万能ではないので、プロジェクトや自分の技量に応じて導入の可否を検討してください。
Podをプロジェクトから削除する場合
何らかの理由でプロジェクトからPodを削除したい場合、下記のサイトを参考とすると、このような手順で削除することが出来ます。
http://qiita.com/satoshi_imanishi/items/3aabf6919cd2a4a05307
ディレクトリから関連ファイルを削除
プロジェクトのディレクトリから、
該当のファイルとフォルダを全て削除します。・
Podfile
・Podfile.lock
・/Pods
・xcworkspace
CocoaPodsのバージョン自体が変わったのか、上記のリンク先手順とはframeworkから削除するファイルが異なっています。プロジェクト名.xcodeprojファイルを開きましょう。
ターゲット>Build phasesで関連設定を削除
Xcodeプロジェクトファイル内のCocoaPodsに関連する設定も削除する必要があります。
ターゲット>Build phases内
下記項目をターゲット毎に削除しましょう。右側の「×」ボタンをクリックすることで削除できます。
- [CP] Check Pods Manifest.lock
- [CP] Embed Pods Frameworks
- [CP] Copy Pods Resources
ターゲット>Build phases>Link Binary With Libraries内
同様にして下記項目をターゲット毎に削除します。
- Pods_ターゲット名.framework
を削除してください。左下の「ー」ボタンを押すことで削除することができます。
プロジェクト>Info内にあるConfigurationsを確認
プロジェクト>Info内にあるConfigurationsの項目を確認しましょう。DebugおよびRelease共にターゲット毎にBased on Configuration Fileが設定されていますので、Podsから始まるターゲット以外(ここではNone)を指定します。
Cleanしてビルドするとエラーは出ずにビルドできました。これにてプロジェクトからPodを削除することが出来ました。
お疲れさまでした。
CocoaPods公式サイトでPodを検索しよう
CocoaPods公式サイトではPodを検索することが出来ます。
https://cocoapods.org
まとめ
CocoaPodsは外部ライブラリを非常に手軽にXcodeプロジェクトに導入できるツールです。GoogleのAdsenseやFirebaseなどのライブラリもCocoaPods経由で配付されているため、簡単にインストールし使用することができます。
しかしながら中の仕組みが解らなくても使えてしまうその簡便性ゆえにCocoaPodsに起因するバグなどの対処を行うにはさらに勉強する必要があります。
CocoaPodsに限りませんが、ツールに使われてしまっては本末転倒なので、計画的に利用していきましょう。記事始めの例ですと、プロの料理人が用意した「そば切り包丁」で魚を切るようなものでしょうか。適材適所です。
最後までお読みいただきありがとうございました。