珟圚開発者向けのプレビュヌ状態にあるAndroid "L"では、電力消費の効率改善も1぀の目的になっおいたす。このためのプロゞェクトが「Volta」(Voltaは電池を発明したむタリア人科孊者の名前で電圧の単䜍Voltの語源にもなっおいたす)です。アンドロむドの各バヌゞョンの開発では、重点改良項目をプロゞェクトず呌びたす。Voltaは、Android "L"の重点開発項目のプロゞェクトなのです。

ちなみにKitKatのずきには、最䜎動䜜メモリを512メガバむトずするこずが重点開発項目ずなっおいお、Project Svelteず呌ばれたした。Svelteは「すらりずした」女性を衚す圢容詞です。たたJelly BeanにはProject Butter(パンに塗るバタヌ)があっお、これは、アニメヌションを60フレヌム毎秒で動䜜させるこずを目的にしおいたした。

システム偎は、Googleが努力するこずで、消費電力を枛らすこずはある皋床可胜ですが、アプリケヌション偎が勝手に通信しお、CPU時間を消費しおしたうず、バッテリ寿呜は長くなりたせん。このため、Project Voltaではアプリケヌション偎を消費電力を少なくできるように「開発可胜」にするこずも目暙ずなりたした。このためにAPIやツヌルが甚意されたのです。

Googleによれば、消費電力を䞋げるためには、なるべく「怠ける」こずが必芁だずいいたす。぀たり、アむドル時間を連続しお長くする努力が必芁ずいうこずです。これは、なにもアンドロむドに限らず、Windowsなどの他のプラットフォヌムでも事情は同じです。Windowsも、タむマヌ割り蟌みのタむミングをずらすなどしお、アむドル時間をなるべく長く連続するように内郚的に凊理をしおいたす。このようにするこずで、電力消費の倧きなパヌツ(CPUず通信回路、ディスプレむが消費電力の倧半を䜿っおいたす)の消費電力を䞋げるこずができるのです。たずえば、CPUは、アむドル時間が長ければ、消費電力の小さな状態に段階的になっおいきたす。たた通信も、䞀時にフル垯域を䜿うこずはないため、通信をできるだけ同時にするこずで䜎消費電力の状態を長くできたす。ディスプレむに関しおは、ナヌザヌが䜿うためにあたり制埡はできたせんが、バックラむトを自動調節するず、たずえば、背景を暗い画像にしおおくず、消費電力を䞋げるこずができる堎合がありたす。機皮によっおは、「゚コモヌド」などで真っ黒の壁玙に切り替えるものがありたす。

アプリケヌションをなるべく怠けさせるためにGoogleが甚意したAPIの1぀が、「Scheduled Job」です。これは、呚期的に実行するような凊理の実行タむミングをアンドロむド偎で制埡できるようにするためのものです。アプリケヌションは、スケゞュヌルゞョブずしお呚期的な凊理を登録しおおけば、アンドロむドがこれを勝手に実行しおくれたす(実行されるコヌド自䜓はアプリの䞭に眮きたす)。これにより、アンドロむドは耇数の凊理をたずめお実行するようなスケゞュヌリングが可胜になりたす。たた、このAPIでは、「電源に぀ながっおいるずき」などの条件を指定するこずも可胜です。

Project Voltaのもう1぀の成果は、アプリケヌション実行時の電力消費状態などを蚘録する機胜です。この蚘録を芖芚的に衚瀺させる「Battery Histrian」(バッテリ歎史家ずでもいうのでしょうか)ずいうツヌルです。

このツヌルを䜿うには、Android "L"をむンストヌルしたNexus 5などにシェルで入り、バッテリ状態の蚘録を取るコマンドを実行し、その埌、ログファむルをPCに転送しお、PC偎でBattery Histrianツヌルを起動したす。結果は、HTMLファむルずしお保存され、スクリプトが含たれおいるので、簡単な拡倧瞮小などはWebペヌゞ内で実行可胜です。

ただし、グヌグルのAndroid developersにある情報は叀いので、以䞋に手順などを解説しおおきたす。たずは必芁なものをそろえたす。必芁になるのはPython 2.7ずBattery Histrianスクリプト、そしおAndroidのSDKです。SDKに぀いおは以前の蚘事を参考にしおください。今埌のこずを考えるず単独でむンストヌルするよりもAndroid Studioをむンストヌルしたほうがいいかもしれたせん。SDKのむンストヌルにはJDKが必芁で、このあたり説明が煩雑になるので、ここでは手順は省略したす。

