教材ページにAIチャットを埋め込んだら、生徒の「わからない」が変わるかもしれない

教材ページにAIチャットを埋め込んだら、生徒の「わからない」が変わるかもしれない

この記事でわかること

  • なぜ「拙い質問」がうまく機能しないのか
  • プリセットプロンプトという考え方
  • Next.js + Claude API で作るイメージ
  • 実装ロードマップ(5ステップ)
  • 使ってみたいシステムプロンプトの例

「わかりません」と打てない生徒たち

教室でよく起きること。

生徒:「あの、なんか、うまくいかなくて」
先生:「何が?」
生徒:「えっと、ここの、なんか、ボタン?」
先生:「どこのボタン?」

言語化が苦手な生徒は、AIにも同じような質問をする。

生徒 → AIチャット:「わかりません」
AI:「何がわからないか教えてください」
生徒:「全部です」
AI:「もう少し具体的に…」

これは生徒の問題ではなく、AIへの渡し方の問題だと思う。


プリセットプロンプトという考え方

ここで試してみたいのが、教材ページごとにシステムプロンプトをあらかじめ設定しておく仕組み。

イメージはこう。

教材ページ(例:四則演算の単元)
  ↓
ページに埋め込まれたチャット欄を開く
  ↓
裏側では「あなたは小学4年生向けの算数の先生です。
          今は四則演算の単元を学習しています。
          専門用語は使わず、身近な例えで説明してください」
          というプロンプトが自動でセットされている
  ↓
生徒が「わかんない」と打っても
AI がその文脈から引き取って丁寧に答えてくれる

生徒は「わかんない」でいい。その「わかんない」を正確な問いに変えるのが、プリセットプロンプトの仕事。


なぜ Next.js で作るのか

最初に思い浮かんだのは Laravel だった。でも、こういう構造のものは Next.js の方が相性がいい。

Laravel の場合:
  フロント(HTML/CSS/JS)と バックエンド(PHP)を
  別々に組み立てる必要がある
  → チャットのリアルタイム性を出すのが手間

Next.js の場合:
  フロントとAPIが同じプロジェクト内に共存
  → /api/chat というエンドポイントをすぐ作れる
  → Claude API へのアクセスもサーバーサイドで完結
  → Vercel にデプロイすれば公開も即日

あと、チャットUIのコンポーネントを React で作ると自然に動くものができる。教材ページ自体も React で管理できる。全体の一貫性が高い。


実装ロードマップ(5ステップ)

Step 1:最小チャットを動かす(1〜2日)

まず Next.js プロジェクトを作って、Claude API と繋がる /api/chat を作る。

やること:
・npx create-next-app@latest で雛形を作る
・.env.local に ANTHROPIC_API_KEY を設定
・/api/chat/route.ts を作って Claude API を呼ぶ
・フロントにチャット欄を置いて送受信を確認

この時点で「入力した文字が Claude に届いて、返事が来る」状態を作る。


Step 2:プリセットプロンプトを差し込む(1日)

ここが核心。ページごとに systemPrompt を定義して、API 呼び出し時に渡す。

// 教材ページ側
const systemPrompt = `
あなたは小学4年生向けの算数の先生です。
今は「四則演算」の単元を学んでいます。
難しい言葉は使わず、おかし屋さんや遠足の例えを使って説明してください。
生徒が「わからない」と言ったときは、
まず「どこまではわかった?」と優しく聞いてください。
`

// API ルートに渡す
const response = await claude.messages.create({
  model: 'claude-sonnet-4-20250514',
  system: systemPrompt,
  messages: conversation,
})

このプロンプトをページの種類ごとに用意するだけで、チャットの性格が変わる。


Step 3:教材ページに組み込む(2〜3日)

チャットコンポーネントを汎用化して、どの教材ページにも貼れるようにする。

// 使い方イメージ
<LessonChat
  unitTitle="四則演算"
  gradeLevel="小学4年生"
  systemPrompt={arithmeticPrompt}
/>

ページの内容に応じて systemPrompt を差し替えるだけで、専用の AI 先生が現れる。


Step 4:教師側の管理画面を作る(オプション)

授業前に「今日のプロンプト」を設定できる画面。

教師がログインして:
・今日の単元を選ぶ
・補足事項(例:今日は掛け算の筆算まで進んでいる)を追記
・生成されたプロンプトを確認して保存

これがあると、毎回コードを触らなくても授業に合わせて調整できる。


Step 5:会話ログを振り返る(オプション)

生徒がどんな質問をしたかを教師が後から見られる仕組み。

「この生徒は "掛け算の意味" について3回質問していた」
「このページの滞在時間が長いクラスがある」

授業改善のヒントになる。


システムプロンプト、こう書いてみたい

汎用的なテンプレートとして、こんな構成を想定している。

あなたは [教科・科目] の先生です。
対象は [学年・レベル] の生徒です。
現在学んでいる単元は [単元名] です。

【応答のルール】
・専門用語はなるべく使わず、[具体的な言葉の制約] で話してください
・生徒が「わからない」と言ったときは、まず [問い返しの仕方] を聞いてください
・正解を直接教えるのではなく、[誘導のスタイル] で導いてください
・励ましの言葉を [頻度・タイミング] で入れてください

【この単元の範囲】
[今回の授業でカバーしている内容を箇条書きで]

【範囲外の話題が来たら】
「今日はここまでを一緒に考えましょう」と優しく引き戻してください。

このテンプレートに単元の情報を入れていくだけで、その授業専用の AI 先生ができる。


まとめ:生徒の「拙い言葉」を受け止める仕組み

生徒に「正確に質問しろ」と言うのは難しい。でも AI に「この文脈で来る質問はだいたいこういう意図だ」と教えておくことはできる。

プリセットプロンプトの役割:

生徒の拙い言葉
  ↓
AI がシステムプロンプトの文脈から意図を補完
  ↓
的確な、その単元に合った回答
  ↓
生徒の満足度が上がる

これが機能すれば、AI チャットは「答えを教えてくれる機械」ではなく「その授業に合わせた伴走者」になれる気がする。


あとがき

まだ作っていない。でも、作ってみたい。

Claude Code と一緒に Step 1 から始めれば、動くものは数日でできるはず。

まずは自分が使う教材の1ページに、試しに入れてみるところから始めようと思っている。


ロードマップ(一覧)

Step 内容 目安
1 Next.js + Claude API 最小チャット 1〜2日
2 プリセットプロンプトの差し込み 1日
3 教材ページへの組み込み 2〜3日
4 教師用管理画面(オプション) 3〜5日
5 会話ログの振り返り(オプション) 3〜5日

関連記事

ブログ

BLOG

PAGE TOP