狠狠撸

狠狠撸Share a Scribd company logo
Firebase & BigQuery で
Android アプリの成?を?える
2020/05/30(?)
Android Bazaar and Conference 2020 Spring
Kenichi Tatsuhama
本?お話しすること
? リリースしたアプリが、どのように使われているか分析するた
めのツール、使い?を知る
? 分析結果から、アプリの成?のためのアプローチを取る
→ アプリやビジネスの成功につなげる
想定読者:開発者、PO/PM、経営者
About me
?濱健?(Kenichi Tatsuhama)
? @tatsuhama50
? Sansan, Inc. Android developer
? GDG Shikoku Organizer
? 徳島県神?町在住
Agenda
? Firebase とは
? BigQuery とは
? Firebase を BigQuery にリンクする
? Firebase が BigQuery に出?するデータ
? BigQuery からデータを引いてみる
? Data Portal を使う
? ユーザにアプローチする
Firebase とは
Firebase とは
? Google が提供するアプリケーションのバックエンド
? 開発?ツールだけでなく、品質?分析?拡?もサポート
https://firebase.google.com/
Firebase とは
? 【品質】クラッシュの発?状況や詳細を確認できる
その他の机能も活?していますか?
Firebase とは
? 【分析】Firebase だけでも様々な情報が確認できる
? アクティブユーザ
? 過去30分のユーザ
? 上位のコンバージョン
イベント
? 1?のユーザー
エンゲージメント
? アプリでの収益源
? アプリの安定性
Firebase とは
? 【分析】Firebase だけでも様々な情報が確認できる
? 最新リリースの
導?状況
? 新規ユーザの
獲得?法
? ユーザ維持率
? ユーザの
詳細データ
? プラットフォーム
の内訳
Firebase とは
? 【分析】Funnels で離脱ポイントを可視化
ここでの離脱が?きい
Firebase とは
? 【分析】ユーザセグメントを定義でき、変化率を確認できる
←レベル1をクリアしたユーザ
Firebase とは
? 【拡?】いわゆるプッシュ通知
? 前述のセグメントに绞って送ることもできる
Firebase とは
? 【拡?】アプリ内にポップアップを表?
? 前述のセグメントに绞って送ることもできる
Firebase とは
? これらの分析?拡?機能を有効活?するために、Firebase に可能な
限り様々な情報を送っておくことをオススメします。
? 例)
? User property
? サービス上の UserId (必要に応じて、組織 Id なども)
? 有償ユーザかどうか
? アプリ上の設定値(暗号化機能の on / off 値、…
? Event
? ボタンのタップ
? ゲームのクリア
? プロパティ
? テキストメッセージを送信したイベント:?字数
? ゲームをクリアしたときのイベント:かかった時間、スコア
BigQuery とは
BigQuery とは
? Google が提供するペタバイト規模の低料?フルマネージド ア
ナリティクス データ ウェアハウス
? NoOps(管理するインフラストラクチャが存在せず、データ
ベース管理者が必要ない)
? 使い慣れた SQL を使?してデータから有?な情報を?つけ出
す作業に集中できる
https://cloud.google.com/bigquery/docs
BigQuery とは
? 料?体系
? ストレージや操作により細か
く設定されている
? ?定の無料枠がある
? 定額プランも?意されている
https://cloud.google.com/bigquery/pricing - pricing_summary
Firebase を BigQuery に
リンクする
Firebase を BigQuery にリンクする
? リンクをすると以下のデータにアクセスできるようになる
? Google アナリティクス アプリとアプリ + ウェブ プロパティのデータ
? Firebase 向け Google アナリティクスのデータ
? Crashlytics の致命的なクラッシュ イベントと致命的でないクラッ
シュ イベント、およびスタック トレースからの詳細
? Predictions の?データ
? Cloud Messaging の詳細なデータ
? キャプチャされた各パフォーマンス モニタリング イベントの詳細
https://support.google.com/firebase/answer/6318765
※前述の通り、Firebase だけでも様々な分析は可能です。
Firebase を BigQuery にリンクする
? リンクの?順
? プロジェクトの設定>統合> BigQuery のカードの「リンク」
Firebase を BigQuery にリンクする
有効にしたいサービスをチェック
プロジェクトに複数の
アプリがある場合は、
絞り込みが可能
Firebase が BigQuery に
出?するデータ
Firebase が BigQuery に出?するデータ
? Firebase プロジェクトごとに分かれ
ている
? プロジェクト内は、Firebase の各
サービスごと
? Analytics
? Crashlytics
? …
にテーブルが分かれている
1つの Firebase
プロジェクト
別プロジェクト→
Firebase が BigQuery に出?するデータ
? テーブルをクリックするとスキーマが確認できる
Firebase が BigQuery に出?するデータ
? パーティション分割テーブル
? クエリの?速化やコスト削減につながる
? ?付等でテーブルが分割されている(横断検索も可能)
https://cloud.google.com/bigquery/docs/partitioned-tables
Firebase が BigQuery に出?するデータ
? プレビューをクリックすると実際のデータの?部を確認できる
Firebase が BigQuery に出?するデータ
? RDB のように単純な正規化されたテーブルではない
? 各?に配列、構造体、構造体の配列なども保持している
正規化されたテーブル
BigQuery のテーブル
https://developers-jp.googleblog.com/2017/04/bigquery-tip-unnest-function.html
Firebase が BigQuery に出?するデータ
? タイプ
? プリミティブな STRING, INTEGER, BOOLEAN, TIMESTAMP, … に加
え、構造体の RECORD がある
? モード
? NULLABLE:null 許容型
? REPEATED:繰り返し
https://cloud.google.com/bigquery/docs/reference/standard-sql/data-types
Firebase が BigQuery に出?するデータ
? REPEATED
? いわゆる配列
? 各要素は全て同じ型である必要がある
? ?正規化しているが、データウェアハウジングでよく?われる
? テーブルの結合を?わない分、?速に検索できる
? クエリ実?時には UNNEST() 関数を使ってアクセスする
Firebase が BigQuery に出?するデータ
? UNNEST() 関数
? 繰り返しを全て展開して、別々の?にする
? 展開したテーブルを作成するイメージ
UNNEST
Firebase が BigQuery に出?するデータ
? RECORD
? いわゆる構造体
? 1つ以上のフィールドを含めることができる
? フィールドのデータ型は同じでなくてもよい
Firebase が BigQuery に出?するデータ
? RECORD x REPEATED で記録される例
? Firebase に記録するイベントログ
? logEvent() 関数で イベント名 と プロパティ を渡す
? プロパティは詳細な情報を key, value の集合で渡す(Android : Bundle)
※プロパティを渡さなくても、?動的に付与される情報があります
イベント名 プロパティ
Firebase が BigQuery に出?するデータ
? event_params は RECORD x REPEATED で記録されている
key string_value int_value
繰り返し
BigQuery からデータを
引いてみる
BigQuery からデータを引いてみる
? テーブルを選んで「テーブルをクエリ」をクリックすると、
SELECT ?が挿?される
BigQuery からデータを引いてみる
? フィールド名をクリックするとカーソル位置にフィールド名が
挿?される
←クリック
カーソル位置にフィールド名が挿?される
BigQuery からデータを引いてみる
? 実?をクリックすると結果が表?される
BigQuery からデータを引いてみる
? 「結果の保存」をクリックすると CSV 等で保存できる
BigQuery からデータを引いてみる
BigQuery からデータを引いてみる
? いくつかの SQL ?の紹介
? とあるクラッシュをユーザが?定期間に何度経験したか?
? 背景:?定回数経験したユーザには、個別対応を?うためユーザを抽出したい
? そのユーザはクラッシュが起きる前にどういう?動をしていたか?
? 背景:再現?順、条件の確認をしたい
? UNNEST() を使った検索
? 背景:イベントやユーザのプロパティを抽出や検索条件にする場合は
UNNEST() を使う必要がある
BigQuery からデータを引いてみる
? とあるクラッシュをユーザが?定期間に何度経験したか?
? クラッシュの issue_id は Firebase Crashlytics で確認する
Your firebase_crashlytics table
Firebase ダッシュ
ボードだけではわから
ない情報が得られる
BigQuery からデータを引いてみる
? とあるユーザがクラッシュ前に?っていた?動を?る
Your Firebase Analytics table
User Id
Firebase ダッシュ
ボードだけではわから
ない情報が得られる
BigQuery からデータを引いてみる
? UNNEST() を使った検索
UNNEST() を使って、
user_property から user_id を引いてみる
Your Firebase Analytics table
User Id
User Id
↑ UNNEST(user_properties) は FROM と?緒に使う
(繰り返し要素を展開したテーブルになる)
BigQuery からデータを引いてみる
? 実際にやってみて…
? Firebase ダッシュボードからでは?えない情報が取得できる
? → 不具合改修やユーザサポートの効率改善
? ある程度の SQL の知識が必須
? UNNEST() など、BigQuery ならではの知識も必要
? ?効率なクエリの実?で多額の費?が掛からないかちょっと?配
? WHERE や LIMIT をかけても安くならない(結果ではなく?査対象で課?)
? 必要な列だけ取得するようにする
? SELECT * しなくても、プレビューで具体的なデータはわかる
? (効率の良いクエリを考えている時間コストの?が?いかも?)
Data Portal を使う
Data Portal を使う
? Data Portal とは、Google が提供する無料の BI ツール
? BigQuery 等をデータソースにして、さまざまな?度でデータ
の分析、レポートを作成できる
? SQL の知識は不要
https://marketingplatform.google.com/intl/ja/about/data-studio/
Data Portal を使う
? 検索結果のテーブルをデータポータルで調べて可視化
ここでは、Event のクエリ結果で「データを探索」してみます。
Data Portal を使う
? 検索結果のテーブルをデータソースにした、Data Portal ド
キュメントが作成される
↓イベント名 ↓回数
Data Portal を使う
? ディメンションを変更すると、集計?法が変わる
event_date event_name
Data Portal を使う
? ディメンジョンは複数指定が可能
※event_date と event_name が同じ値でないと、同??にならない
Data Portal を使う
? さまざまなグラフを追加可能
? 表
? スコアカード
? 期間
? 棒
? 円
? 地図
? Google マップ
? 折れ線
? ?
? …
Data Portal を使う
? ピボットテーブルも作成可能
Data Portal を使う
? 他にも…
? Query を定期実?すれば、?動で更新されるレポートが作成できる
? BigQuery でなくとも、様々なサービスをデータソースにできる
Data Portal を使う
? 弊社で分析した例
? 企業ごとの?次のアクティブユーザの推移
? アプリバージョンごとのエラー発?率
? 国ごとのエラー発?率
? など…
? 弊社の KPI ダッシュボード
? ?次の主要イベント実?数の推移
? ユーザの利?国分布
? など…
Data Portal を使う
? テンプレートも?意されています
Data Portal の学習や、
KPI ダッシュボードの雛形に使えます
Data Portal を使う
? 実際にやってみて…
? SQL の知識がなくても、アプリの傾向を容易に掴むことができる
? 開発者が環境を?意すれば、分析は他のメンバーに依頼できる
? 様々な?度から、アプリのログを分析することができる
? アプリの KPI レポートも作成できる
→ アプリの利?状況の変化や問題を容易に?つけることができる
ユーザにアプローチする
ユーザにアプローチする
? Firebase, BigQuery, Data Portal を?いて、特定のユーザセグ
メントがあまりコンバージョンしてないことがわかったとする
? 例)
? 古いアプリを使っているユーザ
→ アップデートのお知らせ
? 特定のキャンペーンから流?した Android ユーザ
→ アプリのユースケースを紹介
? ゲームのレベルが1のまま、3?間で10回起動しているユーザ
→ 攻略のヒントを案内
? そのセグメントに特化した内容でアプローチして、アプリの利
?を促進していく
ユーザにアプローチする
? セグメントの定義?法
? 条件が簡単であれば、Cloud Messaging 等の「ターゲット」で指定
? 複雑であれば Audiences を定義する
ユーザにアプローチする
? Cloud Messaging 等の「ターゲット」で指定
ユーザにアプローチする
? Audiences を定義
? ユーザ?動に基づいて定義ができる
? 定義後のユーザ?動からセグメントに紐付いていく
? 過去の?動に遡って紐付けられないので注意
Smarter Segmentation with Audiences and Predictions
https://www.youtube.com/watch?v=VPLkd_aqKwU
ユーザにアプローチする
? Cloud Messaging と In-App Messaging の違い
Cloud Messaging In-App Messaging
? アプリを起動していなくても端末に届く
? アプリが通知許可をしていないと届かない
? ?語ごとにメッセージを作成する必要があ
る
? アプリを起動しないと表?されない
? アプリ内にダイアログを表?させる
? Cloud Messaging より表現?はある
? 表?のタイミングの制御ができる
? 多?語対応
(1キャンペーンで複数?語を扱える)
ユーザにアプローチする
? Cloud Messaging でアプローチする
ユーザにアプローチする
? Cloud Messaging でアプローチする
? 通知の本?やターゲットを設定
ユーザにアプローチする
? Cloud Messaging でアプローチする
? 配信スケジュールを設定
? 海外展開しているなら「受信者のタイムゾーン」での時刻指定がオススメ
? 繰り返し設定も可能(1回だけ受け取る設定も可能)
ユーザにアプローチする
? Cloud Messaging でアプローチする
? コンバージョンイベントを設定する(任意)
? Cloud Messaging によってコンバージョンに?ったかが計測可能
ユーザにアプローチする
? Cloud Messaging でアプローチする
? 必要に応じて細かな設定もできる
ユーザにアプローチする
? Cloud Messaging でアプローチする
? 配信数?開封率等の確認ができる
? アプリごとのフィルタも可能
ユーザにアプローチする
? In-App Messaging を使う
ユーザにアプローチする
? In-App Messaging を使う
? スタイルと内容(カード、モーダル、画像のみ、トップバナー)
カード
モーダル 画像のみ トップバナー
ユーザにアプローチする
? In-App Messaging を使う
? 宛先選択(Audiences も選択可能)
? ローカライズ
ユーザにアプローチする
? In-App Messaging を使う
? スケジュール設定
? ?時だけでなく、どのイベントをトリガーに表?するかも設定
例:
「初めてゲームをクリアした」
ときに表?させる
ユーザにアプローチする
? In-App Messaging を使う
? コンバージョンイベントも設定可能
ユーザにアプローチする
? In-App Messaging を使う
? その他のオプション
ユーザにアプローチする
? In-App Messaging を使う
? インプレッション数、クリック数が確認できる
ユーザにアプローチする
? アプローチ後は数値が改善されているか確認する
? 改善できていた
?
? 改善されていない
? 新たな仮説を?て、検証、実施、計測を繰り返す
ユーザにアプローチする
? 実際にやってみて
? 開発?数が少なくて済む
? 開発作業は、Firebase SDK の導?&イベント埋め込みだけ
? Firebase ダッシュボードの操作だけで運?できるので、運?チームにバトンタッチ
できる
? Cloud Messaging の開封率はそこまで?くない…
? 通知許可を外されたら届くことはない
? 通知は?にはしているが、タップして開封していないケースもあるだろう
? In-App Messaging は Activity の構造によってはすぐ消える場合がある
? Android で Firebase In-App Messaging が表?されない問題の workaround
https://qiita.com/tatsuhama/items/d9ed9dc4622169d2e105
? Authentication を使っているなら、メール等でのアプローチも検討を
まとめ
まとめ
? Firebase を使うと、ダッシュボードでさまざまなアプリの情報
を得ることができる
? Firebase の情報は BigQuery に出?できる
? BigQuery でより詳細な分析ができる
? Data Portal を使うと、SQL の知識がなくても分析ができる
? Firebase にはユーザにアプローチする?法も?意されている
? アプローチしたら効果測定
→ データを活?して、アプリやビジネスの成功へ!
今回のお話が、みなさんの参考になれば幸いです!

More Related Content

Firebase & BigQuery で Android アプリの成?を支える