Firebase & BigQueryでAndroid アプリの成⻑を支える / SupportingAndroidAppGrowthWithFirebaseAndBigQuery

13d936e697fe0f4fa96f926d0a712f6c?s=47 Sansan
June 20, 2020

Firebase & BigQueryでAndroid アプリの成⻑を支える / SupportingAndroidAppGrowthWithFirebaseAndBigQuery

■イベント 

Sansan Android Engineer's Talk【オンライン開催】

https://sansan.connpass.com/event/176806/

■登壇概要
タイトル:Firebase & BigQueryでAndroid アプリの成⻑を支える
発表者:グローバル戦略統括部 エンジニア 辰濱健一

▼Sansan Builders Box
https://buildersbox.corp-sansan.com/

13d936e697fe0f4fa96f926d0a712f6c?s=128

Sansan

June 20, 2020
Tweet

Transcript

  1. Firebase & BigQuery で Android アプリの成⻑を⽀える 2020/06/20(⼟) Sansan Android Engineer's

    Talk Kenichi Tatsuhama
  2. About me ⾠濱健⼀(Kenichi Tatsuhama) • @tatsuhama50 • Sansan, Inc. Android

    developer • GDG Shikoku Organizer • 徳島県神⼭町在住
  3. About me • Sansan が3社⽬(3社とも徳島県内) • リモートワーク6年⽬ • Sansan 事業部

    (2014/03 〜) • 海外事業、アプリ内製化 • Eight 事業部(2016/03 〜) • 国内事業、海外事業(インド) • グローバル戦略統括部(2020/01 〜) • 海外向け新規事業展開 地⽅からグローバル市場に挑戦中 iOSDC Japan 2018 にて Eight の海外展開の話をしてきました。 https://buildersbox.corp-sansan.com/entry/iosdcjp2018_tatsuhama
  4. 本⽇お話しすること • リリースしたアプリが、どのように使われているか分析するた めのツール、使い⽅を知る • Firebase • BigQuery • Data

    Portal • 分析結果から、アプリの成⻑のためのアプローチを取る → アプリやビジネスの成功につなげる
  5. 【告知】Android の話はこちらをチェック!

  6. Agenda • Firebase とは • BigQuery とは • Firebase を

    BigQuery にリンクする • Firebase が BigQuery に出⼒するデータ • BigQuery からデータを引いてみる • Data Portal を使う • ユーザにアプローチする
  7. Firebase とは

  8. Firebase とは • Google が提供するアプリケーションのバックエンド • 開発⽤ツールだけでなく、品質・分析・拡⼤もサポート https://firebase.google.com/

  9. Firebase とは • 【品質】クラッシュの発⽣状況や詳細を確認できる

  10. その他の機能も活⽤していますか?

  11. Firebase とは • 【分析】Firebase だけでも様々な情報が確認できる • アクティブユーザ • 過去30分のユーザ •

    上位のコンバージョン イベント • 1⽇のユーザー エンゲージメント • アプリでの収益源 • アプリの安定性
  12. Firebase とは • 【分析】Firebase だけでも様々な情報が確認できる • 最新リリースの 導⼊状況 • 新規ユーザの

    獲得⽅法 • ユーザ維持率 • ユーザの 詳細データ • プラットフォーム の内訳
  13. Firebase とは • 【分析】Funnels で離脱ポイントを可視化 ここでの離脱が⼤きい

  14. Firebase とは • 【分析】ユーザセグメントを定義でき、変化率を確認できる ←レベル1をクリアしたユーザ

  15. Firebase とは • 【拡⼤】いわゆるプッシュ通知 • 前述のセグメントに絞って送ることもできる

  16. Firebase とは • 【拡⼤】アプリ内にポップアップを表⽰ • 前述のセグメントに絞って送ることもできる

  17. Firebase とは • これらの分析・拡⼤機能を有効活⽤するために、Firebase に可能な 限り様々な情報を送っておくことをオススメします。 • 例) • User

    property • サービス上の UserId (必要に応じて、組織 Id なども) • 有償ユーザかどうか • アプリ上の設定値(暗号化機能の on / off 値、… • Event • ボタンのタップ • ゲームのクリア • プロパティ • テキストメッセージを送信したイベント:⽂字数 • ゲームをクリアしたときのイベント:かかった時間、スコア
  18. BigQuery とは

  19. BigQuery とは • Google が提供するペタバイト規模の低料⾦フルマネージド ア ナリティクス データ ウェアハウス •

    NoOps(管理するインフラストラクチャが存在せず、データ ベース管理者が必要ない) • 使い慣れた SQL を使⽤してデータから有⽤な情報を⾒つけ出 す作業に集中できる https://cloud.google.com/bigquery/docs
  20. BigQuery とは • 料⾦体系 • ストレージや操作により細か く設定されている • ⼀定の無料枠がある •

    定額プランも⽤意されている https://cloud.google.com/bigquery/pricing - pricing_summary
  21. Firebase を BigQuery に リンクする

  22. Firebase を BigQuery にリンクする • リンクをすると以下のデータにアクセスできるようになる • Google アナリティクス アプリとアプリ

    + ウェブ プロパティのデータ • Firebase 向け Google アナリティクスのデータ • Crashlytics の致命的なクラッシュ イベントと致命的でないクラッ シュ イベント、およびスタック トレースからの詳細 • Predictions の⽣データ • Cloud Messaging の詳細なデータ • キャプチャされた各パフォーマンス モニタリング イベントの詳細 https://support.google.com/firebase/answer/6318765 ※前述の通り、Firebase だけでも様々な分析は可能です。
  23. Firebase を BigQuery にリンクする • リンクの⼿順 • プロジェクトの設定>統合> BigQuery のカードの「リンク」

  24. Firebase を BigQuery にリンクする 有効にしたいサービスをチェック プロジェクトに複数の アプリがある場合は、 絞り込みが可能

  25. Firebase が BigQuery に 出⼒するデータ

  26. Firebase が BigQuery に出⼒するデータ • Firebase プロジェクトごとに分かれ ている • プロジェクト内は、Firebase

    の各 サービスごと • Analytics • Crashlytics • … にテーブルが分かれている 1つの Firebase プロジェクト 別プロジェクト→
  27. Firebase が BigQuery に出⼒するデータ • テーブルをクリックするとスキーマが確認できる

  28. Firebase が BigQuery に出⼒するデータ • パーティション分割テーブル • クエリの⾼速化やコスト削減につながる • ⽇付等でテーブルが分割されている(横断検索も可能)

    https://cloud.google.com/bigquery/docs/partitioned-tables
  29. Firebase が BigQuery に出⼒するデータ • プレビューをクリックすると実際のデータの⼀部を確認できる

  30. Firebase が BigQuery に出⼒するデータ • RDB のように単純な正規化されたテーブルではない • 各⾏に配列、構造体、構造体の配列なども保持している 正規化されたテーブル

    BigQuery のテーブル https://developers-jp.googleblog.com/2017/04/bigquery-tip-unnest-function.html
  31. Firebase が BigQuery に出⼒するデータ • タイプ • プリミティブな STRING, INTEGER,

    BOOLEAN, TIMESTAMP, … に加 え、構造体の RECORD がある • モード • NULLABLE:null 許容型 • REPEATED:繰り返し https://cloud.google.com/bigquery/docs/reference/standard-sql/data-types
  32. Firebase が BigQuery に出⼒するデータ • REPEATED • いわゆる配列 • 各要素は全て同じ型である必要がある

    • ⾮正規化しているが、データウェアハウジングでよく⾏われる • テーブルの結合を⾏わない分、⾼速に検索できる • クエリ実⾏時には UNNEST() 関数を使ってアクセスする
  33. Firebase が BigQuery に出⼒するデータ • UNNEST() 関数 • 繰り返しを全て展開して、別々の⾏にする •

    展開したテーブルを作成するイメージ UNNEST
  34. Firebase が BigQuery に出⼒するデータ • RECORD • いわゆる構造体 • 1つ以上のフィールドを含めることができる

    • フィールドのデータ型は同じでなくてもよい
  35. Firebase が BigQuery に出⼒するデータ • RECORD x REPEATED で記録される例 •

    Firebase に記録するイベントログ • logEvent() 関数で イベント名 と プロパティ を渡す • プロパティは詳細な情報を key, value の集合で渡す(Android : Bundle) ※プロパティを渡さなくても、⾃動的に付与される情報があります イベント名 プロパティ
  36. Firebase が BigQuery に出⼒するデータ • event_params は RECORD x REPEATED

    で記録されている key string_value int_value 繰り返し
  37. BigQuery からデータを 引いてみる

  38. BigQuery からデータを引いてみる • テーブルを選んで「テーブルをクエリ」をクリックすると、 SELECT ⽂が挿⼊される

  39. BigQuery からデータを引いてみる • フィールド名をクリックするとカーソル位置にフィールド名が 挿⼊される ←クリック カーソル位置にフィールド名が挿⼊される

  40. BigQuery からデータを引いてみる • 実⾏をクリックすると結果が表⽰される

  41. BigQuery からデータを引いてみる • 「結果の保存」をクリックすると CSV 等で保存できる

  42. BigQuery からデータを引いてみる

  43. BigQuery からデータを引いてみる • いくつかの SQL ⽂の紹介 • とあるクラッシュをユーザが⼀定期間に何度経験したか? • 背景:⼀定回数経験したユーザには、個別対応を⾏うためユーザを抽出したい

    • そのユーザはクラッシュが起きる前にどういう⾏動をしていたか? • 背景:再現⼿順、条件の確認をしたい • UNNEST() を使った検索 • 背景:イベントやユーザのプロパティを抽出や検索条件にする場合は UNNEST() を使う必要がある
  44. BigQuery からデータを引いてみる • とあるクラッシュをユーザが⼀定期間に何度経験したか? • クラッシュの issue_id は Firebase Crashlytics

    で確認する Your firebase_crashlytics table Firebase ダッシュ ボードだけではわから ない情報が得られる
  45. BigQuery からデータを引いてみる • とあるユーザがクラッシュ前に⾏っていた⾏動を⾒る Your Firebase Analytics table User Id

    Firebase ダッシュ ボードだけではわから ない情報が得られる
  46. BigQuery からデータを引いてみる • UNNEST() を使った検索 UNNEST() を使って、 user_property から user_id

    を引いてみる Your Firebase Analytics table User Id User Id ↑ UNNEST(user_properties) は FROM と⼀緒に使う (繰り返し要素を展開したテーブルになる)
  47. BigQuery からデータを引いてみる • 実際にやってみて… • Firebase ダッシュボードからでは⾒えない情報が取得できる • → 不具合改修やユーザサポートの効率改善

    • ある程度の SQL の知識が必須 • UNNEST() など、BigQuery ならではの知識も必要 • ⾮効率なクエリの実⾏で多額の費⽤が掛からないかちょっと⼼配 • WHERE や LIMIT をかけても安くならない(結果ではなく⾛査対象で課⾦) • 必要な列だけ取得するようにする • SELECT * しなくても、プレビューで具体的なデータはわかる • (効率の良いクエリを考えている時間コストの⽅が⾼いかも?)
  48. Data Portal を使う

  49. Data Portal を使う • Data Portal とは、Google が提供する無料の BI ツール

    • BigQuery 等をデータソースにして、さまざまな⾓度でデータ の分析、レポートを作成できる • SQL の知識は不要 https://marketingplatform.google.com/intl/ja/about/data-studio/
  50. Data Portal を使う • 検索結果のテーブルをデータポータルで調べて可視化 ここでは、Event のクエリ結果で「データを探索」してみます。

  51. Data Portal を使う • 検索結果のテーブルをデータソースにした、Data Portal ド キュメントが作成される ↓イベント名 ↓回数

  52. Data Portal を使う • ディメンションを変更すると、集計⽅法が変わる event_date event_name

  53. Data Portal を使う • ディメンジョンは複数指定が可能 ※event_date と event_name が同じ値でないと、同⼀⾏にならない

  54. Data Portal を使う • さまざまなグラフを追加可能 • 表 • スコアカード •

    期間 • 棒 • 円 • 地図 • Google マップ • 折れ線 • ⾯ • …
  55. Data Portal を使う • ピボットテーブルも作成可能

  56. Data Portal を使う • 他にも… • Query を定期実⾏すれば、⾃動で更新されるレポートが作成できる • BigQuery

    でなくとも、様々なサービスをデータソースにできる
  57. Data Portal を使う • 弊社で分析した例 • 企業ごとの⽉次のアクティブユーザの推移 • アプリバージョンごとのエラー発⽣率 •

    インストール初⽉のアクティビティ数 • → 少なければ CS コミュニケーション • など… • 弊社の KPI ダッシュボード • ⽇次の主要イベント実⾏数の推移 • ユーザの利⽤国分布 • など…
  58. Data Portal を使う • テンプレートも⽤意されています Data Portal の学習や、 KPI ダッシュボードの雛形に使えます

  59. Data Portal を使う ↓[Sample] Crashlytics Sample Data まずはこれで練習!

  60. Data Portal を使う • 実際にやってみて… • SQL の知識がなくても、アプリの傾向を容易に掴むことができる • 開発者が環境を⽤意すれば、分析は他のメンバーに依頼できる

    • 様々な⾓度から、アプリのログを分析することができる • アプリの KPI レポートも作成できる → アプリの利⽤状況の変化や問題を容易に⾒つけることができる
  61. Data Portal を使う(余談) • 個⼈の Eight の データを CSV 出⼒

    して、Data Portal で可視化してみた
  62. ユーザにアプローチする

  63. ユーザにアプローチする • Firebase, BigQuery, Data Portal を⽤いて、特定のユーザセグ メントがあまりコンバージョンしてないことがわかったとする • 例)

    • 古いアプリを使っているユーザ → アップデートのお知らせ • 特定のキャンペーンから流⼊した Android ユーザ → アプリのユースケースを紹介 • ゲームのレベルが1のまま、3⽇間で10回起動しているユーザ → 攻略のヒントを案内 • そのセグメントに特化した内容でアプローチして、アプリの利 ⽤を促進していく
  64. ユーザにアプローチする • セグメントの定義⽅法 • 条件が簡単であれば、Cloud Messaging 等の「ターゲット」で指定 • 複雑であれば Audiences

    を定義する
  65. ユーザにアプローチする • Cloud Messaging 等の「ターゲット」で指定

  66. ユーザにアプローチする • Audiences を定義 • ユーザ⾏動に基づいて定義ができる • 定義後のユーザ⾏動からセグメントに紐付いていく • 過去の⾏動に遡って紐付けられないので注意

    Smarter Segmentation with Audiences and Predictions https://www.youtube.com/watch?v=VPLkd_aqKwU
  67. ユーザにアプローチする • Cloud Messaging と In-App Messaging の違い Cloud Messaging

    In-App Messaging • アプリを起動していなくても端末に届く • アプリが通知許可をしていないと届かない • ⾔語ごとにメッセージを作成する必要があ る • アプリを起動しないと表⽰されない • アプリ内にダイアログを表⽰させる • Cloud Messaging より表現⼒はある • 表⽰のタイミングの制御ができる • 多⾔語対応 (1キャンペーンで複数⾔語を扱える)
  68. ユーザにアプローチする • Cloud Messaging でアプローチする

  69. ユーザにアプローチする • Cloud Messaging でアプローチする • 通知の本⽂やターゲットを設定

  70. ユーザにアプローチする • Cloud Messaging でアプローチする • 配信スケジュールを設定 • 海外展開しているなら「受信者のタイムゾーン」での時刻指定がオススメ •

    繰り返し設定も可能(1回だけ受け取る設定も可能)
  71. ユーザにアプローチする • Cloud Messaging でアプローチする • コンバージョンイベントを設定する(任意) • Cloud Messaging

    によってコンバージョンに⾄ったかが計測可能
  72. ユーザにアプローチする • Cloud Messaging でアプローチする • 必要に応じて細かな設定もできる

  73. ユーザにアプローチする • Cloud Messaging でアプローチする • 配信数・開封率等の確認ができる • アプリごとのフィルタも可能

  74. ユーザにアプローチする • In-App Messaging を使う

  75. ユーザにアプローチする • In-App Messaging を使う • スタイルと内容(カード、モーダル、画像のみ、トップバナー) カード モーダル 画像のみ

    トップバナー
  76. ユーザにアプローチする • In-App Messaging を使う • 宛先選択(Audiences も選択可能) • ローカライズ

  77. ユーザにアプローチする • In-App Messaging を使う • スケジュール設定 • ⽇時だけでなく、どのイベントをトリガーに表⽰するかも設定 例:

    「初めてゲームをクリアした」 ときに表⽰させる
  78. ユーザにアプローチする • In-App Messaging を使う • コンバージョンイベントも設定可能

  79. ユーザにアプローチする • In-App Messaging を使う • その他のオプション

  80. ユーザにアプローチする • In-App Messaging を使う • インプレッション数、クリック数が確認できる

  81. ユーザにアプローチする • アプローチ後は数値が改善されているか確認する • 改善できていた • • 改善されていない • 新たな仮説を⽴て、検証、実施、計測を繰り返す

  82. ユーザにアプローチする • 実際にやってみて • 開発⼯数が少なくて済む • 開発作業は、Firebase SDK の導⼊&イベント埋め込みだけ •

    Firebase ダッシュボードの操作だけで運⽤できるので、運⽤チームにバトンタッチ できる • Cloud Messaging の開封率はそこまで⾼くない… • 通知許可を外されたら届くことはない • 通知は⽬にはしているが、タップして開封していないケースもあるだろう • In-App Messaging は Activity の構造によってはすぐ消える場合がある • Android で Firebase In-App Messaging が表⽰されない問題の workaround https://qiita.com/tatsuhama/items/d9ed9dc4622169d2e105 • Authentication を使っているなら、メール等でのアプローチも検討を
  83. まとめ

  84. まとめ • Firebase を使うと、ダッシュボードでさまざまなアプリの情報 を得ることができる • Firebase の情報は BigQuery に出⼒できる

    • BigQuery でより詳細な分析ができる • Data Portal を使うと、SQL の知識がなくても分析ができる • Firebase にはユーザにアプローチする⽅法も⽤意されている • アプローチしたら効果測定 → データを活⽤して、アプリやビジネスの成功へ! 今回のお話が、みなさんの参考になれば幸いです!