Monzo は英国のデジタルバンクで、顧客数は 1,500 万人を超え、増加し続けています。アプリが拡大するにつれて、エンジニアリング チームはアプリの起動時間を改善すべき重要な領域として特定しましたが、コードベースに大幅な変更が必要になることを懸念していました。
R8 最適化を完全に有効にしたことで、Monzo はアプリケーション応答なし(ANR)エラーの発生率を 35% も削減しました。この簡単な変更により、影響力の大きい最適化には必ずしも複雑なエンジニアリング作業が必要ないことが証明されました。
R8 フルモードでパフォーマンスを大幅に向上
Monzo は、R8 フルモードが試す価値のある簡単な修正であると判断しました。そして、実際に R8 フルモードを試したところ、パフォーマンスが全体的に向上しました。
- 起動の信頼性: コールド スタートが 30%、ウォーム スタートが 24%、ホットスタートが 14% 改善されました。
- 起動速度: P50 の起動時間が 11%、P90 の起動時間が 12% 改善されました。
- 効率性: アプリ全体のサイズが 9% 削減されました。
- 安定性: ANR が 35% 減少しました。
1 回の変更で最適化を有効にする
多くの Android アプリでは、R8 オプティマイザーのほとんどの機能を無効にする古いデフォルトの構成ファイルが使用されています。Monzo がパフォーマンスを向上させるために行った主な変更は、proguard-android.txt のデフォルト ファイルを proguard-android-optimize.txt に置き換えたことです。この変更により、-dontoptimize 命令が削除され、R8 が適切に処理できるようになります。
buildTypes {
release {
isMinifyEnabled = true
isShrinkResources = true
proguardFiles(
getDefaultProguardFile("proguard-android-optimize.txt"),
)
}
}
この変更を行った後、Keep の構成ファイルを確認することをおすすめします。これらのファイルは、コードのどの部分をそのままにするかを R8 に指示します(通常、動的に呼び出されるか、外部ライブラリによって呼び出されるため)。不要な Keep ルールを整理すると、R8 でより多くの処理を実行できます。
ベースライン プロファイルでスクロール パフォーマンスを改善する
ユーザー エクスペリエンスをさらに向上させるため、Monzo はメインフィードのスクロールとレンダリングのパフォーマンスを特に重視して、ベースライン プロファイルを実装しました。この戦略により、最も一般的なユーザー ジャーニー(アプリを開いてフィードをスクロールする)が完全に最適化されました。レンダリングへの影響は大きく、P90 スクロール パフォーマンスは 71% 向上し、P95 スクロール パフォーマンスは 87% 向上しました。アプリのスクロールが以前よりもスムーズになりました。
Monzo は、この改善を維持するために、リリース プロセスにこの機能を組み込みました。「ベースライン プロファイルの生成は、毎営業日(ナイトリー ビルドを実行する前)にトリガーされ、完了すると最新の変更がコミットされます」と Neumayer 氏は説明します。
最新の Android 開発に対応する
Monzo の事例は、Android ビルドツールの推奨事項を常に最新の状態に保つことで実現できることを示しています。既存のアプリでは複雑なリフレクションの使用に苦労することが多いですが、Monzo は Keep ルールを適切に文書化することで、移行をスムーズに行うことができました。「Keep ルールが設定されている理由を説明するコメントを必ず追加しています。これにより、ルールを安全に削除できるタイミングを把握できます」と Neumayer 氏は述べています。
他のチームへの Neumayer 氏のアドバイスは次のとおりです。現在の基準に照らして定期的に実践状況を確認する: 「アプリのパフォーマンスに関する Google の最新の推奨事項を確認し、最新のアドバイスをすべて実践しているかどうかを確認してください。」
R8 の詳細と使用方法については、https://d.android.com/r8 をご覧ください。
続きを読む
-
事例紹介
Reddit のエンジニアリング チームは、Android Developer Relations チームとの連携の中で、アプリのパフォーマンス スコアを使用してアプリを評価しました。
Ben Weiss • 所要時間: 4 分
-
事例紹介
TikTok は、大規模なユーザーベースと革新的な機能で知られるグローバルなショート動画プラットフォームです。
Ben Trengrove, Ajesh Pai • 所要時間: 2 分
-
事例紹介
ソーシャル メディアの世界は変化が速く、ユーザーの注目はすぐに移り変わります。Meta アプリ(Facebook と Instagram)は世界最大級のソーシャル プラットフォームであり、世界中の数十億人のユーザーにサービスを提供しています。
Mayuri Khinvasara Khabya • 所要時間: 4 分
メールを受け取る
Android 開発に関する最新の分析情報を毎週メールでお届けします。