Android Vitals によるアプリの技術的パフォーマンスのモニタリング

Play Console を使用すると、アプリの電池使用量、安定性、表示に要する時間などのデータを把握して、改善に役立てることができます。

以下のデータは、Android デバイスや OS バージョンからの使用状況データや診断情報について、自動共有を有効に設定したユーザーから収集されたものです。Android ユーザーがデータ共有にオプトインする方法について詳しくは、アカウント ヘルプセンターをご覧ください。

すべて折りたたむ すべて展開

データタイプ

電池使用量
  • 停止した wake lock
  • 停止した wake lock(バックグラウンド)
  • 過度の wakeup
  • 過度の Wi-Fi スキャン(バックグラウンド)
  • 過度のネットワーク使用量(バックグラウンド)
安定性
  • ANR 発生率
  • マルチ ANR 発生率
  • クラッシュ発生率
  • マルチ クラッシュ発生率
表示に要する時間
  • 遅いレンダリング(16 ミリ秒)
  • フリーズした UI フレーム(700 ミリ秒)
アプリのスタートアップ時間
  • コールド スタートアップ時間が長い
  • ウォーム スタートアップ時間が長い
  • ホット スタートアップ時間が長い
権限
  • 権限の拒否

アプリのデータを見つけて確認する

[Android Vitals] ページに記載されている期間に収集された、アプリのすべてのデータが含まれます。この期間はカスタマイズできません。Android Vitals データは太平洋時間(PT)に基づいています。

重要: 利用可能なデータがない場合は、指定したフィルタ内のデータポイントが不足するため、アプリに関する問題を特定できません。

アプリの Android Vitals データを見つけて確認する手順は、次のとおりです。

  1. Play Console にログインします。
  2. アプリを選択します。
  3. 左側のメニューで [Android Vitals] > [概要] をクリックします。
  4. アプリのデータの表示方法を選択します。
概要ダッシュボードと詳細な指標のページを確認します。

主な指標

[概要] ページの上部には、アプリの主な指標に関するデータが表示されます。この主な指標とは、Google Play でのアプリの表示やランキングに影響するパフォーマンス指標です。主な指標には、次のものがあります。

  • 停止した部分的な wake lock(バックグラウンド)
  • 過度の wakeup
  • ANR 発生率
  • クラッシュ発生率

不正な動作のしきい値を超える指標や、パフォーマンス データの大きな変化(異常)など、アプリに重要なパフォーマンスの問題があり、注意が必要な場合は、このページを使用してアプリで改善できる領域をすばやく特定できます。ANR またはクラッシュが発生したクラスタで重要な変更が検出された場合にメールで通知を受け取るには、[設定] > [詳細設定] を開きます。

重要: 優れたユーザー エクスペリエンスを実現するには、すべてのアプリで問題を特定して解決し、不正な動作のしきい値を超えないようにする必要があります。

すべての指標をブラウジングする

[概要] ページの中央付近には、データタイプごとにすべての指標に関するデータが表示されます。表をフィルタリングするには、表示するディメンションと期間を選択します。

指標ごとに、現在や過去の期間に影響を及ぼしたアプリのセッションの割合を確認できます。アプリのパフォーマンスを Google Play の他のアプリと比較するには、アプリと類似アプリの中央値の差を確認するという方法もあります。

詳細な指標を表示する

指標の詳細を確認するには、[詳細を表示] を選択します。次の画面では、以下の項目を確認できます。

  • パフォーマンス データに見られる異常(主な指標のみ)
  • 不正な動作のしきい値(主な指標のみ)
  • カテゴリのベンチマーク
  • 詳細なベンチマーク比較
    • ページ上部の [類似アプリの比較] カードで、[類似アプリのグループを編集] を選択し、類似アプリのカスタム グループを作成します。類似アプリのカスタム グループを作成すると、選択した Google Play の他のアプリと、自分のアプリを比較できます。
  • APK のバージョン コード、デバイス、OS バージョン、ベンチマーク、期間別の指標
    • 詳細を表示するには、右側の下矢印を選択してテーブルの各行を展開します。
不正な動作によるフィルタリング

