← 事例一覧へ
導入事例 · 教育 / B2B2C

一人のアプリが、学校まるごとの基盤になった。

学習習慣を記録するシンプルなモバイルアプリを、学校・塾が複数生徒を管理できるB2B2Cプラットフォームへ。COCONはExpo(React Native)モバイルアプリとNext.js管理ダッシュボードを組み合わせ、Firebase Auth・Firestore・Cloudflare Pagesで、生徒プロビジョニングから保護者通知まで全スタックを本番リリースしました。

https://studylap.cocon-lab.com — 本番稼働中
54
出荷したSLチケット
139
コミット
5
役割ロール(生徒・教員・学校・保護者・管理者)
同日
rules+CF Pages+ダッシュボードを一括go-live(2026-05-30)
課題 · THE CHALLENGE

高額なエンタープライズ契約か、手作りのLINEグループか。

学習塾や学校が「自分たちの生徒専用のアプリ」を持ちたいとき、通常はその二択しかありません。COCONが引き受けたのはその中間——塾がアカウントを発行し、生徒がスマートフォンで学習を記録し、教員が進捗を確認し、保護者が子どもの成長を見守るサイクルを、一つのSaaSプラットフォームで完結させること。しかもB2B2Cモデルのビジネスロジックを正しく実装する必要がありました。

5ロールの完全分離

生徒・教員・学校管理者・保護者・スーパー管理者の5ロールで、アクセス権限・画面・データスコープが完全に異なる。

プロビジョニング型アカウント発行

アカウント発行は塾・学校側が集中管理する方式——生徒は自分でサインアップしない。

ミスが即データ漏洩になるルール

Firestore security rulesはロール・テナント・スコープの全ての組み合わせを正確に表現する必要がある。

モバイルと管理画面の整合

モバイルアプリ(Expo SDK 54 / React Native)と管理ダッシュボード(Next.js 15)をモノレポ的に整合させつつ、日本語ローカライズ(曜日・単位・敬語・送り仮名)も貫く。

CLIが使えない本番デプロイ

本番へのCloudflare Pagesデプロイに加え、Firebase CLIがGCP課金エラーで使えないため、FirestoreルールはREST API経由でデプロイしなければならない。

解決 · WHAT COCON BUILT

名簿の提出から、保護者の見守りまで。

COCONはゼロから設計し直し、次のアーキテクチャを本番投入しました。

01
マルチロールFirestoreスキーマ

Student / Teacher / SchoolAdmin / Superadmin / Parentの5ロールをFirebase Custom Claimsで管理。30テストのemulator suiteで全組み合わせの権限を自動検証(SL-65)。

02
プロビジョニング型アカウント発行

塾が名簿を提出→スーパー管理者が一括アカウント生成→生徒はloginId(SCHOOLCODE-0001形式)+仮パスワードの印刷スリップでログイン。初回ログイン時に強制パスワード変更。

03
スーパー管理者ダッシュボード

Next.js製。組織管理・アカウント生成・請求状況・名簿受付キュー(SL-82)。学校管理者と教員は名簿を提出→スーパー管理者が処理→両側でステータスが反映。

04
保護者・教員ポータル

学習進捗・レビュー・招待メールをEmail-link認証で運用。停止(suspend)は全Firebaseユーザーに即時反映(SL-77)。

05
モバイルアプリ(Expo SDK 54)

学習タイマー・タスクカテゴリ・習慣スケジュール・進捗ランク。com.cocon.studylap、RSA 2048-bit本番キーストア(25年有効)。

06
Firestore rules E2E + 日本語化

anti-cheatクランプ(exp ≤+500/level ≤+5)・テナント分離・レビュー帰属偽造防止・default-denyを全30テストで自動実行(SL-65)。曜日・単位・カウンター語・送り仮名も全面監査(PR #36)。

実現の裏側 · WHAT IT TOOK
Firebaseルールのデプロイ制約突破

Firebase CLIはGCPのService Usage Consumer権限が必要で、課金停止中には使えない。COCONはfirebaserules.googleapis.com REST APIを直接叩き(ruleset作成→releaseのPATCH)、CLIなしでルールを本番デプロイ。

Cloudflare Pages + カスタムドメイン

ランディングページをCF Pagesに移行。remote-managedトンネルのDNSをCNAMEで上書きし、studylap.cocon-lab.comを200で応答させた。

並列エージェント開発

SL-77〜81(suspend強制・招待メール・生徒削除・スタッフ解除・レビュー通知)は、親エージェントが共有ファイルを先にコミットし、3つの並列エージェントが非重複ファイルを担当する分担で、合計5チケットをコンフリクトゼロで実装。

ビルド環境の罠と即応性

NEXT_RUNTIMEなどの環境変数リークでビルドが壊れるため、本番ビルドは明示的にunsetしてからNODE_ENV=productionで実行する手順を確立。Stripe決済・招待メールはコード配線済みで、クレデンシャル設定のみで即時有効化できる状態。

スクリーンショット · SCREENSHOTS

実物で、お見せします。

StudyLap ランディングページ — 生徒の学習習慣を、塾・学校で見える化
studylap.cocon-lab.com — ランディングページ
3ステップで導入 — 名簿を提出、ログイン情報を配布、学習を見える化
3ステップで導入 — 名簿提出からアカウント発行まで
役割ごとの機能と料金 — 学校・組織がシート単位でご契約
役割ごとの機能と料金 — シート単位の契約モデル
成果 · THE RESULTS

設計から本番まで。止まらずに出荷する。

生徒オンボーディングの自動化と安全なgo-live 名簿提出→アカウント発行が未接続・本番未稼働 → 名簿→自動発行・Firestore本番稼働
導入前 11% 導入後 78%+
54
出荷したSLチケット
139
コミット
30
emulatorテスト全グリーン(SL-65)
14
本番Firestoreで稼働中の生徒(2塾)

2026年5月30日、Firestore rules・Cloudflare Pages・管理ダッシュボードを同日一括go-live。ランディング(studylap.cocon-lab.com)と管理ダッシュボード(studylap-console.cocon-lab.com)はともにHTTP 200で稼働中。さくら進学塾(SAKURA01、8名)とみらい学習塾(MIRAI01、6名)が本番Firestoreで動いています。

※ 達成度イメージ(導入前 11% → 導入後 78%+)は、自社評価による代表値です。チケット数・コミット数・テスト数・生徒数は本番環境の実測値です。さくら進学塾・みらい学習塾はバリデーションデータです。

← 前の事例 Prolis 事例一覧 次の事例 → Da Vinci Graph

この事例に近い課題をお持ちですか?

まずは、いま向き合っている課題をお聞かせください。実装まで責任を持って伴走します。

課題をお聞かせください