「どこが分からないか分からない」娘のために、数学AIチューターを作ってみた

はじめに: 「数学、どっからわからないのかわからない」

「数学、どっからわからないのかわからない」
冬休みが始まった娘が相談してきたのが、アプリ制作のきっかけでした。
状況を聞くと、「どこから分からないか分からない」、授業中地蔵状態とのこと。

(あれ? これはちょっとまずいんじゃないか?)

学校以外で、わからないところを探し出し、それに対応してくれるような教育施設というと――
家庭教師か個別塾くらいしか見当たらない。
冬期講習を探し、個別塾の相場を調べたところ、個別指導は月7万円。
2週間で効果があるか? そもそももう冬休み講習に間に合わない!

ところで私はここしばらく業務でAIの相手をずっとしたので、ふとひらめきました。

「数学AIチューター、冬休みで作ろ」

AIチューターを作る

わざわざエージェントAI自作? Gemini3Proあたりで十分じゃん、と思うかもしれませんが。あまいのです。

「何が分からないかわからない」生徒には、答えを教えるAIではなく、分からないところを見つけてくれるAIでないと学習の助けにならないのです。
娘の様子から、そう判断しました。

そこで作ることにしたのが「MathDesk」。
「いま自分がどこにいるか」「次に何をやればいいか」を可視化する数学AIチューターというコンセプト。
共通テストレベルに必要な数学スキルを、学習指導要領に基づく382個に分解し、依存関係つきのマップで可視化しています。

オンボーディング画面:津田先生と問診票

実際の依存チェーンから「数と式」分野を抜粋。✓ 習得済み、▶ 学習中、グレー=未挑戦

スキルマップ画面:382スキルを6科目に分類

対象ユーザー

主要機能

1. スキルマップ — 382スキルの依存グラフ

学習指導要領をベースに、数学I〜Cの全範囲を382個のスキルに分解してます。
項目は有名参考書を複数購入し「目次」を参考にしています。

各スキルには前提スキル(prerequisite)があります。

「二次不等式が解けない」→「因数分解が怪しいかも」→「実は展開の段階で曖昧」
 —— 弱点を、依存関係を辿って特定していく。

スキル詳細:学習開始・練習・習得判定の3アクション

数学は積木みたいだなと思ってまして。
「わからん」の上には、何か積もうとしても崩れるだけだなと。
(漢字ならどんな順番でも覚えられますが)

当たり前ですが、その当たり前をシステムで表現する必要があるなあとこの形にしました。

スキルマップの主眼は 「何ができて、何ができないか」を一目で把握できること
382スキルのうち、どこまでが緑(習得済み)で、どこからがグレー(未挑戦)か。
その境界線が、ユーザーの現在地です。
現状はリスト形式ですが、いずれ地図として眺められるUIにしたい。

2. AI問題生成 + 段階的マスタリー判定

各スキルに対してGemini 3 Pro(High) で4段階の難易度の問題を生成。

Level 難易度 内容
Lv.1 基礎確認 定義の理解、計算の正確さ
Lv.2 標準 概念を組み合わせた問題
Lv.3 応用 複数ステップ、条件整理が必要
Lv.4 発展 複数テクニックの複合、証明・一般化

練習画面:AI生成問題と回答入力

3. 答えではなく「答え方」を教えるコーチング

答えだけ教えても身につかない、類題になるとダメ、というのは数学苦手界隈あるある。
MathDeskは、「どう考えればいいか」を引き出す対話型コーチングがポリシー。

チャット画面:チェックリストで段階的に誘導

4. 入力は簡単に

ここまでの機能をデモ動画にまとめた。

とにかく時間がない — 開発もAIで、徹底的に自動化

本業は別にあるので、開発時間があまりとれません。
やれそうなことは、可能性が少しでもあれば全部AIにやらせる方針で進めました。

バーチャルプレイヤーテスト

締め切り1週間前、機能はひと通りできたけどUXテストをやる時間がない。テスターを集めるあてもない。
で、思いついたのがAIにユーザーを演じさせるという方法です。

Claude Codeのサブエージェントに架空の高校生ペルソナを与え、Playwright CLI経由で実際にアプリを操作させてみました。(従来なら固定シナリオで仕様を確認するだけ)

プロンプトサンプル

あなたは Misakiという高校2年生です。
- 進学校(偏差値65)に通うが、数学は苦手(定期テスト45点)
- 友達に「このアプリいいよ」と勧められてインストールした
- 面倒くさがり。つまらなければすぐやめる

このアプリを好きなように使ってみてください。
強制はありません。面白ければ続ける、つまらなければやめる、それでOKです。

ポイントは行動を規定しないこと。
テスト項目を渡すとチェックリスト消化になってしまいます。
ペルソナの属性だけ与えて自由に操作させることで、人間のユーザビリティテストに近い「予想外の行動」を観察可能に。

