自習室Discordでbotを使って勉強モチベを管理してみた part1

 

はじめに

私は2021年の夏から気象予報士試験を受験していて、今日(2022 03 15)時点で2回目の受験を終えました。気象予報士試験には3つの試験があり、学科試験である一般試験と専門試験、実技試験が立ちはだかっています。私の結果はと言いますと、1回目で全て撃沈、2回目で一般試験のみ合格となっています。本当は実技試験も自信があったのですが、専門試験に合格しないと実技試験の採点は為されないので、専門に失敗した私は一般のみの合格です。

Twitterにて、 気象予報士試験を受験するお仲間となる方々とFFになり、今現在100名程の気象界隈の方々と繋がっています。そこで、その中の一人のしののめさんという方がDiscordで自習室環境を立ち上げよう!ということでDiscordに気象予報士界隈の自習室サーバーが誕生しました。私はしののめさんが立ち上げようと仰っていた時から自習室の設立に立ち会っていたので、自習室サーバーの運営として関わることになりました。

私は少し昔にSlackでbot開発をしたことがありました。ですから、この技術をもってDiscordでも皆さんのお役に立てないかと思い、自分の技術の向上にも繋がるため、Discord botの開発に携わることになりました。このブログはDiscord botでどのような機能を実装したのか、についての話です。

 

問題出題bot

f:id:hiropeng22:20220315211010j:plain
f:id:hiropeng22:20220315211017j:plain
はれるん問題出題bot

気象庁には、公式キャラクターとして「はれるん」というマスコットキャラクターが存在します。秘書botの役割を彼に担ってもらおうと決め、はれるんbotを出現させました。はれるんは、気象予報士試験までのカウントダウンをしてくれ、また、図表なく判断できる正誤問題を1問出題してくれます。解答はDiscordの記法で隠すことに成功しました。クリック又はタップすると正答が見られます。

これは、Googleスプレッドシートとそれに付属するGoogle Apps Script(通称GAS)を用いて定時投稿しています。Googleスプレッドシートには気象予報士試験の学科試験問題情報と正答情報を約300問ほど打ち込み、それをGASの方でランダムに取ってくるようなプログラムになっています。GASはまた、気象予報士試験までの残り日数を計算してくれます。GASの定時投稿により、今現在は朝9時、夕方18時、夜22時に投稿されるようになっています。

 

自習室利用時間計測&称号付与bot

f:id:hiropeng22:20220315211013j:plain

はれるん自習室管理bot

しののめさんの勉強サーバーには、無言で入れるボイスチャットを利用した、バーチャル自習室環境が存在します。私は、ここで勉強した時間を計測出来れば良いのにな、と思い、はれるんに自習室利用状況を教えてもらえるbotを開発しました。各月の勉強時間と、それに応じたユーザーランクを付与してくれるbotです。

これは、Googleスプレッドシートと、discord.pyとHerokuを利用しています。まずdiscord.pyが自習室ボイスチャンネルに入った時間を計測します。入った時間と、出た時間の差を算出しています。そしてそれをGoogleスプレッドシートに記録します。ここで、縦列にユーザーネーム情報を取り、横軸に月情報を取って、その交点のセルに自習室使用状況を分単位で記録するようにしています。そして、ユーザーが「!time」とテキストチャンネルに投稿すると、はれるんが上図のような勉強時間とそれに応じたユーザーランクを返してくれます。

f:id:hiropeng22:20220315211020j:plain

ユーザーランク

ユーザーランクについてはDiscordのロールを使用しました。利用時間が、3時間~5時間ならLv.1 塵旋風級、5時間~10時間ならLv.2 積雲級、10時間~15時間ならLv.3 積乱雲級、15時間~30時間ならLv.4 竜巻級、30時間を超えるとLv.5 台風級、が付与されるようになっています。この時間の変更についてはdiscord.pyの値を変更するだけなので、皆さんの自習室利用状況に応じて変更していきたいと思っています。また、エクストラ称号として虹ランクなども用意していますが、それについてはto be continued…笑

ユーザーランクに応じて、そのランクの写真が掲載されるようになっています。

最後に、GASのようにbotを常駐させられる仕組みがpythonには無いので、Herokuを使用してbotを四六時中動かせるようにしています。Herokuには月ごとに使用制限があるそうですが、このbotを運営する為には全く問題なさそうです。

 

おわりに

botを作ったのは、私が工学系で元々何かを作るのが好きだ、というのも大きいですが、前からこんな自習室環境が欲しかったというのが大きいです。高校生の時、学習記録というものが存在し、日ごとの学習時間を高校の担任が打ち込んでグラフにしてくれていたのが、私の中でとてもモチベーションに繋がっていました。それに肖って、同じような機能をDiscordにも搭載出来ないかと思った次第です。これらのはれるんbotを利用して皆で勉強して、気象予報士試験合格に向けてだけでなく、それぞれに思い思いの進捗を生んで、何かを成し遂げていってほしい、と思っています。