HTML5Experts.jp

Firebaseで作る簡単リアルタイムウェブアプリケーション(前編 補)

前回の記事は前編と称してFirebaseの機能を簡単に紹介しました。その続きである今回の記事は後編として何かアプリケーションを作りながら個々の機能を詳細に説明するはずでした。
しかし、前編からすでに10ヶ月が過ぎ、途中にGoogle I/Oを挟んだこともあって、すでに全体像が大幅に変更されています。そこで今回は「前編 補」として、いまさらではありますがGoogle I/O前後でFirebaseがどのように変わったのかをざっくりと説明します。

新旧Firebaseの違い

2016年5月のGoolge I/Oのキーノート、そしてそれに続く各セッションでFirebaseの大幅な拡張が発表されました。いったいどのような拡張が行われたのか、それはその発表前後のトップページの文言を比較すると分かりやすいでしょう。

旧Firebase

素晴らしいアプリを開発
モバイル/ウェブアプリのための強力なプラットフォーム
新Firebase

アプリビジネス成功への近道
質の高いアプリを作成し、ビジネスを成功に導く
ために必要なツールとインフラストラクチャ


どうでしょう。新旧の立ち位置の違いが明確に表れていると思いませんか。

つまり、以前のFirebaseは単純にアプリのバックエンド開発/運用の省力化が目的でしたが、新しいFirebaseはアプリビジネスに関わるすべての領域をサポートして、その成功を目指すものになった、ということです。

新しいFirebase

新しいFirebaseの謳い文句は「アプリビジネス成功への近道」でした。それでは、Googleの考える「アプリビジネスの成功」とは何で、そのために拡張された機能にはどういうものがあるのでしょうか。これもFirebaseのトップページに分かりやすい説明があります。

この図から分かるようにGoogleはアプリ提供のプロセスをDevelop(開発)・Grow(拡大)・Earn(収益)の3つのステージで捉えています。さらに各ステージが繋がって輪になっていることから分かるように、この3ステージはアプリが生きている限り、オーバーラップしながら繰り返し現れてはずっと続いていくものです。

また、図をよく見ると3ステージから成る輪の中心にAnalytics(解析)があることが分かります。これらを考え合わせると、Googleが考えるアプリビジネスが成功している状態とは、Analyticsを軸にDevelop・Grow・Earnがスムーズに連携している状態であると理解することができます。

Analyticsと3つのステージ

全体像がわかったところで各ステージをサポートする機能を個別に見ていきましょう。なお、旧Firebaseにはなかった機能名は太字で記しています。

Analytics

先ほども書いたとおりAnalyticsは新しいFirebaseの核となる機能です。ここで得られる情報がDevelop・Grow・Earnすべてのステージを駆動します。

Firebase Analytics
モバイルアプリのイベントログを記録します。初めての起動・アプリ内課金・アプリのバージョンアップなどのデフォルトで記録されるイベントの他、開発者が独自に定義したイベントの発生を記録し、Firebasコンソールで確認できます。対応する環境はiOSとAndroidです。

Develop

認証、ストレージ、テストなどアプリの開発に必要となる各種機能群です。

Firebase Cloud Messaging
以前はGoogle Cloud Messagingと呼ばれていた機能です。対象のカテゴリを指定して通知を送信できます。対応する環境はiOS、Android、Webです。
Firebase Authentication
認証機能を提供します。FacebookやTwitterのアカウントを使用した認証、メールアドレスとパスワードを使用した認証などが利用できます。対応する環境はiOS、Android、Webです。
Firebase Realtime Database
サーバーと全クライアント間でデータが同期されるリアルタイムNoSQLデータベースです。前回で説明したとおり、Firebaseで最も古い、サービスを特徴付ける機能です。対応する環境はiOS、Android、Webです。
Firebase Storage
Google Cloud Storageを内部的に使用するストレージサービスです。Firebase Realtime Databaseとは異なり、写真や動画などの静的なコンテンツを保存するのに適しています。対応する環境はiOS、Android、Webです。
Firebase Hosting
HTMLやJS、CSSなど静的なファイルのホスティングサービスです。Firebaseのコマンドラインツールを使用すれば、コマンドをひとつ実行するだけで簡単にウェブアプリをデプロイできます。対応する環境はもちろんWebだけです。
Firebase Remote Config
アプリの動作や外観をFirebaseコンソールから変更することができます。設定内容はOSの種類や国に応じて切り替えることができる他、例えばランダムに10%のユーザーにだけ特定の機能を有効にすることも可能です。対応する環境はiOSとAndroidです。
Firebase Test Lab for Android
Googleのデータセンター内の様々なAndroid端末上でテストを実行できます。テストの結果はログやスクリーンショットで確認できます。対応する環境は現在のところAndroidだけです。
Firebase Crash Reporting
iOS/Androidアプリのエラーを監視し、エラー発生時にはAnalyticsのイベントを発火し、情報を収集します。対応する環境はiOSとAndroidです。

Grow

公開後のアプリのユーザーベースの拡大に必要な機能群です。

