イベントとプログラム

完全最適化: パフォーマンス スポットライト ウィークのまとめ

所要時間: 3 分

先週は、Android アプリの高速化、軽量化、安定化に役立つベスト プラクティスとガイダンスを詳しくご紹介しました。R8 オプティマイザプロファイル ガイド付き最適化 の基本的な機能から、Jetpack Compose によるパフォーマンスの改善、アプリのパフォーマンスを向上させるための新しいガイドまで、パフォーマンスの高いアプリを構築するために必要な、労力が少なく効果の高いツールについて説明しました。

この投稿は、最適化が必要なときにいつでもこれらのリソースに戻ることができるインデックスとロードマップとしてご利用ください。ここからは、この 1 週間のジャーニーのまとめとして 5 つの重要なポイントをご紹介します。

R8 オプティマイザを使用してアプリを高速化する

最も効果が高く、労力が少ない変更は、R8 オプティマイザ を完全に有効にすることです。アプリのサイズを縮小するだけでなく、プログラム全体の詳細な最適化を実行して、効率を高めるためにコードを根本的に書き換えます。Keep ルールを見直して、R8 をエンジニアリング タスクに戻しましょう。

R8 オプティマイザに関するドキュメントが新しく更新され、内容が拡充されました。ぜひご活用ください。

Reddit は、R8 フルモードを有効にした後、コールド スタートアップが 40% 高速化 し、ANR エラーが 30% 減少 しました。

導入事例の全文は、Google のブログでご覧いただけます

image.png

Disney+ のエンジニアは、アプリのパフォーマンスに投資し、アプリのユーザー エクスペリエンスを最適化しています。一見すると小さな変更でも、大きな影響を与えることがあります。R8 の構成を調べていたところ、-dontoptimize フラグが使用されていることがわかりました。このフラグを削除して最適化を有効にしたところ、Disney+ チームはアプリのパフォーマンスが大幅に向上したことを確認しました。

image.png

アプリのパフォーマンスを改善するために何ができるか聞かれたら、この投稿を紹介してください。

詳しくは、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、クラッシュ、過剰なバッテリー使用量に関するフィールド データを確認できます。

レベルアップの方法も説明します。たとえば、ローカル パフォーマンス テスト Jetpack Macrobenchmarkと新しいUiAutomator 2.4 APIを使用して実施し、アプリのパフォーマンスの変化を正確に測定して検証することで、レベル 3に到達する方法を説明します。

詳しくは、木曜日のブログ投稿「 木曜日のブログ投稿へのリンク: パフォーマンスのジャーニーのレベリング ガイド」をご覧ください。

パフォーマンスのデバッグがアップグレード

高度な最適化によってクラッシュ レポートが読みにくくなることはありません。R8 とバックグラウンド処理を自信を持ってデバッグできるように、新しい機能が設計されています。

Logcat の自動再トレース

Android Studio Narwhal 以降では、Logcat ウィンドウでスタック トレースの難読化を自動的に解除できます。これにより、プロダクション レディなビルドのクラッシュをすぐに確認してデバッグできます。

絞り込み Keep ルール

火曜日の投稿では、ランタイム クラッシュを修正するために必要な Keep ルールについて説明しました。広すぎるワイルドカードではなく、特定のメンバーレベルのルールを作成することを重視しています。重要なトピックなので、動画も作成しました。

Android Studio Otter 3 Feature Drop では、広範囲の Keep ルールに対する新しい lint チェックも提供されています。

image.png

また、R8 の構成をテストしてトラブルシューティングするための新しいガイダンスもリリースしました。これにより、自信を持って構成を正しく設定できます。

詳しくは、火曜日のブログ投稿「 R8 Keep ルールを構成してトラブルシューティングする」をご覧ください。

バックグラウンド処理

WorkManager でタスクのスケジュールを設定する際に発生する可能性のある一般的なシナリオをデバッグするためのガイダンスを紹介しました。

Background Task Inspector には、WorkManager タスクの視覚的な表現とグラフビューが表示され、スケジュールされた処理が遅延または失敗した理由をデバッグするのに役立ちます。また、バックグラウンド処理に関するドキュメントのランディング ページが更新され、特定のユースケースに最適化されたタスク固有の API がハイライト表示されるようになり、より信頼性の高い実行を実現できます。

詳しくは、水曜日のブログ投稿「バックグラウンド処理のパフォーマンスに関する考慮事項」をご覧ください。

パフォーマンスの最適化は継続的な取り組み

今週、R8 フルモードを有効にするというチャレンジに成功したら、次のステップとして、アプリのパフォーマンス スコア を使用してパフォーマンスをプロダクト ロードマップに統合します。この標準化されたフレームワークを使用すると、継続的改善のための最も効果的なアクション アイテムを見つけることができます。

1 週間の締めくくりとして、#AskAndroid Live Q&A セッションを開催しました。エンジニアが R8、プロファイル ガイド付き最適化などに関する難しい質問に回答しました。見逃した場合は、リプレイをご覧ください。

ご参加いただきありがとうございました。さあ、ビルドを始めましょう。この勢いをキープしてください。

執筆者:

続きを読む