Firebase Summit で発表されたすべての情報をご覧ください。Firebase を使用してアプリ開発を加速し、自信を持ってアプリを実行する方法を紹介しています。詳細

パフォーマンスモニタリングデータをBigQueryにエクスポートする

コレクションでコンテンツを整理 必要に応じて、コンテンツの保存と分類を行います。

Apple および Android アプリからパフォーマンス モニタリング データをBigQueryにエクスポートして、さらに分析することができます。 BigQuery では、BigQuery SQL を使用してデータを分析し、別のクラウド プロバイダにエクスポートして、カスタム ML モデルにデータを使用することもできます。

BigQuery エクスポートを有効にする

  1. Firebase コンソールの [統合] ページに移動し、 BigQueryカードの [リンク] をクリックします。

  2. 画面の指示に従って BigQuery を有効にします。

    Performance Monitoring の BigQuery エクスポートを有効にすると、次のようになります。

    • Firebaseは、既存のデータのコピーを BigQuery にエクスポートします。エクスポート用のデータの最初の伝播は、完了するまでに最大 48 時間かかる場合があります。

    • データセットの作成後に場所を変更することはできませんが、データセットを別の場所にコピーしたり、データセットを別の場所に手動で移動 (再作成) したりできます。詳細については、「データセットの場所を変更する」を参照してください。

    • Firebase は、Firebase プロジェクトから BigQuery へのデータの定期的な同期を設定します。これらの毎日のエクスポート操作は、通常、スケジュールされてから 24 時間以内に終了します。

    • デフォルトでは、プロジェクト内のすべてのアプリが BigQuery にリンクされています。後でプロジェクトに追加するアプリは、自動的に BigQuery にリンクされます。データを送信するアプリを管理できます

BigQuery エクスポートを無効にするには、Firebase コンソールでプロジェクトのリンクを解除します。

BigQuery にエクスポートされるデータは何ですか?

プロジェクト内のアプリごとに、エクスポートにより、キャプチャされたすべてのパフォーマンス イベントを含むテーブルが作成されます。表の各行は、次のいずれかの単一のパフォーマンス イベントです。

  • 期間トレース— デフォルトで「期間」のメトリックを収集するトレース。これには、アプリの開始、フォアグラウンドのアプリ、バックグラウンドのアプリ、および開発者がインストルメント化したカスタム コード トレースが含まれます。

    • event_typeDURATION_TRACEです
    • event_nameはトレース名と同じです
  • トレース メトリック— 開発者がインストルメント化したカスタム コード トレースに関連付けられているカスタム メトリック

    • event_typeTRACE_METRIC
    • event_nameはメトリックの名前です
    • parent_trace_nameは、このメトリックを含むトレース名です
  • スクリーン トレース— スクリーンの存続期間にわたるトレース (スクリーン レンダリング トレース)

    • event_typeSCREEN_TRACE
    • event_nameは接頭辞_st_に実際のスクリーン名を加えたものです
  • ネットワーク リクエスト— ネットワーク リクエストの存続期間にわたるトレース (HTTP ネットワーク リクエスト トレース)

    • event_typeNETWORK_REQUESTです
    • event_nameは、ネットワーク リクエスト URL の分類されたパターンです。

各パフォーマンス イベントには、イベントの属性 (クライアント デバイスの国やキャリアなど) と、イベント固有の情報が含まれています。

  • 期間トレース、トレース メトリック、およびスクリーン トレースにはtrace_infoが含まれます
  • トレース メトリックにはtrace_info.metric_infoが含まれます
  • 画面トレースにはtrace_info.screen_infoが含まれます
  • ネットワーク トレースにnetwork_infoが含まれている

詳細なデータ スキーマ

フィールド名タイプ説明
event_timestampタイムスタンプクライアント デバイスでイベントが開始されたときのエポック以降のタイムスタンプ (トレース開始、ネットワーク開始など)
app_display_versionストリングアプリのバージョン表示(例:「4.1.7」)
  • Android の場合 — VersionName
  • iOS の場合 — CFBundleShortVersionString
