Swift用依存管理マネージャのCocoaPodsを導入する
iOSアプリ開発時にHTTP通信が必要になったのでライブラリを探していると、CocoaPods と、同様のツールでわりと新しめのCarthageというのがあった。
最終的にはCarthageを採用したので別の記事に書きますが、CocoaPodsもインストール試してみたので、導入の備忘録と感想を残しておきます。
Cocoapodsとは?
CocoaPods Guides - Getting Started
CocoaPods manages library dependencies for your Xcode projects.
The dependencies for your projects are specified in a single text file called a Podfile. CocoaPods will resolve dependencies between libraries, fetch the resulting source code, then link it together in an Xcode workspace to build your project.
Ultimately the goal is to improve discoverability of, and engagement in, third party open-source libraries by creating a more centralised ecosystem.
頑張って訳すとこんな感じ?(間違ってたらすいません。)
CocoaPodsはあなたのXcodeプロジェクトのライブラリ依存性を管理します。 あなたのプロジェクトへの依存性はPodfileと呼ばれるひとつのテキストファイルで指定されます。 CocoaPodsはライブラリ間の依存性を解決し、結果のソースコードを取得し、その後あなたのプロジェクトをbuildするためにXcodeのworkspaceにリンクします。
要するに依存性解決ツールのようです。Rubyでいうとbundler、(私のように)PHPerからするとcomposerみたいな感じでしょうか。ライブラリも探せるようなので、雰囲気的にはpackagistも兼ねてる感じ。
まずはCocoaPodsをインストールしてみる
gemでインストールします。
$ sudo gem install cocoapods
sudo
を使わない時は--user-install
フラグをつけるなどが推奨されています。
Podfileに依存ライブラリを書く
Xcodeプロジェクトディレクトリ直下でpod init
コマンドを叩くと、Xcodeプロジェクト設定が読み込まれ、Podfileが自動生成されます。
$ pod init $ ls Podfile Podfile
Xcode設定が読み込まれて自動的に設定されるようです。下記は
- プロジェクト名が「hoge」
- 対応バージョンが6.0以上
の設定です。
$ cat Podfile # Uncomment this line to define a global platform for your project # platform :ios, '6.0' target 'hoge' do end target 'hogeTests' do end
Podfileにライブラリを設定する
HTTP通信ライブラリであるAlamofireを使いたいので、README.mdを参考に設定してみます。
source 'https://github.com/CocoaPods/Specs.git' platform :ios, '8.0' use_frameworks! target 'hoge' do pod 'Alamofire', '~> 1.2' end
ライブラリをインストールする
設定できたらpod install
します。
$ pod install
*.xcworkspace
というのが出来上がるので、今後はいつものxcodeprojの代わりに、これを使います。
$ open App.xcworkspace #=> Xcodeが開く
CocoaPodsの感想
CocoaPodsは*.xcworkspace
というファイルを作るようで、はてxcworkspaceとは何ぞやということで調べるも、いまいちコレだという資料も見当たらず良くわからずじまい。
要するにこれを使うとライブラリをリンクした状態でプロジェクトを開けるらしいのだけど、仕組みがわからないとハマったときどうにもならなくなりそう。