イベントとプログラム

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

所要時間: 3 分

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

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

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

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

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

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

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

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 の最新エピソードをご覧ください。

水曜日のブログ投稿: パフォーマンスに関する詳細な考慮事項

パフォーマンスの測定は簡単

測定できないものは管理できません。パフォーマンス レベリング ガイドでは、測定のプロセスを 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 やプロファイル ガイド付き最適化などに関する難しい質問に回答しました。見逃した場合は、リプレイをご覧ください。

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

執筆者:

続きを読む