SFC Dream Academy v2 RAG家庭教師システム 完全要件定義書

SFC Dream Academy v2完全要件定義書 – RAG家庭教師システム

SFC Dream Academy v2

RAG家庭教師システム 完全要件定義書

苺花専用 – 小論文マスターへの道

書籍RAG統合 AI家庭教師 ゲーミフィケーション 音声対応
プロジェクト概要

最終目標

10代女子(苺花)が1年間で慶應SFC小論文をマスターする

継続の秘訣

楽しいゲーミフィケーション + 実力向上実感

学習方法

書籍RAGによる本格指導 + キャラクター対話

利用環境

スマホ縦持ち最適化、いつでもどこでも学習

システムアーキテクチャ v2
RAG家庭教師システム構成図

フロントエンド

  • • PWA (Progressive Web App)
  • • スマホ最適化UI
  • • 音声入力対応
  • • リアルタイム同期
  • • オフライン対応

バックエンド

  • • Flask/FastAPI
  • • RAGエンジン
  • • AI API統合層
  • • 学習進捗分析
  • • 通知システム

データ層

  • • 書籍RAGデータベース
  • • ユーザー学習履歴
  • • 小論文添削DB
  • • ゲーミフィケーションDB
  • • 分析データ
モジュール構成 v2

1. RAG家庭教師エンジン

  • • 書籍データ検索・抽出
  • • 個別指導プラン生成
  • • リアルタイム添削
  • • 弱点分析・補強提案

2. クイズ・ゲームエンジン

  • • K-POP/SNS/メイククイズ
  • • 段階的難易度調整
  • • インタラクティブ解説
  • • 書籍該当箇所リンク

3. キャラクター対話システム

  • • 段階的関係構築
  • • 学習モチベーション維持
  • • 個別励ましメッセージ
  • • SFC夢誘導機能

4. 音声・テキスト入力システム

  • • 音声認識・テキスト化
  • • 段階的文字数誘導
  • • リアルタイムフィードバック
  • • 発話分析機能

5. 学習進捗・分析システム

  • • 能力値可視化
  • • 学習パターン分析
  • • 成長予測機能
  • • カスタム学習プラン

6. 通知・リマインダーシステム

  • • 個別通知時間設定
  • • 学習習慣形成支援
  • • プッシュ通知
  • • 学習リマインド

7. AI統合システム

  • • ChatGPT API統合
  • • Gemini API統合
  • • API切り替え機能
  • • コスト最適化

8. ソーシャル・共有システム

  • • 学習成果共有
  • • 友達招待機能
  • • 競争要素
  • • 励まし合い機能
段階的学習フロー設計

Phase 1: 興味フック期(1-2ヶ月)

🎯 目標

  • • アプリ習慣化
  • • 基礎思考力向上
  • • キャラクターとの関係構築

📱 主な機能

  • • K-POP/SNS/メイククイズ
  • • 4択 → 簡単な記述へ
  • • 書籍該当箇所リンク
  • • キャラクター励まし

Phase 2: 橋渡し期(3-6ヶ月)

🎯 目標

  • • 論理的思考力養成
  • • 文章表現力向上
  • • 社会問題への関心

📱 主な機能

  • • 社会現象分析クイズ
  • • 300字程度の意見文
  • • RAG添削フィードバック
  • • 音声入力練習

Phase 3: 学術化期(7-12ヶ月)

🎯 目標

  • • SFC小論文完全対応
  • • 800字論述力完成
  • • 独創的思考力獲得

📱 主な機能

  • • SFC過去問演習
  • • 本格小論文指導
  • • ChatGPT/Gemini添削
  • • 個別弱点補強
RAGシステム詳細設計

書籍データ構造

項目 詳細
書籍ID 一意識別子
書籍名 タイトル・著者情報
章・節 階層構造管理
ページ 該当ページ番号
内容 テキスト化データ
カテゴリ 分野・レベル分類
キーワード 検索用タグ

RAG検索戦略

段階的検索: レベル別書籍優先順位
意味検索: ベクトル類似度による関連情報抽出
構造化検索: 章節構造を活用した体系的学習
個別最適化: 学習履歴に基づく推薦システム

RAGパイプライン処理フロー

質問受付
書籍検索
AI生成
AI API統合設計

ChatGPT統合

