前回は、Codexを活用してMinecraftサーバーのバックアップやアップデートを自動化したことについて紹介しました。
しかし、実際に運用を始めると、新たな課題が見えてきました。
Minecraft統合版(Bedrock Edition)は、Java版とは異なり、基本的に常に最新バージョンで遊ぶことが前提となっています。そのため、サーバーのアップデートが遅れると、プレイヤーがサーバーへ参加できなくなってしまいます。
また、アップデート前にはバックアップを取得したいものの、そのたびにSSHでサーバーへ接続してコマンドを実行するのは手間がかかります。
サーバーは24時間稼働しているため、自分がPCの前にいなくても、参加者が必要なタイミングで安全にバックアップやアップデートを実行できる仕組みが欲しいと考えました。
そこで、Discord Botからサーバーを操作できる仕組みを作ることにしました。
さらに、万が一トラブルが発生した際に状況を振り返れるよう、プレイヤーの入室・退出を記録するログ監視Botも同時に作成することにしました。これは利便性だけでなく、セキュリティや運用管理の面でも役立つと考えたためです。
今回もCodexを活用して開発
今回もCodexを活用しながら開発を進めました。
前回の記事では、バックアップやアップデートを実行するシェルスクリプトを作成しました。今回はそのスクリプトを土台として、
- Discordからバックアップを実行
- Discordからアップデートを実行
- 入室・退出ログをDiscordへ通知
といった機能を持つBotへ発展させていきます。
最終的にはラズベリーパイへ移し、24時間稼働させる予定ですが、この時点ではまだCodexを使って本格的なアプリケーションを開発するのは初めてでした。
そのため、まずはPC上で動作確認を行いながら、Discord Botの構成や実装方法を学ぶところからスタートしました。
実際のサーバーへ導入
Botの基本機能が完成したあと、バックアップBotとログ監視Botの両方をMinecraftサーバーと同じPCへ導入しました。
バックアップBotでは、Discordからコマンドを実行するだけで、サーバーのバックアップやアップデートを実行できるようにしました。これにより、管理者が毎回SSHで接続する必要がなくなり、運用の手間を大きく減らすことができました。
また、ログ監視Botでは、プレイヤーの入室・退出をリアルタイムでDiscordへ通知するようにしました。万が一トラブルが発生した際にも、「誰がいつ参加・退出したのか」をすぐに確認できるため、運用管理やセキュリティの面でも役立っています。
さらに、Minecraftサーバーの参加者全員をDiscordサーバーへ招待し、実際にBotを利用してもらうことにしました。
実際に使ってもらうことで、
- 「ここはもっとこうした方が使いやすい」
- 「この機能があると便利」
- 「この表示は分かりづらい」
といった率直なフィードバックやレビューをもらうことができます。
一人で開発していると気付けない改善点も多いため、実際の利用者の意見を取り入れながら、より使いやすいBotへ改善していきたいと考えています。
今後に向けて
今回作成したBotによって、Minecraftサーバーの管理作業をDiscord上から行えるようになり、運用の負担を大きく減らすことができました。
一方で、実際に利用してもらうことで初めて見えてくる課題もあります。
今後は、参加者からのフィードバックをもとに機能を改善しながら、より安全で使いやすいサーバー運営を目指していきたいと考えています。
今回のBot開発は、単に機能を実装するだけではなく、「実際に運用し、利用者の意見を取り入れながら改善を続ける」という開発の大切さを学ぶ良い経験になりました。