「Corona」は、米Ansca Mobileが販売しているスマートフォン向けのアプリケーション開発環境である。本記事ではCoronaの特徴と、Coronaによるアプリケーション開発の概要を解説する。

スクリプト言語と物理演算エンジン

 Coronaの最大の特徴となっているのが、SVGやFlashLiteに似た構造の描写モデルに基づくOpenGLベースのエンジンと、Box2Dによる物理演算エンジンが協調して動作し、Lua言語で記述されたプログラムコードからそれらを制御するという構造である(図1)。

図1●Coronaの特徴

 FlashLiteに似た構造の描写エンジンを持っており、その描写機能を中心にしてアプリケーションを作成するため、CoronaはFlashムービーとして作成するようなタイプのゲームアプリ開発に向いている。逆に、ボタンやテキストフィールドなどのUIは標準のものが用意されていないため、エンタープライズ系のアプリ開発は苦手であると言える。

 Coronaではプログラムの記述言語としてLua言語を採用している。Lua言語は、リオデジャネイロ・カトリカ大学によって設計された汎用スクリプト言語であり、JavaScriptやRubyといった他のスクリプト言語と比べ、高速な動作を特徴としている。

 一般的なAndroid開発者にとって、Luaはあまりなじみのない言語かもしれないが、ゲームアプリ開発においては、ゲームスクリプト言語として、ゲームの内部処理を記述するために広く採用されている。そしてCoronaがLua言語を採用しているのも、そのことによる。Coronaは、標準のAndroid SDKのように汎用性を持つ開発環境ではなく、ゲームアプリ開発、特に物理エンジンと画面描写機能を活用したゲームの開発に特化した環境として作成されている。

 Androidアプリを開発する際に、Java言語ではなくスクリプト言語を利用する利点としては、アプリケーション開発の効率化と他のプラットフォームへの移植性が挙げられる。表1に、スクリプト言語を利用するAndroidアプリケーションの開発環境をまとめてみた(スクリプト言語ではないが、ビジュアルプログラミングの環境であるApp Inventorも含めている)。

表1●スクリプト言語によるAndroidアプリケーション開発手法
技術の名前使用する言語特徴
PhoneGapHTML/JavaScript独自APIでネイティブ機能にアクセス可能
jsWaffle独自APIでネイティブ機能にアクセス可能
TitaniumJavaScriptJavaScript中心のプログラミング環境
MonoDroidC#.NETの基本APIを使用可能
Py2apkPythonScripting Layer for Androidが必要
RhodesRubyRuby+HTMLで開発可能
RobotoJRubyのスクリプトエンジン
FlashActionScriptブラウザ上で動作
AIR複数選択可能MXML, ActionScript, HTML, JavaScriptAdobe社のオーサリングツールから出力可能
Scripting Layer for AndroidBeanShell, Ruby, Lua, Perl, Python, JavaScriptGoogle公式のスクリプトエンジン
CoronaLua物理エンジン等を使用可能
App Inventorビジュアルプログラミング画面上でブロックを組み合わせることでプログラムを記述

 このように、現在ではJava言語以外にも、Androidアプリケーションの開発環境としては様々な選択肢がある。iPhone等Android以外のスマートフォンも開発ターゲットとして視野に入れた場合、直接Java言語で開発を行うのでは無く、マルチプラットフォームな実行環境が用意されている言語を選択するのも、十分考慮に値するのである。