Android アプリのパフォーマンスを向上させる10のヒント【インターネットコム】

インフォシーク / 2012年2月16日 16時51分

モバイルプラットフォームが進化するにつれて、アプリにも進化が要求される。アプリの応答性の高さや十分なパフォーマンスへの要求は日増しに高まるばかりだ。エキサイティングな機能と安定したユーザー体験を提供できなければ、アプリはあっという間にアンインストールされてしまうだろう。

Android デバイスのハードウェアは日々向上してはいる。だが、そこはデスクトップやラップトップに比べれば、バッテリーの面でも、処理速度の面でも、はるかに制限された環境なのだ。開発者はこのことを常に意識しなければならない。

今日は、Android アプリをスリム化する方法を解説しよう。

その1:ベストコーディングプラクティスを実践しよう

開発では、確立済みのアルゴリズムと、標準的なデザインパターンを使用しよう。リソース利用においては、「オープンしたら、必ずクローズ」「リソースの獲得はなるべく後で、解放はなるべく早く」などの基本的なルールを守ろう。プログラミングの世界ではどれも当たり前の、言い古された感のある「マントラ」ではあるが、Android アプリの開発においてもそのまま適用できる。

例えば、位置情報サービスを利用するアプリを書くとする。ロケーション情報が本当に必要になるまではレジスタを使用してはならないし、情報が不要になったらすぐにレジスタを開放しなければならない。これにより、デバイスのバッテリーの浪費を防ぎ、システムリソースの無駄な占有も防ぐことができる。

その2:UI スレッドと内部処理を切り離そう

面倒な仕事は「AdyncTask」「IntentService」などのバックグラウンドサービスにまかせて、アプリを高速に保とう。時間のかかるデータのロードではローダーを使い、状況管理をシンプルにしなければならない。こういった処理が実行されている間に、アプリケーションの動作が遅くなったり、フリーズしたりすることは許されないからだ。

オペレーションに時間とリソースが必要な場合、その処理を切り離して非同期で行えば、アプリの応答性は保たれる。例えば、ディスクの読み書き、コンテンツプロバイダー、データベース、インターネットへのアクセスなどは、非同期で実行するべきだ。

その3:最新バージョンの Android SDK、API を活用しよう

アプリを最新のものにするために、Android SDK、API は最新のものを利用しよう。Android プラットフォームが進化するのにあわせて、API なども進化している。機能はの中には廃止されたり、より高いパフォーマンスのオプションで置き換えられたりしているものもある。コア API には、多くのバグフィックスやパフォーマンス向上がなされている。ローダーなどの最新の API では、開発者がより安定性と応答性の高いアプリを開発できる機能を提供している。

Android 3.0 アプリでは、ハードウェアアクセラレーションも利用できる。開発者は、このような新しい機能を常にアプリに取り入れていかなければならない。優秀なアプリ開発者は、プラットフォームの最新情報に敏感なものだ。

その4:「Strict Mode」を活用しよう

「Strict Mode」と呼ばれる Android API を活用すればコードの不具合を見つけ出しやすくなる。Strict Mode は、アプリにメモリリークが無いかどうかを検出する。また、ユーザーリクエストを長時間遮断するオペレーションの存在も検出できる。そのようなオペレーションが見つかった場合は、非同期で処理するよう修正しよう。

StrictMode は、Android 2.3 で導入された。

その5:アプリ公開の前には、デバッグコードを削除しよう

アプリにはログを取るコードや、デバッグコードが残っていがちだ。だが、ログを取ることは、パフォーマンスに悪影響を与える。こういったコードは、アプリの公開前には可能な限り減らすか、または完全に削除しよう。

その6:レイアウトはシンプルに、階層は浅く

画面構成はシンプルであるほど読みやすく、レイアウトはシンプルであるほどロードが早くなる。だから、不必要なコントロールを画面に散りばめるのは避けた方が良いし、レイアウトの階層構造はあまり深くしない方が良い。1つの画面にたくさんの機能を詰め込むことを考えるのではなく、利用者が効率よく利用できる洗練された UI を設計することに時間をかけよう。こういった工夫は、アプリのパフォーマンスを向上させるだけではなく、ユーザーの利便性も高めることになる。

Android 3.0 で導入された「Fragment API」を利用すると、柔軟性を犠牲にすることなく、異なるタイプのデバイスの UI をデザインすることが可能になる。

その7:ターゲットとするデバイスにあわせて、アプリリソースを調整しよう

特定のデバイスに合わせて調整されたリソースを使えば、リソースはもっとも効率よくロードされる。このことは、特にグラフィックリソースで重要だ。アプリに、システムによる描画が必要で、かつサイズの大きなグラフィックリソースが使われているとしたら、そしてそのリソースはロード後に画面にあわせてリサイズされる必要があるものだとしたら、そのアプリはリソースの有効活用という点で失格だ。

では、どうしたらよいか?アプリのパッケージに必要最小限のコアなリソースだけを含めておく、という手がある。起動後、アプリがデバイスにあったコンテンツをダウンロードするよう設計しておくのだ。

その8:「Hierarchy Viewer」ツールを利用しよう

「Hierarchy Viewer(階層ビューア)」ツールは、アプリレイアウトのデバッグと最適化を可能にする。また同ツールは、View コントロールが、レンダリングと描画にどれだけ時間がかかるのかについての分析情報も提供する。これによって、問題のある場所を正確に探り出して修正することが可能となる。

その9:「layoutopt」ツールを利用しよう

「layoutopt」ツールは、シンプルなコマンドラインのツール。不要なネスティングなどを見つけ出して、レイアウトを最適化するのに利用できる。コントロールが少なく、階層が浅いレイアウトは、パフォーマンスを向上させる。

その10:「Traceview」などの Android ツールを使い、アプリのプロファイリングをしよう

Android SDK には、アプリをプロファイリングする多くのツールが付属している。中でも利用頻度が高いのは、「Traceview」だろう。グラフィカルなツールで、アプリのデバッグと、パフォーマンス上のボトルネックの発見に役に立つ。Traceview については、「Profiling with Traceview and dmtracedump」を参照して欲しい。

まとめ

Android アプリのパフォーマンスを向上させるには多くの方法がある。特定のアルゴリズムを利用したものもあるし、デバッグとパフォーマンスモニタリングに関してのテクニックを使うものもある。幸運なことに、Android プラットフォームには、数多くの無料ユーティリティがあり、それらを使えばパフォーマンスの問題を見つけ出して、修正することができるのだ。あなたは、すでにそれらを手にしている。あとは、利用するだけだ。

Lauren Darcey Shane Conder と Lauren Darcey は、アプリ開発者向けの書籍「Android Wireless Application Development」と「Sams Teach Yourself Android Application Development in 24 Hours」の共著者。

この記事のその他の画像はこちら。

関連記事
電子書籍一元管理ソフト「オープン本棚」、Windows 版が登場
Android 用メモアプリ「7notes with mazec」、Evernote との連携強化
子ども位置確認 Android アプリ「Kids Log」、β版に

※この記事及び画像は、japan.internet.comより転載の許可を得て掲載しています。

インフォシーク

トピックスRSS

ランキング