CarthageでGPUImageをSwiftから使う
XCodeで何かを作ろうとした場合、標準のframework以外のフレームワークを導入したくなります。
Objective-Cな時代にはCocoaPodsを使うのが定石だったようですが、Swift時代にはどうしたらよいのか、調べていたところCarthage(カルタゴ)というものが存在している事を知りました。
https://github.com/Carthage/Carthage
備忘録代わりに、Carthageを使ってGPUImageを使ったアプリケーションを作成してみます。Carthageの使い方の説明を主とするため、アプリケーション自体は、GPUImageのSimpleSwiftVideoFilterExampleをそのまま用います。
https://github.com/BradLarson/GPUImage/tree/master/examples/iOS/SimpleSwiftVideoFilterExample
0. 前提
この記事はYosemite 10.10.1、XCode 6.1.1の環境で確認しています。
Carthageは0.4.0を使いました。
実機確認する場合、実機とiOS Developer Programへの登録が必要となります。
1. Carthageのインストール
CarthageのREADME.mdを読めば分かりますが、pkgファイル、Homebrew、makeの3通りの方法でインストール出来ます。
私はHomebrewでbrew install carthage
しました。
2015-01-19時点で、Homebrew経由でインストールされるのは0.4.0でした。
pkg版は0.5.2まで上がっており、いろいろ機能が追加されているようですが、今回の場合は0.4.0の機能でも問題ありません。
2. XCodeプロジェクトを作る
ベースとなるXCodeプロジェクトを作ります。
XCodeを開き、”File -> New -> Project…”を選択し、”iOS -> SingleView Application”を選んで、Nextを押します。
次の画面でLanguageにSwiftを、DevicesにiPhoneを選びます。
他の項目は適当に入力してください。
Nextを押すと、プロジェクトの保存場所を選択すると、新しいプロジェクトが作られ、XCodeに表示されます。
3. Cartfileの作成
Cartfileを作成します。Cartfileは利用したいframeworkを記述したファイルです。npmのpackage.json、mvnのpomです。
作成したプロジェクトのディレクトリの*.xcodeprojと同じ階層に、Cartfileという名前のテキストファイルを作成し、以下のように記述します。
git "https://github.com/BradLarson/GPUImage.git" == 0.1.6
==
の部分には他にも~>
と>=
が使えます。バージョンはsemverで解決されるそうです。
対象となるリポジトリがgithubの場合、以下のような指定も出来ます。
github "BradLarson/GPUImage" == 0.1.6
4. 外部フレームワークのビルド
ターミナルで、プロジェクトのディレクトリに移動します。
その位置でcarthage update
を実行すると、対象のgitリポジトリからソースコードがプロジェクトディレクトリ下の”Carthage/Checkouts/”以下にコピーされます。
その後、ビルドが実行され、生成物がプロジェクトディレクトリ下の”Carthage/Build”以下に出力されます。
5. 外部フレームワークをプロジェクトに追加
XCodeのプロジェクトのTARGETSのGeneralタブにある、”Linked frameworks and Libraries”に、”Carthage/Build/iOS/GPUImage.framework”をドラッグアンドドロップします。
次にBuild Phasesタブの左上にある”+”を押し、”New Run Script Phase”を選びます。
Shell欄の下の”Type a Script or …”と書いてある欄に、/usr/local/bin/carthage copy-frameworks
と入力し、”Input Files”に$(SRCROOT)/Carthage/Build/iOS/GPUImage.framework
と入力します。
ここまででCarthageを使って、frameworkを導入するという作業は終わりました。後はコードを書いていくだけです。
6. コードを書く
ここからはCarthageとは関係なく、GPUImageViewの使い方になります。
最初にMain.storyboardを開き、ViewのCustom ClassをGPUImageViewに変更します。
次にViewController.swiftの内容を、SimpleSwiftVideoFilterExampleのそれと同じにします。
7. 実行する
iPhoneに転送して実行してみましょう。
8. 感想
他言語における依存性解決ツールに比べると、やっていることは単純ですが、XCodeというGUIが大前提のツールと共存させようとすると、これが正解な気がします。
CocoaPodsとは違い、ソースのダウンロードとビルド以上の事は一切行わないところも、個人的には好感が持てます。
Bridging Headerもいらないので、これからは積極的に使っていき、かつ自分でライブラリを書くときも、*.frameworkを吐くように作ろうと思います。
0 件のコメント:
コメントを投稿