Firebase

Firebaseの各機能を3行で説明する

Firebase は機能が多すぎてよく分からなかったので、自分の整理用に「 Firebase で何ができるか」をだいたい3行でまとめてみました。

利用可能な環境かどうかは、以下のアイコンで示しています。
… Android 利用可能
… iOS 対応可能
… Web 対応可能

[追記] 新しい機能が増えたので2018/06/27時点で整理しました。

Analytics

Firebase Analytics


イベントベースでデータ収集・分析ができる。無料。
Google 的にアプリの場合は Firebase Analytics を、ウェブサイトの場合は Google Analytics を使うことを推奨している模様

Develop

Firebase Authentication


メールアドレスとパスワードを利用したユーザー認証だけでなく、Google / Facebook / GitHub / Twitter などのアカウントを利用した認証も簡単に実装できる。無料。
ユーザーのメールアドレス等は Authentication 側で管理し、それ以外の会員情報は Authentication から得られる一意なIDを key としてアプリケーションサーバーの Database に保持するのがよさそう。

Firebase Realtime Database


データをクラウド上の NoSQL データベースに保存し、複数のユーザー / 端末間で同期することができる。
オフライン時は端末のローカルキャッシュに保存され、オンラインになったタイミングで同期される。
料金は同時接続数・保存データ量・ダウンロードデータ量によって決まるが、無料枠もある。
※ Cloud Firestore(ベータ版)がリリースされ、現在はそっちのほうが推奨されているようです。

Cloud Firestore


Firebase Realtime Database と似た NoSQL データベース。(違いについてはこちら)2018/06/27 時点ではベータ版。
利用できるデータ型が増えたので、ベータ版であることを気にしなければこちらのほうがいいらしい。
料金は Firebase Realtime Database と若干違い、保存データ量・月間帯域量・データの読み書き量によって決まるが、無料枠もある。

Cloud Storage for Firebase


写真や動画などのコンテンツを保管、取得することができる。
格納先は Google Cloud Storage なので、mruby で動的に画像変換をしてから取得するといったことも可能。
料金は保存データ量・ダウンロードデータ量・アップロード/ダウンロード回数によって決まるが、無料枠もある。
ただし BLAZE プランでは、使用量に応じて料金が変化するので注意が必要。

Firebase Hosting


アセット(HTML、CSS、JavaScript、画像ファイルなど)をホストし、静的なサイトを提供できる。
料金は保存データ量・ダウンロードデータ量によって決まるが、無料枠もある。
HTTP/2 にも対応している。

Cloud Functions for Firebase

Firebase の機能や HTTPS リクエストをトリガーとして、コードを実行できる。AWS でいうところの Lambda 。2018/06/27 時点ではベータ版。
利用できる言語は今のところ node.js のみ。
料金は呼び出し回数・コンピューティング時間によって決まるが、無料枠もある。

ML Kit for Firebase


モバイル向けの機械学習機能が利用できる。2018/06/27時点ではベータ版。
よく使われそうなテキストの認識や顔の検出などの API が揃っている。
料金は API のコール数とカスタムモデルの保存・利用量によって決まるが、無料枠もある。

Stability

Firebase Crashlytics


クラッシュ時のエラーを、類似のスタックトレースのクラスタごとにグループ化し、ユーザーに与える影響の大きさで優先順位付けしたものを Firebase console から確認することができる。無料。
アナリティクスと統合すれば、クラッシュに至るイベントの経路も分かるらしい。

Firebase Performance Monitoring


アプリの起動時間やネットワークリクエストなどを自動的に測定し、パフォーマンスや改善点を Firebase console から確認することができる。無料。

Firebase Test Lab


Google のデータセンターにある端末上でアプリをテストできる。Android / iOS ともに利用可能だが、iOS は 2018/06/27 時点ではベータ版。
料金はテスト回数によって決まるが、無料枠もある。
AWSやXamarinでも類似サービスがあるが、料金や使用できるテストフレームワークが異なるので、こちらを参考に選定するとよさそう。

Firebase Crash Reporting



クラッシュ時のエラーを、類似のスタックトレースのクラスタごとにグループ化し、ユーザーに与える影響の大きさで優先順位付けしたものを Firebase console から確認することができる。Webは非対応。無料。
Android および iOS でいくつかの既知の問題があるらしく、2016/12/8の時点でベータ版となっている。

こちらは非推奨となったので、Firebase Crashlytics を代わりに使用してください。

Grow

Firebase Cloud Messaging


Google の FCM 接続サーバーへ自前のアプリケーションサーバーから XMPP または HTTP プロトコルでデータを送信することで、クライアントにプッシュ通知を送ることができる。無料。
XMPP プロトコルであれば非同期でメッセージングできる。

Firebase Predictions


Google の機械学習機能に基づき、ユーザー行動を予測・分類してくれる。2018/06/27 時点ではベータ版。無料。
Firebase Remote Config / Firebase Notifications と統合することができ、離脱しそうなユーザーに対してのみパラメータを変更したり、通知を送るといったことができる。

Firebase Remote Config


アプリのアップデートなしに、Firebase console からアプリ内のパラメータ(Key-Value 形式)を変更できる。Web は非対応。無料。
見た目を変えるパラメータに利用すれば A/B テストが実現できる。
変更の適用ルールを設定することができ、例えばユーザーの 0.05% だけパラメータを変更するといったことも可能。

Firebase A/B Testing


指標に基づいた A/B テストを行い、その統計を取れる。2018/06/27 時点ではベータ版。無料。
Firebase Remote Config のラッパーのような立ち位置で、テストの目標を立てて、それに基づいたパラメータ変更やメッセージの変更を行い、結果の統計を取るという一連の流れをまとめることができる。

Firebase Notifications


Firebase console からクライアントにプッシュ通知を送ることができる。無料。
Firebase Cloud Messaging と異なり、自前のアプリケーションサーバーは不要。
また、クライアントが所定のトピックに登録していれば、そのトピックにのみ通知を送ることができる。

Firebase App Indexing


アプリを Webブラウザ の Google 検索上に表示することができる。無料。
対応する Web サイトが必要なのと、iOS の場合 Universal Links で起動するので、iOS9 以降でなければ使えない。

Firebase Dynamic Links


例えばメールに記載された URL など、リンクをからアプリを開いた場合に、プラットフォームを意識せずにアプリの対応するコンテンツにリンクさせることができる。無料。
アプリがインストールされていない場合は、もちろんストアページに飛ばすこともできる。

Firebase Invites


アプリの共有ボタンを押したら端末の連絡先にあるユーザーに対して招待状を送信することができる。
Firebase Invites は送信、Firebase Dynamic Links は受信という関係性となる。
おすすめの方法があるので、とりあえずはそれに準拠しておくとよさそう。

まとめ

モバイルアプリで必要な機能が一通り揃っているので、積極的に使っていきたいですね。
触ったことのない機能についても書いていますので、間違っている点ありましたらご指摘お願いします :bow: