プリコネR

【プリコネ】クラバトの凸管理、凸予約BOTを作ったお話

投稿日:

久しぶりにがっつりプログラミングというものをしたので、
作るにあたっての振り返りというかそういうのをつらつら書いていきたいと思います。

出来上がったもの

・凸予約ができる
・予約したボスにきたらメンション飛ばしてくれる
・予約状況を教えてくれる
・凸数管理をしてくれる

(うまいことスクショを貼ろうと思ったけど良いスクショがとれなかったので機能箇条書き・・・)

作ろうと思ったキッカケ

毎月のクラバトで思ったのが、
「誰がどのボスを叩くのかが把握できない」
というところからのスタートでした。

一応ディスコで、
「ワイバーン叩きたい人ー」
って聞いて、それに反応してくれたりはするんですけど、
いかんせん、進行が遅いときがあるため、覚えてられないんですよね。

また、反応してくれた人を覚えているのも精神的にきついものあるし、
わざわざワイバーンまできたときに手動でメンション飛ばすのもなかなかしんどいものがありました。

というわけで、
・誰がどのボスを叩きたいと思っているのかを把握
・そのボスが来たときに自動でその人にメンションを飛ばす

というのを自動化するべく僕は頑張ることにしたのです。

作るにあたって

どういったアーキテクチャにしようかとというところでかなり悩みました。
まずパッと思いつくのは、単純にDB(Mysql等)を使って管理させることです。

しかしこれはすぐに考えから捨てました。

というものDBで管理となると、必然的になんかあったときに僕しか対応できないためです。

じゃあどうしたかというところですが、スプレッドシートで管理することにしました。

これであればメンバー全員も馴染みがあって理解しやすいし、なんかあったときに対応可能なためです。
実際これがだいぶ功を奏したというか、修正方法とかを細かく教えたわけでもないんですけど、
データがずれたりしたときに気づいたメンバーがスプシをみてよしなに修正してくれたりしたんですよね。

ただ、スプレッドシートで管理させるっていうのは実は非常に難易度が高くてそこはだいぶ苦労しました。
「DBで管理させてればこんなこと簡単にできるのに・・・><」
と何度も投げ出そうとしました。

そんなこんなでしたが最終的には、
ディスコードで投稿された内容をBOTが受け取って、BOTがその内容をスプレッドシートに反映する。
という流れで作ることにしました。
chatopsってやつですかね。

作っていく中で

最初は、
・誰がどのボスを叩きたいと思っているのかを把握
・そのボスが来たときに自動でその人にメンションを飛ばす

さえ担保できればいいかなって思ってたんですけど、

・そのボスが来たときに自動でその人にメンションを飛ばす

をこれをするためには、どうしてもボスのダメージ管理をしないといけなくなるんですよね。
(ボスが倒されたかどうかをトリガーにメンションを飛ばす必要があるため)

となると凸後に、「凸完了した旨と、与えたダメージを宣言してもらう」必要がでてきました。

作ろうとしたときにこれが結構ネックになってて、
というのもやる場合は、
「凸完了 114514」
みたいな形でメンバー全員が報告しないといけないわけなんですよ。
めんどくさいじゃないですか。
7桁の数字を覚えてそれを書き込むってなかなかですよ。

うーん・・・やっぱりやめようかな。
って思ったんですけど、そんなときに、別のクランでBOTによる凸管理を経験したメンバーがいて、
どうだったかを聞いてみたら、
「意外とそんなんでもなかったですよ」
と教えてくれて、
ふむふむ、そうでもないのか。
というところでじゃあやろうじゃないか。みんなにやってもらおうじゃないか。
と、ある意味後押しされました。

後押しっていう意味だとわりとメンバーみんなが、
「とりあえずお試しって形で使ってみたい!ワクワクするやで!」
というのを言ってくれたのはでかかったです。

会社や仕事で、新しいものを提案するとどうしても否定から入られることが多いので、
そういったのがなかったのは本当に良かったですし、メンバーに感謝でした。

作り終えて、いざクラバト!

リリース結構ギリギリでしたw
最初は3日くらいフルにかければいけるかな。と思ったんですけど、
BOT(python)から、スプシをいじったりする実装がちょっと面倒だったり、
ライブラリにバグみたいなのがあって、それの調査やパッチあてしたりしてたら結構ギリギリでした。

実際運用自体はできてはいたけど、
ちらほらバグとかもあったりで適宜修正したりと大変でした。

また、最初はもともと動かしていた便利BOT(アメス様)のイチ機能として追加してたんですけど、
アメス様は、別の鯖でも動かしていたりで、利用がめちゃくちゃ重なると落ちるんですよね。
落ちると、クラバト自体がSTOPしちゃってさすがにこれはあかんです。

というわけで急遽、アメス様から切り離して、
ネビアちゃんというBOTを作り、
更にアメス様はしょぼいVPSサーバで動かしているのですが、
ネビアちゃんはherokuのほうにデプロイして動かすことで落ちる問題はなんとか解消しました。

一番つらかったのは、開発環境みたいなのがなかったんですよねw
開発用のBOTは起動できるんですけど、スプシが分けられてなくてw
何度も分けようと思ってたんですけど、一度やったことある人はわかると思うんですが、
キーの取得とか設定がだいぶ面倒なんですよね。

でも今回を経てさすがに無いと困ったので次回までにスプシも開発用とで分けたいと思いました。

BOT導入しクラバトを終えて

ちょうど今、メンバーにネビアちゃんはどうだったのかというアンケートをとっている最中なのですがw
思っていた以上にみんな便利と思ってくれていたようで作ってよかったでした。
また、「こういう機能があったらもっとよかった」みたいな意見ももらえたので次回までには必ず入れたいなと。

みんなも良かったと言ってくれているのも嬉しいし、
結局のところ、BOTで管理させて一番ありがたいのは僕とか進行役の人なんですよね。
だからこそ、少しでもみんなが使いやすいようなインターフェースを考えることにもなりましたし、そこも含めていい経験だったなと。

もともとの課題だった、凸の予約状況とかがわかるようになったり、
メンション飛ばしたりすることですぐに凸できてるなーって思いました。

あと、たまにはガッツリプログラミングするのも悪くないなと。
もともと作っていたアメス様自体は実はそんなに中身は難しいことしていないので、やろうと思えば誰でもできるレベルですし。
(ガチャシミュレーターの部分については結構作り込んでますが、これはもともと趣味で作っていたものをsubmoduleとして読み込んでるだけなので)

そのうちコードも公開したいと思っているので、
興味があるかたは楽しみにしててください。

ちなみに今はスプシで管理してるけど、
WEBサイト立てて、そこでみんなが更新できるようなもの作ればDBでの管理することもできるなー。とか思ってるんですけど、
せっかく作ったものだしとりあえず今月はスプシでいいかなと。

最後に俺騎士のみなさんへ。

つたないBOTをちゃんとルール通りに使ってくれてありがとうございました。
今後もみんなが楽しくプリコネないしクラバトを遊べるようなものを作っていくので何卒よろしくおねがいします。

スポンサードリンク

スポンサードリンク

-プリコネR

Copyright© chat-blog , 2019 All Rights Reserved.