iOS+ 
  Android 
  ウェブ 
 
このページでは、Performance Monitoring  の使用を開始する際や、Performance Monitoring  の機能とツールを使用する際のトラブルシューティングのヒントを紹介します。
トラブルシューティングのための最初の確認  
トラブルシューティングを行う前に、次の 2 つの点を確認することをおすすめします。
1. パフォーマンス イベントのログ メッセージを確認する 
ログ メッセージを確認して、Performance Monitoring  SDK がパフォーマンス イベントをキャプチャしていることを確認します。
パフォーマンス イベントのログ メッセージを表示する方法
ブラウザのデベロッパー ツール(Chrome デベロッパー ツールの [ネットワーク] タブ や Firefox のネットワーク モニター など)を開きます。
 
ブラウザでウェブアプリを更新します。
 
ログ メッセージにエラー メッセージがないか確認します。
 
数秒後、ブラウザのデベロッパー ツールで、firebaselogging.googleapis.com に対するネットワーク呼び出しを確認します。ネットワーク呼び出しが存在する場合、ブラウザがパフォーマンス データを Firebase に送信しています。
 
 
アプリがパフォーマンス イベントをロギングしていない場合は、トラブルシューティングのヒント をご覧ください。
 
2. Firebase ステータス ダッシュボードを確認する 
Firebase または Performance Monitoring  に既知の停止が発生していないかどうか、Firebase ステータス ダッシュボード を確認します。
Performance Monitoring  を使ってみる 
Performance Monitoring (iOS+  | Android  | Web )、の使用を開始するうえで、Firebase が SDK を検出したり、Firebase  コンソールに最初のパフォーマンス データを表示したりする際に問題が発生した場合は、次のトラブルシューティングのヒントを参考にしてください。
SDK をアプリに追加したが、SDK を追加するようコンソールに指示が表示される 
Firebase は、アプリからイベント情報(アプリの操作など)を受け取るときに、アプリに Performance Monitoring  SDK が正常に追加されたかどうかを検出できます。通常、アプリを起動してから 10 分以内に、Firebase  コンソールのパフォーマンス  ダッシュボード に「SDK を検出しました」というメッセージが表示されます。30 分以内に、最初の処理済みのデータがダッシュボードに表示されます。
最新バージョンの SDK をアプリに追加してから 10 分以上経過しても変化が現れない場合は、ログ メッセージを確認 して、Performance Monitoring  がイベントをロギングしているか確認します。以下の該当するトラブルシューティングの手順を試して、SDK 検出メッセージの遅延についてトラブルシューティングを行います。
アプリがイベントをロギングしている: トラブルシューティングの手順 
注:  Performance Monitoring  SDK はイベントをローカルでバッチにまとめ、定期的に Firebase に送信します。これは、アプリの操作から Firebase がアプリからイベント情報を受け取るまでに時間がかかることを意味します。  
ローカルで開発している場合は、データ収集用のイベントをさらに生成してみてください。
ローカル環境でウェブアプリを提供および表示します。
 
サイトのサブページを読み込んだり、アプリを操作したり、ネットワーク リクエストをトリガーしたりして、イベントを生成します。ページが読み込まれた後、ブラウザのタブを 10 秒以上開いたままにします。
 
  
Firebase 構成オブジェクト がアプリに正しく追加され、オブジェクトを変更していないことを確認します。具体的には、次の点を確認します。
構成オブジェクト内の Firebase ウェブアプリ ID(appId)がアプリに適していること。settings  プロジェクト設定  のアプリ カードで Firebase アプリ ID を確認します。 
 
アプリの構成オブジェクトに問題があると思われる場合は、次の手順をお試しください。
現在アプリに設定されている構成オブジェクトを削除します。
 
こちらの手順 に沿って新しい構成オブジェクトを取得し、ウェブアプリに追加します。
 
  
SDK がイベントをロギングしていて、すべてが正しく設定されているにもかかわらず、2 時間経過しても SDK 検出メッセージや処理済みデータが表示されない場合は、Firebase サポートにお問い合わせ ください。
 
 
 
アプリがイベントをロギングしていない : トラブルシューティングの手順 
アプリで Performance Monitoring  SDK が正しく初期化 されていることを確認します。
 
次のフラグによって Performance Monitoring  SDK が無効になっていない ことを確認します。
performance.instrumentationEnabled 
  