app_build_versionストリングアプリケーションのビルド バージョン (例: "1523456")
  • Android の場合 — VersionCode
  • iOS の場合 — CFBundleVersion
os_versionストリングクライアント デバイスの OS バージョン
  • Android の場合 — Android API レベル (「26」など)
  • iOS の場合 — iOS のバージョン (「11.4」など)
装置名ストリングクライアント デバイスの名前 (「Google Pixel」など)
ストリングイベントが行われた国の 2 文字の国コード (たとえば、"US"、または不明な国を表す "ZZ")
キャリアストリングクライアント デバイスのキャリア
radio_typeストリングイベントが発生したときにアクティブだった無線の種類 (「WIFI」など)
カスタム属性ARRAY<RECORD>このイベントに関連付けられたすべてのカスタム属性
custom_attributes.keyストリングカスタム属性のキー
custom_attributes.valueストリングカスタム属性の値
イベントタイプストリングイベントのタイプ。可能な値:
  • DURATION_TRACE — デフォルトで「期間」のメトリックを収集するトレース。これには、アプリの開始、フォアグラウンドのアプリ、バックグラウンドのアプリ、および開発者がインストルメント化したカスタム コード トレースが含まれます。
  • SCREEN_TRACE — 画面の存続期間にわたるトレース (画面レンダリング トレース)
  • TRACE_METRIC — 開発者がインストルメント化したカスタム コード トレースに関連付けられているカスタム メトリック
  • NETWORK_REQUEST — ネットワーク リクエストの有効期間にわたるトレース (HTTP ネットワーク リクエスト トレース)
イベント名ストリングイベント名
  • DURATION_TRACEの場合 - トレース名
  • TRACE_METRICの場合 — カスタム メトリック名
  • SCREEN_TRACEの場合 — _st_の後にトレース名が続きます
  • NETWORK_REQUESTの場合 — ネットワーク要求の URL パターン
親トレース名ストリングトレース メトリックを運ぶ親トレースの名前
TRACE_METRICにのみ存在
trace_info記録DURATION_TRACESCREEN_TRACE 、およびTRACE_METRICにのみ存在
trace_info.duration_us int64
  • DURATION_TRACEおよびSCREEN_TRACEの場合 — トレースの開始から終了までの時間の長さ (「期間」)
  • TRACE_METRICの場合 — 親トレースの開始から終了までの時間 (「期間」) の長さ
単位:マイクロ秒
trace_info.screen_info記録SCREEN_TRACEにのみ存在
trace_info.screen_info.slow_frame_ratio float64このスクリーン トレースの遅いフレームの比率 (0 ~ 1) (たとえば、値 0.05 は、このスクリーン インスタンスのフレームの 5% がレンダリングに 16 ミリ秒以上かかったということを意味します)
trace_info.screen_info.frozen_frame_ratio float64このスクリーン トレースのフリーズ フレームの比率 (0 ~ 1) (たとえば、値 0.05 は、このスクリーン インスタンスのフレームの 5% がレンダリングに 700 ミリ秒以上かかったということを意味します)
trace_info.metric_info記録TRACE_METRICにのみ存在
trace_info.metric_info.metric_value int64トレース メトリックの値
ネットワーク情報記録NETWORK_REQUESTにのみ存在
network_info.response_code int64ネットワーク応答の HTTP 応答コード (例: 200、404)
network_info.response_mime_typeストリングネットワーク応答の MIME タイプ (「text/html」など)
network_info.request_http_methodストリングネットワーク要求の HTTP メソッド (「GET」または「POST」など)
network_info.request_payload_bytes int64ネットワーク リクエスト ペイロードのサイズ
単位:バイト
network_info.response_payload_bytes int64ネットワーク応答ペイロードのサイズ
単位:バイト
network_info.request_completed_time_us int64ネットワーク リクエストの送信が完了したときのevent_timestamp後のマイクロ秒
単位:マイクロ秒
network_info.response_initiated_time_us int64ネットワーク応答が開始されたときのevent_timestamp後のマイクロ秒
単位:マイクロ秒
network_info.response_completed_time_us int64ネットワーク応答が完了したときのevent_timestamp後のマイクロ秒
単位:マイクロ秒

