Android 向け Performance Monitoring を使ってみる

始める前に

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

プロジェクト レベルの build.gradle filebuildscript セクションと allprojects セクションの両方に Google の Maven リポジトリを組み込みます。

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

Performance Monitoring SDK を使用すると、アプリの自動所要時間トレースやその他のカスタム トレースをモニタリングできます。

  1. モジュール(アプリレベル)の Gradle ファイル(通常は app/build.gradle)を次のように編集します。

    // ...
    
    dependencies {
      // ...
    
      // Add the dependency for the Performance Monitoring library
      implementation 'com.google.firebase:firebase-perf:19.0.7'
    }
    
  2. アプリを再コンパイルします。

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

Performance Monitoring Gradle プラグインにより、@AddTrace アノテーション処理自動 HTTP/S ネットワーク リクエスト モニタリングを実現するインストゥルメンテーションが有効になります。

アプリに Performance Monitoring プラグインを追加するには:

  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.3'  // Google Services plugin
    
          // Add the dependency for the Performance Monitoring plugin
          classpath 'com.google.firebase:perf-plugin:1.3.1'  // Performance Monitoring plugin
        }
    }
    
  3. アプリを再コンパイルします。

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

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

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

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

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

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

  3. Firebase コンソールの [Performance] セクションに移動して、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 TraceMetric
    • Logging NetworkRequestMetric

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

ステップ 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.1)。

    • ルートレベル(プロジェクト レベル)の 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/S ネットワーク リクエストのペイロード サイズの合計を報告します。この値は正確とは限りません。

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

次のステップ