ブラウザ キャッシュが無効になっている ことを確認します。無効でない場合、ブラウザは新しい計測設定を取得しない場合があります。
 
ウェブページのタブを閉じてからもう一度開きます。再度ロギングを確認します。
アプリに Performance Monitoring  SDK を追加したばかりの場合は、SDK が機能するようにアプリを完全に再起動する必要がある場合があります。
 
アプリで無効になっているものが見つからない場合は、Firebase サポートにお問い合わせ ください。
 
 
 
 
一般的なトラブルシューティング  
SDK を正常に追加し、アプリで Performance Monitoring  を使用している場合、Performance Monitoring  の機能とツールに関する一般的な問題には次のトラブルシューティングのヒントが役立ちます。
アプリがパフォーマンス イベントをロギングしない 
パフォーマンス イベントのログ メッセージ が表示されない場合は、次のトラブルシューティング手順をお試しください。
アプリで Performance Monitoring  SDK が正しく初期化 されていることを確認します。
 
次のフラグによって Performance Monitoring  SDK が無効になっていない ことを確認します。
performance.instrumentationEnabled 
  
ブラウザ キャッシュが無効になっている ことを確認します。無効でない場合、ブラウザは新しい計測設定を取得しない場合があります。
 
ウェブページのタブを閉じてからもう一度開きます。再度ロギングを確認します。
アプリに Performance Monitoring  SDK を追加したばかりの場合は、SDK が機能するようにアプリを完全に再起動する必要がある場合があります。
 
アプリで無効になっているものが見つからない場合は、Firebase サポートにお問い合わせ ください。
 
 
 
パフォーマンス ダッシュボードにカスタム トレースデータが表示されない 
自動収集されるトレースのパフォーマンス データは表示され、カスタムコード トレースのデータは表示されませんか。 次のトラブルシューティング手順をお試しください。
Trace API  を使用してインストルメント化したカスタム コード トレースの設定を確認します。特に次の点に注意してください。
  カスタム コード トレースとカスタム指標の名前には制限があります。先頭または末尾が空白文字でなく、先頭がアンダースコア(_)でない 32 文字以下の名前を指定する必要があります。 
  すべてのトレースを開始して停止する必要があります。開始されていないトレース、停止されていないトレース、開始前に停止されたトレースはログに記録されません。 
 
record()  メソッドを使用している場合は、トレースを明示的に開始または停止する必要はありません。
 
次のフラグによってPerformance Monitoring  データ収集が無効になっていない  ことを確認します。
 
ログ メッセージを確認 して、Performance Monitoring  が、想定されるカスタム コード トレースをロギングしていることを確かめます。
 
Performance Monitoring  がイベントをロギングしているが、24 時間経過してもデータが表示されない場合は、Firebase サポートにお問い合わせ ください。
 
 
 
パフォーマンス ダッシュボードにネットワーク リクエスト データが表示されない 
ネットワーク リクエスト データが表示されない場合は、次の点に注意してください。
Performance Monitoring  は、ブラウザ API によって報告されたネットワーク リクエストの指標を自動的に収集します。これらのレポートには、失敗したネットワーク リクエストは含まれません。
 
コードとそのコードで使用しているネットワーキング ライブラリの動作によっては、Performance Monitoring  で報告されるのが、完了したネットワーク リクエストだけになることがあります。この場合、開いたままの HTTP/S 接続が報告されていない可能性があります。
 
 
 
よくある質問  
  iOS+ 
  Android 
  ウェブ 
 
  プロジェクト ホームのパフォーマンス カードの [問い合わせが多い問題] はどうなったのですか? 
[問い合わせが多い問題 ] は、[最近のアラート ] に置き換えられました。これは、設定したしきい値を超えると自動的に通知されるアラートを、最近導入したことを反映したものです。「問題」のサポートは終了 し、アラートに置き換えられました。
パフォーマンス カードの上部にあるアプリセレクタでは、[最近のアラート ] でアラート エントリがフィルタされます。選択したアプリについて、直近 3 件のアラートのみが表示されます。
アラートについて詳しくは、パフォーマンスの問題に関するアラートを設定する をご覧ください。
 
  コンソールで問題に対してしきい値を設定する機能は、現在どうなっていますか?
 
Performance Monitoring  では、定義したしきい値を超える指標に対するアラート がサポートされています。パフォーマンス指標に対するこれらの構成可能なしきい値との混同を回避するため、問題 に対してしきい値を構成する機能は削除されています。
 
