Introduction
今回の記事では、2024年の振り返りとして、UTeSのサーバーに導入したBOTについて、アウトプットも兼ねて、導入の経緯と課題点、これからのロードマップについてお話しできればと思います。
はじめまして、e-SportsサークルUTeSに所属しているchloroと言います。早くも2024年も師走を終えようとしていますが、皆さんは、今年一年を振り返ってみて、どのような一年でしたか?私は、やり残したこと、達成できなかったことが多くあり、悔しい一年でした。一日一日を大事に、日々の積み重ねを大事にしていきたいと思うこの頃です。
BOTを導入したきっかけ
UTeSでは、以下に挙げられるような、サークル活動に伴う様々な課題がありました。
サークルのビデオゲームサークル化
UTeSでは、日々熱心に活動メンバーも多いですが、大会やランクで頂点を目指そうと頑張っているメンバーが少なくなってきているのではないか、そういう指摘がありました。今や300人近くのメンバーがいるサーバーですから、多様なニーズが生まれてきていることも事実だとは思いますが、e-Sportsサークルとして、互いに切磋琢磨し合えるような環境面での土台作りが必要だと感じました。そのためにも、どれだけのメンバーがアクティブに活動しているか、その指標が必要でした。
新規参入者にとっての敷居の高さ
UTeSでは、日々新しいメンバーがdiscordサーバーに参加しますが、VC(通話)に参加することに対するハードルが高いと感じるという意見がありました。新しいメンバーが定着しないことは、サークルにとっても損失となりますし、常連メンバーだけがサークルの利益を享受している状態は望ましい状況とは言えないのではないか、という声が上がりました。そこで、サークルに参加する方のうちどれだけの方がサークルに参加するかというバロメータが必要でした。
以上のような背景から、これまで存在しなかった、UTeSサーバーの統計情報を入手しようという話になりました。このような問題は他のサークルや部門などにもついてまわる話であり、難しい課題です。
BOTの開発の流れ
PythonかLuaか
discordの統計情報を得るBOTには、既にStatbotなどがあり、一先ずの目標としてはこのようなBOTを作成しようと思いました。前提として、筆者chloroは主にpythonで3年程コードを書いていますが、中級者未満程度のライティング能力です。過去に一度、discordの簡単なBOTを私的に開発しましたが、その時は、Lua言語の派生であるLuvitで配布されているパッケージであるdiscordiaを使用しました。このパッケージの良さは、TutorialやWikiが非常に充実しているということ。そのため、簡単なBOT作成ならdiscordiaを使用しようと思いましたが、Luvitでの記述方法に慣れず、chatGPTにも訊きやすいPythonで開発しようということにしました。Pythonで開発する場合、pip install
するだけで利用可能なので非常に手軽です。ドキュメントもあり、サンプルも豊富です。Pythonのプロジェクト管理にはpoetryを使用しました。
搭載した機能
以下の画像にある通りのコマンドを実装しました。
参加率の算出
UTeSサーバーでは、サーバーに入ったメンバーが自己紹介をするチャンネルがあるのですが、一体どれだけのメンバーが入ってから自己紹介をするのか、その割合を調べれば、一応どれだけのメンバーが定着するかの指標の一つとして使えるだろうということで、搭載しました。その際、細かい挙動ですが、サーバーに入っているBOTがカウントされないようにしました。こちらのサイトが参考になりました: https://discordbot.jp/blog/3/
メンバーリストのcsv出力
サーバーに参加している全メンバーのリストをcsvで吐き出すようにしました。この時も、BOTのあるなしで出力を分けるようにしました。
VC参加時間の計測
VC(通話)に参加しているメンバーとその時間を計測し、csvに吐き出すコマンドを実装しました。正確に言うと、VCに入った時間と出た時間から計測しているので、常時コードを動かしている必要があります。
コマンドを打てるチャンネルの制限
BOTのコマンドを打てるチャンネルを特定のチャンネルに制限できるようにしました。
おまけ機能
おまけで、生年月日から卦を占う機能を簡単に実装しました。色々なパッケージがあるpythonならではだと思います。こちらのものを使いました: https://github.com/chengjun/iching
BOT開発で感じたこと
BOT開発で感じたのは、取得が難しそうな統計情報でも意外とシンプルなコードで書かれるということです。一旦BOTのコードの書き方に慣れると、あとは表データの扱い方との闘いになると思います。また、BOT開発はすぐに結果が見えるので、成果物が分かりやすく、やりがいや楽しさがあります。まだまだ素人の範疇ですが、続けて様々なものを作りたいと思います。
課題とロードマップ
現在、手動でプログラムを動かしてスプレッドシートにデータを反映させていますが、なるべく近いうちにraspberrypiなどを使って常時プログラムを動かして、GASでスプレッドシートにデータを記録する完全自動化を図りたいと思っています。個人的な都合でこの試みはなかなか始動していませんが、2025年の春ごろには仕組みを作れると思います。また、現在集計したデータをどのように生かすのかという課題も残っています。データを集めるのと同時に、それを元にサークルに存在する課題を解決する効果的な施策を講じる必要があります。
最後に
最後まで読んで頂きありがとうございます。これからも、UTeSはサークルとして精進して参りますので、応援のほどよろしくお願いいたします。
chloro