Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Rhodesによる既存ウェブサービスのアプリ化

shida
June 26, 2012

 Rhodesによる既存ウェブサービスのアプリ化

RhodesはRubyによる各種スマートフォンのプラットフォームに対応したネイティブアプリ作成ツールです。
Furpeaceを、Rhodeesを使ってできるだけ既存のサービスを再利用した形でネイティブアプリ化する方法について検討して発表しました

shida

June 26, 2012
Tweet

More Decks by shida

Other Decks in Technology

Transcript

  1. furpeace • 犬になりきってつぶやくサービス • 2010年2月~ • Rails2.3 • 登録時、飼い主、犬両方を登録 •

    PC、スマホ、ガラケー対応 • Twitter・Facebook同時POST • つぶやき、いいね、コメント • 血統書による異母・異父兄弟犬さがし • グループ • 散歩、ごはん、うんち、買い物のキーワードデータベース
  2. アプリ化したい • スマホの投稿が急増中(3割程度) • スマホは画像がアップロードできない • 画像つぶやきが増えればそれだけサービスも盛り上がる • メールに画像添付して投稿する仕組み つぶやく

    → メールが届く → 画像を添付して返信 → 公開される • Android 2.2なら直接アップできるものもあるが、できたりできなかったりと 不安定 – 選ぶとなぜかリロードがかかって投稿内容が消えるなど • 起動もアプリの方が楽 • 既存のサイトをできるだけそのままでアプリ化したい • Android、iPhoneに対応したい
  3. Rhodes • Rubyでマルチプラットフォームに対応 • ruby + html + javascript +

    cssで構築可能 • ローカルウェブサーバーの上にRubyのMVCフレーム ワークが動く • WebViewを常に使う • 学習コストが低い! • 実はRhodes歴1日目です。m(_ _)m – 資料作成 18:30~
  4. インストール • eclipse重い • emacs 使いたい • Linux のサーバーににいれてみるがビルドできない •

    おとなしくWindowsに入れる • coLinux(Ubuntu)からWindowsのソースをmount • emacsで編集 ^^ • ビルドもWindowsのコマンドプロンプトからできる – rake run:android
  5. アプリの作成 $ 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
  6. controller require 'rho' require 'rho/rhocontroller' require 'rho/rhoerror' require 'helpers/browser_helper' class

    SettingsController < Rho::RhoController include BrowserHelper def index @msg = @params['msg'] render end def login @msg = @params['msg'] render :action => :login end
  7. model class Image include Rhom::PropertyBag enable :sync property :name, :string

    property :filename, :string property :image_uri, :blob, :overwrite end
  8. view <div data-role="page" data-url="<%= Rho::RhoConfig.start_path %>/"> <div data-role="header" data-position="inline"> <h1>HelloWorld</h1>

    <% if SyncEngine::logged_in > 0 %> <a href="<%= url_for :controller => :Settings, :action => :do_sync %>" class="ui-btn-left" data-icon="refresh"> Sync </a> <a href="<%= url_for :controller => :Settings, :action => :logout %>" class="ui-btn-right" data-icon="star"> Logout </a> <% else %> <a href="<%= url_for :controller => :Settings, :action => :login %>" class="ui-btn-right" data-icon="star">Login</a> <% end %> </div> <div data-role="content"> <ul data-role="listview"> <li><a href="#">Add link here...</a></li> </ul> </div> </div>