iOS+
Android
ウェブ
このページでは、Performance Monitoring の使用を開始する際や、Performance Monitoring の機能とツールを使用する際のトラブルシューティングのヒントを紹介します。
トラブルシューティングのための最初の確認
トラブルシューティングを行う前に、次の 2 つの点を確認することをおすすめします。
1. パフォーマンス イベントのログ メッセージを確認する
ログ メッセージを確認して、Performance Monitoring SDK がパフォーマンス イベントをキャプチャしていることを確認します。
パフォーマンス イベントのログ メッセージを表示する方法
ビルド時に Performance Monitoring のデバッグ ロギングを有効にするには、次のようにアプリの AndroidManifest.xml
ファイルに <meta-data>
要素を追加します。
<application>
<meta-data
android:name="firebase_performance_logcat_enabled"
android:value="true" />
</application>
ログ メッセージにエラー メッセージがないか確認します。
Performance Monitoring は、ログ メッセージに FirebasePerformance
のタグを付けます。logcat フィルタリングを使用すると、次のコマンドを実行して、所要時間トレースと HTTP/S ネットワーク リクエストのロギングを表示できます。
adb logcat -s FirebasePerformance
Performance Monitoring がパフォーマンス イベントをロギングしていることを示す次の種類のログを確認します。
Logging trace metric: TRACE_NAME , FIREBASE_PERFORMANCE_CONSOLE_URL
Logging network request trace: URL
URL をクリックして 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 がアプリからイベント情報を受け取るまでに時間差があります。
Performance Monitoring Android SDK 19.1.0 以降(または Firebase BoM 26.3.0 以降)を使用していることを確認します。詳しくはリリースノート をご覧ください。
ローカルで開発している場合は、データ収集用のイベントをさらに生成してみてください。
アプリをバックグラウンドとフォアグラウンドの間で数回切り替えたり、画面間を移動してアプリを操作したり、ネットワーク リクエストをトリガーしたりして、イベントを生成します。
Firebase 構成ファイル (google-services.json
)がアプリに正しく追加され、ファイルを変更していないことを確認します。具体的には、次の点を確認します。
構成ファイル名に (2)
などの文字が追加されていないこと。
構成ファイルがアプリのモジュール(アプリレベル) ディレクトリにあること。
構成ファイルにリストされている Firebase Android アプリ ID(mobilesdk_app_id
)がアプリに適していること。settings プロジェクト設定 のアプリ カードで Firebase アプリ ID を確認します。
アプリの構成ファイルに問題があると思われる場合は、次の手順をお試しください。
現在アプリに設定されている構成ファイルを削除します。
こちらの手順 に沿って新しい構成ファイルをダウンロードし、Android アプリに追加します。
SDK がイベントをロギングしていて、すべてが正しく設定されているにもかかわらず、10 分経過しても SDK 検出メッセージや処理済みデータが表示されない場合は、Firebase サポートにお問い合わせ ください。
アプリがイベントをロギングしていない : トラブルシューティングの手順
次のように、Performance Monitoring Gradle プラグインの設定を確認します。
正しくプラグインを追加 していることを確認します。具体的には、次の点を確認します。
プラグイン(apply plugin: 'com.google.firebase.firebase-perf'
)をモジュール(アプリレベル) の build.gradle
ファイルに追加していること。
プラグインのクラスパス依存関係(classpath 'com.google.firebase:perf-plugin:1.4.2'
)をプロジェクト レベル の build.gradle
ファイルに含めていること。
次のフラグのいずれかによってプラグインが無効になっていない ことを確認します。
モジュール(アプリレベル)の build.gradle
ファイル内の instrumentationEnabled
gradle.properties
ファイル内の firebasePerformanceInstrumentationEnabled
AndroidManifest.xml
ファイル内の次のフラグのいずれかによって Performance Monitoring SDK が無効になっていない ことを確認します。
firebase_performance_collection_enabled
firebase_performance_collection_deactivated
Performance Monitoring がランタイムで無効になっていない ことを確認します。
アプリで無効になっているものが見つからない場合は、Firebase サポートにお問い合わせ ください。
一般的なトラブルシューティング
SDK を正常に追加し、アプリで Performance Monitoring を使用している場合、Performance Monitoring の機能とツールに関する一般的な問題には次のトラブルシューティングのヒントが役立ちます。
アプリがパフォーマンス イベントをロギングしない
パフォーマンス イベントのログ メッセージ が表示されない場合は、次のトラブルシューティング手順をお試しください。
次のように、Performance Monitoring Gradle プラグインの設定を確認します。
正しくプラグインを追加 していることを確認します。具体的には、次の点を確認します。
プラグイン(apply plugin: 'com.google.firebase.firebase-perf'
)をモジュール(アプリレベル) の build.gradle
ファイルに追加していること。
プラグインのクラスパス依存関係(classpath 'com.google.firebase:perf-plugin:1.4.2'
)をプロジェクト レベル の build.gradle
ファイルに含めていること。
次のフラグのいずれかによってプラグインが無効になっていない ことを確認します。
モジュール(アプリレベル)の build.gradle
ファイル内の instrumentationEnabled
gradle.properties
ファイル内の firebasePerformanceInstrumentationEnabled
AndroidManifest.xml
ファイル内の次のフラグのいずれかによって Performance Monitoring SDK が無効になっていない ことを確認します。
firebase_performance_collection_enabled
firebase_performance_collection_deactivated
Performance Monitoring がランタイムで無効になっていない ことを確認します 。
アプリで無効になっているものが見つからない場合は、Firebase サポートにお問い合わせ ください。
パフォーマンス ダッシュボードに画面トレースデータが表示されない
画面レンダリング トレースのデータが表示されない場合は、次のトラブルシューティング手順をお試しください。
Android SDK の最新バージョン(v21.0.1)を使用していることを確認します。画面レンダリング トレースは、v15.2.0 以降でのみ使用できます。
画面のハードウェア アクセラレーション を手動で無効にしていないことを確認します。
DexGuard または Jack を使用していないことを確認します。Performance Monitoring はこれらのツールチェーンと互換性がありません。
パフォーマンス ダッシュボードにカスタム トレースデータが表示されない
自動収集されるトレースのパフォーマンス データは表示され、カスタムコード トレースのデータは表示されませんか。 次のトラブルシューティング手順をお試しください。
Trace API を使用してカスタム コード トレースをインストルメント化した場合は、トレースの設定を確認します。特に次の点に注意してください。
カスタム コード トレースとカスタム指標の名前には制限があります。先頭または末尾が空白文字でなく、先頭がアンダースコア(_
)でない 32 文字以下の名前を指定する必要があります。
すべてのトレースを開始して停止する必要があります。開始されていないトレース、停止されていないトレース、開始前に停止されたトレースはログに記録されません。
@AddTrace
表記 を使用してカスタム コード トレースをインストルメンテーションした場合は、Performance Monitoring Gradle プラグインの設定を確認します。
正しくプラグインを追加 していることを確認します。具体的には、次の点を確認します。
プラグイン(apply plugin: 'com.google.firebase.firebase-perf'
)をモジュール(アプリレベル) の build.gradle
ファイルに追加していること。
プラグインのクラスパス依存関係(classpath 'com.google.firebase:perf-plugin:1.4.2'
)をプロジェクト レベル の build.gradle
ファイルに含めていること。
次のフラグのいずれかによってプラグインが無効になっていない ことを確認します。
モジュール(アプリレベル)の build.gradle
ファイル内の instrumentationEnabled
gradle.properties
ファイル内の firebasePerformanceInstrumentationEnabled
ログ メッセージを確認 して、Performance Monitoring が、想定されるカスタム コード トレースをロギングしていることを確かめます。
Performance Monitoring がイベントをロギングしているが、24 時間経過してもデータが表示されない場合は、Firebase サポートにお問い合わせ ください。
パフォーマンス ダッシュボードにネットワーク リクエスト データが表示されない
ネットワーク リクエスト データが表示されない場合は、次のトラブルシューティング手順をお試しください。
Android アプリの場合、Performance Monitoring Gradle プラグインにより、HTTP/S ネットワーク リクエストを自動モニタリング する計測が有効になります。以下をご確認ください。
正しくプラグインを追加 していることを確認します。具体的には、次の点を確認します。
プラグイン(apply plugin: 'com.google.firebase.firebase-perf'
)をモジュール(アプリレベル) の build.gradle
ファイルに追加していること。
プラグインのクラスパス依存関係(classpath 'com.google.firebase:perf-plugin:1.4.2'
)をプロジェクト レベル の build.gradle
ファイルに含めていること。
次のフラグのいずれかによってプラグインが無効になっていない ことを確認します。
モジュール(アプリレベル)の build.gradle
ファイル内の instrumentationEnabled
gradle.properties
ファイル内の firebasePerformanceInstrumentationEnabled
ネットワーク ライブラリの非互換性を確認します。Performance Monitoring は、ネットワーキング ライブラリ(OkHttp 3.x.x、Java の URLConnection、Apache HttpClient)を使用するネットワーク リクエストの指標を自動的に収集します。
ネットワーク リクエストにはカスタム モニタリングを追加 できます。
次の点に注意してください。
コードとそのコードで使用しているネットワーキング ライブラリの動作によっては、Performance Monitoring で報告されるのが、完了したネットワーク リクエストだけになることがあります。この場合、開いたままの HTTP/S 接続が報告されていない可能性があります。
Performance Monitoring は DexGuard および Jack と互換性がありません。
DexGuard は、HTTP/S ネットワーク リクエストのモニタリングを無効にします。
Jack は非推奨のため、通常はアプリで使用しないでください。
Performance Monitoring は、Content-Type
ヘッダーが無効なネットワーク リクエストを報告しません。Content-Type
ヘッダーのないネットワーク リクエストは受け入れられます。
よくある質問
iOS+
Android
ウェブ
プロジェクト ホームのパフォーマンス カードの [問い合わせが多い問題] はどうなったのですか?
[問い合わせが多い問題 ] は、[最近のアラート ] に置き換えられました。これは、設定したしきい値を超えると自動的に通知されるアラートを、最近導入したことを反映したものです。「問題」のサポートは終了 し、アラートに置き換えられました。
パフォーマンス カードの上部にあるアプリセレクタでは、[最近のアラート ] でアラート エントリがフィルタされます。選択したアプリについて、直近 3 件のアラートのみが表示されます。
アラートについて詳しくは、パフォーマンスの問題に関するアラートを設定する をご覧ください。
コンソールで問題に対してしきい値を設定する機能は、現在どうなっていますか?
Performance Monitoring は、定義したしきい値を超える指標に対するアラート をサポートしています。パフォーマンス指標に対するこれらの構成可能なしきい値との混同を回避するため、問題 に対してしきい値を構成する機能は削除されています。
Firebase コンソールの [詳細] と [指標] の情報はどうなったのですか?
詳細ページと指標ページが一新され、新たに再設計され、一元化されたユーザー インターフェース(UI)に置き換えられました。これにより、問題のトラブルシューティングが向上します。この新しいトラブルシューティングの UI は、詳細や指標と同じコア機能を提供します。トラブルシューティングの詳細については、特定のトレースのデータをさらに表示する をご覧ください。
サンプル数が想定した数と異なるのはなぜですか?
Performance Monitoring は、アプリのユーザー デバイスからパフォーマンス データを収集します。多くのユーザーがアプリを利用している場合や、アプリが大量のパフォーマンス アクティビティを生成する場合は、処理するイベントの数を減らすために、Performance Monitoring はデバイスのサブセットのみに限定してデータを収集することがあります。このように制限しても十分なデータが得られるため、イベントが少なくなったとしても、指標の値はユーザーのアプリ エクスペリエンスを適切に表しています。
収集するデータの量を管理するために、Performance Monitoring は次のサンプリング オプションを使用します。
デバイス上のレート制限 : デバイスが送信するトレースが急増することがないように、デバイスから送信されるコードトレースとネットワーク リクエスト トレースの数を 10 分間あたり 300 イベントに制限しています。このアプローチにより、大量のパフォーマンス データを送信する可能性があるループ型のインストルメンテーションからデバイスを保護し、1 つのデバイスによってパフォーマンスの測定値が歪められるのを防ぎます。
動的サンプリング : Performance Monitoring は、1 つのアプリで、すべてのアプリユーザーを通じてコードトレースとネットワーク リクエスト トレースについてそれぞれ最大で約 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 Android SDK バージョン 20.1.0 以降を使用していることを確認してください。詳細については、Performance Monitoring をアプリに追加する をご覧ください。
フラグメント トレースが他のトレースよりも少ないのはなぜですか?
Performance Monitoring は、デバイスで収集されたすべてのイベントに対してイベント サンプリングを行います。このアプローチにより、ユーザー デバイスから必要な最小限のイベントを収集して、パフォーマンス指標を提供できます。
アプリケーションのレンダリング パフォーマンスに問題がある場合、どのように通知されますか?
Performance Monitoring では重要な指標に関するアラートを設定できます。生成される画面レンダリング トレースに関して、遅いフレームとフリーズしたフレームの割合が設定したしきい値を超えたときに通知されるようにアラートを設定 できます。
Performance Monitoring Gradle プラグインを有効にしてからビルド時間が長くなっています。改善するにはどうすればよいですか?
Android 向け Performance Monitoring は、バイトコードのインストルメンテーションを使用して、HTTP/S ネットワーク リクエストのモニタリング などのすぐに使える機能を提供します。コンパイルの一環として、アプリケーションのネットワークのリクエスト パフォーマンスの測定に不可欠なコードを実装するため、アプリのすべてのクラス(依存関係を含む)を反復処理する必要があります。
ビルド時間が長くなる主な原因は次のとおりです。
クラスまたはファイルの数
各クラスのサイズ(コードの行数)
マシンの構成
初期ビルドと後続のビルド(後続のビルドは初期ビルドよりも通常は高速)
ビルド時間を短縮するには、コードのモジュール化 を検討してください。
Performance Monitoring プラグインの v1.3.3 以降から、ライブラリ入力の増分ビルドプロセスとキャッシュ保存の大幅な改善に注力してきました。ビルド時間に関する最新の改善を利用するには、最新バージョンのプラグイン (v1.4.2)を使用するようにしてください 。
長いビルド時間を回避するには、デバッグビルドで Performance Monitoring プラグインをローカルで無効 にします。ただし、製品版ビルドでは、アプリのネットワーク リクエストのパフォーマンス測定を見逃す可能性があるため、この方法はおすすめしません。
Performance Monitoring Gradle プラグインに対応していないライブラリが原因で、ビルドエラーが発生しました。どうすればよいですか?
Android 向け Performance Monitoring は、バイトコードのインストルメンテーションを使用して、HTTP/S ネットワーク リクエストのモニタリング などのすぐに使える機能を提供します。コンパイルの一環として、アプリケーションのネットワークのリクエスト パフォーマンスの測定に不可欠なコードを実装するため、アプリのすべてのクラス(依存関係を含む)を反復処理する必要があります。
Performance Monitoring プラグインとの統合後に JSR/RET are not supported with
computeFrames option
などのビルドエラーや、同様のエラーが発生した場合は、Performance Monitoring Gradle プラグインと互換性のないライブラリへの依存関係があることが原因になっている可能性があります。
この問題を回避するには、次の手順で互換性のないクラスまたはライブラリをインストゥルメントから除外します。
Performance Monitoring Gradle プラグインを最新バージョンに更新します(少なくとも v1.4.0 以降)。
Android Gradle プラグインのバージョンを v7.2.0 以降に更新します。
以下のフラグをモジュール(アプリレベル)の build.gradle
ファイルに追加して、互換性のないクラスやライブラリをインストルメントから除外します。
android {
// ...
androidComponents {
onVariants(selector().all(), {
instrumentation.excludes.add("example.incompatible.library")
})
}
}
Android Gradle プラグインの Instrumentation
API の exclude
プロパティの詳細 については、インストルメンテーション をご覧ください。
互換性のないライブラリが原因でビルドエラーが発生した場合は、それらが Performance Monitoring プラグインのインストルメンテーションから除外されるようにするため、GitHub で問題を報告 してください。
Performance Monitoring データの BigQuery へのエクスポートに予想よりも時間がかかっています。リアルタイムではないのですか?
Firebase Performance Monitoring の BigQuery 統合を有効にしている場合、データはその日の終わり(太平洋時間)から 12~24 時間後に BigQuery にエクスポートされます。
たとえば、4 月 19 日のデータは、4 月 20 日午後 12 時から深夜まで、BigQuery で使用できます(すべての日時は太平洋時間)。
ほぼリアルタイムのデータ処理と表示
「準リアルタイム」(またはニア リアルタイム)のパフォーマンス データとは何ですか?
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 プロジェクト設定 のアプリ カードで確認します。