Google は、黒人コミュニティのための人種的公平の促進に取り組んでいます。詳細をご覧ください。

Android 向け Performance Monitoring を使ってみる

始める前に

まだ追加していない場合は、Firebase を Android プロジェクトに追加します

ステップ 1: アプリに Performance Monitoring SDK を追加する

Performance Monitoring SDK を追加すると、Firebase はアプリの画面レンダリングとアプリのライフサイクルに関するデータ(アプリの起動時間など)のデータ収集を自動的に開始します。Firebase でネットワーク リクエストをモニタリングできるようにするには、Performance Monitoring Gradle プラグインも追加する必要があります(次のステップ)。

  1. Firebase Android BoM を使用して、モジュール(アプリレベル)の Gradle ファイル(通常は app/build.gradle)で Performance Monitoring Android ライブラリの依存関係を宣言します。

    Java

    dependencies {
        // Import the BoM for the Firebase platform
        implementation platform('com.google.firebase:firebase-bom:26.2.0')
    
        // Declare the dependency for the Performance Monitoring library
        // When using the BoM, you don't specify versions in Firebase library dependencies
        implementation 'com.google.firebase:firebase-perf'
    }
    

    Firebase Android BoM を使用すると、アプリは常に互換性のあるバージョンの Firebase Android ライブラリを使用します。

    (別の方法)BoM を使用せずに Firebase ライブラリの依存関係を宣言する

    Firebase BoM を使用しない場合は、依存関係の行でそれぞれの Firebase ライブラリのバージョンを指定する必要があります。

    アプリで複数の Firebase ライブラリを使用する場合は、すべてのバージョンの互換性を確保するため、ライブラリのバージョンの管理に BoM を使用することを強くおすすめします。

    dependencies {
        // Declare the dependency for the Performance Monitoring library
        // When NOT using the BoM, you must specify versions in Firebase library dependencies
        implementation 'com.google.firebase:firebase-perf:19.0.11'
    }
    

    Kotlin+KTX

    dependencies {
        // Import the BoM for the Firebase platform
        implementation platform('com.google.firebase:firebase-bom:26.2.0')
    
        // Declare the dependency for the Performance Monitoring library
        // When using the BoM, you don't specify versions in Firebase library dependencies
        implementation 'com.google.firebase:firebase-perf-ktx'
    }
    

    Firebase Android BoM を使用すると、アプリは常に互換性のあるバージョンの Firebase Android ライブラリを使用します。

    (別の方法)BoM を使用せずに Firebase ライブラリの依存関係を宣言する

    Firebase BoM を使用しない場合は、依存関係の行でそれぞれの Firebase ライブラリのバージョンを指定する必要があります。

    アプリで複数の Firebase ライブラリを使用する場合は、すべてのバージョンの互換性を確保するため、BoM を使用してライブラリのバージョンを管理することを強くおすすめします。

    dependencies {
        // Declare the dependency for the Performance Monitoring library
        // When NOT using the BoM, you must specify versions in Firebase library dependencies
        implementation 'com.google.firebase:firebase-perf-ktx:19.0.11'
    }
    

  2. アプリを再コンパイルします。

ステップ 2: アプリに Performance Monitoring プラグインを追加する

Performance Monitoring Gradle プラグインを追加すると、Firebase は HTTP/S ネットワーク リクエストのデータ収集を自動的に開始します。このプラグインでは、@AddTrace アノテーションを使用してカスタムコード トレースをインストゥルメント化することもできます。

  1. モジュール(アプリレベル)の Gradle ファイル(通常は app/build.gradle)に、Performance Monitoring プラグインを適用します。

    apply plugin: 'com.android.application'
    apply plugin: 'com.google.gms.google-services'
    // Apply the Performance Monitoring plugin
    apply plugin: 'com.google.firebase.firebase-perf'
    
    android {
      // ...
    }
    
  2. ルートレベル(プロジェクト レベル)の Gradle ファイル(build.gradle)に、Performance Monitoring プラグインを含めるためのルールを追加します。

    buildscript {
    
        repositories {
          // Check that you have the following line (if not, add it):
          google()  // Google's Maven repository
          // Add the Bintray repository
          jcenter()
        }
    
        dependencies {
          // ...
    
          // To benefit from the latest Performance Monitoring plugin features,
          // update your Android Gradle Plugin dependency to at least v3.4.0
          classpath 'com.android.tools.build:gradle:3.4.0'
    
          classpath 'com.google.gms:google-services:4.3.4'  // Google Services plugin
    
          // Add the dependency for the Performance Monitoring plugin
          classpath 'com.google.firebase:perf-plugin:1.3.4'  // Performance Monitoring plugin
        }
    }
    
  3. アプリを再コンパイルします。

ステップ 3: 初期データ表示用のパフォーマンス イベントを生成する

