• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Rubykaigi2010
 

Rubykaigi2010

on

  • 3,335 views

rubykaigi2010

rubykaigi2010
mobile open social game with ruby on rails

Statistics

Views

Total Views
3,335
Views on SlideShare
2,865
Embed Views
470

Actions

Likes
5
Downloads
16
Comments
0

2 Embeds 470

http://ke-tai.org 337
http://coderwall.com 133

Accessibility

Categories

Upload Details

Uploaded via as OpenOffice

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Rubykaigi2010 Rubykaigi2010 Presentation Transcript

    • Ruby on Rails ではじめる 携帯電話向けオープンソーシャルアプリケーション開発 山田将輝 ( コントロールプラス株式会社 )
    • 自己紹介
      • 山田将輝 (やまだまさき)
      • コントロールプラス株式会社
      • オープンソーシャルのモバイルゲーム作ってます
      • Twitter & github : masarakki
    •  
    • オープンソーシャルってなに?
      • SNSなどの プラットフォーム が持つソーシャル データを、 外部の アプリ が利用できる仕組み (API)
      • PC 用とモバイル用がある
      • PC 用は google が開発 とってもオープンな仕様
      • モバイル用は・・・
    • やりとり(PC編)
      • 開始
    • やりとり(PC編)
      • 開始
      • gadget.xml という設定ファイルを返す
      • Iframe内にhtmlを挿入してユーザに見せる
    • やりとり(PC編)
      • 開始
      • gadget.xml という設定ファイルを返す
      • Iframe内にhtmlを挿入してユーザに見せる
      • Iframe内で画面遷移
      • データ取得APIはjavascriptのxhrで
    • やりとり(PC編)まとめ
      • ユーザが直接アプリのサーバと通信する
      • セッション管理する必要がある
      • html+javascript (javascript成分強め)
      • API通信がjavascriptなのでユーザ環境依存
      • そのかわりサーバ負荷小さめ
    • やりとり(モバイル編)
      • 開始
    • やりとり(モバイル編)
      • 開始
      • 目的のページをリクエスト
    • やりとり(モバイル編)
      • 開始
      • 目的のページをリクエスト
      • データ取得APIのやりとり
    • やりとり(モバイル編)
      • 開始
      • 目的のページをリクエスト
      • データ取得APIのやりとり
      • レスポンスを返す
      • ユーザに見せる
    • やりとり(モバイル編)まとめ
      • ユーザは直接アプリサーバに接続しない
      • クエリパラメータでユーザ特定
      • OAuthで接続の検証ができる
      • やりとりはサーバ間のみhtmlだけ
      • API通信もサーバ間なのでレスポンス遅くなる
      • サーバ負荷高め
    • 比較してみた
    • 結論その1 モバイル版オープンソーシャルアプリの開発は P C 版 よ り も 簡 単
    • なぜ Ruby on Rails か その前に ゲーム って何!? 長年培ってきたゲーマーとしての知見を活かし、 導き出した答え
    • ゲームとは
    • UI が超不親切な CMS である !! ゲームとは
    • CMSならRailsだろう!
    • CMSならRailsだろう! ActiveRecord がある !
    • CMSならRailsだろう! rspec がある !!
    • CMSならRailsだろう! そしてなにより jpmobile がある !!!
    • phpでの開発を想像してみよう
      • <?php
      • XXXXなオブジェクト指向
      • 手放せない関数リファレンス
        • mb_convert_variables の引数
      • array()
        • なのに hash
      • $;$;$;$;$;$;$;
      • ?>
    • 眩暈がしてきた
    • R u b y 最 高 R a i l s 最 高 結論その2
    • 実際に作ってみた
      • リンクの書き方が特殊
        • http://url/to/platform?url=http://url/to/app
      • APIを呼ぶのに認証の設定が必要
        • OAuth
    • リンクの書き方が特殊 でもやっぱり <%= link_to ... %> 使いたいよね ↓ 書き換えちゃえばいいじゃないか! Rubyならできる!!
    • act_as_opensocial の誕生
      • 初めて作ったRailsプラグイン
      • 定数 OPEN_SOCIAL が定義されていたら
      • link_to を書き換える
      • form_tag も書き換える
    • つかいごこち
      • 良かった点
        • 開発環境はPC上のブラウザでテストプレイできる!!
        • コードを全くいじらず本番環境にデプロイできる!!
        • 通常のRailsアプリと見た目は完全に一致!!
      • 悪かった点
        • environmentと書き換えON/OFFが1対1で対応
        • 管理画面用のenvironmentとサーバが必要
        • API接続はどうしたって?
    • 改良しよう
        最大のミス
      • acts_as_cached
      • acts_as_list
      • acts_as_tree
      • acts_as_taggable
      • act_as_opensocial
    • act s _as_opensocial の誕生
      • mobile_filter を参考に opensocial_filter を導入
        • action単位で切り替え可能に
      • Platformを導入
        • プラットフォームと接続するためのクラス
        • 開発環境用にダミーのプラットフォームも用意
    • Platform
      • API接続と認証処理の共通化
      • 継承してちょこっと設定かけば何となく使える
      • プラットフォームごとに微妙に仕様が違うので トライ&エラーで修正する
      • プラットフォームの仕様が一般公開されていないのでライブラリ内にも書けない?
        • たとえばhostとかendpointとか
    • 本当にやりたかったこと class OpenSocial::Platform::AbstractPlatform 共通処理 end class OpenSocial::Platform::Mixi < OpenSocial::Platform::AbstractPlatform プラットフォーム固有の設定 プラットフォームの差を吸収 end ↑↑↑ プラグインが用意 ↑↑↑ ↓↓↓ ユーザが作成 ↓↓↓ class Mixi < OpenSocial::Plaftorm::Mixi アプリごとの設定 end
    • 現状 orz class OpenSocial::Platform::AbstractPlatform 共通処理 end ↑↑↑ プラグインが用意 ↑↑↑ ↓↓↓ ユーザが作成 ↓↓↓ class Mixi < OpenSocial::Plaftorm::AbstractPlatform プラットフォーム固有の設定 プラットフォームの差を吸収 アプリごとの設定 end
    • 完全体予想
      • ひとつのアプリで複数プラットフォームに対応
      • ApplicationControllerでの初期化処理を自動化
        • プラットフォームを判別し
        • 適切なPlatformのインスタンスを作成し
        • @opensocial でアクセス可能に
        • プログラム内では@opensocial.prof(@my) みたいにつかう
    • そのほかにつくったもの
      • acts_as_multi_connection
        • DBをn万人ごとに分割するためのプラグイン
      • ec2tools
        • ec2のサーバ管理スクリプト集
        • productionサーバの3台目にssh接続しろ! とか
    • 全部githubで公開中 http://github.com/masarakki
    • 結論その3 Ruby on Rails ではじめる モバイルオープンソーシャルアプリ開発は いますぐできる !! 簡単にできる !!
    • いちばん大事なはなし
      • 開発者にとって
        • パートナー企業でないとモバイルオープンソーシャルアプリの開発はできない
      • 企業にとって
        • 優秀なRubyエンジニアはなかなか取れない
        • Rubyで募集してるのに「PHPならできます!」って・・・
    • いちばん大事なはなし Ruby エンジニア 絶賛募集中 !!