教室管理システム

授業、生徒・講師、シフト、給与、振替を管理し、講師はLINEからシフトを確認できます。

導入中 主要機能実装済み 最終更新:2026年8月
教室管理システムのダッシュボード画面
教室管理システムのダッシュボード
01

開発の背景

アルバイト先では、授業予定や講師シフト、給与などをExcelを中心に管理していました。

最初に、Excelのシフト表を取り込み、講師へLINEで勤務前通知を送るシフト通知システムを開発しました。このシステムは現在も実際の教室で運用しています。

運用を続ける中で、毎月の授業予定をExcelで作成する負担など、他の業務についてもシステム化したいという相談を受けました。こうして、授業、生徒、講師、シフト、給与、振替を管理する現在の教室管理システムの開発に進みました。

02

主な機能

03

システム構成

実際の教室での長期利用を想定し、現時点でランニングコストをかけずに運用できることを条件にしました。常時稼働するサーバーを置かず、Cloudflareのサービスを組み合わせています。

Cloudflare Workers、D1、R2、Queues、LINEを使ったシステム構成図
教室管理システムの構成
フロントエンド
Cloudflare Pages、React
API・業務処理
Cloudflare Workers、Hono
業務データ
Cloudflare D1
シフト画像・バックアップ
Cloudflare R2
LINE通知処理
Cloudflare Queues
定期処理
Workflows、Cron Triggers
04

設計・実装で工夫した点

01

定期授業の自動生成と手動編集の両立

定期授業の設定から月間授業と講師の仮シフトを自動生成します。管理者が手動で変更した授業やシフトは編集状態を保持し、同じ月を再生成しても上書きしません。

02

シフト公開前の整合性チェック

シフトを公開する前に、仮シフトが残っていないか、担当講師が設定されているか、出勤不可日や時間重複がないかを確認します。問題が残っている場合は、シフト画像の生成とLINEへの配信を行いません。

03

LINE通知のQueue・再送処理

LINE通知は、D1にOutboxを保存してからCloudflare Queuesで処理します。Queueへの投入やLINE APIへの送信が一時的に失敗した場合は、Cronで回収して再送します。Retry Keyで重複通知も抑えています。

04

認証・認可とシフト画像のアクセス制御

本番の管理画面はCloudflare AccessとMFAで保護し、アプリケーション内では管理者と講師の権限を分けています。講師は許可された自身のデータのみを操作できます。

シフト画像はPrivate R2に保管し、公開URLにはしていません。LINEからはLIFFで本人確認を行い、講師アカウントとの紐付けと管理者承認を終えたユーザーだけが、Worker経由で画像を取得できます。

05

技術スタック・現在の状況

フロントエンド

  • React
  • TypeScript
  • Vite
  • Tailwind CSS

バックエンド・インフラ

  • Hono
  • Cloudflare Workers
  • D1
  • R2
  • Queues

LINE連携・開発

  • LINE Messaging API
  • LIFF
  • Vitest
  • GitHub Actions

現在の状況

シフト通知システムは現在も実際の教室で運用しています。教室管理システムは、授業自動生成、シフト・給与・振替管理、LINE連携などの主要機能を実装済みで、実際の教室への導入を進めています。

機能画面

画像を閉じるには、閉じるボタン、背景、またはEscキーを使用できます。