Firebase  コンソールの [詳細] と [指標] の情報はどうなったのですか?
詳細ページと指標ページが一新され、新たに再設計され、一元化されたユーザー インターフェース(UI)に置き換えられました。これにより、問題のトラブルシューティングが向上します。この新しいトラブルシューティングの UI は、詳細や指標と同じコア機能を提供します。トラブルシューティングの詳細については、特定のトレースのデータをさらに表示する をご覧ください。
 
  サンプル数が想定した数と異なるのはなぜですか?
 
Performance Monitoring  は、アプリのユーザー デバイスからパフォーマンス データを収集します。多くのユーザーがアプリを利用している場合や、アプリが大量のパフォーマンス アクティビティを生成する場合は、処理するイベントの数を減らすために、Performance Monitoring  はデバイスのサブセットのみに限定してデータを収集することがあります。このように制限しても十分なデータが得られるため、イベントが少なくなったとしても、指標の値はユーザーのアプリ エクスペリエンスを適切に表しています。
収集するデータの量を管理するために、Performance Monitoring  は次のサンプリング オプションを使用します。
デバイス上のレート制限 : デバイスが送信するトレースが急増することがないように、デバイスから送信されるコードトレースとネットワーク リクエスト トレースの数を 10 分間あたり 300 イベントに制限しています。このアプローチにより、大量のパフォーマンス データを送信する可能性があるループ型のインストルメンテーションからデバイスを保護し、1 つのデバイスによってパフォーマンスの測定値が歪められるのを防ぎます。
 
動的サンプリング : Performance Monitoring  は、1 つのアプリで、すべてのアプリユーザーを通じてコードトレースとネットワーク リクエスト トレースについてそれぞれ制限された数のデータを毎日収集します。(Firebase Remote Config  を使用して)デバイスに関する動的サンプリング レートを取得し、ランダムなデバイスでトレースをキャプチャして送信する必要があるかどうかを判断します。サンプリングの対象として選択されていないデバイスはイベントを送信しません。動的サンプリング レートはアプリに固有であり、収集されるデータの全体量が制限を下回るように調整されます。
ユーザー セッションでは、ユーザーのデバイスからさらに多くの詳細なデータを送信します。そのため、データをキャプチャして送信するために必要となるリソースが増えます。ユーザー セッションの影響を最小限に抑えるため、Performance Monitoring  はセッション数を制限する場合もあります。
 
サーバーサイドのレート制限 : アプリでサンプリングの制限を超えないようにするため、Performance Monitoring  はサーバーサイドのサンプリングを使用して、デバイスから受信した一部のイベントを破棄する場合があります。この制限によって指標の有効性が変化することはありませんが、次のような小規模なパターンの変化が生じることがあります。
トレースの数とコードが実行された回数が異なる場合があります。 
コード内で密接に結合している複数のトレースのサンプル数が異なる場合があります。 
  
 
注:  Performance Monitoring  の進化に伴い、特定のサンプリング制限とその適用範囲は変更される可能性があります。  
 
  コンソールの [問題 ] タブはどうなったのですか?
 
[問題] タブに代わってアラートが導入されました。アラートは、設定したしきい値を超えると自動的に通知されます。これにより、しきい値のステータスを特定するために手動で Firebase  コンソールを確認する必要がなくなりました。アラートについて詳しくは、パフォーマンスの問題に関するアラートを設定する をご覧ください。
 
  コンソールの [ デバイス] タブと [ ネットワーク] タブはどうなったのですか?それらのページに表示されていたトレースを表示するにはどうすればよいですか? 
Firebase  コンソールの Performance Monitoring  セクションが再設計され、主要な指標とすべてのトレースがまとめて [ダッシュボード ] タブに表示されるようになりました。今回の再設計の一環として、[デバイス ] ページと [ネットワーク ] ページを削除しました。
[ ダッシュボード] タブの下部にあるトレース テーブルには、[ デバイス] タブと [ ネットワーク] タブに表示されていた同じ情報がすべて含まれていますが、特定の指標の変化率でトレースを並べ替える機能など、一部の機能が追加されました。特定のトレースの指標とデータをすべて表示するには、トレース テーブル内のトレース名をクリックします。
トレースはトレース テーブルの次のサブタブに表示されます。
ネットワーク リクエスト トレース(すぐに使用できるものとカスタムの両方) - [ ネットワーク リクエスト] サブタブ 
カスタムコード トレース - [ カスタム トレース] サブタブ 
アプリの起動、フォアグラウンドのアプリ、バックグラウンド アプリのトレース - [ カスタム トレース] サブタブ 
画面レンダリング トレース - [ 画面レンダリング] サブタブ 
ページ読み込みトレース - [ ページ読み込み] サブタブ 
 
