RhodesとPhoneGapについてのプレゼンしました

前回Rhodesの紹介記事を書いてからしばらくTwitter Clientのモバイル版作成に励んでいました。

結構Rhodesについての知識がたまってきたところLondon Android User Group でRhodesについてプレゼンする機会があったので
そのスライドをあげておきます。

Rhodes だけでなくJavaScriptを利用したフレームワークであるPhoneGapもあわせてプレゼンしました。理由はことなるフレームワークを比較した方がいろいろメリットデメリットが分かりやすいのではと思ったためです。

日本語はおろか英語でもいままでテクニカルなプレゼンとかしたことなかったので、どうなることかと思いましたが、なんとかQ&Aもそんなに詰まることなくおこなえることができたので、ほっとしました。プレゼンの模様はビデオに収められていたようなので、それもあがってきたらまた紹介しますね。

スライドは英語なので要点だけ日本語で箇条書きでまとめておきます。

  • クロスプラットフォームアプリ開発」といえば「Write Once, Run Anywhere」のJavaが遥か昔に実現するはずだったのだけれど、実際には携帯の世界では書くデバイスメーカーが独自のフレームワークを出しているため、結局書くプラットフォーム用に書き直さなければいけないのが現状
  • RhodesもPhoneGapも各フレームワークのUIを使うのではなく、Web上でスタンダードとなっているHTML, CSS, JavascriptのUIを使う
  • ただそれだけだとモバイル用にページサイズを最適化したサイトと変わりがない。RhodesとPhoneGapは双方とも携帯のデバイス機能(カメラやコンタクトリストなど)
  • RhodesはRuby On Rails に強く影響を受けたフレームワークで独自のMVC, ORMをRuby で提供
  • Rhodes はWeb API(Sugar CRM, Siebel, BaseCamp)などとのスムーズなデータの同期を最適化することにフォーカスしており、そのためにRhosyncというフレームワーク(Rhosyncは実際はRailsアプリでユーザーは各APIと同期するためのAdapterを書く必要がある)も提供している
  • RhodesはRhohubというクラウドIDEを提供しており、デバイスごとのIDEを各ユーザーが持つことなく、Rhohub上で直接編集、各プラットフォーム用にコンパイル可能
  • PhoneGap はRhodesのような独自のフレームワークを提供するのではなく、HTML上からJavascriptでデバイス機能を利用するためのラッパーを提供することに特化
  • Android の場合は appView.addJavascriptInterface(gap, "Device") というメソッドでJavaScriptオブジェクトとJavaオブジェクト間で結びつけている(iPhoneの場合はフレームワークがObjective CとJavaScriptをブリッジするメソッドを用意していないので、urlリクエストを利用しているようです。詳しくはここを参照してください)
  • RhodesとPhoneGapでカバーしているデバイス、機能に大きく隔たりがある
  • RhodesはDual Licenseで、ソースをオープンしたくない場合はライセンス代を払う必要あり
  • PhoneGapはアップルからRejectされているケースが出てきている

特にRhodesの方は私が作っていたTwitter Clientを例にしたコードサンプルを出しておいたので参考になれば幸いです