Firebaseを導入した話

Posted by rhoboro on 2016-09-18

先日リリースしたAndroidアプリをv1.2にアップデートする際に、GoogleのFirebaseを少し利用してみました。 (ほんとはFirebase自体はv1.1で導入したけど、すぐにv1.2にしてGoogleAnalyticsも追加しました...w)

firebase

Firebaseとは

少し前にGoogleが買収したmBaaSです。
Google/IO 2016でロゴを大々的にリニューアルして発表されましたw

いろんな機能が詰まっている複合的なサービスですが、今回は下記を利用しました。

  • Analytics
    • Google Analyticsのようなイメージ。
    • GAはデータを取集するのみですが、こちらは「収集したデータを活用する」ことを主眼に置いている感じを受けました。
  • Remote Config
    • Web管理画面で設定した値をモバイルアプリなどで簡単に参照できる仕組み。
    • イベントのガイドアプリだったので、「アンケート」項目の表示、非表示の制御に利用。
  • Crash Reporting
    • 名前の通りクラッシュレポート。
    • 導入するのにコードを1行も書く必要なし。

Analytics

最初からアレですが、、、
正直もう少しいろいろできると思っていたので、期待はずれでした。。。
管理画面から確認できるデータ項目が少なすぎます!

public static void sendTalkDetail(Context context, String title, String speaker, String start) {
    FirebaseAnalytics analytics = FirebaseAnalytics.getInstance(context);
    Bundle bundle = new Bundle();
    bundle.putString(FirebaseAnalytics.Param.LOCATION, "show_talk_detail");
    bundle.putString(FirebaseAnalytics.Param.ITEM_NAME, title);
    bundle.putString(FirebaseAnalytics.Param.CHARACTER, speaker);
    bundle.putString(FirebaseAnalytics.Param.START_DATE, start);
    analytics.logEvent(FirebaseAnalytics.Event.VIEW_ITEM, bundle);
}

上記のような、トークセッションのタイトル、スピーカー、日時などのデータを流し込んでみたのですが、管理画面だとこれしか見れない。。。

analytics

かろうじて、左上に view_item と記載してあるのでこのイベントってことは判別できますねw
自分で設定したパラメータは何も見れず、数字が確認できるのみです。
タイトルもスピーカーの名前も見れないので、どのセッションが人気あるかを調べたかったのですが無理でした。 (全てを個別のイベントにすればいけますが、さすがにそこまで頑張る気はなかったですw)

BigQueryにExportすれば、生データを見ることができるようですが、試しにPV数を知りたいくらいの動機であれば素直にGAにしておいたほうが無難です。
というか、私自身も結局GAを導入することになりました。

ただ、GAと違い、ここで取得したデータを利用して、Push通知を配信できるようなのでしっかりと自身のサービスにあった使い方をすれば、活用できるのかもしれません。

Remote Config

つづいて、Remote Config。
恐ろしく、シンプルな管理画面で何も説明する必要ないですね!w

remote-config-1

Web管理画面上の変更は、即座に反映されます。
が、端末でfetch()をする際に、キャッシュ時間を設定することになるので、端末への反映時間はそこ次第ですね。

ちなみに、fetch()は自分で呼び出す必要があります。
fetch()をしないといつまでたっても端末でセットした(xml or HashMap)デフォルト値のままなので、そこは気をつけて下さい。
また、fetch()は5回/1時間くらいの制限があるとのこと。

面白いなと思うの点もあり、下記のように設定値を反映させるユーザーを少し調整できます。 この機能を使うと、A/Bテストや一部ユーザーだけ新機能を先行公開なんてこともできそうですね。

remote-config-2

Crash Reporting

3つ目のサービスは、クラッシュレポートです。

crash-reporting

クラッシュレポートサービスは、Fabric Crashlyticsを使うことが個人的には多いです。
それと比べると導入が楽ですね。 なんたって、コードを1行も書かずに導入できちゃいます。

クラッシュレポートの内容自体は、可もなく不可もなく。
Firebaseを使うなら、build.gradleに1行追加するだけですし、入れておいて損はないサービスだと思います!

全体的な感想

Androidを開発しているGoogleのサービスという安心感もあるので、積極的に使っていくべきサービスです。

もともとmBaaSとしてあったサービスですので、リアルタイムデータベース、認証機能、Push通知機能など、今回利用した機能以外にもいろいろな機能が詰まっています。 そして、それらの完成度も高いはず。
手軽に導入ができて、必要なサービスのみインポートしていく形式ですので、気になった機能があれば使っていきましょう。 サーバーサイドの実装しなくても、簡単なチャットアプリくらいなら爆速で作れそうです!

以上、すごくざっくりですが、Firebaseを触ってみた感想でした!