トレース テーブルの詳細と、指標やデータの表示については、コンソールの概要ページ(iOS+  | Android  | ウェブ )をご覧ください。
 
  遅いフレームやフリーズしたフレームの数が想定した数と異なるのはなぜですか?
 
レンダリングが遅いフレームとフリーズしたフレームは、想定される 60 Hz のデバイス リフレッシュ レートで計算されます。デバイスのリフレッシュ レートが 60 Hz 未満の場合は、1 秒間にレンダリングされるフレームが少なくなるため、各フレームでレンダリング時間が長くなります。レンダリング時間が長くなると、レンダリングが遅くなるフレームやフリーズするフレームが多くなるため、遅いフレームやフリーズしたフレームの報告が増えます。ただし、デバイスのリフレッシュ レートが 60 Hz を超える場合は、各フレームでレンダリング時間が短くなります。これにより、遅いフレームやフリーズしたフレームが報告される回数が少なくなります。これは、Performance Monitoring  SDK の現在の制限です。
 
軽量で名前空間付きの Performance Monitoring  JS SDK(「スタンドアロン」SDK)をウェブアプリに追加するにはどうすればよいですか? 
アプリで使用している Firebase プロダクトが Performance Monitoring  だけで、次のことを行いたい場合は、スタンドアロンの Performance Monitoring  SDK と以下の推奨ヘッダー スクリプトを使用できます。
名前空間付きライブラリを使用する 
SDK パッケージ サイズを小さくする 
ページが読み込まれるまで SDK の初期化を延期する 
 
アプリにスタンドアロンの Performance Monitoring  SDK を追加し、ページが読み込まれるまで初期化を延期するには、次の操作を行います。
次のスクリプトをインデックス ファイルのヘッダーに追加します。 
アプリの Firebase プロジェクト構成オブジェクト を追加します。 
 
( function ( sa , fbc ){ function   load ( f , c ){ var   a = document . createElement ( 'script' ); 
a . async = 1 ; a . src = f ; var   s = document . getElementsByTagName ( 'script' )[ 0 ]; 
s . parentNode . insertBefore ( a , s );} load ( sa ); 
window . addEventListener ( 'load' , function (){ firebase . initializeApp ( fbc ) . performance ()}); 
})( performance_standalone ,   firebaseConfig );  
ここで
  performance_standalone  は 'https://www.gstatic.com/firebasejs/12.4.0/firebase-performance.js'  です 
  firebaseConfig  はアプリの Firebase 構成オブジェクト です。 
 
上記のスクリプトはスタンドアロン SDK を非同期で読み込み、ウィンドウの onload イベントが発生した後で  Firebase を初期化します。この方法では、SDK を初期化する時点でブラウザが読み込み指標をすでに報告しているため、SDK がページ読み込み指標 に及ぼす影響が小さくなります。
注:  スタンドアロンの Performance Monitoring  SDK を使用している場合は、Firebase のコア SDK を明示的に組み込みません。スタンドアロン SDK には軽量の Firebase コア SDK が含まれています。  
  
    スタンドアロンの Performance Monitoring  SDK とヘッダー スクリプトについて 
  このスタンドアロン SDK はサイズが小さくなるよう最適化されています。gzip で圧縮され、約 10 KB です。Firebase Performance Monitoring  のすべての機能と Firebase コア SDK 機能の最小セットも含まれています。
