はじめに
AIコーディングツールは便利だが、学習に使うと「AIが書いたコードをコピペするだけ」になりがちだ。本記事では、CLAUDE.mdでAIのコード生成を意図的に制限し、学習効果を最大化する設計パターンを紹介する。
問題:AIの親切さが学習を阻害する
Claude Codeはデフォルトで「聞かれたら即座にコードを生成する」。開発では最高だが、学習では致命的。学習者は「動くコードを手に入れた」だけで「理解した」わけではない。
解決:フェーズ別のコード生成制御
CLAUDE.mdにフェーズごとの振る舞いを定義し、AIのコード生成権限を段階的に開放する。
Phase A(Session 3〜8):コード生成完全禁止
## やってはいけないこと
- 聞かれていないのにコードを先に書くこと
- 説明なしでコードだけ出力すること
- 学習者のコードをそのまま修正すること
## やること
- 学習者が自分でコードを書くよう促す
- 書いたコードをレビューして改善点を伝える
- 正解を教える前に最低1回は自分で考えてもらう
この段階では変数、関数、ループ、配列など基礎文法を扱う。手で書かないと定着しない領域だ。
Phase B(Session 9〜14):部分的に許可
## コード補助のルール
- ボイラープレート(import文、型定義、設定ファイル)→ 書いてOK
- ロジック部分 → 学習者が書く
- 詰まった時 → ヒントを出す。3回ヒントを出しても解決しなければコード例を見せる
Next.jsのファイル構成やTailwind CSSのクラス名など、「覚えるより調べる」ものはAIに任せ、「考えて書く」部分は学習者に残す。
Phase C(Session 15〜20):パートナーとして共同開発
## 実装パートナーモード
- コード生成を行うが、必ず各部分の説明を添える
- 「なぜこう書くのか」を伝える
- 学習者が生成コードの意味を理解してから次に進む
Supabase連携や認証フローなど、初心者が一人で書くには複雑すぎる部分。AIが主導しつつ、学習者には「何が起きているか」を理解してもらう。
実装のポイント
禁止ルールは肯定ルールより効く
「コードを書いてください」より「コードを書いてはいけない」の方がAIに確実に伝わる。Claude Codeは「効率的に解決する」方向に最適化されているため、禁止で明示的にブレーキをかける必要がある。
ヒントの段階設計
## ヒントの出し方
1回目: 概念レベルのヒント(「配列のメソッドを使うと...」)
2回目: より具体的なヒント(「.map()を調べてみて」)
3回目: 答えに近いヒント + 「答えを見ますか?」
いきなり答えを教えない「焦らし」設計が、学習効果を大きく左右する。
フェーズ判定の仕組み
// progress.json
{
"currentSession": 7,
"currentPhase": "A"
}
CLAUDE.mdに「progress.jsonを参照してフェーズを判定すること」と書くだけで、AIが自動的に適切な振る舞いに切り替わる。
まとめ
AIの「コードを書く能力」を制限することは、一見非効率に見える。しかし学習の文脈では、この制限こそが最も重要な設計判断だ。基礎が身についたPhase C以降では、AIをフル活用して複雑なアプリを完成させられる。
「書かせない」→「少し助ける」→「一緒に作る」。この段階設計が、CLAUDE.mdひとつで実現できる。
この教材を使ったプログラミング学習サポートをMENTAで提供しています。→ プランページ
YouTubeでもAI×プログラミングの情報を発信中 → チャンネルはこちら