エクスポートされたデータで何ができますか?

以下のセクションでは、エクスポートされた Performance Monitoring データに対して BigQuery で実行できるクエリの例を示します。

国別の平均アプリ起動レイテンシの内訳を表示する

SELECT AVG(trace_info.duration_us), country
FROM `TABLE_NAME`
WHERE _PARTITIONTIME > TIMESTAMP("YYYY-MM-DD")
AND event_type = "DURATION_TRACE"
AND event_name = "_app_start"
GROUP BY 2;

さまざまな条件に対するフリーズ フレームの比率を確認する

たとえば、さまざまな無線タイプ (WiFi、4G など) を使用しているときに、ユーザーがアプリの各画面に費やした時間とともに、フリーズ フレームの比率を確認できます。

SELECT
  AVG(trace_info.duration_us / 1000000) AS seconds_on_screen,
  AVG(trace_info.screen_info.frozen_frame_ratio) AS frozen_frame_ratio,
  event_name,
  radio_type
FROM `TABLE_NAME`
WHERE _PARTITIONTIME > TIMESTAMP("YYYY-MM-DD")
AND event_type = "SCREEN_TRACE"
GROUP BY event_name, radio_type
ORDER BY event_name, radio_type;

ディスクから特定の種類のファイルをロードする際のキャッシュ ヒット率を計算する

この分析では、 file-extensionという名前のカスタム属性と、キャッシュ ヒットの場合は1に、キャッシュ ミスの場合は0に設定されるcache-hitという名前のカスタム メトリック ( TRACE_METRIC ) を使用して、ディスクからロードするためのカスタム コード トレースをインストルメント化したと想定しています。

たとえば、ディスクから PNG ファイルをロードする場合のキャッシュ ヒット率を計算できます。

SELECT AVG(trace_info.metric_info.metric_value) AS cache_hit_rate
FROM `TABLE_NAME`
WHERE _PARTITIONTIME > TIMESTAMP("YYYY-MM-DD")
AND event_type = "TRACE_METRIC"
AND event_name = "cache-hit"
AND parent_trace_name = "loadFromDisk"
AND STRUCT("file-extension", "png") IN UNNEST(custom_attributes);

ユーザーがネットワーク リクエストを発行する時刻を確認する

たとえば、米国のユーザーがアプリからネットワーク リクエストを発行した時刻を確認できます。

SELECT
  count(1) AS hourly_count,
  EXTRACT(HOUR FROM event_timestamp) AS hour_of_day
FROM `TABLE_NAME`
WHERE _PARTITIONTIME > TIMESTAMP("YYYY-MM-DD")
AND event_type = "NETWORK_REQUEST"
AND country = "US"
GROUP BY 2 ORDER BY 2;

Performance Monitoring データをどこにでも持っていく

場合によっては、Performance Monitoring データ サーバー側にアクセスしたり、別のサードパーティ ソリューションにプッシュしたりしたいことがあります。現在、データのエクスポートは無料です。

次の方法でデータをエクスポートできます。

  • BigQuery ウェブ UI の使用

  • CLI コマンドbq extractの実行

  • API またはクライアント ライブラリを介して抽出ジョブを送信します。

価格

Performance Monitoring からのデータのエクスポートは無料で、BigQuery は寛大な無料の使用制限を提供します。詳細については、 BigQuery の料金またはBigQuery サンドボックスをご覧ください。