「Corona」は、米Ansca Mobileが販売しているスマートフォン向けのアプリケーション開発環境である。本記事ではCoronaの特徴と、Coronaによるアプリケーション開発の概要を解説する。
スクリプト言語と物理演算エンジン
Coronaの最大の特徴となっているのが、SVGやFlashLiteに似た構造の描写モデルに基づくOpenGLベースのエンジンと、Box2Dによる物理演算エンジンが協調して動作し、Lua言語で記述されたプログラムコードからそれらを制御するという構造である(図1)。
FlashLiteに似た構造の描写エンジンを持っており、その描写機能を中心にしてアプリケーションを作成するため、CoronaはFlashムービーとして作成するようなタイプのゲームアプリ開発に向いている。逆に、ボタンやテキストフィールドなどのUIは標準のものが用意されていないため、エンタープライズ系のアプリ開発は苦手であると言える。
Coronaではプログラムの記述言語としてLua言語を採用している。Lua言語は、リオデジャネイロ・カトリカ大学によって設計された汎用スクリプト言語であり、JavaScriptやRubyといった他のスクリプト言語と比べ、高速な動作を特徴としている。
一般的なAndroid開発者にとって、Luaはあまりなじみのない言語かもしれないが、ゲームアプリ開発においては、ゲームスクリプト言語として、ゲームの内部処理を記述するために広く採用されている。そしてCoronaがLua言語を採用しているのも、そのことによる。Coronaは、標準のAndroid SDKのように汎用性を持つ開発環境ではなく、ゲームアプリ開発、特に物理エンジンと画面描写機能を活用したゲームの開発に特化した環境として作成されている。
Androidアプリを開発する際に、Java言語ではなくスクリプト言語を利用する利点としては、アプリケーション開発の効率化と他のプラットフォームへの移植性が挙げられる。表1に、スクリプト言語を利用するAndroidアプリケーションの開発環境をまとめてみた(スクリプト言語ではないが、ビジュアルプログラミングの環境であるApp Inventorも含めている)。
技術の名前 | 使用する言語 | 特徴 | |
---|---|---|---|
PhoneGap | HTML/JavaScript | 独自APIでネイティブ機能にアクセス可能 | |
jsWaffle | 独自APIでネイティブ機能にアクセス可能 | ||
Titanium | JavaScript | JavaScript中心のプログラミング環境 | |
MonoDroid | C# | .NETの基本APIを使用可能 | |
Py2apk | Python | Scripting Layer for Androidが必要 | |
Rhodes | Ruby | Ruby+HTMLで開発可能 | |
Roboto | JRubyのスクリプトエンジン | ||
Flash | ActionScript | ブラウザ上で動作 | |
AIR | 複数選択可能 | MXML, ActionScript, HTML, JavaScript | Adobe社のオーサリングツールから出力可能 |
Scripting Layer for Android | BeanShell, Ruby, Lua, Perl, Python, JavaScript | Google公式のスクリプトエンジン | |
Corona | Lua | 物理エンジン等を使用可能 | |
App Inventor | ビジュアルプログラミング | 画面上でブロックを組み合わせることでプログラムを記述 |
このように、現在ではJava言語以外にも、Androidアプリケーションの開発環境としては様々な選択肢がある。iPhone等Android以外のスマートフォンも開発ターゲットとして視野に入れた場合、直接Java言語で開発を行うのでは無く、マルチプラットフォームな実行環境が用意されている言語を選択するのも、十分考慮に値するのである。