本番の数字と遅い端末での再現から始め、プロファイラーで原因を見つけ、1つずつ直して計り、段階リリースで確かめる。
アプリの「重い・遅い」は、端末や OS によって大きく違います。手元の新しい端末では再現しないことが多いので、本番の数字と、遅い端末での再現から始めます。
| 段階 | やること | 道具の例 |
|---|---|---|
| 1. 範囲と再現 | どの画面・操作か、端末・OS・アプリの版、いつからか。古い端末とリリース版(release ビルド)で再現する(デバッグ版は遅い) | 問い合わせ・レビュー、テスト用の古い端末 |
| 2. 本番の数字 | 起動時間・フレームの遅れ・ANR・クラッシュ・メモリの警告を、版ごと・端末ごとに見る | Android vitals、Xcode Organizer・MetricKit、Firebase Performance Monitoring など |
| 3. プロファイル | メインスレッドで何をしているか、どの関数に時間がかかるかを記録する | Instruments、Android Studio Profiler・Perfetto |
| 4. 仮説を立てて直す | 効果が大きい順に、1回に1つだけ変える(重い初期化の後回し・裏のスレッドへ・画像の縮小など) | 各トピックの手段 |
| 5. 計って比べる | 同じ端末・同じ条件で何回も計り、中央値で前後を比べる | Macrobenchmark、XCTest の性能テスト |
| 6. 段階リリースで確かめる | 一部の利用者に配り、本番の数字が良くなったか・別の問題が出ていないかを見てから広げる | 段階的な公開(Google Play・App Store)、ダッシュボード |
報告は「起動時間(コールドスタート)の p90 が 2.8 秒 → 1.6 秒。原因は起動時の分析 SDK の初期化」のように、指標・前後の数字・原因をセットにします。
面接ではこう答える
アプリの性能の問題は、本番の数字と再現から始めます。どの画面・端末・版で遅いかを確かめ、古い端末とリリース版で再現します。次にプロファイラーでメインスレッドが何をしているかを見て、効果の大きい順に1つずつ直します。直したら Macrobenchmark などで同じ条件の前後を比べ、段階リリースで本番の数字が良くなったことを確かめてから全員に配ります。
Appとの関わり「アプリが重い」というレビューや問い合わせ、ストアの指標の悪化に対応するときの基本の手順。