Fire OSでFire TV対応アプリのKPIを測定する方法
パフォーマンステストとは、互換性、信頼性、速度、応答時間、安定性、リソース使用量といった領域を対象に、Fire OSを実行しているAmazon Fire TVデバイスでアプリをテストするプロセスです。このテストは、アプリのパフォーマンスのボトルネックを特定して対処するために使用できます。パフォーマンステストには、主要業績評価指標(KPI)の収集と評価が含まれます。KPI指標を収集するには、Amazonデバイスで特定の手順を実行した後、ログなどのデバイスリソースを使用して指標を検索または計算します。
アプリをAmazonアプリストアに申請する前に、必ずパフォーマンステストを実行してください。これらのKPIを定期的にトラッキングすると、アプリがスムーズで応答性の高いエクスペリエンスを提供していることを確認できます。
レイテンシとメモリについて
- 「レイテンシ」では、アプリが起動して使用可能になるまでの時間を測定します。ユーザーは、アプリがほぼ瞬時に起動し、コンテンツを操作できるようになるまでの遅延が最小限であることを期待しています。
- 「メモリ」では、アプリがデバイスRAMをどのくらい効率的に使用しているかを測定します。メモリを過度に消費すると、システムによる強制終了やマルチタスクパフォーマンスの低下が発生し、ユーザーエクスペリエンスが低下します。
前提条件
Fire OSでアプリのKPIを測定する前に、以下の準備を完了してください。
- 開発用コンピューターに次のソフトウェアパッケージをインストールします。
- Amazon Corretto(英語のみ)
- Android Studio(セットアップ中にプラットフォームツールをインストールしてください)
- Appium
- 次の設定を完了します。
- JAVA_HOMEフォルダとANDROID_HOMEフォルダのパスを設定します。
- デバイスで開発者モードを有効にし、USBデバッグを有効にします。手順については、Amazon Fire TVでデバッグを有効にするを参照してください。
- 次のコマンドを使用して、接続されているデバイスのシリアル番号を取得します。
adb devices -l
- 次のセクションに目を通します。
アプリのKPI指標とガイドライン
次の表は、Fire OS上のFire TV対応アプリについて測定する必要のあるKPI指標の一覧と、それぞれの推奨ガイドラインを示しています。これらの指標は、起動パフォーマンスとメモリ効率を測定するものです。
| KPI | 単位 | シナリオ | 説明 | ガイドライン |
|---|---|---|---|---|
| 最初のフレームまでの時間(TTFF) | 秒(s) | コールドスタートでのアプリの起動 | アプリの起動から最初のフレームレンダリングまでの時間を測定します。Atraceを使用して、 AMS.startActivityAsUserからeglSwapBuffersWithDamageKHRまでの差として計算されます。 |
2.0秒未満 |
| TTFF | 秒(s) | ウォームスタートでのアプリの起動 | アプリがバックグラウンドからフォアグラウンドに移行するときに、最初のフレームを表示するまでにかかる時間を測定します。 | 1.0秒未満 |
| 表示完了までの時間(TTFD) | 秒(s) | コールドスタートでのアプリの起動 | アプリが起動してからユーザー操作が可能になるまでの時間を測定します。reportFullyDrawn()が必要です。 |
10.0秒未満 |
| TTFD | 秒(s) | ウォームスタートでのアプリの起動 | アプリがバックグラウンドからフォアグラウンドに移行した後、対話操作を受け付ける状態になるまでにかかる時間を測定します。 | 2.0秒未満 |
| フォアグラウンドメモリ | MB | アプリがフォアグラウンドの状態(4Kビデオ) | アプリがアクティブな状態で4Kビデオコンテンツを再生しているときの、アプリの比例セットサイズ(PSS)の合計を測定します。 | 400MB未満 |
| フォアグラウンドメモリ | MB | アプリがフォアグラウンドの状態(1080P以下) | アプリがアクティブな状態で1080P以下の解像度のコンテンツを再生しているときの、アプリのPSSの合計を測定します。 | 300MB未満 |
| バックグラウンドメモリ | MB | アプリがバックグラウンドの状態 | アプリがコンテンツを10分間再生してからバックグラウンドに移行した後の、アプリのPSSの合計を測定します。 | 100MB未満 |
| eMMCへの書き込み(FG) | MB/時間 | アプリがフォアグラウンドの状態 | アプリがアクティブな場合のeMMCストレージへの平均データ書き込み速度です。 | 50MB/時間未満 |
| eMMCへの書き込み(BG) | MB/時間 | アプリがバックグラウンドの状態 | アプリがバックグラウンドにある場合のeMMCストレージへの平均データ書き込み速度です。 | 2MB/時間未満 |
起動シナリオ
パフォーマンステストでは、次の2種類のアプリ起動シナリオを測定してTTFFとTTFDを評価します。
- コールドスタート - ユーザーがアプリプロセスを強制停止した後またはデバイスを再起動した後にアプリを起動する場合。システムは、すべてのリソースと依存関係をメモリに読み込む必要があります。
- ウォームスタート - 一部のリソースと依存関係が既にメモリ内にある状態で、ユーザーがアプリをバックグラウンド(非アクティブ状態)からフォアグラウンド(アクティブ状態)に移行する場合。
描画完了マーカー
描画完了マーカーは、アプリがユーザー操作を受け付けられる状態になったことを知らせます。マーカーは以下の役割を果たします。
- アプリの必須コンポーネントの読み込みが完了したことを示す。
- ユーザーがアプリの操作を開始できるタイミングを示す。
- TTFDパフォーマンスの測定を支援する。
実装するには、重要なポイントとなる以下の場所で、アクティビティからreportFullyDrawn()を呼び出します。
- コールドスタート - 初期データを読み込んでメイン画面(サインインページまたはホームページ)をレンダリングした後。
- ウォームスタート - アプリがフォアグラウンドに移行した後で応答可能になったとき。
次のサンプルコードは、描画完了マーカーを追加する方法を示しています。
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
getWindow().getDecorView().post(() -> {
reportFullyDrawn();
});
}
}
class MainActivity : Activity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
window.decorView.post { reportFullyDrawn() }
}
}
reportFullyDrawn()は、サインインページまたはホームページのレンダリングが完了した後の位置に配置してください。ADBとAtraceによるKPIの測定
Android Debug Bridge(ADB)とAtraceを使用して、Fire OSを実行しているFire TVデバイスで各KPIを測定します。
テスト戦略
テストでは、アプリランチャーインテントまたはMonkeyツールを使用して、アプリの起動と強制停止を数回繰り返します。各イテレーションで、Atraceログのキャプチャ、ナビゲーションアクションの実行、タイマー値のキャプチャ、メモリ使用量のキャプチャを強制停止前に行います。
Amazonでは、少なくとも以下の回数のイテレーションを実行することを推奨しています。
| パフォーマンステストのカテゴリー | 最小イテレーション回数 |
|---|---|
| レイテンシ - 最初のフレームまでの時間(TTFF) | 50 |
| 使用準備完了 - 表示完了までの時間(TTFD) | 10 |
| メモリ | 5 |
テストするデバイス
複数のFire OSバージョンをテスト対象とするために、以下のリファレンスデバイスでテストを実行します。
| Fire OSのバージョン | リファレンスデバイス |
|---|---|
| Fire OS 6 | Fire TV Stick 4K(2018) |
| Fire OS 7 | Fire TV Stick(音声認識リモコン付き)(2020) |
コールドスタートKPI
コールドスタートKPIでは、アプリプロセスを強制停止した後またはデバイスを再起動した後に、アプリの起動時のパフォーマンスを測定します。
TTFF - コールドスタート
- アプリを強制停止します。
adb -s <DSN> shell am force-stop <パッケージ名> - Atraceを起動します。
adb shell atrace -o /sdcard/atrace.capture -t 15 -b 32000 -a <パッケージ名> gfx input am view wm - アプリを起動します。
adb -s <DSN> shell monkey --pct-syskeys 0 -p <パッケージ名> -c android.intent.category.LEANBACK_LAUNCHER 1 - 30秒間待ちます。
- Atraceログを取得します。
adb -s <DSN> pull /sdcard/atrace.capture ./atrace_cold_<イテレーション>.txt - 時間差を計算します。
- 開始マーカー:
AMS.startActivityAsUser - 終了マーカー:
eglSwapBuffersWithDamageKHR
- 開始マーカー:
- アプリを強制停止します。
- 手順1~7を50回繰り返します。
TTFD - コールドスタート
TTFF - コールドスタートと同じ手順に従いますが、次のマーカーを使用します。
- 開始マーカー:
AMS.startActivityAsUser - 終了マーカー:
Activity.reportFullyDrawn(アプリのPIDに一致するもの)
10回繰り返します。
ウォームスタートKPI
ウォームスタートKPIでは、一部のリソースが既にメモリ内にある状態で、アプリをバックグラウンドからフォアグラウンドに移行するときのアプリのパフォーマンスを測定します。
TTFF - ウォームスタート
- アプリを起動し、[ホーム] を押してバックグラウンドに送ります。
- Atraceを起動します。
- Monkeyツールを使用してアプリを起動します(アプリをフォアグラウンドに移動します)。
- 30秒間待ちます。
- Atraceログを取得します。
- 時間差を計算します。
- 開始マーカー:
AMS.startActivityAsUser - 終了マーカー:
eglSwapBuffersWithDamageKHR
- 開始マーカー:
- [ホーム] ボタンを押して、アプリをバックグラウンドに送ります。
- 手順2~7を50回繰り返します。
TTFD - ウォームスタート
TTFF - ウォームスタートと同じ手順に従いますが、終了マーカーとしてActivity.reportFullyDrawnを使用します。
10回繰り返します。
フォアグラウンドメモリKPI
フォアグラウンドメモリKPIでは、アプリがアクティブに実行され、コンテンツを再生している間のアプリのメモリ消費量をキャプチャします。
- アプリをダウンロードしてインストールし、必要に応じてアプリにサインインします。
- アプリを強制停止します。
- Monkeyツールを使用してアプリを起動します。
- ビデオコンテンツを10分間再生します。
- 120秒間待ちます。
- フォアグラウンドメモリをキャプチャします。
adb -s <DSN> shell dumpsys meminfo <パッケージ名> - アプリを強制停止します。
- 手順2~7を5回繰り返します。
dumpsys meminfoから出力される [PSS Total] が主要な指標です。
バックグラウンドメモリKPI
バックグラウンドメモリKPIでは、バックグラウンドに移行した後のアプリのメモリ消費量をキャプチャします。RAMが不足すると、バックグラウンドメモリ使用量の多いアプリほど、システムによって強制終了される可能性が高くなります。
- アプリをダウンロードしてインストールし、必要に応じてアプリにサインインします。
- アプリを起動し、ビデオコンテンツを10分間再生します。
- [ホーム] ボタンを押して、アプリをバックグラウンドに送ります。
- 60秒間待ちます。
- バックグラウンドメモリをキャプチャします。
adb -s <DSN> shell cat /proc/<PID>/statm - 手順2~5を5回繰り返します。
ガイドラインの要約
次の表は、各KPIで推奨されるガイドラインと測定のイテレーション回数をまとめたものです。
| KPI | ガイドライン | 測定方法 |
|---|---|---|
| TTFFコールドスタート | 2.0秒未満 | 50回のイテレーション |
| TTFFウォームスタート | 1.0秒未満 | 50回のイテレーション |
| TTFDコールドスタート | 10.0秒未満 | 10回のイテレーション |
| TTFDウォームスタート | 2.0秒未満 | 10回のイテレーション |
| フォアグラウンドメモリ(4K) | 400MB未満 | 5回のイテレーション |
| フォアグラウンドメモリ(1080P) | 300MB未満 | 5回のイテレーション |
| バックグラウンドメモリ | 100MB未満 | 5回のイテレーション |
| eMMCへの書き込み(フォアグラウンド) | 50MB/時間未満 | 連続 |
| eMMCへの書き込み(バックグラウンド) | 2MB/時間未満 | 連続 |
KPIの健全性の評価
アプリのKPIの結果が推奨ガイドラインに適合するかどうかを評価するには、次のインジケーターを使用します。
| インジケーター | 意味 |
|---|---|
| 合格 | 推奨ガイドラインに適合 |
| 警告 | ガイドラインからの逸脱が10%以内 |
| 不合格 | ガイドラインからの逸脱が10%を超過 |
ツール
次のツールは、Fire TVデバイスでアプリのKPIの測定とモニタリングを行うために役立ちます。
- Android Debug Bridge(ADB)- Fire TVデバイスとやり取りするためのコマンドラインツール。
- Atrace/Systrace - パフォーマンスマーカーをキャプチャするためのシステムトレースユーティリティ。
- Monkeyツール - 自動テストのためのアプリランチャー。
- Appium - テスト自動化フレームワーク。
- Maestro - メモリ/再生シナリオに使用できるスクリプトベースのUI自動化ツール。
- Android Studio Profiler - CPU、メモリ、ネットワークのリアルタイムのプロファイリング。
- アプリ健全性インサイトダッシュボード - 公開中のアプリの指標を追跡するための開発者コンソールのダッシュボード。
関連トピック
- Fire TV向けのアプリのパフォーマンススクリプト
- adbコマンドの詳細については、AndroidデベロッパードキュメントのAndroid Debug Bridge(adb)を参照してください。
- Fire TVデバイスでのその他のテストについては、テスト基準グループ2a: Fire TVデバイスでのアプリの動作を参照してください。
Last updated: 2026年7月23日