[概要] ページ上部の指標に赤色のエラーアイコン が表示されることがあります。これは、表示されている数値が他のアプリに比べて高く、不正な動作であることを表します。

どのアプリの APK に不正な動作が含まれているかを確認するには、エラーアイコンが表示されているカードを選択します。

指標の詳細

停止した wake lock、停止した wake lock(バックグラウンド)

[停止した wake lock] ページと [停止した wake lock(バックグラウンド)] ページには、アプリが PowerManager クラスを介して取得した部分的な wake lock が表示されます。部分的な wake lock では、CPU は動作していますが、画面やキーボードのバックライトをオフにすることができます。

データ収集の詳細

  • プライバシー保護のため、部分的な wake lock の識別タグは匿名化されます。
  • 部分的な wake lock に関するデータは、デバイスが充電中でなく、画面がオフになっているときに収集されます。
  • 停止した wake lock(バックグラウンド)に関するデータは、アプリがバックグラウンドで実行されているときにだけ収集されます。
  • Google では、長い wake lock の影響を受けるセッション数を示すために、電池セッションごとに部分的な wake lock の最大時間を計算します。たとえば、ユーザーが 1 時間の wake lock を 2 回発生させた場合、Google は最大 wake lock 時間の値として 1 時間を使用します。
  • マニフェスト ファイルsharedUserId を設定しているアプリの場合: 同じ sharedUserId を持つアプリが複数インストールされている場合、データは表示されません。

重要な詳細

  • 影響を受けたセッションの数: 1 時間を超える wake lock が 1 回以上発生した電池セッションの割合です。
  • セッションの数: 記録されたセッションのおよその数です。
  • 90 パーセンタイル / 99 パーセンタイル: 1 日のセッションの 10% または 1% で、表示された数値を上回る長さの部分的な wake lock が発生しました。
  • 下位 25%: Google Play のインストール数上位 1,000 アプリのうち下位 25% の値です。発生率がこのしきい値以上のアプリは下位 25 %に相当します。

問題を解決する

アプリの wake lock の回数が多い場合は、Android デベロッパー サイトでおすすめの解決方法を探します。

過度の wakeup

[過度の wakeup] ページには、アプリによって引き起こされた Alarm Manager wakeup が表示されます。AlarmManager クラスの ELAPSED_REALTIME_WAKEUP または RTC_WAKEUP の wakeup データが表示されます。

データ収集の詳細

  • プライバシー保護のため、ウェイクアップの識別タグは匿名化されます。
  • ウェイクアップはデバイスが充電中でないときに収集されます。
  • 正規化された指標を提供するため、ウェイクアップの数はデバイスが充電池で動作している時間と比較されます。高いウェイクアップ率の影響を受けるユーザー数を示すために、1 時間ごとに 1 ユーザーあたりのウェイクアップ数が計算されます。
  • マニフェスト ファイルsharedUserId を設定しているアプリの場合: 同じ sharedUserId を持つアプリが複数インストールされている場合、データは表示されません。

重要な詳細

  • 影響を受けたセッションの数: 1 時間に 10 回を超える wakeup が発生した電池セッションの割合です。電池セッションとは、デバイスの完全充電から次の完全充電までの期間です。データは、デバイスが充電器に接続されていないときに収集されます。
  • セッションの数: 記録されたセッションのおよその数です。
  • 90 パーセンタイル / 99 パーセンタイル: 1 日のセッションの 10% または 1% で、表示された数値を上回る回数の wakeup が 1 時間あたりに発生しました。
  • 下位 25%: Google Play のインストール数上位 1,000 アプリのうち下位 25% の値です。発生率がこのしきい値以上のアプリは下位 25 %に相当します。

問題を解決する

アプリで wakeup が頻繁に発生する場合は、Android デベロッパー サイトでおすすめの解決方法を探します。

過度の Wi-Fi スキャン(バックグラウンド)

Wi-Fi スキャンによって電池使用量が多くなると、[過度の Wi-Fi スキャン(バックグラウンド)] ページが表示されます。

データ収集の詳細

Wi-Fi スキャンに関するデータは、デバイスが充電中でなく、アプリがバックグラウンドで実行されているときに収集されます。

重要な詳細

  • 影響を受けたセッションの数: 1 時間に 4 回を超える Wi-Fi スキャンが発生した電池セッションの割合です。
  • セッションの数: 記録されたセッションのおよその数です。
  • 90 パーセンタイル / 99 パーセンタイル: 1 日のセッションの 10% または 1% で、Wi-Fi スキャン(バックグラウンド)の 1 時間あたりの発生回数が表示された数値を上回りました。
  • 下位 25%: Google Play のインストール数上位 1,000 アプリのうち下位 25% の値です。発生率がこのしきい値以上のアプリは下位 25 %に相当します。

問題を解決する

バックグラウンドで Wi-Fi スキャンが発生する回数が多い場合は、Android デベロッパー サイトでおすすめの解決方法を探します。

過度のネットワーク使用量(バックグラウンド)

[過度のネットワーク使用量(バックグラウンド)] ページは、大量のネットワーク データがバックグラウンド サービスに関連付けられている場合に表示されます。モバイル ネットワークがバックグラウンドで使用されている場合、ユーザーがコントロールにアクセスしてデータ転送を中止することが難しくなります。

データ収集の詳細

モバイル ネットワーク使用量に関するデータは、デバイスが充電中でなく、アプリがバックグラウンドで実行されているときに収集されます。

重要な詳細

  • 影響を受けたセッションの数: 1 日のネットワーク使用量(バックグラウンド)が 50 MB を超えた電池セッションの割合です。
  • セッションの数: 記録されたセッションのおよその数です。
  • 90 パーセンタイル / 99 パーセンタイル: 1 日のセッションの 10% または 1% で、1 日のネットワーク使用量(バックグラウンド)が表示された数値を上回りました。
  • 下位 25%: Google Play のインストール数上位 1,000 アプリのうち下位 25% の値です。発生率がこのしきい値以上のアプリは下位 25 %に相当します。

問題を解決する

バックグラウンドでのネットワーク使用量が多い場合は、Android デベロッパー サイトでおすすめの解決方法を探します。

ANR 発生率とマルチ ANR 発生率

アプリのデータを理解する

[ANR 発生率] ページと [マルチ ANR 発生率] ページには、アプリの [ANR とクラッシュ] ページとほぼ同じデータが表示されます。[Android Vitals] ページでは、ANR データと使用状況データを組み合わせて正規化された指標が表示されます。

ANR 発生率の詳細

  • 影響を受けたセッションの数: 1 回以上 ANR が発生した 1 日のセッションの割合です。1 日のセッションとは、1 日の間にアプリの利用があった日を指します。たとえば、2 人のユーザーがアプリを 2 日間使用した場合、1 日のセッションの数は 4 とカウントされます。
  • ANR が発生しなかったセッション: ANR が発生しなかった 1 日のセッションの割合です。1 日のセッションとは、1 日の間にアプリの利用があった日を指します。
  • セッションの数: 記録されたセッションのおよその数です。
  • 下位 25%: Google Play のインストール数上位 1,000 アプリのうち下位 25% の値です。発生率がこのしきい値以上のアプリは下位 25 %に相当します。
  • ANR 関連情報: リアルタイムの ANR の詳細を表示するには、[ANR] リンクを選択します。Play Console の [ANR とクラッシュ] ページが表示されます。

マルチ ANR 発生率の詳細

  • 影響を受けたセッションの数: 2 回以上 ANR が発生した 1 日のセッションの割合です。1 日のセッションとは、1 日の間にアプリの利用があった日を指します。たとえば、2 人のユーザーがアプリを 2 日間使用した場合、1 日のセッションの数は 4 とカウントされます。
  • 影響を受けていないセッションの数: ANR が 1 回発生した、あるいは発生しなかった 1 日のセッションの割合です。1 日のセッションとは、1 日の間にアプリの利用があった日を指します。
  • セッションの数: 記録されたセッションのおよその数です。
  • ANR 関連情報: リアルタイムの ANR の詳細を表示するには、[ANR] リンクを選択します。Play Console の [ANR とクラッシュ] ページが表示されます。

問題を解決する

アプリで ANR が発生する回数が多い場合は、Android デベロッパー サイトでおすすめの解決方法を探します。

クラッシュ発生率とマルチ クラッシュ発生率

アプリのデータを理解する

[クラッシュ発生率] ページと [マルチ クラッシュ率] ページには、アプリの [ANR とクラッシュ] ページとほぼ同じデータが表示されます。[Android Vitals] ページでは、クラッシュ データと使用状況データを組み合わせて正規化された指標が表示されます。

クラッシュ発生率の詳細

  • 影響を受けたセッションの数: 1 回以上クラッシュが発生した 1 日のセッションの割合です。1 日のセッションとは、1 日の間にアプリの利用があった日を指します。たとえば、2 人のユーザーがアプリを 2 日間使用した場合、1 日のセッションの数は 4 とカウントされます。
  • クラッシュが発生しなかったセッション: クラッシュが発生しなかった 1 日のセッションの割合です。1 日のセッションとは、1 日の間にアプリの利用があった日を指します。
  • セッションの数: 記録されたセッションのおよその数です。
  • 下位 25%: Google Play のインストール数上位 1,000 アプリのうち下位 25% の値です。発生率がこのしきい値以上のアプリは下位 25 %に相当します。
  • クラッシュ関連情報: リアルタイムのクラッシュの詳細を表示するには、[クラッシュ] リンクを選択します。Play Console の [ANR とクラッシュ] ページが表示されます。

マルチ クラッシュ発生率の詳細

  • 影響を受けたセッションの数: 2 回以上クラッシュが発生した 1 日のセッションの割合です。1 日のセッションとは、1 日の間にアプリの利用があった日を指します。たとえば、2 人のユーザーがアプリを 2 日間使用した場合、1 日のセッションの数は 4 とカウントされます。
  • 影響を受けていないセッションの数: クラッシュが 1 回発生した、あるいは発生しなかった 1 日のセッションの割合です。1 日のセッションとは、1 日の間にアプリの利用があった日を指します。
  • セッションの数: 記録されたセッションのおよその数です。
  • クラッシュ関連情報: リアルタイムのクラッシュの詳細を表示するには、[クラッシュ] リンクを選択します。Play Console の [ANR とクラッシュ] ページが表示されます。

問題を解決する

アプリのクラッシュが多い場合は、Android デベロッパー サイトでおすすめの解決方法を探します。

遅い表示

アプリのデータを理解する

[遅い表示] ページでは、50% を超えるフレームで表示に要する時間が 16 ミリ秒を上回った 1 日のセッションの割合に関する詳細が表示されます。ユーザーによるアプリの操作は、フレームの欠落や遅延なしに、毎秒 60 フレームの速度で実行される必要があります。

データ収集の詳細

Google では、アプリが OpenGL を直接使用している場合ではなく、UI Toolkit フレームワークを使用している場合に、アプリの各フレームの表示時間を収集します。

ダッシュボードの表示

行を選択すると、パーセンタイル値に分解されたデータが表示されます。

  • 影響を受けたセッションの数: 50% を超えるフレームで表示に要する時間が 16 ミリ秒を上回った 1 日のセッションの割合です。1 日のセッションとは、1 日の間にアプリの利用があった日を指します。たとえば、2 人のユーザーがアプリを 2 日間使用した場合、1 日のセッションの数は 4 とカウントされます。
  • セッションの数: 記録されたセッションのおよその数です。
  • 90 パーセンタイル / 99 パーセンタイル: 全フレームの 90% または 99% で、フレームの表示に要する時間が表示された数値を下回りました。これらの数値は、収集されたすべてのフレームに基づいています。
  • 下位 25%: Google Play のインストール数上位 1,000 アプリのうち下位 25% の値です。発生率がこのしきい値以上のアプリは下位 25 %に相当します。

表内のエントリをクリックすると、[UI の表示に要する時間の分布] グラフが表示されます。このグラフを見るときは、アプリのフレームの大部分で 16 ミリ秒を下回っていることを確認してください。

