後者のAPIの評価では,アプリケーション・プログラムの作りやすさなど,今後プラットフォームとして普及する素地を備えているかがポイントとなる。分析の結果,ソフトウエア開発者が既に持つ知識を有効に活用する方針が垣間見えた。ただしプログラミングのスタイルは,既存の携帯電話機よりもサーバー機やパソコン向けプログラムの開発者になじみやすい。

Androidの構造
アプリは独自VMで実行

 Androidのアーキテクチャは,Linuxカーネルの上にネーティブ・コードで動作するライブラリ群,「Dalvik仮想マシン(Dalvik VM)」と呼ぶ独自の実行環境と,その上で動くアプリケーション・フレームワークから成り立っている。フレームワークに基づいてアプリケーション・プログラムを記述することにより,開発の負荷を低減できる。アプリケーション・プログラムは原則としてDalvik VMで実行する(図1)注2)。プログラムの記述言語はJavaである。

注2) 携帯電話機に実装する際には,当然ながらネーティブ・コードで動作するライブラリ群を作成できる。これらのライブラリで実現したプログラムを標準の待ち受け画面(ホーム・プログラム)から呼び出すには,Dalvik VMで動作するプログラムが必要になると考えられる。

 まず目立つのは,仮想マシンを全面的に採用していること。これは,複数のハードウエア・アーキテクチャが混在する組み込み用途で,しかもマイクロプロセサの性能が向上した現在では必然の選択と言えるだろう。仮想マシンを置くことにより,異なる機器でプログラムを共通化でき,開発効率を高めることができる。仮想マシンは性能面でオーバーヘッドが大きいが,2008年以降に登場する機器ならば,組み込み用途でも十分に利用できると判断したとみられる注3)

注3) こうした仮想マシン・アーキテクチャのはしりは,1995年に登場した米Sun Microsystems,Inc.のJavaである。元々Javaは組み込み向けを想定して作られた。しかし性能上のオーバーヘッドが小さくなく,発表後数年は組み込み向けに限らずなかなか普及しなかった。Javaは,現在では企業システムのサーバー・アプリケーションの記述言語として,ほぼ標準の地位を確立している。

 もう一つの特徴は,Linuxをカーネルに採用している点である。これにより,新しいハードウエアや周辺機器に対応しやすくなる。Linuxには,ハードウエアのメーカーが自らデバイス・ドライバを提供する。「Linuxをカーネルに採用したのは,すべてのハードウエアが移植されるから」(米Google Inc., Director of Mobile PlatformのAndy Rubin氏)。これは独自のカーネルでは望むべくもないところだ。一方でカーネル以外には,Linux関連のソフトウエアは使っていない。例えばGoogle社は,標準Cライブラリ「libc」は,BSD UNIXのものであることを明らかにしている。