Edited at

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

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

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

… Android 利用可能

… iOS 利用可能

… Web 利用可能

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


Analytics


Google Analytics for Firebase



イベントベースでデータ収集・分析ができる。無料。

アプリの場合は Google Analytics for Firebase を、ウェブサイトの場合は Google Analytics を使うことになる。

BigQuery と統合して複雑な解析を行うこともできる。


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/09/26 時点ではベータ版。

利用できるデータ型が増えたので、ベータ版であることを気にしなければこちらのほうがいいらしい。

料金は 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 。

利用できる言語は今のところ node.js のみ。(ただ、TypeScript で記述することもできる)

料金は呼び出し回数・コンピューティング時間によって決まるが、無料枠もある。


ML Kit for Firebase



モバイル向けの機械学習機能が利用できる。2018/06/27時点ではベータ版。

よく使われそうなテキストの認識や顔の検出などの API が揃っている。

料金は API のコール数とカスタムモデルの保存・利用量によって決まるが、無料枠もある。


Stability


Firebase Crashlytics



クラッシュ時のエラーを、類似のスタックトレースのクラスタごとにグループ化し、ユーザーに与える影響の大きさで優先順位付けしたものを Firebase console から確認することができる。無料。

また JIRA と統合することでクラッシュの issue を自動で起票することが、アナリティクスと統合することでクラッシュに至るイベントの経路をトラッキングすることができる。


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 In-App Messaging



ユーザーがアプリを操作しているときに、登録や購入などを促すポップアップやトップバナーを表示することができる。ベータ版。(無料?)

規定のレイアウトをカスタマイズするだけなので実装は簡単だが、そのレイアウトに従う必要がある。


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: