コンテンツにスキップ
テック
一部のスマートフォン アプリでは、使用していないときに 3G チップや GPS がオンのままになり、結局…
アプリは、使用されていないときでもハードウェアを高電力消費状態にし、過剰な電力消費につながる可能性があります。クレジット:ケイシー・ジョンストン撮影
アプリは、使用されていないときでもハードウェアを高電力消費状態にし、過剰な電力消費につながる可能性があります。クレジット:ケイシー・ジョンストン撮影
スマートフォンのバッテリー残量が頻繁に少なくなる場合、使用している無料アプリが原因である可能性があるという新たな研究結果が発表されました。パデュー大学の研究者2名とマイクロソフトの研究者1名からなるこの研究チームは、独自に開発した監視ツールを用いて、アプリ内での広告配信やデータ収集がスマートフォンのハードウェアコンポーネントの過剰な使用につながることを発見しました。無料アプリのこれらの機能は、3GチップやGPSなどのコンポーネントを起動させ、情報処理が完了した後も長時間オンの状態を維持するため、不必要な電力消費につながります。
ほとんどのスマートフォンは、バッテリーを消費しているリソース(ディスプレイ、Wi-Fi、個々のアプリなど)の基本的な内訳を表示できますが、個々のアプリがどのように電力を消費しているかは不明瞭です。このレベルの電力消費の詳細を明らかにするために、3人の研究者が「eprof」(きめ細かなエネルギープロファイラー)と呼ばれるツールを開発しました。eprofは、個々のスレッドレベルだけでなく、アプリ内で実行されるルーチンレベルでも消費電力を追跡できるほか、著者らが「非同期電力挙動」と呼ぶものも追跡できます。
ソフトウェアの個々のアクティビティ(例えば、プロセスの停止と開始)の追跡は限定的であるため、その点における電力消費量を特定するのは容易です。しかし、著者らはハードウェアの追跡はより巧妙であることを発見しました。多くのアプリはハードウェアをすぐに、あるいは全くオフにすることなく、動作させるようです。例えば、著者らは、Wi-Fiや3Gチップがアプリのデータ通信のために起動し、アプリが終了した後も高電力状態のままになる可能性があると指摘しています。
同様に、スマートフォンOSには「ウェイクロックAPI」も搭載されており、アプリが様々なハードウェアのスリープ状態を防ぐことができます。例えば、新着メッセージを確認するためにCPUを起動するアプリや、動画再生中に画面のスリープ状態を解除する動画アプリなどです。カメラやGPSといったデバイスでも同様の問題が発生しました。研究者たちは、これらのデバイスを使用するアプリがこれらのデバイスを起動し、消費電力の高い状態にしてしまうことを発見しました。そして、別のサービスによって明示的にオフにされるまで、ハードウェアはこの状態が続くことがあるのです。
これらの動作により、あるアプリによって引き起こされる電力消費は、アプリがハードウェアの使用を終了した後も継続し、別のアプリと重なる可能性があるため、適切な電力計算が困難になります(著者らは、「テールエネルギー」と呼ばれるこの種のバッテリー消費の削減を研究中であると指摘しています)。本研究では、アプリの使用期間を超えて継続する場合でも、アプリによって引き起こされる電力消費を計算に入れています。
研究者たちは、Android 2.3を搭載したHTC Passionでeprofを用いてアプリの電力消費量を監視した結果、いくつかの発見をしました。Angry Birdsの無料版を対象とした調査では、サードパーティ製の広告生成・データ収集ツールであるFlurryが、ユーザーの位置追跡とアプリへの広告配信にアプリ全体の電力消費量の45%を消費していることが分かりました。しかし、その45%のうち、3G回線経由での情報のアップロードと広告のダウンロードはわずか2KBのトランザクションで、アプリ全体の電力消費量の1%に過ぎませんでした。
データ交換後も3Gチップは電力を消費し続け、全体の24%を消費したことを研究者らは発見しました。一方、実際にプログラムを実行するCPUを集中的に使用するコアスレッドは18%を消費しました。アプリが終了すると、HeapWorkerと呼ばれるスレッドがクリーンアップ処理を行い、ソケットを閉じました。これにより3Gチップが動作を開始し、全体の28%を消費する別のテールが生成されました。
アプリ「Free Chess」も同様のエネルギー消費量を示しました。アプリのエネルギーの50%はサードパーティの広告作成ツール「AdWhirl」の実行に使用され、その50%のうち約5%が広告のダウンロードとレンダリングに使用されていました。残りは3Gチップの消費電力でした。
Angry Birdsが消費した電力の80%はI/Oコンポーネント(3GとGPS)に消費され、Free Chessでは77%がI/Oコンポーネントに消費されました。New York Timesアプリ(67%)やMapQuestアプリ(72%)など、短時間のタスクによって高電力状態になったコンポーネントでは、消費電力はやや少なかったものの、これらの状態がもたらす違いは顕著です。
ここで一つ簡単な教訓があります。毎日午後7時までにバッテリーを使い切ってしまうなら、広告を表示するために余分な電力を消費しないアプリの有料版を購入すると良いかもしれません。広告付きアプリ、あるいはそれほどではないもののFlurryのようなGPSやデータ収集サービスと頻繁に通信するアプリに費やす時間によっては、大きな違いが出る可能性があります。
さらに重要なのは、アプリ開発者側で最適化を行う必要があることです。スマートフォンのバッテリー容量をケチっているのは非難されるべきことですが、アプリがデータ収集や広告配信に、実際のプログラム実行の2~3倍もの電力を消費している状況では、いくらミリアンペアアワーを消費しても効果は限定的です。これらのサービスはハードウェアコンポーネントを高電力状態にまで引き上げ、長時間その状態を維持させているからです。著者らは、eprofを静的解析と組み合わせることでエネルギー消費を最適化し、スマートフォンOSのスケジューラと組み合わせることで、コンポーネントが実際には使用されていないにもかかわらず電力を消費しているタイミングをより正確に把握できると示唆しています。
リスト画像:ケイシー・ジョンストン撮影

ケイシー・ジョンストンは、Ars Technicaの元カルチャーエディターで、現在はフリーランスとして時折記事を執筆しています。コロンビア大学で応用物理学の学位を取得しています。
75件のコメント