HTTP/S ネットワーク リクエストのパフォーマンス データについて学ぶ(任意のアプリ)

Performance Monitoring は、トレースを使用してアプリ内のモニタリング プロセスに関するデータを収集します。トレースとは、アプリ内の 2 つの時点の間でキャプチャされたデータを含むレポートです。

Performance Monitoring は、すべての種類のアプリについて、HTTP/S ネットワーク リクエスト トレースと呼ばれる、アプリによって発行された各ネットワーク リクエストのトレースを自動的に収集します。これらのトレースは、アプリがサービス エンドポイントにリクエストを発行してから、そのエンドポイントからのレスポンスが完了するまでの時間の指標を収集します。アプリがリクエストを発行する任意の宛先エンドポイントについて、Performance Monitoring は次のような指標をキャプチャします。

  • 応答時間: リクエストが発行されてからレスポンスが完全に受信されるまでの時間

  • レスポンスのペイロード サイズ: アプリによってダウンロードされたネットワーク ペイロードのバイトサイズ

  • リクエストのペイロード サイズ: アプリによってアップロードされたネットワーク ペイロードのバイトサイズ

  • 成功率: 全レスポンス数に対する成功レスポンス数(100~399 の範囲のレスポンス コード)の割合

これらのトレースのデータは、パフォーマンス ダッシュボードの下部にあるトレース テーブルの [ネットワーク リクエスト] サブタブで表示できます(このページの後半で、コンソールの使用をご覧ください)。

Performance Monitoring は、次のネットワーク ライブラリを使用するネットワーク リクエストの指標を自動的に収集します。

ネットワーク リクエストのデータ集計をカスタマイズする

Performance Monitoring では、ネットワーク リクエストに対してすぐに使用できるツールとデータ集計に加えて、次のオプションもサポートしています。

  • ネットワーク リクエスト トレースを手動で計測する: すぐに使用できるモニタリングは、アプリで使用するほとんどのネットワーク リクエストに対応しています。ただし、リクエストが報告されない場合や、別のライブラリを使用してネットワーク リクエストを発行する場合もあります。このような場合には、Performance Monitoring API を使用してカスタム ネットワーク リクエスト トレースを手動で計測できます。
  • カスタム URL パターンでデータを集計する: Firebase では自動 URL パターン マッチングによって URL をキャプチャしますが、それによってキャプチャされない特定の URL がある場合は、カスタム URL パターンを作成して、特定の URL のセットを経時的にモニタリングできます。
  • 成功率の計算方法をカスタマイズする: 特定の API エンドポイントで想定されるエラーコードがある場合や、エラーコードがアプリで処理される場合があります。このような場合は、成功率の計算方法を構成し、アプリのネットワーク呼び出しの成功率をより正確にモニタリングできます。

URL パターンに基づくデータの集計

Firebase Performance Monitoring は類似したネットワーク リクエストのデータを自動的に集計します。これにより、ネットワーク リクエスト パフォーマンスの傾向を把握できます。

Firebase は、リクエストごとにネットワーク リクエストの URL が URL パターンと一致しているかどうかを確認します。リクエスト URL が URL パターンと一致した場合、Firebase はリクエストのデータを URL パターンで自動的に集計します。Firebase コンソールでパフォーマンス ダッシュボードの [ネットワーク] タブに移動すると、URL パターンとそれらの集計データを表示できます。

URL パターンとは

