はじめに
この記事は、私の実際の開発・運用経験をもとに、AI(ChatGPTなど)を使って構成や文章の推敲を行っています。
文化祭の準備では、多くの生徒がシフトに入ります。
しかし、シフト管理は紙や手作業で行われることが多く、調整や共有が大変です。
そこで私は、文化祭のシフト管理を効率化するためのアプリを作ることにしました。
結果としてアプリ自体は完成しましたが、運用面の問題でうまく使われませんでした。
この記事では、
- なぜこのアプリを作ったのか
- どんな構成で開発したのか
- なぜ運用がうまくいかなかったのか
についてまとめます。
プロジェクト概要
- アプリ名:シフト管理アプリ
- 目的 / 背景:文化祭のシフト管理を効率化するため
- 対象ユーザー:生徒スタッフ (約40人)
- 開発期間:2024年6月〜2024年9月(設計 → 作成)、2025年8月〜2025年9月(運用)
技術選定
文化祭は短期間のイベントのため、短期間で構築できて運用が簡単な構成を重視しました。
その結果、以下の構成を採用しました。
- フロントエンド : HTML / CSS / JavaScript
- バックエンド : Google Apps Script(GAS)Webアプリ
- データベース : Google スプレッドシート
- 開発ツール : clasp cli & TypeScript
GASを選んだ理由
- デプロイが簡単でURLを共有するだけで利用可能
- Googleアカウント環境と相性が良く、スプレッドシートをそのままデータベースとして利用できる
- 短期間で動くアプリが作れる
実装した機能
| 機能 | 内容 |
|---|---|
| シフト入力 | 生徒が希望時間を入力 |
| シフト表示 | シフトを一覧表示 |
| メール通知 | シフトの5分前にリマインドメール送信 |
| バリデーション | 最低3コマ勤務のチェック |
| パスコード保護 | URL流出対策としてパスコード認証 |
| 自動ソート | 出席番号順に自動整理 |
画面構成
-
ユーザー情報入力画面
- メールアドレス、名前、出席番号を入力
-
シフト入力画面
- 日付ごとの希望時間を入力
- 入力内容はスプレッドシートへ自動保存
-
シフト確認画面
- 自分のシフトを確認可能
データ構造
-
スタッフ一覧シート
- 保持データ:名前、メールアドレス、出席番号
-
シフト表シート
- 保持データ:日付、時間帯、担当者
- シフトが入っている箇所は「黄色背景 + 〇」で表示
-
運用の工夫
- スプレッドシートは管理者のみ編集可能に設定(直接編集による柔軟な調整が可能)
- スプレッドシートの標準機能でPDF化し、クラスLINEに送信可能
実際の運用とのギャップ
当初の想定では、以下のようなフローを描いていました。
- 生徒がシフト希望を入力
- スプレッドシートに自動反映
- 実行委員がその表を元に調整
- PDF化して共有
しかし実際には、このシステムは**「希望時間を集めるフォーム」**としてしか使われませんでした。
さらに印象的だったのは、自動生成されたスプレッドシートのシフト表を、実行委員の人が手書きで紙に書き直していたことです。
アプリとしてはすでに表が画面上に生成されていましたが、実際の運用現場では、使い慣れた従来の紙の方法が優先されてしまいました。ここで、「技術で作れること」と「現場で使われること」は全くの別問題だと痛感しました。
学んだこと
今回の経験で得られた最大の学びは、**「技術よりも運用設計が重要」**ということです。
アプリ開発において、**「技術的に作れるか」と「実際に使われるか」**の間には大きな壁があります。特に以下の要素を、開発段階から事前に設計しておく必要があったと感じています。
- ユーザーの実際の利用フロー
- 事前の説明やマニュアルの用意
- 管理者(実行委員)の操作コストの考慮
今後もし改善する機会があれば、以下の打手を検討します。
- 利用フローの事前共有と、本番前のデモ実施
- より直感的に使えるUIの簡素化
- 最初のデータ収集はGoogleフォームを併用し、段階的に移行する
おわりに
結果として、技術的には完成したものの、運用フェーズで課題が残るプロジェクトとなりました。
しかし、
- GAS Webアプリの構築
- スプレッドシートをDBとした設計
- メール通知機能の実装
など、個人開発として多くの技術的経験を得ることができました。
何より、ただ「作る」だけでなく、**「使われるシステムを設計する難しさ」**という、エンジニアとして非常に大切な視点を実体験から学べたことは、今後の開発における大きな収穫です。