読者です 読者をやめる 読者になる 読者になる

第2回Splathonとフェス

Splatoon Rails AWS

第2回Splathon

2016年1月10日、第2回Splathonを弊社のSpeee Loungeで開催しました。

そもそもSplathonとはなんぞや?という話は以前の記事とか見てください。

nisshiee.hatenablog.jp

第1回はセミナールームという、かなり質素な(?)MTGルームで開催したのですが、今回はLoungeでの開催となりました。50人を超える方にお越しいただけたのかな?正確な数字は把握してませんが、とにかく大盛況でした。

technica-blog.jp

フェス

SplathonのメインコンテンツはIT企業対抗Splatoon大会なのですが、前回の第1回は、対抗戦が終わり懇親会で食べ物が一通りはけた後は、ちょっとグダるという反省がありました。そこで今回は、サブコンテンツも用意しました。それがフェスです。

www.nintendo.co.jp

ゲーム内で開催される本家のフェスは、例えば「ごはん派 vs パン派」といったお題に合わせて全国内プレイヤーが2陣営に分かれ、24時間かけて対抗戦を行うものです。

今回はこのフェスをアレンジし、お題を参加者から募り、1試合ずつお題を変えながら、その場で4人チームを組んで対戦するというコンテンツを用意しました。

↑さすがIT企業のイカ達だ・・・

ツール

で、このSplathonフェスを開催するにあたり、なんらかのツールサポートが必要だろうということにして、フェスツールを作りました。

司会がお題を配信すると、このように参加者の端末に投票画面が表示され、ボタンを押すと投票できます。各陣営に投票した参加者の中から早い者勝ちで4人ずつでチームを作り、対戦します。

f:id:nisshiee:20160111220941j:plain

Rails5

このツールを作成するにあたり、「まぁWebSocketだよな」と。 で、ちょうどRails5beta1が公開されたばかり。Rails5の目玉の1つはActionCableです。もうここまでタイミングが合ったら、「Rails5beta1で作りなさい」とフェスのカミさまに言われているようなものですね。

Riding Rails: Rails 5.0.0.beta1: Action Cable, API mode, Rails command

Betaに特攻しても、まぁ仕様上複雑なことやってるわけじゃないのであんまり困ることは無かったです。結構簡単にローカルで思った通り動かすことはできちゃいました。ActionCableのREADMEやソースはそれなりに読みましたが・・・

あとは、普段使ってる便利系GemのうちRailsに依存しているものは極力使わないようにしたぐらいですかねw

rspecだけは、当時rubygems.orgにあがっていた最新のrspec-railsではRailsのバージョン依存が合わなかったので、GithubのmasterをGemfileに指定しました。

インフラ

AWSにこんな感じで組みました。

f:id:nisshiee:20160111223339p:plain

EC2インスタンスにnginxとRailsアプリ(puma)をデプロイ。RDSはMySQLを立てて永続ストレージに、ElastiCacheはRedisを立ててActionCable用です。

WebSocketアプリをまともに作って公開したことなかったので、どれくらいのスペック要求されるのか想像できなくて苦労しました。一応、後輩が苦労してるのを見てたことはありますがw

今回の場合はSplathon当日だけ動かしとけばいいので、ちょっと奮発してAppサーバにt2.mediumインスタンス立てちゃいました。RDSとRedisはt2.microです。一応参加者の様子を見てた感じでは、この構成で動作が不安定になることはなさそうでした。

振り返り

概ね満足していただけたのではないでしょうか。 時間の制約もあり、6試合しかできなかったのがちょっと残念でした。個人的には「アオリちゃん vs ホタルちゃん」はやりたかった所。

反省点としては、「早い者勝ちという仕様に無理があった」といったところでしょうか。「どっち陣営でも良いからとにかく連打する」という行動に向かわせてしまったのは仕様の問題ですね。抽選式を用意したいです。

今後

とりあえず、しばらくはこのツール、オープンのまま動かしておこうと思います。

http://fest.splathon.ink/fests

管理画面もフルオープンなので、フェス運営したい方は自由に使ってください。ただ、あんまりちゃんとサポートしないので空気を読んで使ってください。 また、今はAppサーバをt2.nanoにスケールダウンしてあるので、何人ぐらいのフェスに耐えられるかちょっとわかりません。

Now, Open Sourced!!!

現状、1/10のSplathonに間に合わせることだけを考えて作られた状態なので、結構いろいろと拙いソースなのですが、とりあえず公開しました!

github.com

個人的にもっと手直ししたい所もたくさんあるのですが、PRウェルカムです。