7
1

More than 3 years have passed since last update.

[iOS]CocoapodsでもCarthageでもない、Firebaseライブラリの導入方法

Last updated at Posted at 2019-12-26

はじめに

iOSアプリにFirebaseを導入する際、選択肢として主にCocoapodsCarthageの2通りがありますが、それぞれ一長一短があります。
Firebaseをよく利用する私としては、どちらも使いにくいなと感じました。色々調べていく中で、公式ドキュメントにあるような第3の方法がシンプルで早かったので、その方法をまとめました。

Cocoapods

導入が簡単だが、ビルド時間がかかる(特にFirestore)。Xcodeのビルドキャッシュもあるので、ある程度は全体的なビルド時間の短縮はありますが、それでも長いと感じます。

Carthage

FirebaseのリポジトリをみてみるとCarthageはまだベータ版だそうです。ビルドはバイナリを使っていますが、依存関係が複雑でXcodeに導入するときに注意を払わないとなりません。

第3の方法

この2つ以外の方法としては、直接githubからバイナリをダウンロードして使用する方法です。公式ページにも記載がありますが、「ダウンロードしてくれ」だけだったのでスクリプトを組むことにしました。
最新のリリースはこちらからダウンロードできます。スクリプトを組むことで、ダウンロードが簡単になります。

メリット

  • スクリプトを動かすだけで指定のバージョンをダウンロード
  • ダウンロードしたバイナリは、それぞれのプロダクトごとにフォルダ分けされているので、Xcodeにバイナリを追加する際に迷わない
  • Carthage用の追加Build Phaseはない

デメリット

  • ダウンロード時のサイズは約1GB
    • MLを使わない場合は、ダウンロード後に削除することで、ディスク上でのサイズは300MB以下
  • バージョンは手動で管理する

導入方法

導入方法としては、ダウンロードスクリプトを作成し、プロジェクトをgithubなどからチェックアウト後に実行します。gitにスクリプトを追加しておくのが良いでしょう。

環境

  • ターミナルが使える
  • wgetが使える(Homebrewでインストール)
  • プロジェクトのトップディレクトリにFirebase/のディレクトリを作成するので、.gitignore/Firebase/を追加している
    • 最初に/が入っていることに注意

スクリプト

以下のスクリプトを作成し、実行します。

#!/bin/sh
# Firebaseをダウンロード

if [ -d "Firebase" ]; then
echo "directory Firebase/ is not empty";
exit 0;
fi

wget https://github.com/firebase/firebase-ios-sdk/releases/download/[version]/Firebase-[version].zip -O Firebase.zip
unzip Firebase.zip
rm -f Firebase.zip
rm -rf Firebase/ML*

[version]については、Firebaseのgithubから必要なバージョンを指定します。
個人的にですが、ファイル名はfirebase.shとしscripts/ディレクトリに配置しております。さらに実行権限を付加して実行しやすくしています。

Xcodeに追加

必要なフレームワークをFirebaseに追加していきます。FirestoreやStorageなど、プロダクトごとにディレクトリに分かれているので、選びやすいかと思います。

  • 必要なフレームワークを追加
    • Xcode11以降については、EmbedDo not embedに変更します。
  • ターゲットのビルド設定で、Other Linker Settings にObjCリンカーフラグを追加します。

(2020/04/28 追記)
最近ではFirebaseでもxcframeworkに対応しているものが増えてきました。
必要なフレームワークをを追加する際は、プロジェクトのFrameworksフォルダにDrag&DropするとDo not embedやパスの設定を自動でしてくれます。Project > General > Frameworks, Librariesから追加すると、Info.plistが見つからないなどのエラーが出ていました。

注意点

特にチーム開発における注意点ですが、この方法ではバージョン管理はしてくれません。なので、バージョンを変更した際にはチームに通知し、それぞれでFirebaseディレクトリを一度削除してから上記スクリプトを実行してもらう必要があります。

終わりに

出来るだけシンプルにかつ早く導入できる方法を書きました。もちろんデメリットはありますが、運用でカバーできると考えております。

7
1
1

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
7
1