教育 × AIチューター × バックエンド開発
AIチューターと対話しながら学べる個別学習支援システム
教科・トピック・チャットセッション・進捗を扱うAPI、Firebase認証とロール制御、Assistants APIによる教材参照を、バックエンド開発者として設計・実装。
CASE STUDY / 実績 Back to WORKS
対象業種
大学・学校(教育事業者向け)
開発区分
個別学習支援プラットフォームのバックエンド開発 / 体制4名・メンバー
期間
2024年6月〜2024年10月(約5ヶ月)
担当範囲
バックエンドAPI設計・実装 / データ設計 / 認証・権限実装 / AI連携 / 集計ロジック実装(要件定義・画面設計・フロントエンド実装は専任メンバーが担当)
使用技術
Python / FastAPI / Firebase / Cloud Firestore / OpenAI Assistants API
連携サービス
OpenAI Assistants API v2 / Firebase Authentication / Cloud Firestore / Firebase Storage
OVERVIEW
プロジェクト概要
生徒一人ひとりの理解度に合わせたAIチューターとの対話学習、教材連携、進捗可視化を一体化した個別学習支援プラットフォームです。体制4名(フロントエンド開発者1名/テスター1名/デザイナー1名/私)のうち、バックエンド開発者としてサーバー側を担当し、API設計・実装、データ設計、認証・権限実装、AI連携、集計ロジック実装を行いました。要件はプロジェクト開始時点で確定しており、要件定義・画面設計・フロントエンド実装は担当範囲外です。

PROBLEM
元の業務課題
- 生徒ごとに理解度が異なるにもかかわらず、画一的な教材・進度で学習を進めざるを得なかった
- 学習履歴や進捗が記録・可視化されておらず、生徒も教師も理解度の推移を把握しづらかった
- 既存教材を活かした個別回答ができず、AIチャットを導入しても教材と整合しない回答になりやすかった
- 教材参照のために独自のベクトル検索基盤を構築すると、開発コストと運用コストが大きくなる
- 生徒・教師・管理者でアクセスできる範囲が異なり、ロールごとの権限制御が必要だった
BEFORE
Beforeの業務フロー
- 01生徒は共通教材・共通進度で学習を進める
- 02理解度の確認はテストなど断続的なタイミングに限られる
- 03つまずいた箇所への個別フォローが手薄になりやすい
- 04学習時間・正答率などのデータが記録・蓄積されない
- 05教師は生徒ごとの状況を把握しづらく、指導の優先順位をつけにくい

SOLUTION
提案した解決方法
- 教科・トピック・セクション・ユーザー・チャットセッション・進捗を扱うAPIを、機能ごとにルーター分割して設計・実装
- Firebase Authenticationによる認証と、JWKS経由のトークン検証ミドルウェアをバックエンドに実装
- 生徒/教師・管理者のロールに応じたアクセス範囲の制御を実装
- チャットセッションをフラット構造からサブコレクション構造へスキーマ移行し、セッション単位のアクセスを扱いやすく改善
- 教材参照は独自のベクトル検索基盤を持たず、Assistants APIのファイル添付・検索機能を利用してコストを抑制
- 教材ファイルをFirebase Storageへ保存し、メタデータ管理をバックエンドで実装
- 進捗率・学習ストリーク・クイズ統計の3指標を集計する学習ダッシュボードのロジックを実装
- Databuttonを土台に認証の雛形やAPIクライアント自動生成を素早く整え、案件固有のロジックへ開発時間を集中
ARCHITECTURE
システム構成イメージ

FEATURES
主な機能
学習API(機能別ルーター)
教科・トピック・セクション・ユーザー・チャットセッション・進捗を扱うAPIを機能ごとに分割して実装。
認証・トークン検証
Firebase Authenticationで認証し、バックエンドはJWKS経由のトークン検証ミドルウェアを実装。
ロールベースアクセス制御
生徒/教師・管理者のロールに応じて、参照・更新できる範囲をサーバー側で制御。
チャットセッション管理
フラット構造からサブコレクション構造へスキーマ移行し、セッション単位のアクセスを扱いやすく設計。
教材連携AI回答
OpenAI Assistants APIのファイル添付・検索機能を用い、独自ベクトル検索基盤を持たずに教材参照を実現。
学習ダッシュボードの集計
進捗率(トピック進捗値の平均)、学習ストリーク(当日/前日判定)、クイズ統計の3指標を集計。


OUTCOMES
導入効果
- 教科・トピック・セクション・ユーザー・チャットセッション・進捗を扱うAPIを、機能別ルーター構成で設計・実装
- チャットセッションをサブコレクション構造へスキーマ移行し、セッション単位のアクセスを扱いやすく改善
- 独自の検索基盤を作らずAssistants APIを使う判断により、開発・運用コストを抑制
- 進捗率・学習ストリーク・クイズ統計の3指標を集計する学習ダッシュボードのロジックを実装
- ※定量的な成果数値は把握していないため記載していません。要件定義・画面設計・フロントエンド実装は担当範囲外です
STACK
技術構成
Python 3.12 / FastAPI 0.111機能別ルーター分割によるAPI設計Firebase Authentication / JWKS検証ミドルウェアFirebase Admin SDK 6Cloud Firestore(サブコレクション設計)Firebase StorageOpenAI Assistants API v2(ファイル添付・検索)ロールベースアクセス制御進捗率・学習ストリーク・クイズ統計の集計ロジックDatabutton
RELATED
関連プロジェクト
エンタープライズ × 生成AI × データベース連携
自然言語で社内データベースを分析・自動化するAIエージェント基盤
人材派遣 × 生成AI × 業務自動化SaaS
面談音声からスキルシート・推薦文を自動生成する人材派遣向けAI SaaS
再生医療・研究 × マルチテナントSaaS × AWS
実験管理・機器連携・凍結在庫・監査ログを統合した細胞培養管理SaaS
EC・Amazon運用 × Python × 順位トラッキング
広告順位と自然検索順位を自動取得するAmazon順位トラッキングツール
遊技場運営 × Python × データ収集自動化
パチンコ・スロット台データを自動収集しGoogleスプレッドシートへ連携するWindowsツール
SNS運用 × Instagram × 投稿自動化
複数アカウントのInstagramストーリー投稿を自動化する運用支援アプリ
EC・小売 × GAS × 発注管理自動化
SKU参照・発注推奨数計算・注文書作成を自動化する楽天市場の発注管理ツール
ゴルフ施設 × GAS × 地図データ収集
Google Apps ScriptとPlaces APIでゴルフ施設情報を自動収集するデータ基盤
LET’S CONNECT
生成AIを、
動く業務につなぎませんか。
AI適用可否の検証から、バックエンド開発、AWSインフラ構築、
リリース後の運用改善までご相談いただけます。