バーチャルプレイヤーで見つけた課題

UIの問題:

LLM設計:
こちらはもっと根深い。5体のペルソナを並列で走らせると、それぞれが詳細な操作ログを残すが、
横断的に読むことで、複数のペルソナの報告に共通点があることに気づけた。

1体だけなら見過ごしたが、これは「コンテキストが小さいときのLLMの会話パターン」。
それぞれ起票するのでなく、コンテキストウィンドウが1だったりしないか調査。

答えは違いましたがやはりその部分に問題が。
毎回のリクエストで、システムプロンプト約12,000トークン + 会話履歴の全量を丸ごと送信していたのです。
会話が10ターンを超えると、システムプロンプトと合わせて20,000トークン超え。
Geminiの注意力が会話の中間部分で低下する「Lost in the Middle」問題がわずか9ターンで発生。

プロンプト12,000トークンの内訳を調べ、必須なのはキャラクター定義と基本ルールだけと結論。
習得判定用のFew-shot(約4,500トークン)は通常会話で不要。
介入戦略の詳細な台本も、各1行で十分。

対策として、プロンプトをコアと状況別に分離。
通常会話時のシステムプロンプトを 12,000 → 3,500 トークンに圧縮。

バーチャルプレイヤー自体が優秀なこと以外に、操作ログも有用。
人間のテスターなら「AIが変だった」で終わるところを、
「Turn 9でコンテキスト喪失」「5体中3体で再現」という具体的なログで、
プロンプト設計の不具合とすぐに結論できた。

デモ動画もClaudeCodeスキルで作る

デモ動画も手動撮影ゼロ。
Playwrightでアプリを自動操作して画面録画。
VOICEVOXでナレーション音声を生成。
Remotion(Reactベースの動画フレームワーク)で合成してMP4出力。

台詞を書き換えてコマンドを叩くだけで撮り直しできるので、締め切り直前の修正にも対応できた。
(=このページの動画。この原稿書いてる横で自動で作られつつある)

人間が考え、AIが作る

このプロジェクトは休日一人開発。
開発エージェント(Claude Code)とアプリ内AI(Gemini)を道具として使い分けている。

私が考えたこと:

AIが実行したこと:

要するに、何を作るか・なぜ作るかは私がリクエストし、実装はAIという分担。

技術スタック

レイヤー 技術
フロントエンド React 18 + TypeScript + Vite
バックエンド Node.js + Express + TypeScript
データベース Cloud Firestore
AI(アプリ内) Gemini 3 Pro / Flash(Vertex AI 経由)
AI(開発) Claude Code(Claude Opus)
数式表示 KaTeX + MathLive
図形描画 JSXGraph
音声入力 Web Speech API
認証 Firebase Authentication
インフラ Google Cloud Run
Gemini APIの使い分け
用途 モデル 理由
対話コーチング Gemini 3 Pro 教育的推論の質が重要
問題生成(Lv.3-4) Gemini 3 Pro 応用・発展は質が重要
問題生成(Lv.1-2) Flash 基礎問は速度優先
回答評価 Gemini 3 Pro 部分点評価に推論力が必要
日次アドバイス Flash 軽量タスク

Google Cloud の活用

コスト — 開発中に使ったお金

GCP(Gemini API・Cloud Run)、開発AI(Claude Code)、BGM生成、参考書……全部ひっくるめても、個別塾の月謝1ヶ月分(7万円)にすら届かない

もちろん人間の先生の代わりにはならない。でも「どこが分からないか分からない」段階のナビゲーションなら、この費用感で十分に助けになれると思っている。

現在地と今後

現時点で動くもの:

まだできていないこと:

おわりに

娘に相談された12月末から、約7週間。
自分の冬休み期間で作ろうと思った段階では、「黄チャートの問題をAIに読ませて解説させる」だけの簡素なツールを想定していました。
でも作り始めてみると、「参考書がなくても学べるべきだ」「答えじゃなくて答え方を教えるべきだ」と要件がどんどん変わっていきました。(キャラづけやBGMは少し暴走したかも)

第4回 Agentic AI Hackathon with Google Cloud に出すと決め、「娘専用の自炊アプリ」から「他の人にも使える形」へとゴールが変わりました。
著作権をクリアに、参考書なしでも学べる設計にと大きくピボットしましたが、結果的にプロダクトとしてよいものになっていると思います。ハッカソンが強制的にプロダクト化を促したとも言えます。

「数学は積木」という当たり前を、見通しよく表現するアプリになれているといいなと思っています。
結局一義的には娘のために作ったアプリなので、ちゃんと使ってもらえることが現在の目標です。

MathDeskは一人の開発者がClaude Code + Gemini APIで開発した数学学習プラットフォームです。
第4回 Agentic AI Hackathon with Google Cloud に応募しています。