android-performance-observability について
プロファイリングとオブザーバビリティで Android アプリの性能を調べるスキルです。起動、描画、メモリ、信頼性、本番環境の指標に合った計測方法を選び、再現可能な変更前後の比較を支援します。
主な機能
- 01性能症状の分類
- 02症状に合う計測ツールの選定
- 03リリース相当ビルドのプロファイリング
- 04変更前後の証拠の比較
- 05本番指標とクラッシュの確認
活用シーン
- 01アプリ起動の遅さの調査
- 02フレームのカクつきやスクロールの計測
- 03メモリ、ANR、クラッシュの評価
- 04本番指標の変化の追跡
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ krutikjain/ android-agent-skills --skill android-performance-observabilityインストール後、Claude Code で/android-performance-observabilityを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
agents/openai.yamlreferences/official-links.mdpatterns.mdscenarios.mdscripts/run_examples.sh詳細
Android パフォーマンスの可観測性
使用する場面
- 次の内容に関する依頼でこのスキルを使用します:Android のパフォーマンスプロファイリング、ベースラインプロファイルまたはマクロベンチマーク、Android アプリの起動時の問題。
- 主な成果:実行可能なトレースを用いて、Android アプリの起動、レンダリング、メモリ、ジャンク、バイタル、ログ、クラッシュのシグナルを測定します。
- 起動、ジャンク、トレース、本番環境のシグナルに関する測定手順が必要な場合は、
references/patterns.mdを読みます。 - 繰り返し実行可能なプロファイリングとトレースを中心としたエントリーポイントについては、
references/scenarios.mdを読みます。 - 対象範囲が広がる場合は、次のスキルに引き継ぎます:
android-compose-performanceandroid-ci-cd-release-playstore
ワークフロー
- ツールを選ぶ前に症状を分類します:コールドスタート、ウォームスタート、フレーム/ジャンク、スクロール、メモリ、ANR、クラッシュ、バッテリー、または本番環境のバイタルの変化。
- 可能な限り、リリース版に近いビルドと実機で測定します。デバッグ専用のトレースやプロファイルに適さないビルドを根拠にすることは避けます。
- 問いに答えるための最小限のツールを選びます:起動やスクロールの数値には Macrobenchmark、事前最適化には Baseline Profiles、詳細なトレースには Perfetto/System Tracing、フレーム品質には JankStats または FrameMetrics、実環境のエビデンスには Play Vitals を使用します。
- 一度に変更するのは一つだけにし、複数の最適化を無計画に重ねるのではなく、変更前後のトレースまたはベンチマーク出力を比較します。
- 測定対象が安定し、ボトルネックがエビデンスで確認されてから、UI 固有のレンダリング変更やリリース展開を引き継ぎます。
ガードレール
- ベンチマーク、トレース、バイタルはノイズの特性が異なる別々のエビデンスソースとして扱います。安易に混同しないでください。
- デバッグビルドから得た直感よりも、再現可能なリリースビルドでの測定を優先します。
- 最適化は、起動時間、フレームの安定性、ANR、バッテリーへの影響など、ユーザーに見える指標に結び付けます。
- デバイスや環境の変化ではなく、コード変更によるリグレッションだと判断できるよう、プロファイリングの設定を十分に安定させます。
アンチパターン
- 問題が起動、レンダリング、I/O、実環境での信頼性のどれにあるかを特定する前に、マイクロ最適化に取り組むこと。
- ノイズの多いトレースを一つだけ読み、その結果を確定した事実として提示すること。
- デバッグビルドを測定し、本番環境でも同じ挙動になると想定すること。
- 対象の処理経路が安定して比較できるかを確認せずに、Baseline Profiles やマクロベンチマークを追加すること。
レビューの重点
- 起動:コールド起動とウォーム起動、コストの高い初期化、Baseline Profile のカバレッジ。
- レンダリング:ジャンク、スキップされたフレーム、Compose または View の無効化の連鎖、メインスレッドでの長時間処理。
- メモリと信頼性:割り当て、リーク、ANR、クラッシュ、Play Vitals の傾向。
- エビデンスの品質:再現可能なコマンド、リリース版に近いバリアント、文書化された変更前後の比較。
例
望ましい流れ
- シナリオ:測定計画を提案する前に、プロファイリング対象とベンチマーク関連のフックをリポジトリで監査します。
- コマンド:
rg -n "baseline|macrobenchmark|profileable|JankStats|Trace|Perfetto" .
エッジケース
- シナリオ:起動とレンダリングの調査を、再現可能なリリース版に近いビルドに基づいて行います。
- コマンド:
cd examples/orbittasks-compose && ./gradlew :app:assembleDebug
障害からの復旧
- シナリオ:可観測性に関する依頼を、Compose のみの調整やリリース自動化とは区別します。
- コマンド:
python3 scripts/eval_triggers.py --skill android-performance-observability
完了チェックリスト
- ボトルネックを分類し、再実行可能なエビデンスソースと結び付けています。
- 選んだツールは、ノイズの多い測定を重複させるのではなく、症状に合致しています。
- 推奨する最適化について、変更前後の比較を明示しています。
- UI のみ、またはリリースのみの作業を、測定やトレースから切り分けています。
Official References
- https://developer.android.com/studio/profile/overview
- https://developer.android.com/topic/performance/vitals
- https://developer.android.com/topic/performance/benchmarking/macrobenchmark-overview
- https://developer.android.com/topic/performance/benchmarking/macrobenchmark-metrics
- https://developer.android.com/topic/performance/baselineprofiles/overview
- https://developer.android.com/topic/performance/tracing
- https://developer.android.com/topic/performance/rendering/jankstats
コメント
Markdown 対応