グラフの下にあるデータは、アプリの表示のパフォーマンスを示しています。表示時間に関する問題の根本原因を特定するのに役立ちます。たとえば、[高い入力レイテンシ] の割合が高い場合は、アプリのコードのうちユーザー入力を処理する部分をご確認ください。これらの指標について詳しくは、UI パフォーマンスのテストに関する記事をご覧ください。

  • 見つからなかった Vsync: 表示に要する時間が 16 ミリ秒を上回ったすべてのフレームについて、見つからなかった Vsync イベントの数をフレーム数で割った値です。
  • 高い入力レイテンシ: 表示に要する時間が 16 ミリ秒を上回ったすべてのフレームについて、処理時間が 24 ミリ秒を上回った入力イベントの数をフレーム数で割った値です。
  • 遅い UI スレッド: 表示に要する時間が 16 ミリ秒を上回ったすべてのフレームについて、UI スレッドの処理時間が 8 ミリ秒を上回った回数をフレーム数で割った値です。
  • 遅い描画コマンド: 表示に要する時間が 16 ミリ秒を上回ったすべてのフレームについて、GPU への描画コマンドの送信に要する時間が 12 ミリ秒を上回った回数をフレーム数で割った値です。
  • 遅いビットマップ アップロード: 表示に要する時間が 16 ミリ秒を上回ったすべてのフレームについて、GPU へのビットマップのアップロードに要する時間が 3.2 ミリ秒を上回った回数をフレーム数で割った値です。

問題を解決する

アプリで表示に要する時間が 16 ミリ秒を上回ったフレームの数が多い場合は、Android デベロッパー サイトでおすすめの解決方法を探します。

フリーズしたフレーム

[フリーズしたフレーム] ページでは、0.1% を超えるフレームで表示に要する時間が 700 ミリ秒を上回った 1 日のセッションの割合に関する詳細が表示されます。ユーザーによるアプリの操作は、フレームの欠落や遅延なしに、毎秒 60 フレームの速度で実行される必要があります。

データ収集の詳細

Google では、アプリが OpenGL を直接使用している場合ではなく、UI Toolkit フレームワークを使用している場合に、アプリの各フレームの表示時間を収集します。

ダッシュボードの表示

ディメンションの行を展開すると、パーセンタイル値に分解されたデータが表示されます。

  • 影響を受けたセッションの数: 0.1% を超えるフレームで表示に要する時間が 700 ミリ秒を上回った 1 日のセッションの割合です。1 日のセッションとは、1 日の間にアプリの利用があった日を指します。たとえば、2 人のユーザーがアプリを 2 日間使用した場合、1 日のセッションの数は 4 とカウントされます。
  • セッションの数: 記録されたセッションのおよその数です。
  • 90 パーセンタイル / 99 パーセンタイル: 全フレームの 90% または 99% で、フレームの表示に要する時間が表示された数値を下回りました。これらの数値は、収集されたすべてのフレームに基づいています。
  • 下位 25%: Google Play のインストール数上位 1,000 アプリのうち下位 25% の値です。発生率がこのしきい値以上のアプリは下位 25 %に相当します。

表内のエントリをクリックすると、[UI の表示に要する時間の分布] グラフが表示されます。このグラフを見るときは、アプリのフレームの大部分で 700 ミリ秒を下回っていることを確認してください。

グラフの下にあるデータは、アプリの表示のパフォーマンスを示しています。表示時間に関する問題の根本原因を特定するのに役立ちます。たとえば、[高い入力レイテンシ] の割合が高い場合は、アプリのコードのうちユーザー入力を処理する部分をご確認ください。これらの指標について詳しくは、UI パフォーマンスのテストに関する記事をご覧ください。

  • 見つからなかった Vsync: 表示に要する時間が 16 ミリ秒を上回ったすべてのフレームについて、見つからなかった Vsync イベントの数をフレーム数で割った値です。
  • 高い入力レイテンシ: 表示に要する時間が 16 ミリ秒を上回ったすべてのフレームについて、処理時間が 24 ミリ秒を上回った入力イベントの数をフレーム数で割った値です。
  • 遅い UI スレッド: 表示に要する時間が 16 ミリ秒を上回ったすべてのフレームについて、UI スレッドの処理時間が 8 ミリ秒を上回った回数をフレーム数で割った値です。
  • 遅い描画コマンド: 表示に要する時間が 16 ミリ秒を上回ったすべてのフレームについて、GPU への描画コマンドの送信に要する時間が 12 ミリ秒を上回った回数をフレーム数で割った値です。
  • 遅いビットマップ アップロード: 表示に要する時間が 16 ミリ秒を上回ったすべてのフレームについて、GPU へのビットマップのアップロードに要する時間が 3.2 ミリ秒を上回った回数をフレーム数で割った値です。

