マジカル受託ワールド

猫魔法エンジニアうーねこちゃんの居る日々

【ラブライブ!アドベントカレンダー 2014】リアルタイム対戦クイズゲームを作りました

うーねこです!!

日付変わってますがラブライブ! Advent Calendar 201412月13日の記事です。

f:id:uneco:20141214010926p:plain

クイズ音ノ木坂アカデミー

リアルタイム対戦クイズゲーム作りました。

の合体技となっております!すごい!豪華!

このたびは、急な発注にも動じず1日で3曲も作ってくれたS氏、イラスト使用の許可をもとめたところ快諾の上に新作まで描いてくださった佐藤おどりさんの両名に頭が上がりません!
本当にありがとうございました……!

ゲームについて

マジックアカデミー風のリアルタイムクイズ対戦ゲームです。

  • アドベントカレンダー企画のため、12月25日 24:00 までの限定公開とします。
  • Twitter でのログインが必要ですが、ログインと名前・アイコン取得のためだけですので、勝手につぶやかれたりはしません。
  • PCでのプレイをおすすめします。(スマートフォンでも一応動作はしますが不安定です)
  • デバッグ足りてないのでめっちゃバグ出るかもしれません。
  • クイズステージのナビキャラは今のところランダムです。ちゃんと好きな子選べるようにします。
  • ゲーム性がわかりづらい部分があるかもしれません。
  • 時間がなくて付けられなかった機能とかエフェクトとか山のように……。
  • とにかく問題数がすくない! ある程度のスコアを獲得したユーザが問題を追加できるような仕組みを検討中です。
  • 公開期間が終わったらオープンソースにする予定です。

作った人について

うーねこ

名古屋在住、エンジニア。
μ's メンバーでは穂乃果ちゃんが好きです。愛は太陽じゃない!!!!!!!

明日は

@misty320 さんです!チョットマッテテー

2014年5月14日 01:53:20 (JST) に UNIX TIME が 1400000000 になります

f:id:uneco:20140513193523p:plain

日本時間 2014年5月14日 01:53:20 に UNIX TIME が 1400000000 になります。

UNIX時間 - Wikipedia

ちなみに 1300000000 は 2011年3月、1500000000 は 2017年7月。 この桁が変わるのは 3年と2ヶ月 おきです。
大台の 2000000000 になるのは 2033年5月18日 のようですが、その頃に UNIX TIME が意味があるものとして使われ続けているかは微妙な線ですね……。

Codeship などの Web Hooks がない CI サービスから rspec のテスト結果を Idobata に投げるスクリプトを書いた

uneco/idobata-rspec-reporter

screenshot

テストが終わったらケーキがありますよ。

適合する条件

使い方

1. Idobata に Generic Hook を登録する

2. CI サービスの環境変数設定などで Idobata のフックURLの /hook/ 以降を環境変数に入れておく

IDOBATA_HOOK_ID=d69567b7-4fdd-7853-e994-b02fc33c2e31

3. CI サービスで rspec のテスト実行時、report.json を吐くようにしておく

E=0 && (bundle exec rspec -c -fp -fjson --out report.json) || E=$?

# 行ごとの終了ステータスを取得してテストを打ち切るタイプの CI では、
# 上記のように終了ステータスを抑制しつつ結果を環境変数に入れる必要があります

4. CI サービスで rspec のテスト実行後, curl などで idobata_rspec_reporter.rb を GitHub からダウンロードする

curl -O https://raw.github.com/uneco/idobata-rspec-reporter/master/idobata_rspec_reporter.rb

5. CI の環境変数でオプションを埋めて実行

ruby idobata_rspec_reporter.rb \
--branch="${CI_BRANCH}" \
--commit-id="${CI_COMMIT_ID}" \
--committer="${CI_COMMITTER_USERNAME}" \
--build-url="${CI_BUILD_URL}" \
--build-number="${CI_BUILD_NUMBER}" \
--message="${CI_MESSAGE}" \
--pull-request="${CI_PULL_REQUEST}" \
--idobata-hook-id="${IDOBATA_HOOK_ID}"

# 複数行コマンドに対応していない CI では一行で書く必要があります

6. (3. でテストの終了ステータスを環境変数に入れた場合)
テストの終了ステータスを CI の成否に反映させるため、テストの末尾に書いておく

(exit $E)

7. Idobata に POST される

screenshot

8. nothing to do! Yay!

注意事項

  • Codeship などの「テスト失敗時にも必ず呼ばれるテスト後の処理」を書く場所がない CI サービスでは、bundle install で発生したエラーなどを拾うことができません
  • 個人のリポジトリに置いてあるものなので、アナウンスなしで内容の変更などがある可能性があります
  • 上記の理由より、クリティカルな部分で使うには fork するか別のサーバに置くなどしてバージョンを固定すると良いかと思います
  • fork でバグ修正や機能追加を行った場合は pull-req いただけると嬉しいです

経緯

  1. チームでの開発に Idobata を使いはじめる
  2. Idobata で標準の Hook が付いてる Travis CI を体験利用してみる
  3. Travis CI なしじゃ生きていけない体に (特に Idobata への Hook と GitHub のコミットステータス)
  4. Travis CI の体験利用期間が終わり、Pro 料金 $129/mo を要求される
  5. 2ヶ月ほどお金を払って使ってみるが、利用料の割に不満は多い
  6. Travis ばかりが CI じゃない! 他の CI サービスを探す
  7. Web Hooks がない or GitHub のコミットステータス変更してくれないサービスばかり

というわけで、GitHub Statuses API 対応のサービスはそこそこあるので、Idobata への Hook に代わるものを作りました。

Codeship いいよねという話

代替の CI サービスを探す中、とりわけ気に入ったのは Codeship でした。
こちらはインターフェイスが綺麗で見やすい上に 50 builds/mo までは無料。
ビルド回数無制限で並列ビルド数1の BASIC アカウントは $49/mo と、ビルドに関しては Travis CI Pro の半額以下の価格で同等の性能を持っています。スゴイ!
しかも Heroku のアドオンや、継続的デプロイメントの機能もあります。
助かっているのでつい褒めそやしてしまいましたが特に回し者じゃないです。

それでは良い CI ライフを。

口からどんどんピザがでてくるbot のコードを公開しました。

wneko/Pizza · GitHub

口からどんどんピザがでてくる(@dondon_pizza)という Twitter bot を作ったっきり放置していたのですが、さっき思いつきで GitHub に上げました。

どんな bot なのかというと、

  • ピザが出そうな(特定のルールに合致した)単語がタイムラインに流れてくるのを待つ
  • ピザが出そうな単語が見つかったら、ルールに沿った変換をかける
  • ピザが出る
  • 出る
  • どんどん出る

こんな感じの bot です。

リポジトリには LICENSE 置いてないですが、 NYSL なので煮るなり焼くなりお好きにどうぞ。