art_icon

Androidアプリが速くなる!次回アップデートで新ランタイム『ART』がデフォルトに?

  • このエントリーをはてなブックマークに追加

by [2014年6月23日]

AOSP(Android Open Source Project)のmaster branchから現行のAndroidランタイム『Dalvik』が削除された、と一部で話題になっている。

『Dalvik is dead, long live Dalvik! DO NOT MERGE』と記述されている。


これにより、次回アップデートで『Dalvik』から『ART』へ完全移行することが確実視されている。
明後日(日本時間6月26日 午前1時)のGoogle I/Oで、なんらかの発表がほぼ確実にあるだろうので要注目だ。

しかし、ユーザーの中には結局何がどう変わるのか分からない、という方も多いと思う。というか、殆どの方がそうだろう。
そこで、皆さまと同じく「ランタイム?なにそれおいしいの?」状態だった筆者が色々調べてまとめてみた。

より技術的に突っ込んだ記事を読みたい方はこちらの記事を参照していただきたい。

これは64bit化の布石か? ~Android 4.4の新ランタイムART~

そもそもランタイムって何?

標準的なAndroid OSの構成

ざっくり言ってしまえば、ランタイムとはAndroidアプリが動いている土台のようなものだ。

まず、AndroidアプリのコードはJavaという言語で書かれている。
通常、Javaで書かれたコードはJavaバイトコードという中間コードに変換(コンパイル)され、そのコードを仮想マシン(Java VM)が機械語にして実行している。
このように仮想マシン上で実行することでハードウェアによらずに機能を実現できるのがJavaである。

ところが、搭載メモリの限られたスマートフォンで通常のJava VMを使ってしまうと満足な性能を出すことが難しい。
そこで、メモリの限られたマシン用に最適化したのが『Dalvik』というわけだ。
DalvikではJavaバイトコードではなく、それを更にAndroid SDK(アプリ開発キット)のツールでコンパイルしたDEXコードを扱う。

ARTになるとどうなるの?

DEXコードはAndroidランタイム用に最適化された中間コードであり、Google PlayからアプリとしてダウンロードするのはこのDEXコードを含んだAPKファイルである。
(APKファイルには画像データやライセンス情報などが一緒に入っている。)

『Dalvik』ではアプリを起動するたび、APKファイル内のDEXコードをコンパイルしながらアプリを動作する。(JIT = Just-In-Time方式)
これに対して『ART』では、アプリのインストール時にあらかじめDEXコードをコンパイルした機械語コードを保存しておき、アプリ起動時はこの機械語コードを実行する。(AOT = Ahead-Of-Time方式)

つまり、Dalvikではコンパイルしながらアプリを動作させていたのを、事前にコンパイルしたものを使うようにしたのがARTである。

アプリの動作と一緒にコンパイルを行わない分だけ、ARTの方がアプリの動作がよりスムーズになり、アプリ使用時のバッテリーの消費量も抑えられるという。
ただし、コンパイルのためにアプリインストールに必要な時間が増えたり、コンパイル後の機械語コードを保存するためにストレージを消費したりするデメリットもある。

他にもあるARTの魅力

気付かないうちに溜まっていく不要なキャッシュを消して、メモリをキレイにする仕組み(Garbage Collection)やユーザー分析が改善され、さらにデバッグオプションも拡充するなど、AOT以外の面でも進化しているART。
ただ、今のところ(2014年6月23日現在)の公式サイトの情報によれば、全てのアプリの実行が必ずしも速くならなかったり、アプリによってはそもそも起動しない、という課題を抱えていることが分かる。

Android 4.4からは開発者向けオプションにて
DalvikとARTを選択可能

ARTを選択するとアプリの最適化が行われる
その際“アップグレード”という表現がされている

実はこうした課題を抱えながらもARTはAndroid4.4からデベロッパ向けに搭載されており、デフォルトのDalvikと切り替えられるようになっていた。
それが今回、Androidランタイムを開発しているAOSP(Android Open Source Project)のgitから、Dalvikのソースコードが消えたことで、ARTがついにこれらの問題を解決したのであろうことが伺える。

6月25日(日本時間6月26日 午前1時)のGoogle I/Oからますます目が離せない。

▼関連リンク
AOSP (Dalvik削除の履歴)
Introducing ART (公式サイト)
浅井智也氏「Firefox OS 2.0 ~解き放て!未来~」【ABC2014 Spring】

コメントは受け付けていません。

PageTopへ