問題を解決する

アプリで表示に要する時間が 700 ミリ秒を上回ったフレームの数が多い場合は、Android デベロッパー サイトでおすすめの解決方法を探します。

アプリのスタートアップ時間

[アプリのスタートアップ時間] ページでは、アプリがコールドウォームホットの各システム状態から起動する時間が長くなった場合についての詳細が表示されます。

データ収集の詳細

  • スタートアップ時間は、ユーザーが操作を開始した場合にのみ記録されます。
    • : キーボード アプリの場合、スタートアップ時間はコンパニオン アプリのスタートアップ時間に相当します。
  • アプリが 1 日に複数回、同じシステム状態から起動した場合、その日の最も長いスタートアップ時間が記録されます。
  • スタートアップ時間は、アプリの最初のフレームが完全に読み込まれたときに記録され、これがユーザーの操作する画面ではない場合も対象になります。
    • : アプリがスプラッシュ画面から始まる場合、スタートアップ時間はスプラッシュ画面を表示するためにかかる時間となります。

重要な詳細

  • 影響を受けたセッションの数: 各システム状態からのスタートアップ時間が長くなったセッションの割合。
    • コールド スタートアップ時間が長い: 5 秒以上
    • ウォーム スタートアップ時間が長い: 2 秒以上
    • ホット スタートアップ時間が長い: 1 秒以上
  • セッションの数: 記録されたセッションのおよその数です。
  • 90 パーセンタイル / 99 パーセンタイル: 1 日のセッションの 10% または 1% で、アプリの起動時間が長くなりました。
  • 下位 25%: Google Play のインストール数上位 1,000 アプリのうち下位 25% の値です。発生率がこのしきい値以上のアプリは下位 25 %に相当します。

問題を解決する

アプリのスタートアップ時間が長くなる回数が多い場合は、Android デベロッパー サイトでおすすめの解決方法を探します。

権限の拒否

[権限の拒否] ページには、1 日の権限セッション数における、ユーザーが権限リクエストを拒否した割合の詳細が表示されます。1 日の権限セッションとは、アプリでユーザーに対し権限が 1 回以上リクエストされた日を示します。

データ収集の詳細

権限の拒否に関するデータは、ユーザーがアプリ内の権限リクエストに応答した場合に収集されます。

重要な詳細

  • 拒否: 1 日の権限セッション数における、ユーザーが権限リクエストを拒否した割合です。
  • 次回から表示しない: 1 日の権限セッション数における、ユーザーが [次回から表示しない] を選択して権限リクエストを拒否した割合です。
  • セッションの数: 記録されたセッションのおよその数です。
  • 下位 25%: Google Play のインストール数上位 1,000 アプリのうち下位 25% の値です。発生率がこのしきい値以上のアプリは下位 25 %に相当します。

問題を解決する

アプリで権限が拒否される回数が多い場合は、Android デベロッパー サイトでおすすめの解決方法を探します。

ディメンションを使ってデータを分析する

データの整理や分析がしやすいように、すべてのアプリのデータは次のディメンションで分類することができます。

  • アプリのバージョン: アプリのバージョン
  • Android のバージョン: ユーザーのデバイスから報告された Android OS バージョン
  • デバイス: ユーザーのデバイスのマーケティング名とデバイス名(Google Nexus 7 / Flo など)
  • wake lock タグ: アプリで PowerManager API を使用するときにプログラムで設定されたタグ
  • wakeup タグ: アプリで AlarmManager API を使用するときにプログラムで設定されたタグ
  • ANR アクティビティ名: ANR が発生したアクティビティ クラスの完全修飾名(利用可能な場合)
  • ANR タイプ: ANR が発生したタイミング(例: サービスの実行中)(利用可能な場合)

関連コンテンツ

Android Vitals を使用してアプリのパフォーマンスや安定性を改善するおすすめの方法をご確認ください。

この情報は役に立ちましたか?
改善できる点がありましたらお聞かせください。