タイトルにある通り、サークルのDiscord用にBotを開発し、機能を拡張しながら運用しています。
その話を書きます。
自己紹介
大阪大学に所属する田中幹久です。
普段はX@Mathmeganekun で活動しています。
主にiOS向けのアプリを開発していたりします。開発したアプリたち
きっかけ
全体チャンネルにこんなメッセージが投稿されました。
Discordのボットを作成・管理してくれる人を募集します.
botのSDKがある言語(Python/Java/JavaScript/Clojure/C#/GO/C++/Lua/PHP/Rust/Ruby...のいずれか) が使える人を対象とします.
botを使って,サークル費の管理や,データベースへのアップロードなどを自動で行いたいと考えています.
botの常時起動のためのサーバー管理も任せると思います.一般に公開されているbotの導入でも構いません.
詳しいことは分からないので多くをお任せすることになってしまうかと思いますが,興味のある方はこのチャンネルに投稿してください.
当時、Pythonを触ったことはないけど挑戦してみようと思いました。
丁度、AIのコーディングが流行り出して、「これは便利だ」みたいなムードが広がっていたこともあって「AIを使いこなせるきっかけになればいいな」と思って立候補。
技術選定
技術選定に一番難航しました。
普段はiOSアプリしか作らないこともあって、SwiftとXcodeしか知らない&わからない。
言語はPythonで書くことにしました。
記事が多く、Discord.pyという便利なライブラリーがあったから。
そして、Didscord Botにはサーバーが必要になります。
当時の僕はバックエンド?フロントエンド?なにそれ美味しいの?みたいな状態で知識0からのスタートでした。
小規模なサークルなこともあってお金はかけたくなかった。(言ったら少しは貰えたのかも)
色々調べた結果、ホスティングにはKoyebを利用することにしました。
無料では弱いCPU・小さいメモリしか使えないけど十分だった。
そして、テストしてみると1時間ほどでシャットダウンしてしまう。
どうやらホスティングとは別に常時起動のために別サイトを噛ませる必要があり、UptimeRobotを利用することにしました。
図にまとめるとこんな感じ。
その後、Koyebがすぐに落ちることがあり、サーバーを新しくすることにしました。
広く使われているCloudFlareに移行しようと思いましたが、CloudFlareはWebHook型しか無理らしく、コードを書き換える必要が出て断念。
そこで、Oracle Cloud Infrastructureに切り替えました。
Koyebと違って自分で全て設定しないといけませんでした。
ターミナルでよくわからないコマンドを打って、Dockerとか環境定数を新しく設定しました。(わからないことだらけで6時間ぐらいターミナルと格闘しました。)
現在のスタック図
役割分担
サークルで開発するため、コミュニケーションと方向性の統一には特に気をつけました。
厳密に役割を決めてたわけではないが、コーディングは私が行い、上流工程は運営メンバーやるという形だったと思います。
運営メンバーが要望を私に伝え、私がコーディング、という感じ。
とはいえ、私も提案を運営メンバーに投げてみたりして、サークルゆえの自由度で裁量が大きく、楽しく開発できました。
コーディングはほとんどAIにやらせて、私がコードをチェック・修正という形式で効率よく。
プロトタイプを爆速で作って、意見を聞いて、仕上げる。
こんな流れで開発を行いました。
メンバーへの周知
上回生への周知は、運営メンバーがBotの導入に前向きだったこともあり、スムーズに行えました。
他のメンバーに対する周知として意識したことは、これまでの仕組みとこれからの仕組みへの移行期間を設けるということでした。
例えば、経費の申請システムの開発では、これまで用いていたメッセージベースの管理と、開発したBotを利用する方法の両方を利用する期間設けました。
これまではDiscordで「印刷代 1000円」とか「1000円受け取りました」みたいなメッセージベースで管理していましたが、これを全てBotで置き換えるのではなく、これまでのメッセージでの報告もするように促すメッセージが送信されるようにしました。
これには様々な目的がありました。
万が一、「Botは不要だ」となった時に昔の仕組みに戻れるようにするためでもあるし、メンバーがBotの操作を間違えた時の対策でもあるし、Botの動作を確認する目的でもあったし、運営が経費の履歴を照らし合わせるときの念の為などがありました。

報告を促すメッセージ
これは所属するサークルの雰囲気次第で、私の場合はとても良い環境だった。
手応え
普段のアプリ開発ではなかなかユーザーの声を聞く機会はなかなかないですが、サークルでの開発経験はユーザーが目の前にいて、ダイレクトに感想を聞けて、修正もすぐにできるという新鮮な体験だったと感じてます。
読んでくださりありがとうございました。
また続きを書きます。
