「Discord Botもくもく」開発
【概要】サークル内学習管理「Discord Bot もくもく」 【チーム構成】個人開発(設計の壁打ちとして先輩メンター2名) 【担当領域】バックエンド実装、インフラ構築、CI/CD整備すべて 【利用技術】Go, Firebase, Discord API 【開発環境】AWS Lambda, GitHub Actions 【開発背景・プロダクトの特徴】 サークル内の学習意欲の向上を目的としたBot開発です。Discordのボイスチャンネルの滞在時間を計測して週間ランキング化する機能や、メンション付きで定期通知を行う機能を作りました。学習時間が可視化することで、サークル全体を巻き込んだモチベーションの向上をしたいと思い開発しました。 【頑張ったところ/工夫したところ】 主に「実行環境の深い理解と自動化」、そして「ユーザーの声の反映」の二点に力を入れました。 一点目は、AWS Lambdaへのデプロイにおける「クロスコンパイル」と「CI/CDによる自動化」です。 当初、手元のWindows環境でビルドしたバイナリが本番環境(Lambda)で動かず挫けました。そこでOSやCPUアーキテクチャの違いを調べ、Windows(amd64)とLinux(arm64)の差異に気づきました。単にツールを使うだけでなく「なぜ動かないのか」を理解し、PowerShellでGOOS=linuxやGOARCH=arm64といった環境変数を設定し、Lambda特有のbootstrapという命名規則に合わせて手動でクロスコンパイルしました。 しかし、この手作業(コマンド入力、zip圧縮、アップロード)は工程が多く、間違えやすいです。そこで、本来やりたい機能開発に集中するため、GitHub Actionsを用いたCI/CDパイプラインを構築しました。手作業の苦労と原理を体感したからこそ、テストからLinux向けビルド、デプロイまでの自動化を高い解像度で実装できました。 二点目は、生の声を受けた体験の改善です。 「別の雑談チャンネルに移動しても勉強時間が計測され続ける」等の指摘を受け、Discord APIのイベント検知のロジックを改善しました。 これらより、「実行環境の仕組みを理解して壊れない自動化機能を作り、ユーザーに沿った体験を作る」という開発サイクルを経験しました。