Google I/OをiPadで眺めつつ、途中で寝てしまった。あまりに内容が予定調和すぎて、全くインパクトがなかったからと、前日のサッカー日本代表が負けた残念感が入り混じってガクッと来た。ジョブスが秘密主義になったのも分かるような気がする。事前に漏れてきていた情報から、大体の予想がつき、そこから推測されるものがゾロゾロと出てきた感がある。
そんなこと言っても始まらないので、2014年のGoogle I/Oは、何であったのか?
と考えると、従来からあるもの対しての「洗練」だと自分は思う。こういうアップデートは面白くもなんともないわけだが、細かい使い勝手の改良など、そういうことは、結構大切でもあるので、そこをベースに、今回は書いていきたい。
Android L
- GUIのデザインの改良「Material Design」
- フラットデザインというだけでなく、それを1/60モーションのアニメーションで滑らかに表示するというもの、Androidが出てきた時、iOSに比べてスクロールがガタガタしていて、目が疲れたり、使い辛かったのでこれはいいんじゃないかと思う。また、リアルタイムでボタンに影をつけるなど、押した感じをよりリアルに見せる演出もされているようだ。
- Material design
- ウネウネと滑らかにフラットデザインのGUIが影を伴って動いているのが分かる。無味乾燥なフラットデザインに、影や1/60モーションが加わることで表情が出ている所が注目点といえよう。このGUIについて自分が思うのは、文房具というか紙を扱っている感覚に近いのかなと思う。あとGUIの反応の様子も波紋のような演出もされいている。若干冷たい感じのするGUIだが、それが1/60モーションの滑らかさが持つ有機的な感じが、その冷たさを緩和しているしている感がある。自分が注目したのは、こういったGUIを可能にしているエンジンプログラムの改良という所で次の新コンパイラ「ART」に繋げていきたい。(GUIの速度は、グラフィックエンジンプログラムだけでなく、イベント処理系の速度アップも欠かせないから)
- 新コンパイラ「ART」
- ARTは事前最適化コンパライラ(Ahead of Time Compiler)Just in Timeコンパイラ、インタプリタなどを全面的に書き直し、ARM、x86、MIPSに対応したという。
- [速報]次期Android「L」は新VM「ART」を採用。従来のDalvikの2倍の性能、64ビットフル対応。Google I/O 2014
- http://www.publickey1.jp/blog/14/androidlvmartdalvik264google_io_2014.html
- バックエンドコンパイラの最適化をし、従来のDalvikにくらべて2倍の性能を実現との事。つまり、既存のアプリの速度があがるとのこと。パフォーマンスのグラフを見ると、軒並み、見た感じ1.8倍近くのものが多い、中には、全然改善されていないグラフもあるが、概ね2倍近いパフォーマンスをたたき出しているようだ。
- Nexus 5 ART performance comparison(比較対象は従来のDalvik)
- ガベージコレクタとメモリアロケータも改良して、ガベージコレクション(メモリ解放処理)に伴う一時停止や定時間の揺らぎが低減され、アプリケーションがよりスムーズに動くようになった。これが1/60で動くGUIを実現させた要素の一つだろう。
- ARTは、完全な64bit動作とのことなので、今後の64bitタイプのARM、Mips、x86のプロセッサにも完全対応する。重要なのは、そういうプロセッサに対し、JAVAコードは変更なしに動作する点、つまり、Android Lにアップデートすればコードの書き換えなしに、どんな規格のCPUでもパフォーマンスが改善される。
- ARTは事前最適化コンパライラ(Ahead of Time Compiler)Just in Timeコンパイラ、インタプリタなどを全面的に書き直し、ARM、x86、MIPSに対応したという。
- グラフィックエンジンプログラム「Android Extension Pack」
- DX11級のグラフィックのグラフィック処理を行うという。DX11は、ゲーム用のWindowsのグラフィックエンジンプログラムでハードに近いプログラムによって高速化をしている。
- 速報:Google、次期Androidバージョン『Android L』 をプレビュー
- http://japanese.engadget.com/2014/06/25/google-android-l/
- Android Extension Packでは、画面を細分化して処理するテッセレーションやASTCテクスチャ圧縮処理など近代的なグラフィック処理手法に対応したとのこと。こういう手法は比較的ハードに近いローレベルのプログラムなので、適用できるハードを選ぶ、よって、Android Lの性能を引き出せるグラフィックプロセッサを搭載しているハードでないと、グラフィックの速度改善は望めないかもしれない。
- DX11級のグラフィックのグラフィック処理を行うという。DX11は、ゲーム用のWindowsのグラフィックエンジンプログラムでハードに近いプログラムによって高速化をしている。
- バッテリーを長持ちさせる「JobScheduler API」
まとめ
- Android Lは、GUIの改良がされ、フラットデザインのGUIがディズニーアニメーションの様に滑らかに動く、それを実現したのは、近代的なグラフィックエンジンプログラムと従来の2倍の高速化を果たしたというJAVA コンパイラによる所が大きい。今までAndroidを見て思ったのはスペックがスゴイ割に、グラフィックの滑らかさが足りないと思っていたのだが、それが今回のAndroid Lで改良されるようだ。さらにバッテリーも長持ちとのことなので、より洗練されたOSになっている。スゴイ新しい機能はないが、OSの基礎体力がしっかりしたバージョンアップといえよう。悪いバージョンアップではない。今後、このバージョンが土台となって、Androidを下支えすることになるであろう重要なバージョンといえる。
- 自分が注目したのは、コンパイラの改良で、内容を聞いているとリアルタイム処理に関係してくるであろうガベージコレクション(メモリ開放処理)などが大きいと思う。というのは、自分が昔プログラム書いてて、OSのイベント処理系で、とても遅くなるんだ。まるで鉛でも背負ったかのように...なので、今回のなめらかなGUIを見て、この部分が改良されている点を確認できたのは良かったと思う。自分はOSの使い勝手って、操作レスポンスの早さにあると思っているので、その点を改良した点は高く評価したい。ただし、その恩恵が従来のハードにまで及ぶのかはわからない。グラフィック処理系の高速化の手法を見ると、特定のハードにしか対応しない可能性もあるので、そこら辺がどのように扱われるのか今後、注視したい所だ。そこら辺の扱い次第で、Androidというプラットフォーム全体の底上げになるのか、それとも当面は最新ハードにしか恩恵のないものになるのかが決まる。しかし、このバージョンで、Androidの荒削りな所が改善されていると自分は思う。そういう意味でAndroidは垢抜けたOSになりつつあると思う。