2009年7月、日本でもAndroidを搭載した携帯電話(NTTドコモの「HT-03A」)が発売されました。もうだいぶ前のように感じられるかもしれませんが、今からたった1年2カ月ほど前のことです。2010年4月の「Xperia」の発売以降、Andoroidを搭載した端末の発売が相次ぎ、Androidに対する関心は一層高まっています。本特集では、Androidプログラミングの基本を紹介します。日本でのAndroid端末発売当時の記事なので古い個所もありますが、Androidアプリ開発の概要を理解するのに役立ちます。
 今回は開発環境の整備について説明します。
(記事は原則として執筆時の情報に基づいており,現在では異なる場合があります)

 Androidは、米Googleが作った携帯電話用のOS(Operating System)です。携帯電話用のOSと言えば、Symbian OSやiTRON、RTOS、Linuxなどがあり、スマートフォン用としてはWindows Mobile、iPhone OS(iOS4)などがあります。Androidはスマートフォン用に分類できます。

 Androidに標準搭載されるアプリケーションには、Webkit*1ベースのWebブラウザ、Google検索、YouTube、自動受信対応のGmail、Googleマップとストリートビュー、Googleトーク、Googleカレンダーなどがあります。これら以外のアプリケーションは、Androidマーケット*2からダウンロードして追加できます。

 ユーザー・インタフェースはタッチ操作が中心で、文字入力にはソフトウエア・キーボードがサポートされています*3。メディア・ファイルは、MPEG4、H.264、MP3、AAC、AMR、JPEG、PNG、GIFなどがサポートされており、動画・音楽の再生や画像の閲覧はもちろんのこと、撮影した動画をその場でYouTubeにアップロードすることも可能です。またGSM、Bluetooth、Wi-Fi、デジタルカメラ、GPS、地磁気センサー、加速度センサーなど、様々なハードウエアに対応しています。

 Androidの開発は、Googleが中心となって設立したオープン・ハンドセット・アライアンス(Open Handset Alliance、以下OHA)で行われています。OHAの参加企業には、日本からはKDDI、NTTドコモ、ソフトバンクモバイル、東芝、オムロンが参加しています。Androidのソースコードは、Apache License 2.0というオープンソースのライセンスで公開されています。

 さらに、最近では携帯電話以外にもAndroidが採用されています。Androidはオープンソース・ソフトウエアとして公開されているので、今後も様々な搭載端末が発表されることでしょう。

Androidのシステム構成

 Androidは、その中核となるソフトウエアとして、Linuxカーネル2.6を採用しています。このLinuxカーネル上に、アプリケーションの実行環境である独自のDalvik仮想マシン(Dalvik VM:ダルビック バーチャルマシン)を搭載しています。すべてのアプリケーションはDalvik VMを介して実行されます。ただし、ネイティブ・コードも動作するように、専用ライブラリも搭載しています。

 このDalvik VMこそが、Androidの一番の特徴といってもよいでしょう。携帯電話向けのアプリケーションは一般に、リソースが限られていることから、CやC++などのネイティブ・コードで書かれることが多いものです。これに対してAndroid上で動作するアプリケーションは、原則としてすべてこのDalvik VM上で動作します*4。ハードウエア依存のコードやパフォーマンスが重要視されるコーデックなどの処理は、ネイティブ・コードのライブラリとして提供されているので、Dalvik VMから利用できます。

 また、プリインストールされているアプリケーションもすべてDalvik VM上で動作し、プリインストール・アプリも追加アプリもすべて平等に扱われます。その気になれば、携帯電話に搭載するすべての機能を、独自のアプリケーションに置き換えることが可能です。

 Dalvik VMは、コンパクトで高速に動作するように設計されています。処理能力の低い端末やメモリー搭載量が少ない端末でも快適に動作します。開発言語としてはJavaを利用しますが、携帯電話用のJava実行環境であるJava ME(Java Platform Micro Edition)には準拠しておらず、独自のAPIセットになります。

 動作するバイナリはJavaバイトコード(.classファイル)ではなく、独自のDalvikバイトコード(.dexファイル)となります。Dalvik VMはレジスタ・マシン*5のため、スタック・マシンのJava VMよりもメモリー・アクセスが抑えられ、コードのサイズもコンパクトになります。これにより少ないリソースでも快適に動作します。