PhoneGapの可能性

スマートフォン開発の環境としてTitanium Mobileが人気だ。
iPhoneの開発で古くさいObjective-Cを使ったり、AndroidでActivityやIntentなど癖のあるクラスを使いこなしたりせず、Javascriptですっきりと開発できるので人気が出るのも理解できる。21世紀もだいぶ過ぎたのに、メモリリークとか気にしたくないもんねぇ。

Titanium Mobileと同じようにマルチデバイスJavascriptで開発できるフレームワークにPhoneGapがある。

http://www.phonegap.com/home

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

http://jp.appict.me/

では、SDK部分にPhoneGapを使用し、サービスの部分はJavascriptで記述している。

PhoneGapを採用した理由は、

  • ひとつのサービスのSDKiPhone/Android両方のバージョンを用意するとコストが高く付き過ぎる
  • PhoneGapのアプリ部分はWebアプリなので、これをサーバから配信する事は簡単である。
  • このことを利用して、サービスがバージョンアップしてもSDKの入れ替えなしで新しいサービスが使えるようになる

ということである。

いうなれば、ネイティブアプリにWebサービスをMushUpするような感覚だ。
この構成は開発者の負担を減らしつつ、ダイナミックなサービス更新が可能であると考えている。