利用場面: 本格小論文添削・高度な対話
モデル: GPT-4 / GPT-3.5-turbo
特徴: 高精度添削、詳細フィードバック
コスト: 高精度・高コスト

Gemini統合

利用場面: 日常会話・基礎解説
モデル: Gemini Pro / Gemini Flash
特徴: 高速レスポンス、自然な対話
コスト: 標準精度・低コスト

API使い分け戦略

機能 優先API 理由
日常キャラクター対話 Gemini 高速・低コスト・自然な会話
クイズ解説生成 Gemini リアルタイム性重視
小論文添削 ChatGPT 高精度・詳細分析必要
学習プラン生成 ChatGPT 論理的構成力必要
緊急時バックアップ 両方対応 サービス継続性確保
実装サンプルコード

RAG家庭教師エンジン

class RAGTutorEngine: def __init__(self, books_db, openai_key, google_key): self.books_db = books_db self.openai_client = OpenAI(api_key=openai_key) self.gemini_client = genai.configure(api_key=google_key) self.user_level_tracker = UserLevelTracker() def generate_personalized_lesson(self, user_id, topic): # ユーザーレベル取得 user_level = self.user_level_tracker.get_level(user_id) # 関連書籍情報をRAGで検索 relevant_books = self.books_db.search_by_topic_and_level( topic=topic, user_level=user_level ) # AIに個別レッスン生成を依頼 lesson_content = self.generate_lesson_with_ai( topic=topic, book_references=relevant_books, user_level=user_level, api=”gemini” # 日常レッスンはGemini使用 ) return { “lesson”: lesson_content, “references”: relevant_books, “level”: user_level, “next_steps”: self.suggest_next_steps(user_id, topic) } def correct_essay(self, user_id, essay_text): # 小論文添削はChatGPT使用(高精度) user_history = self.get_user_writing_history(user_id) correction = self.openai_client.chat.completions.create( model=”gpt-4″, messages=[ {“role”: “system”, “content”: self.get_correction_prompt()}, {“role”: “user”, “content”: f”添削対象: {essay_text}\n過去履歴: {user_history}”} ] ) return { “corrected_text”: correction.choices[0].message.content, “improvement_points”: self.extract_improvement_points(correction), “next_practice”: self.suggest_practice(user_id, correction) }

段階的クイズシステム

class AdaptiveQuizSystem: def __init__(self, rag_engine): self.rag_engine = rag_engine self.difficulty_adjuster = DifficultyAdjuster() def generate_quiz(self, user_id, topic_category): user_progress = self.get_user_progress(user_id) # Phase判定 if user_progress.phase == 1: return self.generate_kpop_style_quiz(topic_category) elif user_progress.phase == 2: return self.generate_analysis_quiz(topic_category) else: return self.generate_sfc_style_quiz(topic_category) def generate_kpop_style_quiz(self, topic): # K-POP風の楽しいクイズ生成 quiz_data = { “question”: “NewJeansが世界で人気な理由で最も重要なのは?”, “options”: [ “Y2Kコンセプトの新しさ”, “メンバーの個性”, “音楽的完成度”, “マーケティング戦略” ], “correct_answer”: 0, “explanation_with_books”: self.get_book_based_explanation(topic), “next_level_hint”: “この現象を社会学的に分析してみよう!” } return quiz_data def process_answer(self, user_id, quiz_id, answer, user_input_text=””): # 回答処理 + 段階的文字数誘導 result = self.check_answer(quiz_id, answer) # 文字数誘導ロジック progress = self.get_user_progress(user_id) if progress.week <= 2: input_prompt = "感想があれば一言でも♪" elif progress.week <= 8: input_prompt = "理由を50字程度で教えて♪" else: input_prompt = "あなたの分析を200字で聞かせて♪" return { "is_correct": result["correct"], "explanation": result["explanation"], "book_references": result["references"], "input_prompt": input_prompt, "character_response": self.generate_character_response(user_id, result) }

音声・テキスト入力システム

