スプラトゥーン2 のステージ情報をつぶやき続ける Bot

概要

この記事は、ボット (Bot) Advent Calendar 2017 の7日目です。

私が運用している スプラトゥーン2 ステージ情報bot の裏側について書いてみたいと思います。


どんな Bot か

ご存じの方も多いと思いますが、任天堂の人気ゲーム「スプラトゥーン2」では、バトルの舞台となるステージが2時間おきに変更 されます。


そこで、2時間おきに今後のステージ情報をつぶやく Bot を作成しました。イカしたプレイヤーの皆さま、ぜひぜひご利用ください。


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


システム構成

PaaS をフルに活用したサーバレスアーキテクチャ……ではなく、さくらの VPS で定期的に cron 実行されています。

f:id:yuu2634:20171207002822p:plain

構成要素はイカの通り。

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


ステージ情報の蓄積

公式サービス「イカリング2」から、今後のステージ情報を取得しています。

現在と今後のステージしか確認できないため、過去の情報を蓄積するために MySQL へ書き込んでいます。


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


ツイート生成

Twitter につぶやく処理は、Perl でゴリゴリ書かれています。

直近のステージをツイート本文に、それ以降のステージを画像として添付することで、8時間先までの情報を発信しています。


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


フェス判定

通常時は、3ルール×2ステージ が1セットとなりますが、フェスと呼ばれるイベント開催時には 1ルール×3ステージ に変化します。

その度に Bot の処理を書き換えるのはさすがに面倒ですので、自動化しました。


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


今後の予定

フェス速報

フェスの開催予告が出た際に速報ツイートをするか検討中です。

技術的には可能なのですが、ただでさえ2時間おきにツイートしている状態なので、もしかすると別アカウントになるかもしれません。


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

好きなステージを登録しておき、そのステージが登場する前にお知らせしてくれる機能です。すでに似たサービスがありそうですが……。

仮に実装した場合は、こちらも別アカウントとして公開予定です。


宣伝

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

blog.yuu26.com

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


まとめ

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