Firebase Notifications
FirebaseコンソールからグラフィカルなUIを通じてユーザーの端末に通知を送信できます。実際のメッセージの送信にはFirebase Cloud Messagingが利用されています。対応する環境はiOSとAndroidです。
Firebase App Indexing
以前はGoogle App Indexingと呼ばれていた機能です。Googleの検索結果にアプリを表示でき、直接アプリを起動できるようになります。対応する環境はiOSとAndroidです。
Firebase Dynamic Links
端末の種類は何か、アプリがインストールされているかどうか、アプリのユーザー登録は完了しているかどうか、などの条件に応じて適切に動作を変えるURLを生成できます。対応する環境はiOSとAndroidです。
Firebase Invites
Firebase Dynamic Linksを使用してユーザーにアプリの招待を送ることができます。対応する環境はiOSとAndroidです。
Google AdWords
Google AdWordsのアカウントをFirebaseプロジェクトにリンクし、アプリの利用状況に応じたターゲットユーザーを指定できるようになります。対応する環境はiOSとAndroidです。

Earn

アプリから収益を得るために必要な機能です。現時点で所属するAPIはAdMobしかないので、構成の都合で無理やり作ったステージの感じも若干あります。

AdMob by Google
以前からあるモバイル広告プラットフォームですが、Firebaseプラットフォームの一員となったことでFirebase Analyticsを分析に利用できるようになりました。対応する環境はiOSとAndroidです。

ウェブアプリ

先のセクションでFirebaseで提供されている機能を一通り簡単に説明しました。太字の項目が多いことからも、旧Firebaseと比較して非常に多くの機能が追加されたことがわかると思います。しかし、ここでウェブ開発者な皆さん(html5experts.jpなので当然そうですよね?)にとって少し残念なお知らせがあります。気づかれた方もいるかもしれませんが、これら新機能の大部分はウェブアプリでは使えません

説明のために各機能の対応プラットフォームと、ついでとして元となったサービスを表形式でまとめました。

ステージ 新Firebase 旧Firebase Web iOS Android
Analytics Firebase Analytics o o
Develop Firebase Cloud Messaging Google Cloud Messaging o o o
Firebase Authentication Firebase Authentication o o o
Firebase Realtime Database Firebase Realtime Database o o o
Firebase Storage (Google Cloud Storage) o o o
Firebase Hosting Firebase Hosting o
Firebase Remote Config o o
Firebase Test Lab for Android Cloud Test Lab for Android o
Firebase Crash Report o o
Grow Firebase Notifications o o
Firebase App Indexing Google App Indexing o o
Firebase Dynamic Links o o
Firebase Invites o o
Google AdWords Google AdWords o o
Earn AdMob AdMob o o


いつからかFirebaseの機能が大幅に拡張されたかのように錯覚していましたが、表を見るとWeb版に関しては旧来のFirebaseと比較してできることにほぼ差がないということが一目瞭然です。Develop、Grow、EarnがAnalyticsを中心に連携するのが新Firebaseの基本理念だったはずですが、Webに関して言えばDevelopしかありません。大丈夫なんでしょうか。

そしてそのDevelopについても、2つの違いのうちのひとつであるFirebase Cloud MessagingについてはGoogle Cloud Messagingから名前が変わっただけで、結局新旧の違いらしい違いといえばFirebase Storageにより静的なファイルが扱いやすくなったことくらいです。

従って、ウェブ開発者の視点では新旧の違いは機能面からではなく、「GoogleがFirebaseに対して本気になっている」という精神面での向上として捉えるのが正解でしょう。実際Firebaseドキュメント日本語化の状況や、公式ブログでのFirebaseの露出も以前とは段違いですので、FacebookのParse.comに対する仕打ちのようなものを心配する必要が直近ではなくなったと考えられるのはウェブ開発者としても非常に喜ばしいことです。

機能面以外の変更

これまで機能面(と精神面)での変更点について紹介してきましたが、最後にそれら以外の変更点についても簡単に触れておきます。

FirebaseコンソールのUI

機能が追加されるに当たって、当然ですがそれらを管理するFirebaseコンソールのUIも変更されています。しかし見た目の変更を除けば、既存機能に関しては左側のナビゲーションに表示される項目が増えただけですので、それほど気にする必要はありません。

ただし、以前のFirebaseで作成したプロジェクトを新しいFirebaseコンソールで管理するには明示的にコンソールをアップグレードし、さらにデータベースの情報をインポートする必要があります。

料金体系

料金体系が大幅に変更されました。元々はFreeプランを含めてクォータの違いごとに6種類あったものが、現在はフリープラン(SPARK)・月額固定制有料プラン(FLAME)・従量制有料プラン(BLAZE)の3種類にまとめられました。

これまでフリープランを使用してた人にとっては、クォータはほぼ変更がないまま、以前は無料では利用できなかった独自ドメインを設定できるようになったということで喜ばしい変更でしょう。

サポート言語の追加

あくまでも実験的にですがC++ SDKが追加されています。モバイルゲームなどパフォーマンスが要求されるアプリでは利用を検討してみてもいいでしょう。

まとめ

身もふたもない言い方をすれば、新しいFirebaseは「これまでGoogleが個別に提供していたアプリ提供者向けサービスを上流から下流までほぼ全て集約した統一ブランドの名前」になりました。

本連載に限っての結論としては「以前とほぼ変わっていない」という理解で構いません。UIの変更はもちろんありますが、できることは変わっていないので取り急ぎは安心して前回の記事を参考にして頂ければと思います。

ということで次回こそ、Firebaseで何かを作りながらより詳細に機能を紹介します。