class VoiceTextInputSystem: def __init__(self, speech_recognition_api): self.speech_api = speech_recognition_api self.text_analyzer = TextAnalyzer() def process_voice_input(self, audio_data, user_id): # 音声をテキストに変換 transcribed_text = self.speech_api.transcribe(audio_data) # テキスト分析 analysis = self.text_analyzer.analyze(transcribed_text) # AI応答生成(Geminiで高速応答) response = self.generate_ai_response(user_id, transcribed_text, analysis) return { “transcribed_text”: transcribed_text, “analysis”: analysis, “ai_response”: response, “encouragement”: self.generate_encouragement(user_id, analysis), “next_suggestion”: self.suggest_next_input(user_id, analysis) } def generate_encouragement(self, user_id, text_analysis): # 苺花専用の励ましメッセージ生成 user_profile = self.get_user_profile(user_id) encouragement_prompts = { “beginner”: “すごいね!考えがまとまってきてる♪”, “intermediate”: “さすが苺花!分析力が上がってる!”, “advanced”: “その視点、SFC生みたい!素晴らしい♪” } return encouragement_prompts.get(user_profile.level, “いいね♪”) # フロントエンド JavaScript class VoiceRecorder { constructor() { this.mediaRecorder = null; this.audioChunks = []; } async startRecording() { const stream = await navigator.mediaDevices.getUserMedia({ audio: true }); this.mediaRecorder = new MediaRecorder(stream); this.mediaRecorder.ondataavailable = (event) => { this.audioChunks.push(event.data); }; this.mediaRecorder.onstop = () => { const audioBlob = new Blob(this.audioChunks, { type: ‘audio/wav’ }); this.sendToServer(audioBlob); }; this.mediaRecorder.start(); this.showRecordingUI(); } stopRecording() { this.mediaRecorder.stop(); this.hideRecordingUI(); } }
実装フェーズ計画

開発スケジュール

Week 1-2
基本UI + クイズシステム
Week 3-4
RAGシステム + 書籍統合
Week 5-6
AI API統合 + キャラクター
Week 7-8
音声入力 + 通知システム
Week 9-10
テスト + 最適化

優先度別実装順序

🥇 最優先: 基本クイズ + RAG検索
🥈 高優先: キャラクター対話 + AI統合
🥉 中優先: 音声入力 + 進捗追跡
🏅 低優先: ソーシャル機能 + 高度分析
技術スタック詳細

フロントエンド

  • HTML5/CSS3: PWA対応
  • JavaScript ES6+: モダン機能活用
  • Tailwind CSS: レスポンシブ設計
  • Web Speech API: 音声認識
  • Service Worker: オフライン対応

バックエンド

  • Python 3.9+: メイン言語
  • FastAPI: 高速API開発
  • LangChain: RAG実装
  • OpenAI API: ChatGPT統合
  • Google AI: Gemini統合

データベース

  • SQLite: ユーザーデータ
  • ChromaDB: ベクトル検索
  • Redis: セッション管理
  • PDF処理: PyPDF2/pdfplumber
  • テキスト処理: NLTK/spaCy
データ分析・改善サイクル

学習効果測定

  • • 回答正答率の推移
  • • 文章力スコアの変化
  • • 継続率・離脱率分析
  • • 機能別利用率

継続的改善

  • • A/Bテストによる機能最適化
  • • ユーザーフィードバック収集
  • • AI応答品質の定期評価
  • • 新機能の効果測定
セキュリティ・プライバシー

データ保護

  • • 学習データの暗号化保存
  • • API通信のHTTPS化
  • • 個人情報の最小限収集
  • • データ削除権の保証
  • • 定期的なセキュリティ監査

プライバシー配慮

  • • 音声データの即座削除
  • • 学習履歴の匿名化
  • • 第三者提供の完全排除
  • • 透明性のあるデータ利用
  • • ユーザー制御可能な設定
よくある質問・トラブルシューティング

Q: Claude Codeでの開発が詰まった場合は?

• モジュール単位で小さく分割して依頼
• 具体的なエラーメッセージを共有
• 段階的な実装を心がける

Q: RAG検索が期待通りに動かない場合は?

• 書籍データの前処理を見直す
• 検索クエリの最適化
• ベクトル化パラメータの調整

Q: API利用コストを抑えたい場合は?

• Geminiを優先利用
• レスポンスのキャッシュ活用
• バッチ処理での効率化

🌸 苺花のSFC Dream Academy v2 🌸

RAG家庭教師システムで、1年後にはSFC小論文マスター!

楽しい学習 確実な成長 夢の実現

この要件定義書をClaude Codeに渡して、素晴らしいアプリを作り上げよう!


投稿日

カテゴリー:

投稿者:

タグ:

コメント

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です