Monzo は英国のデジタルバンクで、顧客数は 1,500 万人を超え、増加しています。アプリの規模が拡大するにつれて、エンジニアリング チームはアプリの起動時間を改善すべき重要な領域と特定しましたが、コードベースに大幅な変更が必要になることを懸念していました。
R8 の最適化を完全に有効にすることで、Monzo はアプリケーション応答なし(ANR)の発生率を 35% 大幅に削減しました。このシンプルな変更により、効果的な最適化に複雑なエンジニアリング作業が必ずしも必要ではないことが証明されました。
R8 フルモードでパフォーマンスを大幅に向上
Monzo は、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 デベロッパー リレーション チームとの共同作業で、アプリの評価にアプリのパフォーマンス スコアを使用しました。
Ben Weiss • 4 分で読了
-
月 13 日月 13 日
事例紹介
TikTok は、大規模なユーザー ベースと革新的な機能で知られる、世界的なショート動画プラットフォームです。
Ben Trengrove, Ajesh Pai • 2 分で読了
-
事例紹介
ソーシャル メディアの世界は変化が速く、ユーザーの関心はすぐに失われます。Meta のアプリ(Facebook と Instagram)は、世界最大級のソーシャル プラットフォームであり、世界中の数十億人のユーザーにサービスを提供しています。
Mayuri Khinvasara Khabya • 4 分で読了
メールを受け取る
Android 開発に関する最新の分析情報を毎週メールでお届けします。