2008年10月22日,米Google社が開発するモバイル機器向けのプラットフォーム「Android 1.0」がオープンソースとして公開された。これで誰でも自由にAndroidを機器に搭載したりAndroid用ソフトを開発したりできる。Androidは一体何を変えるのか..。Androidのソースに触れ,その実体をつかむ。(日本Androidの会組み込みWG 近藤昭雄,木南英夫,水野光男)
Android(アンドロイド)は,「Open Handset Alliance(OHA)」が2007年11月5日に提唱した。OHAはGoogleが主体となって結成したオープン携帯プラットフォームの普及を目指す団体で,実質的にGoogleがAndroidを開発する。
同11月12日にアプリケーション開発環境の「Android SDK」が先行公開されたものの,ソース・コードはリリースされなかった。これは,ソース・コードが複数に分かれて開発が分岐してしまわないようにしたかったからだ。
そしておよそ1年後の2008年10月22日。初のAndroid携帯電話である米T-Mobile社の「G1」発売と同時に,800万行を超えるソース・コードが公開された。
Androidの構造
Androidの実体は,携帯電話やPDA(個人情報端末)に搭載するOSカーネル,開発・実行環境およびアプリケーションだ。
OSカーネルにはLinuxを採用。オープンソースとして提供されたAndroid 1.0は,カーネル2.6.25を採用する。これをベースに電源管理用モジュール,プロセス間通信用モジュール,メモリー量が不足したときにAndroid関連のプロセスを自動的に落とすモジュールなど,Android用のカーネル・モジュールが加えられている。
Linuxカーネル上には,Android独自のアプリケーション実行環境(ランタイム)を実装している。基盤となるコアライブラリ上に,「Dalvik(ダルビック)」と呼ぶ独自のJavaの仮想マシンを搭載したものだ。Dalvikは,JavaVMの実行形式を独自形式に変えて高速化を図っている。Androidのアプリケーションはすべて,Dalvik上で動作するJavaアプリケーションとなる(写真1)。
さらに,Android用アプリケーションの開発に必要な各種ライブラリ,例えば3次元グラッフィクス表示用の「OpenGL」やデータベースとして,電話アプリケーションや携帯電話用のWebブラウザを搭載している(図1)。
こうした開発環境を備えることで,従来のモバイル用プラットフォームと比べてアプリケーションの幅が大きく広がる。例えば,通信サービスを介さずモバイル機器間で直接通信するアプリケーションを作成できる。つまり,Androidは,パソコンと同等のアプリケーション実行環境と,TCP/IPによる通信環境,およびアプリケーション間通信の環境を備えている。