2.プロンプトと学習活用
学習目標
- 効果的なプロンプトの原則を使って出力の精度を上げられる
- 期待通りの出力が得られないとき、プロンプトを改善できる
- 生成AIを学習に活かすための使い方を選べる
1. 効果的なプロンプト
Section titled “1. 効果的なプロンプト”AIの出力は、プロンプトの書き方によって大きく変わります。「JavaScript について教えて」と「JavaScript の変数宣言について、let と const の違いをコード例とともに説明してください」では、同じ AI に投げても得られる回答の質がまったく違います。
1-1. 具体的な指示
Section titled “1-1. 具体的な指示”曖昧な指示は曖昧な出力を生みます。何について、どこまで知りたいかを具体的に書きます。
JavaScript について教えてJavaScript の変数宣言について、let と const の違いをコード例とともに説明してください具体的なプロンプトにすると、AI は意図を絞り込めるので、知りたいことに沿った回答が返ってきます。
1-2. 肯定形での指示
Section titled “1-2. 肯定形での指示”「〜しないで」と禁止を並べるより、「〜して」と望む形を伝えるほうが、出力をコントロールしやすくなります。
Markdown を使わないでくださいプレーンテキストで、段落で区切って出力してください1-3. 出力例の提示
Section titled “1-3. 出力例の提示”期待する出力の形を例で示すと、AI はそれに近い形式で回答します。
以下の形式で用語を説明してください。
例:【用語】addEventListener【説明】イベントリスナーを登録するメソッド【使用例】element.addEventListener('click', handler)1-4. 制約の明示
Section titled “1-4. 制約の明示”出力の長さや形式を具体的に指定すると、回答のばらつきを抑えられます。
- 「100 文字以内で」
- 「箇条書きで 3 点」
- 「初心者にもわかる言葉で」
- 「コード例を 1 つだけ含めて」
1-5. プロンプトの構造化
Section titled “1-5. プロンプトの構造化”複数の情報を伝えるときは、見出しで区切ると AI が誤解しにくくなります。
【背景】私は JavaScript の初学者で、変数とデータ型を学んだところです。
【質問】for 文と while 文の違いを説明してください。
【出力形式】それぞれ 1 文で説明し、コード例を添えてください。1-6. 段階的な指示
Section titled “1-6. 段階的な指示”複雑なタスクは、一度にすべてを依頼せず段階的に進めます。
1 回目: このコードの処理内容を説明してください2 回目: その中でバグになりそうな箇所を指摘してください3 回目: その修正案を提示してください各ステップで AI の出力を確認し、必要に応じて補足や軌道修正をしながら進められます。
2. プロンプトの改善
Section titled “2. プロンプトの改善”最初のプロンプトで期待通りの出力が得られないことはよくあります。出力を見て原因を推測し、プロンプトを修正するサイクルを回します。
2-1. よくある問題と改善
Section titled “2-1. よくある問題と改善”プロンプトの不備でよく遭遇する症状と改善は次の通りです。
| 症状 | 改善 |
|---|---|
| 情報が多すぎる | 範囲を絞る制約(「〇〇に絞って」「3 点で」)を追加 |
| 専門用語が多い | 「初心者向けに」と読者を明記 |
| 形式が期待と違う | 出力形式を指定、または例を示す |
| 的外れな回答 | 背景や目的を具体的に書く |
| コードが動かない | 使用言語・バージョン・環境を明記 |
複数の症状が同時に起きていることもあります。一度の修正で改善しなければ、別の原因を疑って試します。
2-2. 改善サイクル
Section titled “2-2. 改善サイクル”実際の修正は一度で完璧にならないことが多く、次のサイクルを繰り返します。
- プロンプトを入力する
- 出力を確認する
- 期待との差を特定する
- 原因を推測する
- プロンプトを修正して再実行する
具体例で 1 サイクルを追ってみます。「JavaScript で配列を宣言する方法だけを知りたい」とします。
- 「JavaScript の配列について教えて」と入力する
- 配列の宣言、追加・削除、
map/filterのメソッドまで広範囲な説明が返ってくる - 知りたかった「配列の宣言方法」に対して情報が多すぎることに気づく
- 範囲を限定していなかったのが原因と推測する
- 「JavaScript で配列を宣言する方法を、コード例とともに教えて」に書き直す
このサイクルを 2〜3 回繰り返すと、多くの場合は期待に近い出力が得られます。
3. 学習への活用
Section titled “3. 学習への活用”AI を使うとタスクは速く終わります。同じ作業を、単に効率化のために使うか、自分の理解を深めるツールとして使うかは、使い方の選択で変わります。
3-1. 学習効果への影響
Section titled “3-1. 学習効果への影響”Anthropic の研究(2026年1月公開)では、AI 支援を受けながら新しいライブラリを学んだ開発者は、手動でコーディングした開発者と比べて理解度テストのスコアが 17% 低く、特にデバッグ能力の差が大きいという結果が出ています。一方で、AI に概念的な質問をした参加者は学習効果を維持しており、AI の使い方によって結果が大きく変わることも示されています。
参考: How AI assistance impacts the formation of coding skills
3-2. スキル習得を意識した使い方
Section titled “3-2. スキル習得を意識した使い方”| パターン | 行動 |
|---|---|
| 理解を確認する | コード生成後に「なぜこう書いたのか」を質問する |
| 説明を求める | 「このコードを 1 行ずつ説明して」と依頼する |
| 概念を学ぶ | 「この処理の背景にある概念を教えて」と質問する |
| 自分で考えてから使う | まず自分で仮説を立て、それを AI で検証する |