記事元: iOS and JavaScript – for Real this Time! – PhobosLab.
App Sotre で iOS のアプリケーションを作成するには、基本的に Objective-C を含めた Xcode で開発出来る言語(C や C++ など) でした。その後 Adobe Flash から iOS アプリケーションを作ってもいいとか悪いとか色々揉めた後、Flash でも iOS アプリケーションの作成が出来るようになりました。
iOSプログラミング──Adobe Flashで作るiOSアプリ
しかし、今時の雑誌を見ると 「HTML5+javascript で作る iPhone アプリ」が流行りですね。
App Store登録もOK!JavaScriptで作るiPhoneアプリ
最大の利点は、HTML5+javascript で書かれた部分は、Android OS などに移植しても同じコードがそのまま使えるという事です。元々、iOS の safari は、HTML 5 の Application Cache と Client-side Storage を実装しているので、Web アプリをそのままローカル環境で実行し(ちょっと嘘でした iOS4.3ではWebアプリで Application Cacheは使えないようです)、データの格納なども可能です。しかし、そのままでは単なる Web コードなので App Store で販売する訳にはいきません。そこで、safari のように web が表示できる UIWebView という表示領域を起動時に作成するコードを組み込んで、ローカルな HTML5+javascript を UIWebView の中で実行させるという手法でアプリケーションを作成したところ、Apple の審査を無事通過!。販売出来たことからこの手法が広まりました。
ただし、そのままでは、GPS や、傾きセンサ、カメラ などの操作をするためのプログラムを別途、書かなければならないため、開発者が、HTML5+javascript を組み込むだけで、iOS アプリケーションが作成できる開発プラットフォームが色々と開発/公開されています。MITライセンス の PhoneGap や フリーからエンタープライズサポート(有料)までプランが選べる Titanium mobile (Titaniumは UIWebView を使ってないらしいです)など色々なプラットフォームがあります。
Javascript ゲームエンジン Impact などを作っている PhobosLab の Dominic Szablewski 氏は、直接 Webkit(それ自体はオープンソースプロジェクト) の javascriptCore を自前で組み込んで、ダイレクトに OpenGL での表示と、OpenALサウンドと使うようなアプリケーションを作成したそうです。
それがこのゲーム Biolab Disaster と Drop だそうです。App Store にあるということは Apple の審査に通ったということです。Impact ゲームエンジンで作成されているそうで、ここ や ここ でそのままフラウザで遊ぶことができます(これが、javascript で作ったケームの利点ですね)。
ただし、現状
- JIT コンパイラ(Nitro)を使用しない
- iPhone 上の実行可能メモリの割り当てができない
- アプリケーションサイズが 2MB 以上になる
そうですが、元々WebアプリではJIT コンパイラ(Nitro)が使えないらしいし…。パフォーマンスは仲々良いようです。Apple の審査基準はイマイチはっきりしなくて、いつ「使っちゃダメ」になるか分かりませんが、Apple がダメといっても他のプラットフォームで使い回しできますしね。こんなに javascript がブレイクするとは、世の中分からないものです。