Firebase はアプリからイベント情報(アプリの操作など)を受け取るときに、アプリに SDK が正常に追加されたことを検出できます。ローカルで開発している場合は、アプリを操作して、SDK 検出と初期データの収集と処理のイベントを生成します。

  1. 次の要件を満たすエミュレータまたはテストデバイスを使用して、アプリの開発を続けます。

    • 最新のイメージと Google Play 開発者サービス 15.0.0 以降を含む Android エミュレータ

    • Google Play 開発者サービス 15.0.0 以降のテストデバイス

  2. アプリをバックグラウンドとフォアグラウンドの間で数回切り替えたり、画面間を移動してアプリを操作したり、ネットワーク リクエストをトリガーしたりして、イベントを生成します。

  3. Firebase コンソールのパフォーマンス ダッシュボードに移動して、Firebase が SDK を検出したかどうかを確認します。

    SDK をアプリに追加してから 2 時間以内に「SDK を検出しました」というメッセージが表示されない場合は、トラブルシューティングのヒントをご覧ください。

  4. Performance Monitoring がパフォーマンス イベントデータを処理した後に、パフォーマンス ダッシュボードにそのデータが表示されます。SDK 検出メッセージが表示されてから 24 時間以内に初期データが表示されます。

    初期データが表示されない場合は、トラブルシューティングのヒントをご覧ください。

ステップ 4:(省略可)パフォーマンス イベントのログメッセージを表示する

  1. ビルド時に Performance Monitoring のデバッグ ロギングを有効にするには、次のようにアプリの AndroidManifest.xml ファイルに <meta-data> 要素を追加します。

    <application>
        <meta-data
          android:name="firebase_performance_logcat_enabled"
          android:value="true" />
    </application>
    
  2. ログメッセージにエラー メッセージがないか確認します。

  3. Performance Monitoring は、ログメッセージに FirebasePerformance のタグを付けます。logcat フィルタリングを使用すると、次のコマンドを実行して、所要時間トレースと HTTP/S ネットワーク リクエストのロギングを表示できます。

    adb logcat -s FirebasePerformance
  4. Performance Monitoring がパフォーマンス イベントをログに記録していることを示す次の種類のログを確認します。

    • Logging trace metric: TRACE_NAME
    • Logging network request trace: URL

アプリがパフォーマンス イベントをログに記録していない場合は、トラブルシューティングのヒントをご覧ください。

ステップ 5: (省略可)特定のコードのカスタム モニタリングを追加する

アプリの特定のコードに関連付けられたパフォーマンス データをモニタリングするには、カスタムコード トレースをインストルメント化します。

カスタム コード トレースを使用すると、一連の画像の読み込みやデータベースのクエリなど、アプリが特定のタスクや一連のタスクを完了するのにかかる時間を測定できます。カスタムコード トレースのデフォルトの指標は期間ですが、キャッシュ ヒットやメモリ警告などのカスタム指標を追加することもできます。

コードで、Performance Monitoring SDK に用意された API を使用して、カスタムコード トレースの開始と終了を定義(および必要なカスタム指標を追加)します。Android アプリの場合は、@AddTrace アノテーションを使用して特定のメソッドの期間をモニタリングすることもできます。

これらの機能の詳細とアプリに追加する方法については、特定のコードにモニタリングを追加するをご覧ください。

ステップ 6: アプリをデプロイして結果を確認する

1 つ以上のテストデバイスを使用して Performance Monitoring を検証したら、アプリのアップデート バージョンをユーザーにデプロイします。

Firebase コンソールのパフォーマンス ダッシュボードでパフォーマンス データをモニタリングできます。

既知の問題

  • Performance Monitoring Gradle プラグイン v1.1.0 で、Guava の依存関係が一致せず、次のエラーが発生する可能性があります。

    Error:Execution failed for task ':app:packageInstantRunResourcesDebug'.
    > com.google.common.util.concurrent.MoreExecutors.directExecutor()Ljava/util/concurrent/Executor;

    このエラーが発生した場合は、次のいずれかを行います。

    • Performance Monitoring プラグインを v1.1.1 以降にアップグレードする(最新バージョンは v1.3.4)。

    • ルートレベル(プロジェクト レベル)の Gradle ファイル(build.gradle)で、Performance Monitoring プラグインの依存関係を記述している行を次のように置き換える。

      buildscript {
        // ...
      
        dependencies {
          // ...
      
          // Replace the standard Performance Monitoring plugin dependency line, as follows:
          classpath ('com.google.firebase:perf-plugin:1.1.0') {
                      exclude group: 'com.google.guava', module: 'guava-jdk5'
          }
        }
      }
      
  • Performance Monitoring は、HTTP content-length ヘッダーの値に基づいて HTTP ネットワーク リクエストのペイロード サイズの合計を報告します。この値は正確とは限りません。

  • Performance Monitoring は、マルチプロセスの Android アプリのメインプロセスのみをサポートしています。

次のステップ