特定のアプリコードのカスタムモニタリングを追加する

Performance Monitoringは、アプリのパフォーマンスを監視するのに役立つトレースを収集します。トレースは、アプリの2つの時点の間でキャプチャされたパフォーマンスデータのレポートです。

独自のトレースを作成して、アプリ内の特定のコードに関連付けられたパフォーマンスデータを監視できます。カスタムコードトレースを使用すると、アプリが特定のタスクまたは一連のタスクを完了するのにかかる時間を測定できます。たとえば、一連の画像の読み込みやデータベースのクエリなどです。

カスタムコードトレースのデフォルトのメトリックはその「期間」(トレースの開始点と停止点の間の時間)ですが、カスタムメトリックを追加することもできます。

コードでは、Performance Monitoring SDKによって提供されるAPIを使用して、カスタムコードトレースの開始と終了を定義します。Androidアプリの場合、 @AddTraceアノテーションを使用して特定のメソッドを監視することもできます。カスタムコードトレースは、作成後いつでも開始でき、スレッドセーフです。

これらのトレースに対して収集されるデフォルトのメトリックは「期間」であるため、「期間トレース」と呼ばれることもあります。

これらのトレースのデータは、パフォーマンスダッシュボードの下部にあるトレーステーブルの[カスタムトレース]サブタブで表示できます(コンソールの使用について詳しくは、このページの後半を参照してください)。

デフォルト属性、カスタム属性、およびカスタムメトリック

カスタムコードトレースの場合、パフォーマンスモニタリングはデフォルトの属性(アプリのバージョン、国、デバイスなどの一般的なメタデータ)を自動的にログに記録するため、Firebaseコンソールでトレースのデータをフィルタリングできます。カスタム属性(ゲームレベルやユーザープロパティなど)を追加および監視することもできます。

さらに、カスタムコードトレースを構成して、トレースのスコープ内で発生するパフォーマンス関連のイベントのカスタムメトリックを記録できます。たとえば、キャッシュのヒットとミスの数、またはUIが目立った期間応答しなくなった回数のカスタムメトリックを作成できます。

カスタム属性とカスタム指標は、トレースのデフォルト属性とデフォルト指標とともにFirebaseコンソールに表示されます。

カスタムコードトレースを追加する

Performance Monitoring Trace APIを使用して、特定のアプリケーションコードを監視するためのカスタムコードトレースを追加します。

次の点に注意してください。

  • アプリには、複数のカスタムコードトレースを含めることができます。
  • 複数のカスタムコードトレースを同時に実行できます。
  • カスタムコードトレースの名前は、次の要件を満たしている必要があります。先頭または末尾の空白、先頭の下線( _ )文字、最大長は100文字です。
  • カスタムコードトレースは、カスタムメトリックカスタム属性の追加をサポートします。

カスタムコードトレースを開始および停止するには、トレースするコードを次のようなコード行でラップします(この例では、 test_traceというカスタムトレース名を使用します)。

Java

// Import these Performance Monitoring classes at the top of your `.java` file
import com.google.firebase.perf.FirebasePerformance;
import com.google.firebase.perf.metrics.Trace;

Trace myTrace = FirebasePerformance.getInstance().newTrace("test_trace");
myTrace.start();

// code that you want to trace

myTrace.stop();

Kotlin + KTX

// Import these Performance Monitoring classes at the top of your `.kt` file
import com.google.firebase.perf.FirebasePerformance;
import com.google.firebase.perf.metrics.Trace;

val myTrace = Firebase.performance.newTrace("test_trace")
myTrace.start()

// code that you want to trace

myTrace.stop()

(オプション) @AddTraceを使用して特定のメソッドを監視します

Androidアプリは、カスタムコードトレースを計測するための@AddTraceアノテーションもサポートしています。この機能を使用すると、トレースは指定されたメソッドの先頭から開始し、メソッドによって呼び出されたものを含め、メソッドが完了すると停止します。

たとえば、 onCreate()メソッドが呼び出されたときに実行されるonCreateTraceというカスタムコードトレースを作成できます。

Java

// Import these Performance Monitoring classes at the top of your `.java` file
import com.google.firebase.perf.FirebasePerformance;
import com.google.firebase.perf.metrics.AddTrace;

// Add the `@AddTrace` annotation above the method you want to trace
@Override
@AddTrace(name = "onCreateTrace", enabled = true /* optional */)
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
}

Kotlin + KTX

// Import these Performance Monitoring classes at the top of your `.kt` file
import com.google.firebase.perf.FirebasePerformance;
import com.google.firebase.perf.metrics.AddTrace;

// Add the `@AddTrace` annotation above the method you want to trace
@AddTrace(name = "onCreateTrace", enabled = true /* optional */)
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
}

カスタムコードトレースにカスタムメトリックを追加する

