イベントとプログラム

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

所要時間: 3 分

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

この投稿は、最適化が必要なときにこれらのリソースを再確認するためのインデックスとロードマップとして機能します。このセッションで取り上げた 5 つの重要なポイントを以下にまとめます。

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

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

R8 オプティマイザーに関する最新の拡張版ドキュメントをご用意しました。

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

ブログで導入事例の全文をお読みいただけます。

image.png

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

image.png

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

詳しくは、初日のブログ投稿「R8 を使用してアプリを圧縮、最適化、高速化する」をご覧ください。

パフォーマンスの向上をサポート

ベースライン プロファイルは、ジャストインタイム コンパイルの必要性を効果的に排除し、起動速度、スクロール、アニメーション、全体的なレンダリング パフォーマンスを向上させます。起動プロファイルは、アプリの classes.dex ファイルにインテリジェントな順序を適用することで、アプリの起動をさらに軽量化します。

ベースライン プロファイルがアプリのパフォーマンスにどれほど重要であるかについて詳しくは、Meta のエンジニアリング ブログをご覧ください。Meta は、ベースライン プロファイルによってアプリ全体のさまざまな重要なパフォーマンス指標が最大 40% 改善されたことを紹介しています。

Jetpack Compose 1.10 では、Jetpack Compose のパフォーマンスがさらに向上しています。 複雑なリストアイテムを扱う際にスクロール ジャンクをゼロに保つには、一時停止可能なコンポジションやカスタマイズ可能なキャッシュ ウィンドウなどの機能が不可欠です。詳細については、#TheAndroidShow の最新のエピソードをご覧ください。

詳しくは、水曜日のブログ「パフォーマンスに関する詳細な考慮事項」をご覧ください。

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

測定できないものを管理することはできません。パフォーマンス レベリング ガイドでは、測定のプロセスを 5 つのステップに分け、簡単に利用できるデータから始めて、高度なローカル ツールまで段階的に進めていきます。

レベル 1 から始め、Android Vitals からすぐに利用できるデータを使って、ANR、クラッシュ、過剰なバッテリー使用量に関するフィールド データを入手する方法を学びます。

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

詳しくは、木曜日のブログをご覧ください。 [木曜日のブログ: パフォーマンス ジャーニーのレベルアップ ガイド]

パフォーマンスのデバッグがアップグレードされました

高度な最適化は、読めないクラッシュ レポートを意味するものではありません。新機能は、R8 とバックグラウンド作業を安心してデバッグできるように設計されています。

Logcat の自動再トレース

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

Narrow Keep Rules

火曜日に、ランタイム クラッシュを修正するために必要な Keep ルールについて解説しました。広すぎるワイルドカードよりも、メンバーレベルの具体的なルールを記述することを強調しました。このトピックは重要であるため、動画も作成しました。

Android Studio Otter 3 Feature Drop では、幅広い Keep ルール用の新しい lint チェックも用意されています。

image.png

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

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

バックグラウンド処理

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

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

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

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

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

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

ご参加いただきありがとうございました。それでは、構築を始め、この勢いを維持しましょう。

作成者:

続きを読む