Firebase Performance Monitoring  が使用する API(fetch と Promise)は、古いブラウザでは機能しません。これらの API のポリフィルは標準の Firebase Performance Monitoring  JS SDK に含まれていますが、サイズを小さくするため、スタンドアロン SDK には含まれていません。
ブラウザからページ読み込み指標を取得するため、Performance Monitoring  SDK は Resource Timing API  に部分的に依存しています。
次のスニペットはヘッダー スクリプトの一部で、最後に SDK の初期化を延期しています。
( function ( sdkSource ,   firebaseConfigObject )   { 
    function   load ( f ,   c )   { 
        //   Creates   a   script   tag   to   load   the   standalone   SDK 
        var   sdkScript   =   document . createElement ( 'script' ); 
        //   Sets   it   to   an   async   script   so   that   it   doesn 't interfere with page load 
        sdkScript . async   =   1 ; 
        //   Sets   the   source   of   the   script 
        sdkScript . src   =   f ; 
        //   Inserts   the   script   into   the   head   of   the   page 
        var   s   =   document . getElementsByTagName ( 'script' )[ 0 ]; 
        s . parentNode . insertBefore ( sdkScript ,   s ); 
    } 
    //   Calls   the   load   method 
    load ( sdkSource ); 
    //   Initializes   the   SDK   only   when   the   onload   method   is   called 
    window . addEventListener ( 'load' ,   function ()   { 
        firebase . initializeApp ( firebaseConfigObject ) . performance (); 
    }); 
})( performance_standalone ,   firebaseConfig );  
ここで
  performance_standalone  は 'https://www.gstatic.com/firebasejs/12.4.0/firebase-performance-standalone.js'  です。 
  firebaseConfig  はアプリの Firebase 構成オブジェクト です。 
 
 
 
ほぼリアルタイムのデータ処理と表示 
  「準リアルタイム」(またはニア リアルタイム)のパフォーマンス データとは何ですか?
 
Firebase Performance Monitoring  が収集されたパフォーマンス データを適時処理すると、ほぼリアルタイムのデータが Firebase  コンソールに表示されます。処理されたデータは、収集されて数分以内にコンソールに表示されるため、「ほぼリアルタイム」という言葉を使用しています。
ほぼリアルタイムのデータ処理を利用するには、リアルタイム対応の SDK バージョン をアプリで使用します。
 
  準リアルタイムのパフォーマンス データをアプリで取得するにはどうすればよいですか?
 
リアルタイムのデータ処理に対応した Performance Monitoring  SDK のバージョンをアプリで使用するだけで、ほぼリアルタイムのデータ処理を利用できます。
リアルタイム対応の SDK のバージョンは次のとおりです。
  iOS  - v7.3.0 以降 
  tvOS  - v8.9.0 以降 
  Android  - v19.0.10 以降(または Firebase Android BoM  v26.1.0 以降) 
  ウェブ  - v7.14.0 以降 
 
常に最新バージョンの SDK を使用することをおすすめします。ただし、上述のいずれのバージョンでも、Performance Monitoring  でほぼリアルタイムのデータ処理が行われます。
 
  どのバージョンの Performance Monitoring  SDK がリアルタイムに対応していますか?
 
リアルタイムのデータ処理に対応している SDK のバージョンは次のとおりです。
  iOS  - v7.3.0 以降 
  tvOS  - v8.9.0 以降 
  Android  - v19.0.10 以降(または Firebase Android BoM  v26.1.0 以降) 
  ウェブ  - v7.14.0 以降 
 
常に最新バージョンの SDK を使用することをおすすめします。ただし、上述のいずれのバージョンでも、Performance Monitoring  でほぼリアルタイムのデータ処理が行われます。
 
  リアルタイム対応の SDK バージョンを使用するようにアプリを更新していないとどうなりますか?
 
リアルタイム対応の SDK バージョンをアプリで使用していない場合でも、Firebase  コンソールにはアプリのパフォーマンス データがすべて表示されます。ただし、パフォーマンス データはデータの収集からおよそ 36 時間遅れて表示されます。
 
  リアルタイム対応の SDK バージョンにアップデートしましたが、一部のユーザーは古いバージョンのアプリを使用しています。それらのユーザーのパフォーマンス データも Firebase  コンソールで引き続き表示されますか? 
はい。アプリ インスタンスで使用している SDK バージョンに関係なく、すべてのユーザーのパフォーマンス データが表示されます。
ただし、 最近(約 36 時間以内)のデータについては、リアルタイム対応の SDK バージョンを使用するアプリ インスタンスのユーザーのデータが表示されます。一方、 最近ではないデータには、すべてのバージョンのアプリのパフォーマンス データが表示されます。
 
Firebase サポートに連絡する 場合は、必ず Firebase アプリ ID をお知らせください。Firebase アプリ ID は、settings  プロジェクト設定  のアプリ カードで確認します。