Suche senden
Hochladen
ゲーム会社でのRuby : rails活用事例
•
3 gefällt mir
•
2,398 views
Yasutomo Uemori
Folgen
第76回Ruby関西での発表で使ったスライドです https://rubykansai.doorkeeper.jp/events/55398
Weniger lesen
Mehr lesen
Ingenieurwesen
Melden
Teilen
Melden
Teilen
1 von 27
Jetzt herunterladen
Downloaden Sie, um offline zu lesen
Recomendados
ふつうのRailsアプリケーション開発
ふつうのRailsアプリケーション開発
Takafumi ONAKA
ぼくのかんがえたさいきょうの Rails スタートダッシュ
ぼくのかんがえたさいきょうの Rails スタートダッシュ
Kenji Mori
クローズドソースから始めるオープンソース
クローズドソースから始めるオープンソース
Takafumi ONAKA
SunspotではじめるSolr入門
SunspotではじめるSolr入門
Takao Baba
超簡単!? ActiveAdminで作る管理画面@Ruby / Ruby on Rails ビギナーズ勉強会 第3回
超簡単!? ActiveAdminで作る管理画面@Ruby / Ruby on Rails ビギナーズ勉強会 第3回
Kanako Kobayashi
Bundler 2 の胎動
Bundler 2 の胎動
Koichi ITO
Railsバージョンアップを段階的に行うためにRails3/4並行稼動させる仕組みを作ってる話
Railsバージョンアップを段階的に行うためにRails3/4並行稼動させる仕組みを作ってる話
Masayuki Morita
Sinatraでwebアプリケーション開発を学ぶ
Sinatraでwebアプリケーション開発を学ぶ
Hiroshi Oyamada
Más contenido relacionado
Was ist angesagt?
ここにハマった!Dockerコンテナホスティング「Arukas」の裏側
ここにハマった!Dockerコンテナホスティング「Arukas」の裏側
Shuji Yamada
現場!実物!実践!マルチクラスタを運用するときの課題とコツ
現場!実物!実践!マルチクラスタを運用するときの課題とコツ
Shuji Yamada
Sprocketsを捨てたい
Sprocketsを捨てたい
Masato Noguchi
ApplicationTemplateのススメ
ApplicationTemplateのススメ
Takafumi ONAKA
Riot.jsとフォームのデータバインディング
Riot.jsとフォームのデータバインディング
Keisuke Imai
RubyでGUIアプリケーションを書く
RubyでGUIアプリケーションを書く
Misao X
Ruby on Rails の特徴とそのエコシステム
Ruby on Rails の特徴とそのエコシステム
Tomoya Kawanishi
すこやかRails
すこやかRails
Takafumi ONAKA
ヤマハルーターとクラウドをVPNで繋いでDaaS環境を構築しよう
ヤマハルーターとクラウドをVPNで繋いでDaaS環境を構築しよう
Yasutaka Hamada
Ruby on Rails を用いたWEBアプリケーションの開発
Ruby on Rails を用いたWEBアプリケーションの開発
Koichi Shimozono
Capistrano紹介 at kawasaki.rb #002 #kwskrb
Capistrano紹介 at kawasaki.rb #002 #kwskrb
Tsubasa Yumura
Ruby on Rails 入門
Ruby on Rails 入門
Yasuko Ohba
SoftLayerにゅうもん(2016/03/04 SoftLayer勉強会)
SoftLayerにゅうもん(2016/03/04 SoftLayer勉強会)
rina0521
bootsnapはどれくらい早くなるのか
bootsnapはどれくらい早くなるのか
ota42y
Rancherカタログ紹介 Hadoop + Yarn
Rancherカタログ紹介 Hadoop + Yarn
cyberblack28 Ichikawa
Hatena blogdevelopmentflow
Hatena blogdevelopmentflow
Yasuhiro Onishi
こすもすえび&しばやんの「Azureアンカンファレンス~Azureについては俺たちに聞け(ばええやろ)」
こすもすえび&しばやんの「Azureアンカンファレンス~Azureについては俺たちに聞け(ばええやろ)」
Keiji Kamebuchi
仮想マシンを使った開発環境の簡単共有方法
仮想マシンを使った開発環境の簡単共有方法
Hideo Takahashi
OpenShift のある生活
OpenShift のある生活
Yoshimasa Tanabe
趣味でのCosmos DBとの付き合い方
趣味でのCosmos DBとの付き合い方
Koichi Ota
Was ist angesagt?
(20)
ここにハマった!Dockerコンテナホスティング「Arukas」の裏側
ここにハマった!Dockerコンテナホスティング「Arukas」の裏側
現場!実物!実践!マルチクラスタを運用するときの課題とコツ
現場!実物!実践!マルチクラスタを運用するときの課題とコツ
Sprocketsを捨てたい
Sprocketsを捨てたい
ApplicationTemplateのススメ
ApplicationTemplateのススメ
Riot.jsとフォームのデータバインディング
Riot.jsとフォームのデータバインディング
RubyでGUIアプリケーションを書く
RubyでGUIアプリケーションを書く
Ruby on Rails の特徴とそのエコシステム
Ruby on Rails の特徴とそのエコシステム
すこやかRails
すこやかRails
ヤマハルーターとクラウドをVPNで繋いでDaaS環境を構築しよう
ヤマハルーターとクラウドをVPNで繋いでDaaS環境を構築しよう
Ruby on Rails を用いたWEBアプリケーションの開発
Ruby on Rails を用いたWEBアプリケーションの開発
Capistrano紹介 at kawasaki.rb #002 #kwskrb
Capistrano紹介 at kawasaki.rb #002 #kwskrb
Ruby on Rails 入門
Ruby on Rails 入門
SoftLayerにゅうもん(2016/03/04 SoftLayer勉強会)
SoftLayerにゅうもん(2016/03/04 SoftLayer勉強会)
bootsnapはどれくらい早くなるのか
bootsnapはどれくらい早くなるのか
Rancherカタログ紹介 Hadoop + Yarn
Rancherカタログ紹介 Hadoop + Yarn
Hatena blogdevelopmentflow
Hatena blogdevelopmentflow
こすもすえび&しばやんの「Azureアンカンファレンス~Azureについては俺たちに聞け(ばええやろ)」
こすもすえび&しばやんの「Azureアンカンファレンス~Azureについては俺たちに聞け(ばええやろ)」
仮想マシンを使った開発環境の簡単共有方法
仮想マシンを使った開発環境の簡単共有方法
OpenShift のある生活
OpenShift のある生活
趣味でのCosmos DBとの付き合い方
趣味でのCosmos DBとの付き合い方
Andere mochten auch
DB設計を静的解析ツールを作ってみた @まべ☆てっく vol.1
DB設計を静的解析ツールを作ってみた @まべ☆てっく vol.1
Akihiro Sugeno
スマホ版ログレスにポストエフェクトシステムを導入した話
スマホ版ログレスにポストエフェクトシステムを導入した話
章暢 藤井
スマホ版ログレスでグローバル展開を想定したサーバ構築をAnsibleで試してみた話
スマホ版ログレスでグローバル展開を想定したサーバ構築をAnsibleで試してみた話
Akihiro Sugeno
BootstrapとRailsで、 高速にWebサイトを作ってみた
BootstrapとRailsで、 高速にWebサイトを作ってみた
BeMarble
良くわかるMeta
良くわかるMeta
daichi horio
Railsチュートリアルの歩き方 (第4版)
Railsチュートリアルの歩き方 (第4版)
Yohei Yasukawa
Andere mochten auch
(6)
DB設計を静的解析ツールを作ってみた @まべ☆てっく vol.1
DB設計を静的解析ツールを作ってみた @まべ☆てっく vol.1
スマホ版ログレスにポストエフェクトシステムを導入した話
スマホ版ログレスにポストエフェクトシステムを導入した話
スマホ版ログレスでグローバル展開を想定したサーバ構築をAnsibleで試してみた話
スマホ版ログレスでグローバル展開を想定したサーバ構築をAnsibleで試してみた話
BootstrapとRailsで、 高速にWebサイトを作ってみた
BootstrapとRailsで、 高速にWebサイトを作ってみた
良くわかるMeta
良くわかるMeta
Railsチュートリアルの歩き方 (第4版)
Railsチュートリアルの歩き方 (第4版)
Ähnlich wie ゲーム会社でのRuby : rails活用事例
ネットワークエンジニアがWeb開発をやってみて思ったこと
ネットワークエンジニアがWeb開発をやってみて思ったこと
gree_tech
Rails api way in aiming
Rails api way in aiming
Yasutomo Uemori
ゼロからのプログラミングRails講座 Codeanywhere版
ゼロからのプログラミングRails講座 Codeanywhere版
DIVE INTO CODE Corp.
【入門】3時間でアプリ公開!ゼロからのプログラミングRails講座
【入門】3時間でアプリ公開!ゼロからのプログラミングRails講座
DIVE INTO CODE Corp.
Game BaaS Implemented in Ruby
Game BaaS Implemented in Ruby
dena_study
私とRubyの付き合い方 - 岡山Ruby会議02
私とRubyの付き合い方 - 岡山Ruby会議02
Masaya Konishi
ITフォーラム2024 AITCセッション(2)
ITフォーラム2024 AITCセッション(2)
aitc_jp
Next GAE Heroku を使って 3分でRailsアプリをリリース
Next GAE Heroku を使って 3分でRailsアプリをリリース
よしだ あつし
Redmine4時代のプラグイン開発 redmine.tokyo #13
Redmine4時代のプラグイン開発 redmine.tokyo #13
Sho Douhashi
Rubyの会社でPythonistaが3ヶ月生き延びた話
Rubyの会社でPythonistaが3ヶ月生き延びた話
Tokoroten Nakayama
Rubyの会社でPythonistaが三ヶ月生き延びた話
Rubyの会社でPythonistaが三ヶ月生き延びた話
Drecom Co., Ltd.
増井雄一郎の「wri.pe」を事例に学ぶ、自作サービスの広め方〜PR・継続できる目標の立て方・改善編 先生:増井 雄一郎
増井雄一郎の「wri.pe」を事例に学ぶ、自作サービスの広め方〜PR・継続できる目標の立て方・改善編 先生:増井 雄一郎
schoowebcampus
株式会社インタースペース 沖本様 登壇資料
株式会社インタースペース 沖本様 登壇資料
leverages_event
AWS re:Invent 2013 参加報告(新サービスとセッション)
AWS re:Invent 2013 参加報告(新サービスとセッション)
Akio Katayama
YJTC18 A-1 大規模サーバの戦略
YJTC18 A-1 大規模サーバの戦略
Yahoo!デベロッパーネットワーク
Gaming on aws 〜ゲームにおけるAWS最新活用術〜
Gaming on aws 〜ゲームにおけるAWS最新活用術〜
Amazon Web Services Japan
JAWS-2013-LT 10000req/secを50msecで返すサーバーインフラをAWSで作る
JAWS-2013-LT 10000req/secを50msecで返すサーバーインフラをAWSで作る
Naoyuki Yamada
ブラウザだけで学ぶWebアプリ開発【デザイン編】
ブラウザだけで学ぶWebアプリ開発【デザイン編】
schoowebcampus
Ember コミュニティとわたし
Ember コミュニティとわたし
Ryunosuke SATO
WebApp個人開発のすゝめ / Recommendation of personal web app development
WebApp個人開発のすゝめ / Recommendation of personal web app development
株式会社MonotaRO Tech Team
Ähnlich wie ゲーム会社でのRuby : rails活用事例
(20)
ネットワークエンジニアがWeb開発をやってみて思ったこと
ネットワークエンジニアがWeb開発をやってみて思ったこと
Rails api way in aiming
Rails api way in aiming
ゼロからのプログラミングRails講座 Codeanywhere版
ゼロからのプログラミングRails講座 Codeanywhere版
【入門】3時間でアプリ公開!ゼロからのプログラミングRails講座
【入門】3時間でアプリ公開!ゼロからのプログラミングRails講座
Game BaaS Implemented in Ruby
Game BaaS Implemented in Ruby
私とRubyの付き合い方 - 岡山Ruby会議02
私とRubyの付き合い方 - 岡山Ruby会議02
ITフォーラム2024 AITCセッション(2)
ITフォーラム2024 AITCセッション(2)
Next GAE Heroku を使って 3分でRailsアプリをリリース
Next GAE Heroku を使って 3分でRailsアプリをリリース
Redmine4時代のプラグイン開発 redmine.tokyo #13
Redmine4時代のプラグイン開発 redmine.tokyo #13
Rubyの会社でPythonistaが3ヶ月生き延びた話
Rubyの会社でPythonistaが3ヶ月生き延びた話
Rubyの会社でPythonistaが三ヶ月生き延びた話
Rubyの会社でPythonistaが三ヶ月生き延びた話
増井雄一郎の「wri.pe」を事例に学ぶ、自作サービスの広め方〜PR・継続できる目標の立て方・改善編 先生:増井 雄一郎
増井雄一郎の「wri.pe」を事例に学ぶ、自作サービスの広め方〜PR・継続できる目標の立て方・改善編 先生:増井 雄一郎
株式会社インタースペース 沖本様 登壇資料
株式会社インタースペース 沖本様 登壇資料
AWS re:Invent 2013 参加報告(新サービスとセッション)
AWS re:Invent 2013 参加報告(新サービスとセッション)
YJTC18 A-1 大規模サーバの戦略
YJTC18 A-1 大規模サーバの戦略
Gaming on aws 〜ゲームにおけるAWS最新活用術〜
Gaming on aws 〜ゲームにおけるAWS最新活用術〜
JAWS-2013-LT 10000req/secを50msecで返すサーバーインフラをAWSで作る
JAWS-2013-LT 10000req/secを50msecで返すサーバーインフラをAWSで作る
ブラウザだけで学ぶWebアプリ開発【デザイン編】
ブラウザだけで学ぶWebアプリ開発【デザイン編】
Ember コミュニティとわたし
Ember コミュニティとわたし
WebApp個人開発のすゝめ / Recommendation of personal web app development
WebApp個人開発のすゝめ / Recommendation of personal web app development
Mehr von Yasutomo Uemori
Active job meets kubernetes
Active job meets kubernetes
Yasutomo Uemori
Ruby/Rails Benchmarking and Profiling with TDD
Ruby/Rails Benchmarking and Profiling with TDD
Yasutomo Uemori
GCP・GKEで作るスケーラブルなゲーム開発環境
GCP・GKEで作るスケーラブルなゲーム開発環境
Yasutomo Uemori
サービスクラス、その前に
サービスクラス、その前に
Yasutomo Uemori
Rails on Dockerとの戦い
Rails on Dockerとの戦い
Yasutomo Uemori
Rubocopとの付き合い方
Rubocopとの付き合い方
Yasutomo Uemori
オンラインゲームのRails複数db戦略
オンラインゲームのRails複数db戦略
Yasutomo Uemori
Mehr von Yasutomo Uemori
(7)
Active job meets kubernetes
Active job meets kubernetes
Ruby/Rails Benchmarking and Profiling with TDD
Ruby/Rails Benchmarking and Profiling with TDD
GCP・GKEで作るスケーラブルなゲーム開発環境
GCP・GKEで作るスケーラブルなゲーム開発環境
サービスクラス、その前に
サービスクラス、その前に
Rails on Dockerとの戦い
Rails on Dockerとの戦い
Rubocopとの付き合い方
Rubocopとの付き合い方
オンラインゲームのRails複数db戦略
オンラインゲームのRails複数db戦略
ゲーム会社でのRuby : rails活用事例
1.
ゲーム会社でのRuby / Rails活用事例
2.
About me 植森康友 twitter: @wakaba260yen github:
yuemori 所属:株式会社Aiming Webエンジニア RailsでのAPIサーバやWebアプリケーション開発 インフラサイドも少し
3.
今日のテーマ: 「ゲーム会社でのRuby /
Rails活用事例」 「ゲーム会社でRuby / Railsって何に使ってるの?」についてお話します
4.
Aimingについて ソーシャルゲーム・オンラインゲーム開発 企画、開発から運営・プロデュースまで
5.
主なエンジニアリング領域 ゲームクライアント開発 ゲームサーバ開発 リアルタイムサーバ WebAPIサーバ バッチサーバ 開発環境 基盤開発 インフラ 運用
6.
主なエンジニアリング領域 ゲームクライアント開発 ゲームサーバ開発 リアルタイムサーバ WebAPIサーバ バッチサーバ 開発環境 基盤開発 インフラ 運用
7.
ゲーム開発 RailsによりゲームのAPIサーバを開発 バックグラウンドサーバにも活用
8.
ゲーム開発 WebAPI RailsによるゲームのWebAPIの開発 ゲームクライアント、リアルタイムサーバとやり取りする データフォーマットはMessagePackを採用 内製のIDLを利用して異なる言語間でのプロトコルを定義 Unity(C#),リアルタイムサーバ(C++)などとのやり取りに利用 IDL = Interface
Description Language 詳しくは後述
9.
ゲーム開発 バッチサーバ ResqueやSidekiqといったgemによるバッチ処理用サーバ 利用シーンはプロジェクトにより様々 キャラクターへのギフト配布 データベースのお掃除 Push通知の送信
10.
開発環境 開発環境の効率化にRubyを活用 シェルスクリプトよりも複雑な作業を自動化する
11.
開発環境 IDL IDL = インターフェース記述言語 RubyのDSLを使って異なる言語間でのメッセージを定義する 専用のパーサを使って定義を読み込んだ後、ERBを使ったテンプレ ートで各言語のコードを生成する
12.
IDL Contract(インターフェース定義)例 rpc(:create_sample) { url '/sample/create' method 'POST' request { param 'id', :int, 'ID' param 'name', :string, '素敵な名前' } response { param 'sample', :sample, '作成したさんぷる' } }
13.
IDL コードテンプレート例 <%‐ document.each_rpc do |rpc| ‐%> module <%= rpc.name.camelize %> class Request < Type::Base <%‐ rpc.response.params.each do |param|‐%> attribute <%= param.name %>, <%= param.type %> <%‐ end ‐%> end class Response < Type::Base <%‐ rpc.response.params.each do |param|‐%> attribute <%= param.name %>, <%= param.type %> <%‐ end ‐%> end end <%‐ end ‐%>
14.
生成されるコード例 module Sample::Create class Request < Type::Base attribute :id, Integer attribute :name, String end class Response < Type::Base attribute :sample, Type::Sample end end
15.
IDL レスポンスの例 sample = Type::Sample.new(id: 1, name: 'foo') response = Sample::Create::Response.new(sample: sample) respond_to do |format| format.msgpack(body: response.to_msgpack) end 生成された型を使ってMessagePackでシリアライズ・デシリアラ イズをする Contractからコードを自動生成するメリット 各言語のテンプレートを用意することで、異なる言語間での型 の違いなどを吸収しやすい 開発効率の上昇 インターフェースのドキュメント化
16.
開発環境 rakeタスク マスターデータのインポート 大量のデータを扱うゲーム開発ではExcelなどで設定を行うこ とが多い データベースにExcelからデータをインポートするなど コードジェネレータの実行など 定形作業を自動化する クライアント、リアルタイムサーバ、WebAPIサーバと異なる 開発環境で複数の定形作業が発生することが多々ある Jenkinsなどでのバッチ処理 CIや簡単なスクリプトなどをRubyスクリプトで記述して実行
17.
共通基盤開発 各プロジェクトでの車輪の再発明を防ぐための基盤開発 ゲーム開発・運用に必須の機能をシステムとして提供する
18.
共通基盤開発 認証・課金基盤システム 複数のプロジェクトをまたいで利用できる認証、課金用の基盤シス テム RailsでWebAPI+管理用ツールを実装 簡易的なOauth Providerとして振る舞う SNS連携や端末の引き継ぎなどもサポートされている
19.
共通基盤開発 会計ツール 毎月の売上を自動で計上する基盤システム ゲーム内の仮想通貨を売上に換算する プロジェクトによって仮想通貨の単価が異なる 各プロジェクトでの収入を単価に応じてレポートにする 日本国外の通貨にも対応 海外展開が増えてきたため、正確な収入を出す必要があった
20.
共通基盤開発 KPI分析ツール KPI分析に必要な指標を日時で表示するためのツール AU ARPPU 課金率 継続率 FQ5など SQLクエリを登録するとグラフにして出力するのが主な機能 OSSのRe:Dashと似た機能を持つ CSV出力などにも対応している
21.
インフラ 主にデプロイ、バッチ処理などにRubyを利用 ミドルウェアのPluginなども必要に応じて内製ツールを作成
22.
インフラ Deploy / Provisioning WebAPIでは定番のCapistranoを主に利用している WebAPIだけならメンテナンスを挟まずにアップデートやバグ修正 が可能 gitが利用しづらいシーンではcapistrano‑scm‑copyも使っている 海外展開などで諸事情によりソースコード履歴をサーバに置き たくないとき 特定のディレクトリだけをコピーしてデプロイしたいとき ProvisioningにChefを使っているところもある メインはansible
23.
インフラ バッチ処理 Aimingではログデータ保存先にgoogleのbigqueryを利用している 各種ゲームサーバの出力したログをバッチ処理でアップロード ログがアップロードされているかのチェックなども シェルスクリプトよりもRubyの方が柔軟で、リトライ処理な ども記述しやすい
24.
インフラ ミドルウェアPlugin fluentdやembulkなど、RubyでPluginが書けるものでは内製Plugin を作成することも fluentd: 特殊なログのデータ加工 embulk:マスターデータのインポート時のデータ加工
25.
運用 お問い合わせ対応 インゲーム告知 お詫びのアイテム配布 など、多くの作業を非エンジニアさんが作業する必要がある
26.
運用 管理ツール プロジェクトで運用業務をするために必要な機能を持つWebアプリ ケーション 主な機能 キャラクターや所持アイテム、課金履歴などのゲーム内検索 アイテム操作履歴やクエスト受託履歴などのログ検索 対象キャラクターへのギフト配布 DBからのデータ検索だけでなく、bigqueryからのデータ取得・閲 覧にも対応 プランナー向け機能として、デバッグ環境でのデータ変更なども
27.
まとめ 様々な技術領域が求められるゲーム開発では、Rubyにはたくさんの 利用シーンがある なぜRubyを使うのか? すばやく価値を届けられる スピード感の求められるゲーム開発では重要 柔軟に書けて活用できる領域が広い Rubyエンジニアの文化も社内に良い影響を与えていると感じる 名前重要 テストコード ツール、自動化 Happy Hacking!
Jetzt herunterladen