アプリ向けの GoogleAnalytics の利用が 2019 年 10 月を持って終了する事がアナウンスされて衝撃を受けた iOS アプリエンジニアの namikata です。いこーよアプリの効果分析では、主に GoogleAnalytics のデータを元に日々の分析を行っていましたので、サービス終了は大きな打撃になりました。
アプリの効果分析では、大まかにまとめると以下のようなツールを使って今まで行っていました。
- 毎日ウォッチするデータ KGI, KPI( いこーよアプリの場合は口コミ投稿数や、スポットの行きたい数など )
- スプレッドシートの GoogleAnalytics アドオンを利用して、スプレッドシートで毎日チェック
- 昨対や iOS と Android の効果比較など、定期的にチェックするデータ
- Google Analytics のマイレポートの作成や、定点観測用として DataPortal(GoogleAnalytics のデータを利用) でチェック
- 利用している OS のバージョンや、アプリのバージョンの割合など、不定期に確認したいデータ
- GoogleAnalytics のコンソールでチェック
Google Analytics で収集したイベントデータを中心に分析を行っていたので、サービス終了に合わせて、 Analytics のツールを刷新する必要がでてきました。リプレイスするのでもっとデータドリブンな開発ができるように、いけてる BI ツールを使おうとか、色々検討するポイントはありますが、今回の効果分析ツールのリプレイスのゴールは、ミニマムに「今までできていた分析が出来ること(低コスト(工数、予算を含む)だと嬉しい)」といった、現状維持を目指すリプレイスになりました。
現状維持を目指すリプレイスでは、最終的に、以下の形に落ち着きました。
- Firebase Analytics でイベント収集 + BigQuery へエクスポート
- Google DataPortal で BigQuery を可視化
- 個別で集計したい場合は BigQuery のコンソールから Query 発行
なぜ、このような形に落ち着いたのか、各種ツールの選定理由や、導入時に気をつけるポイントなどをまとめていきたいと思います。
Firebase Analytics でイベント情報を収集する
Google Analytics のコンソール画面でもお知らせが出ているように、Firebase Analytics を利用する事にしました。元々いこーよアプリでは Firebase Analytics をリリース当初から使っていた為、イベント情報はある程度 GoogleAnalytics と併用して収集してありました。新規でやる方もイベント情報の収集はほぼ Firebase Analytics 一択になるんじゃないかなと思います。無料で利用を開始できるし、生ログは BigQuery にエクスポートすれば、自由に閲覧する事ができます。
Firebase Analytics を利用する事を決めたら、すぐさま従量課金( Blaze プラン)に変更し、 Analytics のデータを BigQuery へエクスポートする設定を入れてください。Firebase の WEB コンソールでポチポチっとすれば設定できます。プランを Blaze に変更しても、今まで通り Firebase の無料枠は適用されるので、下手な使い方をしなければいきなり費用が発生しだすという事はありません。収集するログのデータが膨大な場合は BigQuery のストレージ料金が発生しますが、それも微々たるものだと思います。Firebase Analytics の WEB コンソールでの分析は、 Google Analytics のコンソールと比べると、おもちゃみたいなもので、ある条件で Filter したデータを見たい。みたいな事をやる為には、 BigQuery に検索をかけないといけないので、BigQuery のエクスポート設定をしておきましょう。
本番用の Firebase アカウントとステージング用の Firebase アカウントはそれぞれ作成する
イベント情報は Firebase Analytics で収集し、 BigQuery のログを解析する事が決まりました。 BigQuery は、ログを検索する際のデータ量に応じて課金されるので、本番と同じイベントを収集するステージング用の Firebase アカウントを作成しておきましょう。BigQuery と分析ツールを連携する際の検証として大いに役に立ちます(むしろそれがないと怖くて触れません)
iOS の場合は本番用とステージング用の plist をそれぞれ配置し AppDelegate で読み込むファイルを書き換えてあげます。
#if DEBUG let firebasePlistName = "GoogleService-Info-Debug" #else let firebasePlistName = "GoogleService-Info" #endif if let firebaseOptions = FirebaseOptions(contentsOfFile: Bundle.main.path(forResource: firebasePlistName, ofType: "plist")!) { FirebaseApp.configure(options: firebaseOptions) }
Firebase Analytics と BigQuery で分析できる事を把握する
GoogleAnalytics で分析できていた事を、 Firebase Analytics と BigQuery でやるとしたらどうなるでしょうか。
1. 毎日ウォッチするデータ KGI, KPI( いこーよアプリの場合は口コミ投稿数や、スポットの行きたい数など )
収集したデータにコンバージョンを付け、Firebase の WEB コンソール で確認できます。 Chrome の起動時に開くページに設定しておけば、ストレスなく日々のデイリーデータはチェックできると思います。
2. 昨対や iOS と Android の効果比較など、定期的にチェックするデータ
Firebase の WEB コンソールでやれない事はないですが、ものすごく辛い作業になります。Firebase Analytics + BigQuery だけではどうにもならない為、分析ツールの導入が必要になります。
3. 利用している OS のバージョンや、アプリのバージョンの割合など、不定期に確認したいデータ
Firebase Analytics の WEB コンソールには、Google Analytics のコンソールで行えていたような、アプリの利用バージョンが 2.0.0 以上のユーザーの割合をフィルターして検索する、といったような使い方が出来ません。BigQuery のデータと連携できる分析ツールを導入するか、 BigQuery に直接 Query を投げ結果を取得する必要があります。
今回は、不定期に見るデータだったので、必要になったら都度 BigQuery に計測用の Query を投げて計測していこうとなりました。Query を投げる頻度が多いという事は、それは定点観測したいデータという事になるので、「2」の定期的にチェックするデータに分類されるはずです。
定期的にチェックするデータを分析する為のツールを選定する
Google Analytics で行えていた、今まで通りの効果分析を行う為には、 Firebase Analytics + BigQuery では足りないといったことが分かりました。Firebase Analytics の WEB コンソールではさくっとデータを確認する事はできますが、 Google Analytics のレポートの作成や、セグメントで iOS と Android を選択して効果比較をしたり、みたいな事はできません。
↓こうゆうのはない
BigQuery のデータをグラフなどで可視化する分析ツールを利用します。BigQuery のデータを分析できるのに有名なサービスとしては Tableau, Looker, Google DataPortal, Re:dash あたりが候補に上がると思いますが、いこーよアプリでは Google Analytics 時代から DataPortal の導入実績があったので、 DataPortal を利用して、定点観測を行う方向になりました。 今回のゴールが「今までできていた分析が出来ること(低コスト(工数、予算を含む)だと嬉しい)」なので、 DataPortal が一番低コストだったからです。ただ DataPotarl は表示が遅かったり(BI Engine でメモリ沢山積めば高速化しそう)、Google Analytics のようにレポートをその場で任意のキーワードで filter するみたいな事ができないので、Google Analytics のマイレポートの部分を DataPortal で補っているような使い方をしています。将来の展望としては、最近 Google に買収された Looker を使って分析の深堀りをしたいなと思っています。
↓ DataPortal で BigQuery のデータをグラフ化したもの
DataPortal を使って BigQuery のデータを可視化
事前準備
BigQuery は、データを検索する際のデータ量に応じて課金が発生するので、意図せず、金額が発生してしまう事があります。なので、まずやるべき事は、上限の設定と、現在の課金状況をすぐに確認できるようにしておくのが安心安全というものです。
GCP の BigQuery の管理コンソールから、 1 日の使用量の上限を設定する
BigQuery には 1 日の使用量の上限を設定できるようになっているので、自分達のサービスに合った適切な設定をしておきましょう。 1 日 1 TB に制限すれば、毎日 Max まで利用したとしても 30 日間で 30 TB なので 30 * 5 = 150ドルぐらいの費用で頭打ちに設定することができます。
BigQuery の使用量を DataPortal でグラフ化する
DataPortal を利用した事がない方は、練習も兼ねられる良い材料です。BigQuery に発行された Query のログを BigQuery に保存して、グラフ表示します。こちらの記事が大変参考になりました。ありがとうございます。
アプリのイベントのレポートを作成する
これでやっと準備が整ったので、アプリで分析したいデータを Google DataPortal でグラフ化していきます。
さすが Google 同士のサービス。 DataPortal から接続したいデータソースで BigQuery を選ぶと、何も迷うことなくデータの連携が行え、すぐにグラフを描画する事ができるようになります。ここの所は Firebase Analytics の BigQuery 用の DataPortal のテンプレートが用意されているので、そのテンプレートを覗けば色々と使い方が見えてくるかと思います。
簡単に以下のような定点観測用のシートを作成できました。
BigQuery BI Engine を使ってグラフの描画を高速化する
DataPortal を使えば、すぐにその遅さに気づくと思います。描画に数 10 秒待たされます。いくら費用を捻出できるかによりますが、BI Engine を使う事で、リスクを追うことなく、グラフ描画を高速化できるので、積極的に利用していきましょう。また、メモリ上にキャッシュされるみたいなので、 BigQuery の使用量の削減にも繋がるらしいです(どれぐらい削減されるのかは正直分かってないです)。今はベータ版なので利用は無料ですが、ベータが外れると課金が発生するので、発生しても問題ない金額設定にしておいた方がいいと思います(BI Engine の最低使用料金は 1 GB で 30$/月 ぐらいです)。BI Engine を有効にすると、グラフの右上に稲妻マークが表示され、BI Engine が有効に機能しているか確認する事ができます。
まとめ
アプリ向けの Google Analytics の廃止に伴う、データ分析ツールのリプレイスですが、最終的には以下になりました。
1.毎日ウォッチするデータ KGI, KPI( いこーよアプリの場合は口コミ投稿数や、スポットの行きたい数など )
Firebase の WEB コンソール
2.昨対や iOS と Android の効果比較など、定期的にチェックするデータ
BigQuery + DataPortal
3.利用している OS のバージョンや、アプリのバージョンの割合など、不定期に確認したいデータ
BigQuery のコンソールで Query 発行
なんとか日々の数値を継続してウォッチしていけるようになりましたが Google Analytics の時よりも、計測のしやすさや使い勝手は落ちてしまっていると感じています。 いこーよアプリチームには、専属のデータアナリストはおらず、各メンバーがそれぞれ効果の分析を行っていて、データドリブンな開発はまだまだやれていないので、今後は効果分析にも更に力を入れつつ、アプリをグロースさせて行きたいと考えています。今回のデータ分析ツールのリプレイスを機に Looker への興味が非常に強く湧いてきたので Looker を今後深堀りしていきたいなと思っています。
データドリブンな開発をしたいエンジニアを積極採用中ですので、是非、お気軽にお声がけください。