Rubykaigi2010

3,213 views
3,115 views

Published on

rubykaigi2010
mobile open social game with ruby on rails

Published in: Technology
0 Comments
5 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
3,213
On SlideShare
0
From Embeds
0
Number of Embeds
476
Actions
Shares
0
Downloads
18
Comments
0
Likes
5
Embeds 0
No embeds

No notes for slide

Rubykaigi2010

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

×