PhoneGapの可能性
スマートフォン開発の環境としてTitanium Mobileが人気だ。
iPhoneの開発で古くさいObjective-Cを使ったり、AndroidでActivityやIntentなど癖のあるクラスを使いこなしたりせず、Javascriptですっきりと開発できるので人気が出るのも理解できる。21世紀もだいぶ過ぎたのに、メモリリークとか気にしたくないもんねぇ。
Titanium Mobileと同じようにマルチデバイスにJavascriptで開発できるフレームワークにPhoneGapがある。
PhoneGapが可能にすることはTitanium Mobileに近いものがあるが、実現のアプローチがだいぶ異なる。
Titanium MobileはiPhoneがターゲットの場合、Objective-Cのプリプロセッサのような形で動作する。出力されるのはiPhoneアプリのバイナリだ。一方PhoneGapの実態はWebViewであり、この中にHTML5+CSS3+Javascriptで構成されたアプリケーションをカプセル化する。PhoneGapはスマートフォンの機能にブリッジを作っているので、Javascriptからスマートフォンの機能にアクセスできるようになる。
どちらかというと、PhoneGapの方がシンプルな構成であり、これによってiOS,Android,BalckBerry,palm,Windows Mobile,Symbianの6つのプラットフォームに対応している。いまさらSymbianに対応したい開発者がいるかどうかは疑問だけどね。
アプリの見た目での違いは、nativeUIを使うかどうかだ。Titanium Mobileはネイティブアプリだから当然nativeUIを使う。Titanium MobileのボタンはiPhoneであればiPhoneのボタンだし、AndroidならAndroidネイティブのボタンだ。これに対し、PhoneGapはHTMLだから、ボタンはCSSで加工しない限りHTMLボタンが使われる。native度はTitaniumの方が上だが、デザインの自由度はPhoneGapの方が上と言えるかもしれない。
弊社のAppict.me
では、SDK部分にPhoneGapを使用し、サービスの部分はJavascriptで記述している。
PhoneGapを採用した理由は、
- ひとつのサービスのSDKにiPhone/Android両方のバージョンを用意するとコストが高く付き過ぎる
- PhoneGapのアプリ部分はWebアプリなので、これをサーバから配信する事は簡単である。
- このことを利用して、サービスがバージョンアップしてもSDKの入れ替えなしで新しいサービスが使えるようになる
ということである。
いうなれば、ネイティブアプリにWebサービスをMushUpするような感覚だ。
この構成は開発者の負担を減らしつつ、ダイナミックなサービス更新が可能であると考えている。