概要
九州大学卓球部の出欠や台割りの処理を自動化するシステムを構築
使用技術
Cloudflare / GAS / Messaging API / Spreadsheet
詳しい内容
卓球部の出欠確認と台割り作成を自動化するためのシステムを構築しました。
これまでLINEグループ上で手作業で行っていた出欠確認、欠席者・出席者の集計、練習日の台割り作成を、LINE Bot・Google Apps Script・Googleスプレッドシート・Cloudflareを組み合わせて自動化しています。
LINEグループ内で部員がBotにメンションし、「出席」「欠席」と送信すると、その内容がWebhook経由で自動的に記録されます。Botは返信を行わず、出欠データを受け取ってスプレッドシートへ連携する受信専用の役割にしています。
出欠管理では、部員ごとに「通常出席」または「通常欠席」を設定できます。普段から参加する部員は無回答でも出席扱いになり、欠席する場合のみ申告します。一方、普段参加しない部員は出席する場合のみ申告する仕組みにしました。これにより、毎回全員が回答しなくても、実際の参加者を効率よく確定できます。
記録された出欠情報はGoogleスプレッドシートに保存され、Google Apps Scriptによって練習日の締切時刻に参加者を確定します。その後、台割り用の処理を実行し、練習日に使う台ごとの割り振り結果を生成します。台割りのアルゴリズム部分は独立した関数として設計しており、ルール変更に対応しやすい構成にしています。
Web側では、Cloudflare Workersを使ってAPIとフロントエンドを配信しています。単一ページのWebアプリとして実装し、「本日の台割り」と「出欠記録」を同時にチェックできる設計になっています。
使用技術は、フロントエンドにHTML・CSS・JavaScript、API・Webhook処理にCloudflare Workers、出欠データ管理と台割り処理にGoogle Apps Script、データベース代わりにGoogleスプレッドシートを使用しました。外部LLMや常時稼働サーバーは使用せず、できるだけ無料枠で運用できる構成にしています。
このシステムにより、部活動で発生していた出欠確認と台割り作成の手間を減らし、スマートフォンから簡単に当日の割り振りや過去の出欠状況を確認できるようにしました。