Upgrade to Pro — share decks privately, control downloads, hide ads and more …

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

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/

Sansan

June 20, 2020
Tweet

More Decks by Sansan

Other Decks in Technology

Transcript

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

    developer • GDG Shikoku Organizer • 徳島県神⼭町在住
  2. 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
  3. 本⽇お話しすること • リリースしたアプリが、どのように使われているか分析するた めのツール、使い⽅を知る • Firebase • BigQuery • Data

    Portal • 分析結果から、アプリの成⻑のためのアプローチを取る → アプリやビジネスの成功につなげる
  4. Agenda • Firebase とは • BigQuery とは • Firebase を

    BigQuery にリンクする • Firebase が BigQuery に出⼒するデータ • BigQuery からデータを引いてみる • Data Portal を使う • ユーザにアプローチする
  5. Firebase とは • 【分析】Firebase だけでも様々な情報が確認できる • アクティブユーザ • 過去30分のユーザ •

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

    獲得⽅法 • ユーザ維持率 • ユーザの 詳細データ • プラットフォーム の内訳
  7. Firebase とは • これらの分析・拡⼤機能を有効活⽤するために、Firebase に可能な 限り様々な情報を送っておくことをオススメします。 • 例) • User

    property • サービス上の UserId (必要に応じて、組織 Id なども) • 有償ユーザかどうか • アプリ上の設定値(暗号化機能の on / off 値、… • Event • ボタンのタップ • ゲームのクリア • プロパティ • テキストメッセージを送信したイベント:⽂字数 • ゲームをクリアしたときのイベント:かかった時間、スコア
  8. BigQuery とは • Google が提供するペタバイト規模の低料⾦フルマネージド ア ナリティクス データ ウェアハウス •

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

    定額プランも⽤意されている https://cloud.google.com/bigquery/pricing - pricing_summary
  10. Firebase を BigQuery にリンクする • リンクをすると以下のデータにアクセスできるようになる • Google アナリティクス アプリとアプリ

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

    の各 サービスごと • Analytics • Crashlytics • … にテーブルが分かれている 1つの Firebase プロジェクト 別プロジェクト→
  12. Firebase が BigQuery に出⼒するデータ • タイプ • プリミティブな STRING, INTEGER,

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

    • ⾮正規化しているが、データウェアハウジングでよく⾏われる • テーブルの結合を⾏わない分、⾼速に検索できる • クエリ実⾏時には UNNEST() 関数を使ってアクセスする
  14. Firebase が BigQuery に出⼒するデータ • RECORD x REPEATED で記録される例 •

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

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

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

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

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

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

    • BigQuery 等をデータソースにして、さまざまな⾓度でデータ の分析、レポートを作成できる • SQL の知識は不要 https://marketingplatform.google.com/intl/ja/about/data-studio/
  21. Data Portal を使う • さまざまなグラフを追加可能 • 表 • スコアカード •

    期間 • 棒 • 円 • 地図 • Google マップ • 折れ線 • ⾯ • …
  22. Data Portal を使う • 弊社で分析した例 • 企業ごとの⽉次のアクティブユーザの推移 • アプリバージョンごとのエラー発⽣率 •

    インストール初⽉のアクティビティ数 • → 少なければ CS コミュニケーション • など… • 弊社の KPI ダッシュボード • ⽇次の主要イベント実⾏数の推移 • ユーザの利⽤国分布 • など…
  23. Data Portal を使う • 実際にやってみて… • SQL の知識がなくても、アプリの傾向を容易に掴むことができる • 開発者が環境を⽤意すれば、分析は他のメンバーに依頼できる

    • 様々な⾓度から、アプリのログを分析することができる • アプリの KPI レポートも作成できる → アプリの利⽤状況の変化や問題を容易に⾒つけることができる
  24. ユーザにアプローチする • Firebase, BigQuery, Data Portal を⽤いて、特定のユーザセグ メントがあまりコンバージョンしてないことがわかったとする • 例)

    • 古いアプリを使っているユーザ → アップデートのお知らせ • 特定のキャンペーンから流⼊した Android ユーザ → アプリのユースケースを紹介 • ゲームのレベルが1のまま、3⽇間で10回起動しているユーザ → 攻略のヒントを案内 • そのセグメントに特化した内容でアプローチして、アプリの利 ⽤を促進していく
  25. ユーザにアプローチする • Cloud Messaging と In-App Messaging の違い Cloud Messaging

    In-App Messaging • アプリを起動していなくても端末に届く • アプリが通知許可をしていないと届かない • ⾔語ごとにメッセージを作成する必要があ る • アプリを起動しないと表⽰されない • アプリ内にダイアログを表⽰させる • Cloud Messaging より表現⼒はある • 表⽰のタイミングの制御ができる • 多⾔語対応 (1キャンペーンで複数⾔語を扱える)
  26. ユーザにアプローチする • 実際にやってみて • 開発⼯数が少なくて済む • 開発作業は、Firebase SDK の導⼊&イベント埋め込みだけ •

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

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