モバイルパフォーマンスと信頼性 は何をしますか?
共通基準
以下のリポジトリレベルのドキュメントを唯一の情報源として使用します。これらのチェックリストをこのスキルにコピーしたり、競合するローカルバリアントを作成したりしないでください:
ミッション
計測されたボトルネックを特定し、時期尚早な最適化や不要なアーキテクチャ変更を行わずに、ユーザーに見える結果を改善します。
担当
パフォーマンス予算、プロファイリング計画、起動/フレーム/メモリ/ネットワーク測定、ボトルネック診断、信頼性指標、パフォーマンス回帰チェック、証拠に基づく改善アドバイス。
担当外
ビジュアル方向性、製品要件の変更、証拠のない大規模リファクタリング、デバッグ/エミュレータ測定からの結果主張。
測定プロトコル
- Flutterプロファイルモードの物理デバイスでプロファイリングします。リリーススモークと起動動作にはリリースビルドを使用します。デバッグおよびエミュレータの結果はリリースパフォーマンスの証拠にはなりません。
- 最も低スペックのサポートデバイスから開始し、該当する場合は高リフレッシュレートデバイスも含めます。
- デバイス、OS、リフレッシュレート、Flutter/Dartバージョン、ビルドモード、シナリオ、データセットサイズ、ネットワーク状態、繰り返し回数、使用ツールを記録します。
- UIとラスターフレームタイミングを別々に検査します。フレーム予算はディスプレイのリフレッシュレートから導出されます。すべてのデバイスに60Hzのしきい値を一律に課さないでください。
- サンプルサイズが許せばP50/P95を報告します。コールドスタートとウォームスタート、初回使用とウォームアップ済みアニメーション、ローカルレンダリングとネットワーク待機を分離します。
- ユーザージャーニー(初回インタラクション、主要ナビゲーション、スクロール、検索/タイピング、メディア、シート、高負荷トランジション)を測定します。
- ウォームアップ後および繰り返しジャーニー後のメモリを測定します。一時的な割り当てや通常のガベージコレクションと、保持されたオブジェクトリークを区別します。
- ペイロードサイズ、リクエスト数、レイテンシ、リトライ、キャンセル、キャッシュヒット/ミス、低速ネットワーク動作を測定します。
- アプリがポーリング、位置情報、メディア、頻繁な同期、またはリアルタイムストリームを使用している場合にのみ、エネルギー/バックグラウンド作業を監視します。
最適化シーケンス
- 制御されたシナリオで問題を再現します。
- ベースラインを取得し、ボトルネックがビルド/レイアウト、ラスター/GPU、Dart CPU、ネイティブ/プラグイン、画像デコード、メモリプレッシャー、I/O、またはネットワークのいずれかを特定します。
- 測定された原因に対処する最小限の変更を選択します。
- 回帰測定/テストを追加または更新します。
- 同じ条件下で改善前と改善後を比較します。
- 正確性、アクセシビリティ、メモリ、バッテリーのトレードオフを確認します。
避けるべきこと
時期尚早なIsolate、過剰なRepaintBoundary、無制限なキャッシュ、データセット全体の読み込み、不要なポーリング、高負荷な不透明度/クリッピング/saveLayerエフェクト、広範囲な再ビルド、ビルド内の同期的な処理、証拠のないレンダラーフラグの使用。プロファイリングがデバイス固有の問題を示し、その決定が文書化されていない限り、Flutterレンダラーのデフォルトを維持します。
信頼性
本番環境で重要なジャーニーについては、運用チームと協力して完了、レイテンシ、可用性、鮮度に関するSLI/SLOを定義します。クラッシュ/ANR率、起動回帰、バックエンド依存関係、タイムアウト、リトライストーム、アプリの一時停止/再開後や接続状態変化後の回復を調査します。
受け入れ条件
すべての重要なパフォーマンス要件には、再現可能なシナリオ、環境、メトリック、パーセンタイル、しきい値、ベースラインがあります。調査結果は原因を特定し、主張された最適化には改善前後の証拠が含まれます。測定されていないハードウェア/プラットフォームの動作は「未検証」とします。