先週は、Android アプリの高速化、軽量化、安定化に役立つベスト プラクティスとガイダンスを詳しくご紹介しました。R8 オプティマイザ とプロファイル ガイド付き最適化 の基本的な機能から、Jetpack Compose によるパフォーマンスの改善、アプリのパフォーマンスを向上させるための新しいガイドまで、パフォーマンスの高いアプリを構築するために必要な、労力が少なく効果の高いツールについて説明しました。
この投稿は、最適化が必要なときにこれらのリソースを再確認するためのインデックスとロードマップとしてご利用ください。ここからは、この 1 週間のまとめとして、重要なポイントを 5 つご紹介します。
R8 オプティマイザを使用してアプリを高速化する
最も効果が高く、労力が少ない変更は、R8 オプティマイザ を完全に有効にすることです。アプリのサイズを縮小するだけでなく、プログラム全体の詳細な最適化を実行して、効率を高めるためにコードを根本的に書き換えます。Keep ルールを見直して、R8 をエンジニアリング タスクに戻しましょう。
R8 オプティマイザに関するドキュメントが新しく更新され、内容が拡充されました。ぜひご活用ください。
Reddit は、R8 フルモードを有効にした後、コールド スタートアップが 40% 高速化 し、ANR エラーが 30% 減少 しました。
導入事例の全文は、Google のブログでご覧いただけます。
Disney+ のエンジニアは、アプリのパフォーマンスに投資し、アプリのユーザー エクスペリエンスを最適化しています。一見すると小さな変更でも、大きな影響を与えることがあります。R8 の構成を調べていたところ、-dontoptimize フラグが使用されていることがわかりました。このフラグを削除して最適化を有効にした後、Disney+ チームはアプリのパフォーマンスが大幅に改善されたことを確認しました。
アプリのパフォーマンスを改善するために何ができるか聞かれたら、この投稿を紹介してください。
詳しくは、1 日目のブログ「R8 を使用してアプリを圧縮、最適化、高速化する」をご覧ください。
パフォーマンスの向上をサポート
ベースライン プロファイル を使用すると、Just in Time コンパイルが不要になり、起動速度、スクロール、アニメーション、全体的なレンダリング パフォーマンスが向上します。スタートアップ プロファイルを使用すると、アプリの classes.dex ファイルにインテリジェントな順序が適用されるため、アプリの起動がさらに軽量化されます。
ベースライン プロファイルがアプリのパフォーマンスにどれほど重要であるかについて詳しくは、Meta のエンジニアリング ブログ をご覧ください。Meta は、ベースライン プロファイルによってアプリ全体のさまざまな重要なパフォーマンス指標が最大 40% 改善されたことを紹介しています。
Jetpack Compose 1.10 では、Jetpack Compose のパフォーマンスがさらに向上しています。 **一時停止可能なコンポジション** や**カスタマイズ可能なキャッシュ ウィンドウ** などの機能は、複雑なリストアイテムを処理する際にスクロールのジャンプをゼロに保つために不可欠です。詳しくは、#TheAndroidShow の最新エピソードをご覧ください。
詳しくは、水曜日のブログ「パフォーマンスに関する詳細な考慮事項」をご覧ください。
パフォーマンスの測定は簡単
測定できないものは管理できません。Google のパフォーマンス レベリング ガイド では、測定のプロセスを 5 つのステップに分けて説明しています。簡単に利用できるデータから始まり、高度なローカル ツールへと進みます。
レベル 1 では、Android Vitals からすぐに利用できるデータを使用する方法について説明します。Android Vitals では、ANR、クラッシュ、過剰なバッテリー使用量に関するフィールド データを確認できます。
レベルアップの方法についても説明します。たとえば、ローカル パフォーマンス テストを実施し、アプリのパフォーマンスの変化を正確に測定して検証することで、レベル 3 に到達する方法について説明します。 Jetpack Macrobenchmark と新しいUiAutomator 2.4 API を使用します。
詳しくは、木曜日のブログ「 [木曜日のブログへのリンク: パフォーマンスの向上に向けたレベリング ガイド] 」をご覧ください。
パフォーマンスのデバッグがアップグレード
高度な最適化によってクラッシュ レポートが読みにくくなることはありません。新機能は、R8 とバックグラウンド処理を安心してデバッグできるように設計されています。
Logcat の自動再トレース
Android Studio Narwhal 以降では、Logcat ウィンドウでスタック トレースの難読化を自動的に解除できます。これにより、プロダクション レディなビルドでクラッシュが発生した場合に、すぐに確認してデバッグできます。
絞り込んだ Keep ルール
火曜日のブログでは、ランタイム クラッシュを修正するために必要な Keep ルールについて説明しました。広すぎるワイルドカードではなく、特定のメンバーレベルのルールを作成することが重要です。重要なトピックであるため、動画も作成しました。
Android Studio Otter 3 Feature Drop では、Keep ルールが広すぎる場合に新しい lint チェックが実行されるため、この点についてもサポートされています。
また、R8 の構成をテストしてトラブルシューティングするための新しいガイダンスもリリースしました。このガイダンスは、自信を持って構成を正しく設定できるようにすることを目的としています。
詳しくは、火曜日のブログ「 R8 Keep ルールを構成してトラブルシューティングする」をご覧ください。
バックグラウンド処理
WorkManager でタスクのスケジュールを設定する際に発生する可能性がある一般的なシナリオをデバッグするためのガイダンスを紹介しました。
Background Task Inspector には、WorkManager タスクの視覚的な表現とグラフビューが表示されるため、スケジュールされた処理が遅延または失敗する理由をデバッグできます。また、バックグラウンド処理に関するドキュメントのランディング ページが更新され、特定のユースケース向けに最適化されたタスク固有の API がハイライト表示されるため、より信頼性の高い実行を実現できます。
詳しくは、水曜日のブログ「バックグラウンド処理のパフォーマンスに関する考慮事項」をご覧ください。
パフォーマンスの最適化は継続的な取り組み
今週、R8 フルモードを有効にするという Google のチャレンジに成功した場合、次のステップは、アプリのパフォーマンス スコア を使用してパフォーマンスをプロダクト ロードマップに統合することです。この標準化されたフレームワークを使用すると、継続的改善のために最も効果的なアクション アイテムを見つけることができます。
1 週間の締めくくりとして、#AskAndroid Live Q&A セッションを開催しました。エンジニアが、R8、プロファイル ガイド付き最適化などに関する難しい質問に回答しました。見逃した場合は、リプレイをご覧ください。
ご参加いただきありがとうございました。さあ、ビルドを始めましょう。この勢いをキープしてください。
続きを読む
-
イベントとプログラム
アプリのパフォーマンスを改善するために最も効果が高く、労力が少ない変更は、R8 オプティマイザをフルモードで有効にすることです。まずは、この変更から始めましょう。
Ben Weiss • 所要時間: 5 分
-
イベントとプログラム
Android XR Developer Catalyst Program の申し込み受付を開始します。このプログラムは、来年中にリリースできる Android XR アプリの開発を促進するための専用の取り組みです。
所要時間: 1 分
-
イベントとプログラム
Google I/O のスケジュールが公開されました。
所要時間: 1 分
最新情報の入手
Android 開発に関する最新の分析情報を毎週メールでお届けします。