#スプラトゥーン2 のステージ情報が取得できるAPIを作りました
Spla2 API – スプラトゥーン2のステージ情報API
Web API を作りたいとネタを探していたところに、ちょうどイカの波が押し寄せてきたので作ってみました。ぜひ使ってみて下さい。
この記事ではSpla2 APIシステムの裏側について書いてみたいと思います。
システム構成
主な構成はイカの通り。
- Google Cloud Platforn
- CentOS 7
- h2o
- MariaDB
- Go言語
インフラ
個人的に最近お気に入りの GCP です。無料枠が余っていたのも理由の一つ。
OS
CentOS 7.3 を入れています。よく使っているので慣れているというのが理由です。
Webサーバ
nginx で作っていましたが、HTTP2 の ALPN に対応するのが大変そうだったので、h2o に初挑戦。特にチューニング等はしていませんが、早くていい感じですね。
データベース
Twitter のステージ情報bot (@splatoon_stage, @splatoon2_stage) で構築したものを流用しています。
データも全く同じものを使っているので、仮に片方が狂っていた場合はもう片方も同じく狂います。
Go 言語
バックエンドのプログラムはすべて Go で書いています。マトモに使ったのはこれが初めてですが、書きやすくて良い言語だと思います。
やっていることは複雑ではなく、DB からデータを引っ張って加工して JSON に吐くだけのお仕事。
データの取得元
肝心の情報をどこから取得しているのかですが……お察しください。イカプレイヤーの皆さんが普段見ているところと同じです。
そのため、突然取れなくなる可能性は大いにあります。
Zabbix の監視対象に追加して、更新がコケたら通知するように設定するのもアリかな。
任天堂(or はてな)さんが API を公開してくれるのが一番ですが、なかなか厳しい気がしています。
公式側が提供してしまうとサポートの負荷が高そうなので…… (分かる人だけ勝手にどうぞ、という訳にもいかないでしょうし)
SSL Labs A+
SSL の脆弱性診断サービスである SSL Server Test (Powered by Qualys SSL Labs) にて、最高ランク A+ の評価を獲得しました。
正確には、A+ になるまでサーバを弄ったりググったりしたのですが、何とか達成できました。先人の知恵に感謝。
今後について
急ぎで作ったため、フィールドはあるのに値は 空 な部分があるので、そこは早めに解消させます。
Page Speed Insights でも高評価を取りたいです。作っているときは満点でしたが、説明書きを詰め込むと低下してしまったので。
最終的には、FaaS を利用したサーバレスアーキテクチャで作り直したいです。(気力のあるときに)
不具合の発見報告や要望があれば、ぜひコメントや Twitter でお知らせください。私が喜びます!
2017/12/07 追記
- サーモンランの情報も取れるようになりました。
- Page Speed Ingishts で 99点 が取れました。
- これからもがんばります。