textbook機能のコンセプト - fjordllc/bootcamp GitHub Wiki
textbook機能のコンセプト
コンセプト
「わからないをその場で解消し、達成感を刻みながら、最後まで読みきれる教材体験」
従来の教科書(テキスト教材)は「読む人のモチベーション」に依存しすぎている。 bootcamp の textbook(教科書)機能は、AIと学習設計を組み合わせて 「続けられる」「つまずかない」「戻りやすい」 教材体験を提供する。
解決したい課題
教材を最後まで読みきれない原因は、主に以下の3つ。
- モチベーションが続かない — 進捗が見えない、達成感がない、再開が面倒
- わからない箇所でつまずく — 知らない用語、難しい概念で止まる
- 一人で学んでいる孤独感 — 質問できない、フィードバックがない
textbook機能は、この3つすべてに対処する。
主要機能
1. ピヨルド(伴走キャラクター)🐥
- 画面右下にピヨルドが常駐
- すべてのAI機能・伴走機能の窓口
- 普段は静かにいるだけ。邪魔しない
- 必要なときに吹き出しで話しかけてくる
ピヨルドの役割:
- 質問に答える — クリックするとチャットが開き、今読んでるセクションについて質問できる
- 褒める — セクション完了時に吹き出しで声をかける
- うながす — 久しぶりの訪問時に「おかえり!」、止まってるときに「ここ難しいよね」
- 難しい箇所を助ける — 止まってるとき「ここ難しいよね。やさしく説明する?」
2. 単語クリック説明(つまずき解消)
- わからない単語をクリック → tooltip(ツールチップ)で説明を表示
- 単語説明はキャッシュ(同じ単語 × 同じ教材は再利用)
- PC: クリック、モバイル: タップ
3. テキスト選択で質問(理解支援)
- 本文中のテキストを選択すると「ピヨルドに聞く」ボタンが出る
- 選択した箇所について質問できる
- どこについて聞いてるかが自動的にコンテキストになる
- AIの回答は現在のセクションに紐づく(脱線しない設計)
4. 読了位置の記録(継続支援)
- ブロック単位(段落・コード例など)でどこまで読んだかを自動追跡
- 「前回の続きから読む」で即再開
- Chapter・Section の進捗を視覚化
- 「あと○分でこのセクションが終わる」表示
5. やさしい伴走(モチベーション維持)
- 進んでいないとき → ピヨルドがやさしく再開を促す(罪悪感を与えない)
- 進捗があったとき → ピヨルドが行動を褒める(能力ではなく行動を)
- 「今日はここまででOK」をピヨルドが提案
- 止まっても戻りやすい空気を作る
良いうながしの例
- 「前回はここまで読めてるよ。次のセクションは5分くらいで読めるよ」
- 「今日は1セクションだけ進めてみない?」
- 「前に進めなくても大丈夫。要点だけ先に見る?」
良い褒めの例
- 「このセクションまで進めたのいいね!」
- 「難しい章なのにここまで来たのは大きいよ」
- 「前回より続きから再開できたのえらい!」
6. 理解度ミニチェック(定着支援)
- セクション末にAIが1〜3問のミニクイズを自動生成
- 回答チェックもピヨルドが行う
- 「テスト」ではなく「確認」— 自信をつけるためのもの
- 間違えたら該当箇所を読み直す導線を提示
7. AI執筆支援(教材制作)
- 人が章のテーマと学習目標を設定
- AIが章構成・セクション構成を提案
- AIが各セクションの初稿を生成(本文 + 例 + クイズ + 単語リスト)
- 人が編集・加筆して公開
- AIは「著者の代替」ではなく「編集アシスタント」
位置づけ
まずは bootcamp の1機能として構築
- bootcamp の中に
textbook(教科書)機能として実装する - 既存の受講生・教材で素早く価値検証する
- まずは Markdown 教材を対象にする
- よさそうなら将来的にサービスとして切り出す
この方針にする理由
- 既存ユーザーですぐ試せる
- 既存の教材資産をそのまま活かせる
- 課金・認証・テナント管理など、本質ではない実装を後回しにできる
- 本当に効く機能から検証できる
教材の構造
教材の構造はシステム側で固定する。自由なMarkdownではなく、固定された器にMarkdownを流し込む方式。
コンテンツ構造(著者が設計する)
Textbook(教科書)
└── Chapter(章)
└── Section(節)
英語の教科書・論文の標準的な階層(LaTeX: \chapter → \section)に準拠。
| レベル | 役割 | 例 |
|---|---|---|
| Textbook | 1つの教材全体 | 「Ruby入門」 |
| Chapter | 大きなテーマの区切り | 「第3章: メソッドと引数」 |
| Section | 1つの学習テーマ(3〜7分で読める) | 「3.1 メソッドとは何か」 |
読了トラッキング(システムが自動で行う)
コンテンツ構造と読了トラッキングは別の関心事として分離する。
- 構造 は著者が Chapter → Section で設計する
- 読了位置 はシステムが Section 内のブロック(段落・コード例等)単位で自動追跡する
- 進捗表示 は Section 単位で表示する(○/○ 完了)
- 褒め・うながし は Section 完了をトリガーにする
著者は書くことに集中し、読了追跡はシステムに任せる。Kindleと同じ考え方。
UI設計
セクション読書画面
┌──────────────────────────────────────┐
│ Chapter 3: メソッドと引数 │
│ Section 3.1: メソッドとは何か │
├──────────────────────────────────────┤
│ │
│ [教科書の本文が全幅で表示] │
│ │
│ メソッドとは、処理をまとめて │
│ 名前をつけたものです... │
│ │
│ クリック可能な用語に下線 │
│ テキスト選択 →「ピヨルドに聞く」 │
│ │
│ ┌──────────────┐ │
│ │ いい調子! │ │
│ └───┬──────────┘ │
│ 🐥 │
├──────────────────────────────────────┤
│ ← 前のセクション [3/12] 次へ → │
└──────────────────────────────────────┘
- 本文は全幅表示(サイドカラムなし)
- ピヨルドは右下に常駐
- モバイルでもそのまま動く
設計方針
AIを「脱線装置」にしない
- AIの回答は現在のセクションに強く紐づける
- 「このセクションの範囲で説明する」
- 答えの根拠となる段落をハイライトする
- 自由チャットすぎない設計
クイズは「評価」ではなく「伴走」
- 1問正解したら「OK、次いける」
- 間違えたら「この段落だけ読み直そう」
- 小さな達成感の連続を作る
「止まっても戻りやすい」設計
- 連続記録を脅しに使わない
- 「止まっても大丈夫」「ここから1歩だけ」
- 戻ってきたこと自体を前進として扱う
セクションは短く
- 1セクション = 1学習テーマ
- 3〜7分で読める量
- 短いほうがモチベーション維持に効く
実装フェーズ
Phase 1a(Hotwire化完了前に着手可能)
- DB + モデル — textbooks / chapters / sections / reading_progresses / term_explanations
- 管理画面 — 教科書・章・セクションのCRUD
- セクション読書画面 — Markdown表示(Slim + Stimulus)
- 読了追跡 — Stimulus + Intersection Observer → API PATCH
- 教科書トップ — 章一覧 + 進捗表示
- ピヨルド常駐UI — 右下に表示 + 吹き出し(Stimulus)
- 伴走メッセージ — セクション完了時の褒め、再開時のうながし(ルールベース)
- 単語クリック説明 — AI生成 + キャッシュ(短い回答なのでストリーミング不要)
Phase 1b(Hotwire化完了後)
- ピヨルドに質問(AIチャット) — ruby_llm の ai chat generator + Turbo Streams
- テキスト選択で質問 — 選択箇所をコンテキストにしてAIに質問
Phase 2
- ミニクイズ自動生成・回答チェック
- AI執筆支援(初稿生成)
- 学習ダッシュボード(進捗の視覚化)
- つまずきやすい箇所の分析
Phase 3
- 学習履歴に基づくAI提案(「今日はここまで」「ここを復習」)
- 苦手箇所の検出と再説明
- 難しい段落の自動言い換え
- 通知(アプリ内、opt-inで外部通知)
ターゲットユーザー
読者(学習者)
- bootcamp の受講生
- 特に、教材を読み始めても途中で止まりやすい人
著者(教材制作者)
- bootcamp のメンター・管理者
- 教材を作成・改善する運営メンバー
機能名
textbook- 画面上の表示名は「教科書」
次にやること
- bootcamp の React → Hotwire 移行状況を確認
- Phase 1a の実装開始(DB + モデル + 管理画面 + 読書画面)
- ワイヤーフレーム作成
- Phase 1b は Hotwire 化完了後に着手