RhodesはRubyによる各種スマートフォンのプラットフォームに対応したネイティブアプリ作成ツールです。 Furpeaceを、Rhodeesを使ってできるだけ既存のサービスを再利用した形でネイティブアプリ化する方法について検討して発表しました
Rhodesによる既存ウェブサービスのアプリ化2012.06.26志田 裕樹
View Slide
furpeace• 犬になりきってつぶやくサービス• 2010年2月~• Rails2.3• 登録時、飼い主、犬両方を登録• PC、スマホ、ガラケー対応• Twitter・Facebook同時POST• つぶやき、いいね、コメント• 血統書による異母・異父兄弟犬さがし• グループ• 散歩、ごはん、うんち、買い物のキーワードデータベース
furpeace
アプリ化したい• スマホの投稿が急増中(3割程度)• スマホは画像がアップロードできない• 画像つぶやきが増えればそれだけサービスも盛り上がる• メールに画像添付して投稿する仕組みつぶやく → メールが届く → 画像を添付して返信 → 公開される• Android 2.2なら直接アップできるものもあるが、できたりできなかったりと不安定– 選ぶとなぜかリロードがかかって投稿内容が消えるなど• 起動もアプリの方が楽• 既存のサイトをできるだけそのままでアプリ化したい• Android、iPhoneに対応したい
Rhodes• Rubyでマルチプラットフォームに対応• ruby + html + javascript + cssで構築可能• ローカルウェブサーバーの上にRubyのMVCフレームワークが動く• WebViewを常に使う• 学習コストが低い!• 実はRhodes歴1日目です。m(_ _)m– 資料作成 18:30~
Rhodesのアーキテクチャ
インストール• eclipse重い• emacs 使いたい• Linux のサーバーににいれてみるがビルドできない• おとなしくWindowsに入れる• coLinux(Ubuntu)からWindowsのソースをmount• emacsで編集 ^^• ビルドもWindowsのコマンドプロンプトからできる– rake run:android
アプリの作成$ rhodes app hello_world[ADDED] hello_world/rhoconfig.txt[ADDED] hello_world/build.yml[ADDED] hello_world/.gitignore[ADDED] hello_world/app/application.rb[ADDED] hello_world/app/index.erb[ADDED] hello_world/app/index.bb.erb[ADDED] hello_world/app/layout.erb[ADDED] hello_world/app/loading.html[ADDED] hello_world/Rakefile[ADDED] hello_world/app/loading.png[ADDED] hello_world/app/helpers[ADDED] hello_world/icon[ADDED] hello_world/app/Settings[ADDED] hello_world/public
controllerrequire 'rho'require 'rho/rhocontroller'require 'rho/rhoerror'require 'helpers/browser_helper'class SettingsController < Rho::RhoControllerinclude BrowserHelperdef index@msg = @params['msg']renderenddef login@msg = @params['msg']render :action => :loginend
modelclass Imageinclude Rhom::PropertyBagenable :syncproperty :name, :stringproperty :filename, :stringproperty :image_uri, :blob, :overwriteend
viewHelloWorld<% if SyncEngine::logged_in > 0 %>SyncLogout<% else %>Login<% end %>Add link here...
camera API• 写真を撮るCamera::take_picture(callback_url, settings)• 写真を選ぶCamera::choose_picture(callback_url)
furpeaceのアプリ化• アプリ起動と同時にWebViewでhttp://www.furpeace.com を閲覧• ネイティブ機能を使いたい時だけ、ローカルウェブサーバーと通信• クロスドメインの通信になる– iframe– クロスドメインメッセージング(html5)
画像のアップロード
デモ
まとめ• Rhodesを使えばRuby, html, CSS,JavaScriptで開発できる• ローカルウェブサーバーとのクロスドメイン通信をどうにかすれば既存のサイトを丸々生かして、ネイティブ機能を付与することもできる