Androidアプリのパフォーマンス改善

モバイルアプリにとってパフォーマンスは重要だ。GoogleはAndroidアプリのパフォーマンスを改善するためのトレーニング教材を多数提供している。

パフォーマンスに対する総合的アプローチには、次のようなところへの徹底的な取り組みを伴う。

この教材をすべて学習するのは、かなり大変だろう。そこで、Android開発に関する本を何冊か書いているShane Conder氏とLauren Darcey氏は、そこに含まれている秘訣をいくつかまとめている

  • きちんとしたコーディングプラクティスを使うこと
  • ブロッキング操作にメインスレッドを使わないこと
  • レイアウトをシンプルに、エレガントに保つこと
  • リソースをデバイスに合わせること
  • Trace Viewなどのプロファイリングツールを使うこと

これらはアプリを開発する前に役に立つだろう。では、もうほとんどアプリは出来上がっていて、そのパフォーマンスに満足できないときはどうだろう? TutsplusのJessica Thornsby氏は、簡単に調べられる3つの領域について述べている

  • オーバードロー: これはGPUが背景とその上のグラフィック要素を描画するたびに発生する。オーバードローが多すぎると、アプリのパフォーマンスを殺すことになる。Androidは、ドローの発生回数を色分けすることでオーバードローの領域をハイライトする「GPUオーバーロードをデバッグ」モードをサポートしている。これによって、修正すべきレイアウト領域がどこにあるか、手がかりが得られるだろう。

  • レンダリングパイプライン: UIをレンダリングするのにかかる時間は、階層構造にあるビューの数に比例する。Android SDK Hierarchy Viewerは、ビュー階層を調べて、それを平らにする方法を見つけるのに役立つだろう。これはまた、各ビューをレンダリングするのにかかる時間に関するプロファイル情報も提供する。

  • メモリリーク: ガベージコレクションしているにもかかわらず、Androidはメモリリークから免れない。Android Studioに組み込まれているMemory Monitorを使うと、アプリがどれだけメモリを使っているかチェックできる。他にも、メモリリークに役立つ別のツールにAndroid Device MonitorのHeapタブがある。これは、どのオブジェクトが実際にデバイスのメモリを取っているか、さらに詳細な情報を提供する。

最後に、Jeannie Liou氏によると、アプリのUIを簡素化することも、重要なパフォーマンスの秘訣だと考えている。彼はビューを整理するのに、LinearLayoutの代わりにRelativeLayoutを使うメリットについて述べている。