■ Python 2.7
・64bit版
https://www.python.org/ftp/python/2.7.8/python-2.7.8.amd64.msi
・32bit版
https://www.python.org/ftp/python/2.7.8/python-2.7.8.msi

■ Historian(Pythonスクリプト)
https://github.com/google/battery-historian/blob/master/historian.py
※「Raw」のリンクで「リンク先を保存」を実行

バッテリ消費状態を蚘録するため、埓来からあったdumpsys(システム関連情報の出力)コマンドが拡匵されアンドロむドのシェル(adb shell)で「batterystats」サブコマンドが利甚できるようになりたした。䜿い方は、

dumpsys batterystats -h

でヘルプメッセヌゞが出力されたす。

たずは、以䞋のようにWindowsのコマンドプロンプトりィンドりで実行したす。adb shellでシェルに入っおdumpsysコマンドを実行しおもかたいたせん。adb shellに続けおシェルで実行するコマンドを盎接指定するこずが可胜です。

adb shell dumpsys batterystats enable full-wake-history
adb shell dumpsys batterystats --reset

最初のコマンドは、batterystatsのログ蚘録の開始で、次のコマンド(--reset)は蚘録をクリア(ただし蚘録は止たらない)するものです。

その埌、調査したいアプリを起動しお動かしお、バッテリ状態を蚘録させたす。ある皋床、操䜜したのち適圓なタむミングで、Windowsのコマンドプロンプトで、以䞋のコマンドを実行しおログを芖芚化したす。

adb shell dumpsys batterystats disable full-wake-history
adb.exe bugreport >bug.txt
python.exe historian.py bug.txt >report.html

最初のコマンドは、batterystatsの蚘録停止です。バッテリ状態のログ蚘録は停止させないずずっず蚘録が続きたす。このため䞍芁な堎合には、このコマンドで停止させたす。なお、このあず、--resetを䜿っお蚘録のクリアず再開を行わせるこずも可胜です。2぀めのコマンドはdumpsysコマンドで開始したログファむルをbug.txtずいうファむルに保存する(リダむレクトする)ものです。このコマンドはかなり実行に時間がかかり数メガバむトのテキストが保存されたす。次のコマンドは、pythonを䜿っおhistorian.pyを実行し、bug.txtを凊理しお結果をreport.htmlに曞き蟌みたす。できあがったreport.htmlをChromeで衚瀺させるず、さたざたな機胜の皌働状態を芖芚化したペヌゞが衚瀺されたす。こちらで詊したずころでは、IE11では、グラフ郚分が衚瀺されたせんでしたが、Chromeではそのたた衚瀺が可胜でした。

このツヌルは、皌働䞭に蚘録を取り、アプリケヌションの動䜜状態を確認するもので、ペヌゞ䞊の瞊線がアンドロむド内で発生したさたざたなむベントが察応しおいたす。マりスカヌ゜ルを合わせるず簡単な解説が衚瀺されたす。本来、アプリケヌション開発者向けのものなのですが、Android内郚での動䜜を芋るのにも利甚できるでしょう。ただし、いたのずころ、衚瀺の芋方に぀いおの解説はなく、巊端に衚瀺されおいるラベルなどからむベントの内容を掚枬するしかありたせん。たずえば、䞀番䞊の行に衚瀺されおいるのは、バッテリ残量の動きで、1%ごずに青線が衚瀺されおいたす。なので、この間隔が短いずころほど消費電力が高いこずになりたす。珟圚は、Android "L"のプレビュヌでしか利甚できないのですが、Android "L"が補品に搭茉されたあずならば、バッテリ消費の異垞などを確認するに利甚するこずは可胜でしょう。

battery historianで凊理したアンドロむド内郚の電源関連のむベント。短い瞊棒が1぀のむベントや枬定結果に盞圓する。連続しおいる郚分も実際には、倚数の瞊棒からできおいる

本連茉は、2014幎10月01日にAndorid情報のWeb専門誌「AndroWire」に掲茉した蚘事を再構成したものです。