Android携帯ゲームを作って世界に配信してみよう(1) ―― まずは小さなアプリからこつこつ作ってみる
●iPhoneアプリとの違い
アプリを開発する側から見たアプリをとりまく環境について,Android携帯電話の最大のライバルであるiPhoneと比較してみましょう.
<Androidアプリのほうが良い点>
- 開発者が多く情報が多いJava言語で開発できる(iPhoneアプリは,開発者が少なく情報も少ないObjective Cで開発する).
- マーケットへの登録は手続き料金などがかからず,審査も不要.
- Androidマーケットは基本制約が少ない(ゲーム機のエミュレータが配信されていることすらある).また,自分でオリジナル・マーケットを立ちあげることもできる.それに対してiPhoneアプリのマーケットは,Appleのビジネス・モデルと衝突するアプリを配信できないなど,そもそも制約が厳しい.
- Windowsでも,Macでも,Linuxでも,プラットフォームを選ばず開発環境が用意されている(iPhoneはMacしか開発環境が用意されていない).
<iPhoneアプリのほうが良い点>
- 「Android Market」では無料アプリが多いため,iPhoneに比べると有料アプリが売れづらい.
●ガラケー・アプリ(iアプリ)との違い
NTTドコモ向け携帯電話のアプリケーション・プラットフォーム「iアプリ」は,10年前に世界で初めて携帯電話に搭載されたJavaアプリであり,その後も日本の携帯電話アプリのデファクトであり続けました.このiアプリとAndroidアプリの違いを比較してみます.
<Androidアプリのほうが良い点>
- 世界共通のプラットフォームなので,自分のアプリを世界中の国で配信することができる.
- 個人でも,簡単に決済代行システムを利用することができる.
<iアプリのほうが良い点>
- ビジネスとしてアプリを配信するコンテンツ・プロバイダにとっては,Android Marketは集客力が弱い.またAndroidアプリは,日々大量のアプリが世界中から新規に配信され,Android Market内にアプリが乱立しているので,新規に開発したアプリがマーケット内に埋もれがちである.
- 同じくコンテンツ・プロバイダにとっては,無料アプリがきわめて多く,有料アプリもダウンロード型課金が中心で,iアプリの中心であった会員制月額課金に比べるとビジネスにしづらい.
●Androidアプリの実行環境
AndroidアプリはJava言語で記述し開発しますが,実行環境は標準的なJava仮想マシン(Java VM)ではなく,Google社独自の仮想マシンであるDalvik仮想マシン(Dalvik VM)上で動作します(図2).ちなみにJava VMはスタック・ベースのVMですが,Dalvik VMはレジスタ・ベースのVMです.これは,メモリが少ない環境でも動作できるように,また,仮想マシンのレジスタを実際のCPUのレジスタにマッピングして高速に実行できるように設計されたものです(詳しくは,稿末のコラム「スタック・ベースのVMとレジスタ・ベースのVM」を参照).
図2 Androidアプリのアーキテクチャ

また,Androidアプリでは,モバイル向けJavaの仕様であるJava ME(Java Platform, Mobile Edition)ではなく,標準的なJava言語の仕様Java SE(Java Platform, Standard Edition)注1とGoogle社オリジナルのAndroidフレームワークが採用されています.
注1:Java言語では公式API(Application Programming Interface)として,さまざまな便利な機能が提供されている.この講座ではJava言語のAPIについては説明しないが,公式リファレンスが充実しているので,参考にしていただきたい.
なお,Java言語で記述されたソース・コードはJDK(Java Development Kit)によりクラス・ファイル(*.class)にコンパイルされた後,Dalvik仮想マシン・コードにコンパイル(*.dex)されて,最後にAndroidアプリ実行ファイル(*.apk)にパッケージングされます.