Performance Monitoring Trace APIを使用して、カスタムメトリックをカスタムコードトレースに追加します。

次の点に注意してください。

  • カスタムメトリックの名前は、次の要件を満たしている必要があります。先頭または末尾の空白、先頭の下線( _ )文字、最大長は100文字です。
  • 各カスタムコードトレースは、最大32のメトリック(デフォルトの期間メトリックを含む)を記録できます。

カスタムメトリックを追加するには、イベントが発生するたびに、次のようなコード行を追加します。たとえば、このカスタムメトリックは、キャッシュのヒットやミスなど、アプリで発生するパフォーマンス関連のイベントをカウントします( item_cache_hititem_cache_missのイベント名の例と1の増分を使用)。

Java

Trace myTrace = FirebasePerformance.getInstance().newTrace("test_trace");
myTrace.start();

// code that you want to trace (and log custom metrics)
Item item = cache.fetch("item");
if (item != null) {
    myTrace.incrementMetric("item_cache_hit", 1);
} else {
    myTrace.incrementMetric("item_cache_miss", 1);
}

myTrace.stop();

Kotlin + KTX

val myTrace = Firebase.performance.newTrace("test_trace")
myTrace.start()

// code that you want to trace (and log custom metrics)
val item = cache.fetch("item")
if (item != null) {
    myTrace.incrementMetric("item_cache_hit", 1)
} else {
    myTrace.incrementMetric("item_cache_miss", 1)
}

myTrace.stop()

カスタムコードトレースのカスタム属性を作成する

Performance Monitoring Trace APIを使用して、カスタム属性をカスタムコードトレースに追加します。

カスタム属性を使用するには、属性を定義し、それを特定のカスタムコードトレースに関連付けるコードをアプリに追加します。カスタム属性は、トレースの開始時から停止時までの間にいつでも設定できます。

次の点に注意してください。

  • カスタム属性の名前は、次の要件を満たしている必要があります。先頭または末尾の空白、先頭の下線( _ )文字、最大長は32文字です。

  • 各カスタムコードトレースは、最大5つのカスタム属性を記録できます。

  • Googleに対して個人を個人的に識別する情報を含むカスタム属性を使用しないでください。

    このガイドラインの詳細

Java

Trace trace = FirebasePerformance.getInstance().newTrace("test_trace");

// Update scenario.
trace.putAttribute("experiment", "A");

// Reading scenario.
String experimentValue = trace.getAttribute("experiment");

// Delete scenario.
trace.removeAttribute("experiment");

// Read attributes.
Map<String, String> traceAttributes = trace.getAttributes();

Kotlin + KTX

Firebase.performance.newTrace("test_trace").trace {
    // Update scenario.
    putAttribute("experiment", "A")

    // Reading scenario.
    val experimentValue = getAttribute("experiment")

    // Delete scenario.
    removeAttribute("experiment")

    // Read attributes.
    val traceAttributes = this.attributes
}

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

ダッシュボードで特定のメトリックを追跡する

主要な指標がどのようにトレンドになっているのかを知るには、パフォーマンスダッシュボードの上部にある指標ボードにそれらを追加します。週ごとの変更を確認するか、コードの最近の変更によってパフォーマンスが向上していることを確認することで、リグレッションをすばやく特定できます。

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

指標ボードに指標を追加するには、Firebaseコンソールのパフォーマンスダッシュボードに移動し、[ダッシュボード]タブをクリックします。空のメトリックカードをクリックしてから、既存のメトリックを選択してボードに追加します。メトリックの置換や削除などのオプションについては、入力されたメトリックカードのをクリックしてください。

メトリックボードには、収集されたメトリックデータが、グラフ形式と数値のパーセンテージ変化の両方で表示されます。

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

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

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

トレーステーブルでトレース名をクリックすると、さまざまな画面をクリックしてトレースを調べ、目的のメトリックにドリルダウンできます。ほとんどのページでは、[ のフィルター]ボタン(画面の左上)を使用して、属性でデータをフィルター処理できます。次に例を示します。

属性でフィルタリングされているFirebasePerformanceMonitoringデータの画像
  • アプリのバージョンでフィルタリングして、過去のリリースまたは最新のリリースに関するデータを表示します
  • デバイスでフィルタリングして、古いデバイスがアプリをどのように処理するかを確認します
  • でフィルタリングして、データベースの場所が特定の地域に影響を与えていないことを確認します

トレースのデータの表示の詳細をご覧ください

次のステップ

  • 属性を使用してパフォーマンスデータを調べる方法の詳細をご覧ください。

  • Firebaseコンソールでパフォーマンスの問題を追跡する方法の詳細をご覧ください。

  • アプリのパフォーマンスを低下させているコード変更のアラートを設定します。たとえば、特定のカスタムコードトレースの期間が設定したしきい値を超えた場合に、チームの電子メールアラートを構成できます。

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