URL パターンは、example.com/*/animals/** のようにドメインと URL パスの照合パターンから構成されます。

  • URL パターンには、次のパスセグメントを含めることができます。

    • 書式なしテキスト - 完全な文字列に一致します。
    • * - 単一のパスセグメント内の任意の文字列に一致します。
    • ** - 任意のパス接尾辞に一致します。
  • URL パターンは次のいずれかになります。

例: 次の URL リクエストはいずれも URL パターン example.com/*/animals/** に一致します。

  • example.com/singapore/animals
  • example.com/australia/animals/spiders
  • example.com/australia/animals/marsupials/koala.png

URL パターンのドメインには、最初のセグメントとして * を含めることもできます(例: *.example.com/*/fruits/**)。

Firebase は、各リクエストを 1 つの URL パターンにのみマッピングします。カスタム URL パターンが構成されている場合、Firebase はまずカスタム パターンとリクエスト URL のマッチングを行います。一致するカスタム URL パターンが見つからない場合、Firebase は最も代表的な自動 URL パターンとリクエスト URL をマッチングします。カスタム URL パターンの詳細については、以降のセクションをご覧ください。

自動 URL パターン

Performance Monitoring は、構成していなくても、アプリのリクエストと 自動 URL パターンをマッチングし、アプリの最新の利用行動を反映します。

自動 URL パターン マッチングの仕組み

Firebase は、アプリが送信したリクエストから生成した最も代表的な自動 URL パターンと各リクエストをマッチングします。ただし、カスタム URL パターンが構成されている場合、Firebase はカスタム パターンとリクエスト URL のマッチングを先に行います。

以下に、Firebase がアプリの最も代表的な自動 URL パターンとリクエストをマッチングする場合の基本的な流れを示します。

  1. アプリが次の URL に多くのリクエストを送信したとします。

    • example.com/germany/animals/bears
    • example.com/germany/animals/birds
    • example.com/germany/cars

    Firebase は、example.com/germany/** がアプリの一般的なリクエスト パターンと判断し、このパターンをプロジェクトの自動 URL パターンに追加します。

    このパターンの URL に新しいリクエストが送信されると、Firebase は、このリクエストのデータを自動 URL パターン example.com/germany/** で集計します。

  2. 1 週間後、アプリのリクエストの大半が example.com/germany/animals/bearsexample.com/germany/animals/birds に送信されたとします。Firebase は、代表的な URL パターンとして example.com/germany/animals/** を生成します。

    この新しいパターンの URL に新しいリクエストが送信されると、Firebase は、リクエストのデータを新しい URL パターンで集計します。example.com/germany/cars へのリクエストは引き続き example.com/germany/** で集計されます。

  3. さらに、数週間後にアプリから example.com/germany/animals/bearsexample.com/germany/animals/birds へのリクエストが減少したとします。Firebase は、example.com/germany/animals/** がアプリの最新の利用行動を表していないと判断し、この 2 つのリクエストと example.com/germany/** のマッチングを開始します。

    example.com/germany/animals/** は最も代表的な自動 URL パターンでなくなったため、今後のリクエストはこのパターンで集計されません。

自動 URL パターン マッチングは動的に行われるので、次の点に注意してください。

  • 以前のリクエストに対する一致と集計データは、新しい URL パターンの影響を受けません。Firebase が過去に遡ってリクエスト データを再集計することはありません。

  • 新しい URL パターンの影響を受けるのは、これから発生するリクエストだけです。Firebase は、最も代表的な自動 URL パターンと新しいリクエストをマッピングします。ただし、Firebase は構成済みのカスタム URL パターンとリクエスト URL のマッチングを先に行います。

自動 URL パターンとそのデータを表示する

Firebase コンソールのパフォーマンス ダッシュボードの下部にあるトレース テーブルの [ネットワーク リクエスト] サブタブに、すべての URL パターンとそれらの集約データが表示されます。

URL のパターンに未分類というラベルが表示されることがあります。リクエストが限定的な URL パターンと一致しない場合、Firebase はこの自動 URL パターンでリクエストのデータを集計します。

URL パターンで集計したデータの保持期間が過ぎると、Firebase は URL パターンからデータを削除します。自動 URL パターンで集計されたすべてのデータが期限切れになると、Firebase コンソールからその URL パターンが削除されます。

カスタム URL パターン

カスタム URL パターンを作成すると、Firebase の自動 URL パターン マッチングで取得されない特定の URL パターンをモニタリングできます。たとえば、カスタム URL パターンを使用することで、特定の URL のトラブルシューティングを行うことができます。また、URL の特定のセットを継続的にモニタリングできます。

詳細については、カスタム URL パターンを作成するをご覧ください。

パフォーマンス データの追跡、表示、フィルタリング

リアルタイム パフォーマンス データを確認するには、リアルタイム データ処理と互換性のあるバージョンの Performance Monitoring SDK がアプリで使用されるようにしてください。詳しくは、リアルタイム パフォーマンス データに関する記事をご覧ください。

ダッシュボードで特定の指標を追跡する

主要な指標の傾向を確認するには、パフォーマンス ダッシュボードの上部にある指標ボードに追加します。前週比の変化を確認することで、すみやかに回帰を特定できます。また、最近のコード変更でパフォーマンスが改善されたか確認することもできます。

Firebase Performance Monitoring ダッシュボードの指標ボードの画像

指標ボードに指標を追加する手順は次のとおりです。

  1. Firebase コンソールのパフォーマンス ダッシュボードに移動します。
  2. 空の指標カードをクリックし、ボードに追加する既存の指標を選択します。
  3. 入力された指標カードの をクリックすると、指標の置き換えや削除などの詳細オプションが表示されます。

指標ボードには、グラフおよび数値(割合の変化)の形式で、収集された指標データが時系列で表示されます。

ダッシュボードの使用で詳細をご確認ください。

トレースとそのデータを表示する

トレースを表示するには、Firebase コンソールのパフォーマンス ダッシュボードに移動し、トレース テーブルまで下にスクロールして、適切なサブタブをクリックします。テーブルには、各トレースの主要な指標が表示されます。また、特定の指標の変化率でリストを並べ替えることもできます。

Performance Monitoring により、Firebase コンソールのトラブルシューティング ページに指標の変更がハイライト表示されます。これにより、アプリとユーザーに対するパフォーマンス問題の影響をすばやく把握し、影響を最小限に抑えることができます。トラブルシューティング ページは、潜在的なパフォーマンス問題を確認する際に使用できます。たとえば、次のように使用します。

  • ダッシュボードで関連する指標を選択して差分を確認します。
  • トレース テーブルで、差分の最も大きいものが先頭に表示されるように並べ替えると、割合の変化が大きい箇所を確認できます。
  • パフォーマンスの問題を通知するメール通知アラートが届きます。

トラブルシューティング ページには次の方法でアクセスできます。

  • 指標ダッシュボードで、[指標の詳細を表示] ボタンをクリックします。
  • いずれかの指標カードで、 => [詳細を表示] を選択します。選択した指標に関する情報がトラブルシューティング ページに表示されます。
  • トレース テーブルで、トレースに関連付けられた行にあるトレース名または指標値をクリックします。
  • メール通知アラートで、[今すぐ調査] をクリックします。

トレース テーブルでトレース名をクリックすると、目的の指標にドリルダウンできます。[フィルタ] ボタンをクリックして、データを属性でフィルタします。次に例を示します。

属性でフィルタされた Firebase Performance Monitoring データの画像
  • 過去のリリースや最新のリリースに関するデータを表示するには、[アプリのバージョン] でフィルタします
  • 古いデバイスにおけるアプリの処理方法を確認するには、[デバイス] でフィルタします
  • データベースのロケーションが特定のリージョンに影響していないことを確認するには、[国] でフィルタします

詳細については、トレースのデータを表示するをご覧ください。

次のステップ

  • パフォーマンス データを調査することを目的とする属性の使用について、詳しく確認する。

  • Firebase コンソールでパフォーマンスの問題を追跡する方法を学習する。

  • アプリのパフォーマンスを低下させるネットワーク リクエストに関するアラートを設定する。たとえば、特定の URL パターンの応答時間が設定したしきい値を超えた場合に、チームに送信するメール通知アラートを構成できます。

  • 同じセッション中に収集された他のトレースのタイムライン コンテキストで特定のトレースを表示できるユーザー セッションの詳細レポートを表示する。