Ruby
JavaScript
RubyOnRails
音ゲー
HALDay 22

エンジニアに音ゲーを勧めるためにスコアマネージャ作った

みなさん、エンジニアとして普段はどう生活していますか?
私は趣味として音ゲーとカメラなのですが、音ゲーが今熱い。(俺の中で)
どうして熱いのかをこの記事で訴えていこうと思います。

私がプレイしている音ゲー

私は「beatmania IIDX」という音ゲーをメインでプレイしています。ゲーセンにあるでっかいやつです。
これがどんな音ゲーかというと、とても難しい音ゲーです。鍵盤7個にターンテーブル1つ。指足りないです。
しかも難し過ぎて修行感もあります。

じゃあなんでそんな音ゲーをプレイしているのか?その答えはただ一つです。ドMだからです。
ドMだからというと語弊があるのですが、この音ゲー成長をものすごく感じ取れるんですよね。

私の個人的な主観ですけど、エンジニアはみんなドMだと思ってるんでエンジニアの方は是非プレイしたほうがいいですよ。
音もものすごく大きいですし、すごく楽しいし、曲も最高だし、成長を感じるのが好きな人にはぴったりのゲームだと思います。

また、この「beatmania IIDX」には段位認定があり、皆伝が一番上の段位なのですが、ここにたどり着きたいという思いもあります。こういった一つのゴールを示してくるのも中々やりがいがありますよね。
しかも先輩のある一言が自分の中でとても印象に残っていて、やる気が起きています。

皆伝になると、コミットメッセージ越しに皆伝オーラが伝わってくる。

これは目指すしかないっしょ。ちなみに自分は2年弱プレイして9段です。(あと10段、中伝、皆伝)

今回作ったアプリ

そんなわけで、今回私が作ったアプリは音ゲーをより楽しく、より成長を実感できるようにスコアマネージャを作りました。
その名も「Saya」です。名前の由来は私が持ってた音ゲーのフィギュアが「神崎紗矢」だったからです。可愛いです。

saya.jpg

ソースコード・使用したもの

ソースコード:https://github.com/minakawa-daiki/sayaiidx.com
使用したフレームワーク:Ruby on Rails 5.1

使い方

まずログインにはTwitterを使用します。
これは、プレイヤーデータであるCSVファイルを識別するためにユーザ登録してもらう形になります。
CSVファイルはプレミアムコースに加入すると公式からダウンロードできます。

ログインしたらページは以下の通りになっています。

  • トップ
  • スコア一覧
  • スコア比較
  • CSV管理

まずトップページなのですが、これは直近2つのCSVファイルを比較して、更新している譜面があったものを表示します。Screen Shot 2017-12-22 at 1.50.59.png

スコア一覧は、1つのCSVファイルの譜面データを全て出力します。
各項目でソートを行えたり、バージョンやレベルでフィルターをかけたりすることも可能です。
Screen Shot 2017-12-22 at 1.52.56.png

スコア比較では、2つのCSVファイルを自分で選択して、比較することができます。
「2つ目のCSVファイル」に「1つ目のCSVファイル」よりも後のCSVファイルを選択してください。
Screen Shot 2017-12-22 at 2.02.38.png

CSV管理では、公式からダウンロードした譜面データをアップロードすることができます。ファイルは1日に1つまでに制限しています。
Screen Shot 2017-12-22 at 2.01.40.png

辛かったところ

今回JavaScriptは全てバニラで書きました。
想像以上にJavaScriptで記述する部分が多かったので、ES6で書きたかった感じはあります。
トランスパイルするのを渋ってしまったことを今反省しています。

終わりに

今回のアプリはとてもシンプルで使いやすさを意識して作成しました。
音ゲーを一緒にやる仲間が増えてくれたら嬉しい限りです。一緒に成長しましょう。
要望や質問はいつでもお待ちしております。
HP:https://minakawadaiki.com
Twitter:@oliver_diary