🖥 システム構成
システムがどのように動いているかを図解で説明します
マルチテナント構成
Classroom Check-inはマルチテナント対応のシステムです。 組織・学校ごとに独立したテナントを持ち、データは完全に分離されています。
講座・セッション)] end subgraph テナントB["テナントB(△△塾)"] B1[管理者B] B2[受講者B1] B3[受講者B2] DB[(データB
講座・セッション)] end subgraph 共通基盤["共通基盤"] API[APIサービス] WEB[Webアプリ] NTF[通知サービス] end A1 --> WEB A2 --> WEB A3 --> WEB B1 --> WEB B2 --> WEB B3 --> WEB WEB --> API API --> DA API --> DB NTF --> DA NTF --> DB
🏢 テナント分離
各テナントのデータは完全に分離されており、他のテナントからアクセスすることはできません。
🔗 専用URL
各テナントには専用のURL(/tenant-id/admin)が発行されます。
システム全体像
Classroom Check-inは、複数のサービスが連携して動作しています。 下の図は、システム全体の構成を示しています。
講座選択・IN/OUT] D[管理者画面
講座・受講者・セッション管理] R[テナント登録画面] end subgraph バックエンド["⚙ バックエンドサービス"] E[APIサービス
データの読み書き] F[通知サービス
退室忘れ通知] end subgraph データベース["🗃 データ保存"] G[(Firestore
テナント・講座・セッション等)] end subgraph 外部サービス["🌐 外部サービス"] H[Google Classroom] I[Gmail
通知メール送信] J[Firebase Auth
認証] end subgraph 監視["📊 監視"] M[Uptime Check] N[アラート通知] end A --> C B --> D B --> R C --> E D --> E R --> E E --> G F --> G F --> I C -.->|遷移| H E --> J M --> E M --> C M --> F M -.->|障害検知| N
💻 Webアプリケーション
ユーザーが直接操作する画面です。受講者用、管理者用、テナント登録用があります。
⚙ バックエンドサービス
裏側で動作するプログラムです。データの保存や通知の送信を行います。
🗃 データベース
テナント、講座、セッション記録など、すべてのデータを保存する場所です。
🌐 外部サービス
Google Classroom、Gmail、Firebase Authなど、連携している外部のサービスです。
📊 監視
システムの稼働状況を監視し、障害時にアラートを送信します。
データの流れ
IN 入室時の処理
- 1. 受講者がINボタンをクリック
- 2. システムが入室時刻を記録(セッション作成)
- 3. 自動的にGoogle Classroomの講座ページへ移動
OUT 退室時の処理
(退室時刻を記録) D-->>A: 更新完了 A-->>W: 滞在時間を返却 W->>U: 完了メッセージ表示
- 1. 受講者がOUTボタンをクリック
- 2. システムが退室時刻を記録
- 3. 滞在時間が自動計算されて保存
🔔 退室忘れ通知の処理
- 1. システムが1時間ごとに自動チェック
- 2. 入室中のまま一定時間が経過したセッションを検出
- 3. 通知ポリシーに従って受講者にメール送信
保存されるデータ
システムは以下のデータを保存・管理しています。すべてのデータはテナントごとに分離されています。
- テナントID
- 組織名
- オーナー(管理者)
- 作成日時
- 講座名
- 説明文
- Classroom URL
- 必要視聴時間(分)
- 表示設定
- メールアドレス
- 表示名
- 役割(受講者/管理者)
- 割当講座
- 受講者ID
- 講座ID
- 入室時刻
- 退室時刻
- 状態(入室中/完了)
- 対象範囲
- 通知タイミング
- 有効/無効
運用監視
システムの安定稼働のため、24時間体制で監視を行っています。
5分間隔でサービスの稼働状況を確認
- ・APIサービス
- ・Webアプリケーション
- ・通知サービス
障害検知時にメール通知
- ・サービス停止検知
- ・レスポンス遅延検知
- ・エラー率上昇検知
毎日自動でスモークテストを実行
- ・ヘルスチェック
- ・API疎通確認
- ・GitHub Actions連携
使用している技術
このシステムは以下の技術を使用して構築されています。
Google Cloud
サーバー・データベース
Next.js
Webアプリケーション
Cloud Run
サービス実行環境
Firebase Auth
ユーザー認証
詳細な技術情報
より詳細な技術情報については、 GitHubリポジトリ をご覧ください。