はじめに
こんにちは、OhaGiです。
今回はdiscord上でのゲーム参加募集を支援するbot 「gemaneko」 を開発しました。
pythonの discord.py を使用してdiscord botを作成し、GCPの Compute Engine でデプロイしてみました。

▼Github URL
Compute Engineでのデプロイ 、 botの自動起動 などについては
↓の記事で紹介しています!
併せてお読み頂けると嬉しいです!
開発背景
- 参加しているゲーム用discordサーバーにおいて、 複数のゲームで同時に参加者を募集する場面が多く、どのゲームに誰が参加するのか把握しづらい という課題があった
- 日常の会話の流れやボイスチャンネルでのゲームの参加が取り決められる場合が多く、 どのゲームに誰が参加するかが不明瞭になりがち だった
【gemaneko】 概要
- gemaneko は、discordサーバー内で ゲーム参加希望者を効率的に管理するためのbot です
- 特定のメッセージを送ることにより、誰がどのゲームに参加したいかを集計・表示できるため 参加希望者が一目で分かる ようになります
- gemaneko は、game + manager + nekoを組み合わせて名付けました( ネコはかわいいので 🐾)
機能
/コマンド
を打つことでgemanekoに指示を出すことが出来ます
コマンド | 説明 |
---|---|
/list |
登録されているゲームの一覧を表示します |
/add <ゲーム名> |
ゲームを登録します |
/remove <ゲーム名> |
ゲームを削除します |
/join <ゲーム名> |
ゲームに参加します |
/leave <ゲーム名> |
ゲームから離脱します |
/clear <ゲーム名> |
ゲームの参加者を全員削除します |
/status <ゲーム名> |
ゲームの参加者一覧を表示します |
/start <ゲーム名> |
ゲームを開始して参加者を全員削除します |
/help |
ヘルプメッセージを表示します |
使用技術・ツールなど


python のライブラリであるdiscord.pyを使用して開発。
デプロイをGoogle Cloudの Compute Engine で行いました。
また、コーディング補助として Github Copilot を導入しました。
こだわりポイント
- ゲーム名を小文字で管理
- ゲーム名は自動的に小文字変換されるため、データの一貫性が保たれ、集計処理が容易になります
- ゲーム開始後に参加希望データの消し忘れを予防します
-
/start {ゲーム名}
を実行する際に、そのゲームの参加希望者リストが自動で削除されることで、過去の募集が残り続けることを防ぎます - GCEとsystemdによる運用
- GCPのCompute EngineでVM上での安定稼働を前提とした設計になっています
結果
- 実際にdiscordサーバーで運営を開始して、当初の目的であった ゲーム参加希望者の管理の煩雑さを解消する ことが実現できました
- 参加者の確認や集計がコマンドひとつで可能になり、会話の中で参加を募るよりもスムーズに調整できるようになりました
学んだこと
- discord.py を使ったbot開発方法
- GCPを使った クラウド技術の基礎
- systemdを利用してLinux サーバー上にbotを永続的に動かすこと
- 運用を見越した設計・保守性の重要さ
改善点
- ワンクリックで操作可能にするなど、UXの改善
- データを保持することで保守性を上げること
今後の予定
- 実際にdiscordサーバーで運用を続け、ユーザーからのフィードバックを元に機能の改善や新機能の追加を行っていく予定です
さいごに
自身の生活の問題を技術で解決することが出来ました。また、気になっていたクラウド技術のGCPに触れることが出来て良かったです