スプラトゥーン2 のステージ情報 Bot を作った話

スプラトゥーン

この記事は、ボット (Bot) Advent Calendar 2017 の7日目です。
私が運用中のスプラトゥーン2 ステージ情報botの裏側について書いてみたいと思います。

スプラトゥーン2 ステージ情報bot

どんな Bot か

ご存じの方も多いと思いますが、任天堂の人気ゲーム「スプラトゥーン2」では、バトルの舞台となるステージが2時間おきに変更 されます。
そこで、2時間おきに今後のステージ情報をつぶやく Bot を作成しました。イカしたプレイヤーの皆さま、ぜひぜひご利用ください。

ちなみに、初代スプラトゥーンでも同じような Bot を作っていました。

システム構成

PaaS をフルに活用したサーバレスアーキテクチャ……と言いたいところですが、さくらの VPS で定期的に cron 実行されています。温かみのある作りです。

ステージ情報botのシステム構成

構成要素はイカの通り。

  • さくらのVPS
  • MySQL
  • Perl
  • Image Magick
  • Twitter API
  • イカリング2

ステージ情報の蓄積

公式サービス「イカリング2」から、今後のステージ情報を取得しています。
現在と未来のステージしか確認できないため、過去分を蓄積するために MySQL にも保存済み。

スプラトゥーン2の発売時点から記録を続けており、これまでに開催されたすべてのステージ情報 が格納されています。

ツイート生成

Twitter につぶやく処理は、Perl でゴリゴリ書かれています。
直近のステージをツイート本文に、それ以降のステージを画像として添付することで、8時間先までの情報を発信しています。

なお、画像の生成には Image Magick の Caption を使用しています。

フェス判定

通常時は、3ルール×2ステージ が1セットとなりますが、フェスと呼ばれるイベント開催時には 1ルール×3ステージ に変化します。フェスの度に手動対応するのは非現実的なので、自動化しました。

約1週間前に発表されるフェス予告を検知し、フェス期間のみ別プログラムがツイートを生成します。

今後の予定

フェス速報

フェスの開催予告が出た際に速報ツイートをするか検討中です。
技術的には可能なのですが、ただでさえ2時間おきにツイートしている状態なので、もしかすると別アカウントになるかもしれません。

お気に入りステージお知らせ

好きなステージを登録しておき、そのステージが登場する前にお知らせしてくれる機能です。すでに似たサービスがありそうですが……。
仮に実装した場合は、こちらも別アカウントとして公開予定です。

宣伝

この Bot を作成するにあたり、副産物として出来た ステージ情報データベースSpla2 API として公開しています。サーモンランの情報もあります。

すでに、ikatomo2 for Splatoon (iOS アプリ)LINE Botイカステージ(Google Asistant アプリ)、などで多数ご利用いただいています。(他にもあればぜひ教えてください!)

まとめ

  • スプラトゥーン2 のステージ情報をつぶやく Bot を作りました
  • さくらVPS、MySQL、Perl、Image Magick などで動いています
  • Spla2 API もよろしくお願いします
  • ボット (Bot) Advent Calendar 2017 7日目 の記事でした