- AI ⚙️
プログラミング学習での生成AIの使い方 答えを聞かないプロンプト集
プログラミング学習で生成AIを使うときは、答えのコードを出させるのではなく、「次の一歩のヒント」「自分の説明への採点」「確認問題」の3つを出させると、理解が自分の中に残ります。 完成したコードを受け取って動かすだけだと、その場では進みますが、次に同じ形の課題が出たときに手が動きません。
この記事では、ヒントを3段階で小出しにさせる、自分の説明を採点させる、穴埋めと予想問題を作らせる、といったプロンプトの全文を、学習の段階別(文法を覚える → 小さな課題を解く → 他人のコードを読む → 自作する)に並べました。最初に貼るだけでAIを家庭教師役に固定する指示文、答えを聞いてよい場面と聞かない場面の判断表、各社公式の学習用モードとの違い、週ごとの振り返り用プロンプトと学習ログのひな形も載せています。コードの解説を頼む方法やエラーの聞き方そのものではなく、学ぶ人の進め方に絞っています。
確認環境:Ubuntu 24.04.4、Python 3.11.15(確認日 2026-10-05)。プロンプトの題材にしたコードの出力とエラー文、学習ログを集計するコードの出力は、この環境で実行した結果です(ファイルのパスは /home/taro/study に置き換えています)。学習用モードの説明は、同日に開いた OpenAI・Anthropic・Google の公式ページの記載によります。この記事はテンプレート集で、AIの回答例は載せていません。
この記事の結論
- AIに出させるのはヒント・採点・確認問題。完成したコードは自分で書く
- ヒントは3段階(考え方 → 使う道具 → 骨組み)で、1回に1段だけもらう
- 理解できたかは、自分の言葉で説明してAIに採点させると分かる
- 環境構築のつまずきと英語のエラー文の意味は答えを聞いてよい。アルゴリズムの組み立てとバグの原因は先に自分で考える
- 会話の最初に家庭教師役の指示文を貼ると、毎回頼み直さなくて済む
学習段階別プロンプトの早見表
| 段階 | 目標 | AIに出させるもの | 使うプロンプト | 自分ですること |
|---|---|---|---|---|
| 1. 文法を覚える | 書き方と動きを結びつける | 穴埋め問題、出力の予想問題 | 穴埋め問題、予想問題、説明の採点 | 実行する前に答えを書く |
| 2. 小さな課題を解く | 自分で手順を組み立てる | 3段階のヒント、方針への採点、テスト用の入力 | 3段階ヒント、方針の採点、テストケース | コードを最後まで自分で書く |
| 3. 他人のコードを読む | 読んで動きを説明できる | 自分の説明への添削、行ごとの予想問題 | 読解の添削、値を追う問題 | 先に自分の説明を書く |
| 4. 自作する | 作るものを決めて形にする | 設計への質問、指摘の場所だけのレビュー、次の課題 | 質問だけ返す相談、場所だけレビュー | 設計と修正を自分で決める |
| 毎週 | 学び方を見直す | 学習ログの整理、来週の課題の案 | 週ごとの振り返り | ログを付ける |
本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。
(記載例)出典:株式会社RJC「プログラミング学習での生成AIの使い方 答えを聞かないプロンプト集」
最初に貼る:家庭教師役に固定する指示文
会話の最初にこの指示文を貼ると、その会話の間、AIは答えを先に出さない進め方を続けます。かっこの中を自分に合わせて書き換えてください。
<role>
あなたはプログラミングの家庭教師です。私が自分で考えて解けるようになることを目標に、手助けをしてください。
</role>
<learner>
- 学んでいる言語:(例:Python 3.11)
- いまの段階:(例:for と if は書ける。関数と辞書を学んでいる)
- 目標:(例:小さなコマンドラインのツールを自分で作れるようになる)
</learner>
<rules>
1. 完成したコードや、課題の答えになるコードは出さない。私が「答えを見せて」と書いたときだけ出す。
2. 私が課題やコードを貼ったら、最初に「どこまで考えたか」「何を試したか」を1つだけ質問する。
3. ヒントは3段階で、1回の返事で1段だけ出す。私が「次のヒント」と書くまで先に進まない。
- ヒント1:考え方の方向(何に注目するか)。コードや関数名は出さない。
- ヒント2:使う道具(文法、関数、データ構造の名前)。書き方の例は出さない。
- ヒント3:骨組み(日本語の手順、または中身を空欄にしたコード)。空欄は私が埋める。
4. 私がコードを書いたら、正しいかどうかを先に言わず、「このコードは何をしますか」と説明を求める。
5. 私の説明には、合っている点・足りない点・言い換えるとよい点を分けて返す。5点満点で採点する。
6. 説明は短く。1回の返事は、質問1つ、またはヒント1つ、または採点1つにする。
7. 専門用語を使うときは、初めて出たときに1文で説明する。
8. 環境構築のつまずきと、エラー文の意味の質問には、すぐに答えてよい。
</rules>
<start>
準備ができたら、「今日は何に取り組みますか」とだけ聞いてください。
</start>
この形は、公式ドキュメントのプロンプト指針に沿っています。Anthropic のガイドは、役割を1文で設定すること、指示・文脈・入力をタグで分けること、してほしくないことよりしてほしいことを書くことを勧めています。OpenAI のガイドも、プロンプトを「役割」「指示」「例」「文脈」に分ける構成を挙げています。
長い会話になると、最初の指示から離れていくことがあります。そのときは、短い合言葉を決めておくと戻しやすくなります。
家庭教師のルールに戻ってください。答えのコードは出さず、ヒント1から順にお願いします。
段階1:文法を覚えるときのプロンプト
文法を学ぶ段階では、読んだことを問題にして確かめる使い方が合います。
穴埋め問題を作らせる
いま Python の(for 文とリスト)を学んでいます。
理解を確かめるための穴埋め問題を3問作ってください。
- 1問は10行以内のコードで、空欄は1問につき1か所か2か所にする。空欄は ____ で表す。
- 3問は、やさしいものから順に並べる。
- 各問に「このコードを実行すると何が表示されればよいか」を書く。
- 答えと解説はまだ出さない。私が答えを書いたら、1問ずつ採点して、違っていたら理由のヒントを1つ出す。
AIが出す問題は、たとえば次のような形になります。これは説明用に用意した見本です。
def total_price(prices):
total = ____
for p in prices:
total ____ p
return total
print(total_price([120, 80, 300])) # 500 と表示されればよい
空欄を埋めたコード(0 と +=)を実行した結果です。
500
自分の答えは、AIに見せる前に必ず実行して確かめます。 採点をAIに頼むのは、合っていたかどうかではなく、なぜそうなるかを確かめるためです。
出力の予想問題を作らせる
いま Python の(リストと代入)を学んでいます。
「このコードを実行すると何が表示されるか」を予想する問題を3問作ってください。
- 1問は6行以内。初学者が取り違えやすい点を1つだけ含める。
- 答えはまだ出さない。
- 私が予想と、そう考えた理由を書いたら、合っているかどうかと、理由のどこが合っていてどこが違うかを返す。
- 予想が外れたときは、答えを言う前に「実行して確かめてみてください」と促す。
見本です。実行する前に、表示される内容を紙に書いてみてください。
items = ["pen", "note", "tape"]
copy = items
copy.append("clip")
print(len(items), len(copy))
実行結果です。
4 4
3 4 と予想した場合は、「copy = items はリストをもう1つ作るのではなく、同じリストに別の名前を付ける」という点が次に学ぶことになります。予想が外れたところが、いちばん伸びるところです。
自分の説明を採点させる
(リストの代入とコピーの違い)について、私の理解を下に書きます。
採点して、次の形で返してください。
- 合っている点
- 足りない点、またはあいまいな点
- 取り違えている点(あれば)
- 5点満点の点数
正しい説明をそのまま書くのではなく、足りない点は「〜の場合はどうなりますか」という質問の形で返してください。
私の説明:
(ここに自分の言葉で書く)
段階2:小さな課題を解くときのプロンプト
課題を解く段階では、ヒントを小出しにしてもらうのが軸になります。
ヒントを3段階で小出しにさせる
次の課題に取り組んでいます。答えのコードは出さず、ヒントを3段階で、1回に1段だけ出してください。
私が「次のヒント」と書くまで、先の段は出さないでください。
- ヒント1:考え方の方向だけ。何に注目すればよいか。コードも関数名も出さない。
- ヒント2:使う道具。文法や関数、データ構造の名前まで。書き方の例は出さない。
- ヒント3:骨組み。日本語の手順を番号つきで書く。コードにはしない。
課題:
(例:名前のリストから重複を除き、最初に出てきた順番を保ったリストを返す関数 unique_in_order を書く。
["pen", "note", "pen", "tape", "note"] を渡すと ["pen", "note", "tape"] が返る)
ここまで考えたこと:
(例:for で1つずつ見ていけばよさそう。すでに出た名前かどうかを覚えておく方法が分からない)
まずヒント1をお願いします。
課題文に書いた入力と出力は、自分で用意した解答を実行して確かめたものです。
['pen', 'note', 'tape']
3段階のヒントは、次のように使い分けます。
| 段 | もらうもの | もらわないもの | 次に自分ですること |
|---|---|---|---|
| ヒント1 | 注目する点(例:「すでに見たかどうか」を覚える必要がある) | コード、関数名 | 手順を日本語で書いてみる |
| ヒント2 | 道具の名前(例:集合、リストへの追加) | 書き方の例 | 公式ドキュメントや教材でその道具の書き方を調べる |
| ヒント3 | 日本語の手順、または空欄のある骨組み | 空欄の中身 | 骨組みをコードにして実行する |
| 答え | 完成したコード | ― | 閉じて、何も見ずにもう一度書く |
「ここまで考えたこと」を必ず書くのがコツです。何も書かずに頼むと、AIはどこからヒントを出せばよいか分からず、すでに分かっていることから説明が始まります。
方針を採点させる(コードを書く前に)
次の課題を解く方針を、日本語の手順で書きました。コードは出さずに、方針だけを採点してください。
- この手順で正しい結果になるか
- 抜けている場合分け(空のとき、1件だけのとき、同じ値が続くとき)があるか
- もっと短い手順があっても、まだ教えない。「別のやり方もあります」とだけ書く
課題:
(課題文)
私の方針:
1. (手順)
2. (手順)
テスト用の入力だけをもらう
次の課題のコードを自分で書きました。コードは見せません。
動きを確かめるための入力と、期待する出力の組を5つ作ってください。
- 普通の場合を2つ、端の場合(空、1件、すべて同じ値など)を3つ。
- 表で出す。列は「入力」「期待する出力」「何を確かめる組か」。
課題:
(課題文)
自分のコードにその入力を渡し、期待する出力と合うかを自分で確かめます。合わなかった組が、次に考えるところです。
段階3:他人のコードを読むときのプロンプト
読む段階では、先に自分の説明を書き、それを添削させます。AIに解説させてから読むのとは順番が逆です。
自分の読解を添削させる
次のコードを読んで、何をしているかを自分の言葉で説明しました。
私の説明を添削してください。正しい解説を最初から書き直すのではなく、次の形で返してください。
- 合っている文(そのまま引用)
- 違っている文(引用して、どの行を読み直すとよいかを行番号で示す。正しい説明は書かない)
- 説明から抜けている行や動き(行番号だけ)
- 確かめるとよい入力(その入力で動かすと取り違えに気づける、というもの)を1つ
コード:
(行番号つきで貼る)
私の説明:
(自分の言葉で書く)
題材の見本です。
def count_by_owner(rows):
counts = {}
for owner, item in rows:
counts[owner] = counts.get(owner, 0) + 1
return counts
rows = [("sato", "pen"), ("ito", "note"), ("sato", "tape")]
print(count_by_owner(rows))
実行結果です。
{'sato': 2, 'ito': 1}
値を追う問題を作らせる
次のコードについて、変数の値を追う問題を作ってください。
- 「(3行目)を2回目に通った直後の counts の値は?」のように、行と回数を指定する。
- 3問。答えはまだ出さない。
- 私が答えたら、合っているかどうかだけを返す。違っていたら、print を入れる場所を1か所だけ提案する。
コード:
(行番号つきで貼る)
答え合わせは、提案された場所に print を入れて自分で実行します。AIの答えを信じるのではなく、実行結果で確かめる習慣がここで付きます。
段階4:自作するときのプロンプト
自分で作る段階では、AIに決めてもらうのではなく、自分が決めるための質問を出させます。
質問だけを返させる設計相談
次のものを自分で作ろうとしています。設計や構成の案は出さずに、私が決めておくべきことを質問の形で5つ返してください。
- 1つの質問は1文。
- 「はい・いいえ」ではなく、私が具体的に書かないと答えられない質問にする。
- 質問の順番は、先に決めないと後が決まらないものから。
作りたいもの:
(例:備品の貸し出しを記録するコマンドラインのツール。貸す・返す・一覧の3つの操作ができる)
いまの自分にできること:
(例:関数、リスト、辞書、ファイルの読み書き)
場所だけを指摘させるレビュー
自分で書いたコードを貼ります。直したコードは出さずに、見直すとよい場所だけを教えてください。
- 最大3か所。行番号と、「何について見直すとよいか」を1文で(例:12行目。リストが空のときの動き)。
- どう直すかは書かない。
- よく書けている点も1つ挙げる。
- 私が直したものを貼ったら、直り方を採点する。
コード:
(行番号つきで貼る)
次の課題を出させる
いま作ったもの(概要: )を土台に、次に取り組む課題の案を3つ出してください。
- いまの自分にできることより、1つだけ新しい要素が要るものにする。
- 各案に「新しく学ぶこと」を1つだけ書く。
- 作り方は書かない。
答えを聞いてよい場面と聞かない場面
すべてを自分で考える必要はありません。その作業が学びたいことそのものかどうかで分けます。
| 場面 | 答えを聞くか | 理由 | 聞き方 |
|---|---|---|---|
| 環境構築のつまずき(インストール、パス、エディタの設定) | 聞いてよい | 学びたいことの手前の作業で、長く止まると学習が進まない | エラー全文と、OS・版・実行したコマンドを貼る |
| 英語のエラー文の意味 | 聞いてよい | 意味が分からないと考え始められない | 「意味だけを日本語で。原因と直し方はまだ言わないで」と頼む |
| 文法や関数の書き方を忘れた | 聞いてよい | 調べれば分かることで、公式ドキュメントを引くのと同じ | 「書き方だけ。私の課題には当てはめないで」と頼む |
| 用語の意味 | 聞いてよい | 言葉が分からないと教材が読めない | 「1文で。例を1つ」と頼む |
| アルゴリズムの組み立て | 先に自分で考える | 手順を組み立てる力がいちばん伸びるところ | 3段階のヒントを使う |
| バグの原因の特定 | 先に自分で考える | 仮説を立てて確かめる力がここで付く | 自分の仮説を書いてから、確かめ方だけを聞く |
| 課題の答えのコード | 最後の手段にする | 受け取ると、考える機会がなくなる | ヒント3までを使ってから。見た後は何も見ずに書き直す |
| コードの良し悪しの判断 | 先に自分で考える | 自分で比べる目を育てたい | 自分の評価を書いてから採点させる |
判断基準の早見表です。
| 条件 | 選ぶもの |
|---|---|
| 学びたいことの手前で止まっている(道具が動かない) | 答えを聞く |
| 知っていれば済むこと(意味、書き方、名前) | 答えを聞く |
| 考える手順そのものが学びたいこと | ヒントを1段ずつもらう |
| 15分ほど考えて、次に試すことが思いつかない | ヒントを次の段に進める |
| ヒント3まで使っても進まない | 答えを見る。閉じてから、何も見ずに書き直す |
15分という時間は目安の例です。自分に合う長さに決めておき、それを過ぎたら次の段に進む、と先に決めておくと迷いません。
英語のエラー文は「意味だけ」を聞く
エラー文は、意味を聞いてよい場面の代表です。ただし、意味と原因を分けて聞きます。
count = 3
print("total: " + count)
Traceback (most recent call last):
File "/home/taro/study/err1.py", line 2, in <module>
print("total: " + count)
~~~~~~~~~~^~~~~~~
TypeError: can only concatenate str (not "int") to str
次のエラー文の意味を、日本語で教えてください。
- 最後の1行を、単語ごとに区切って訳す。
- エラーの名前(コロンの前)が何の種類を表すかを1文で。
- 私のコードのどこが原因か、どう直すかは、まだ言わないでください。自分で考えます。
(エラー文を貼る)
意味が分かったら、原因は自分で仮説を立てます。
エラーの原因について、私の仮説を書きます。合っているかどうかだけを教えてください。
違っている場合は、正しい原因を言わずに、確かめるために表示するとよい値を1つだけ提案してください。
仮説:(例:count が数値なので、文字列と + でつなげられない)
環境構築のつまずきは、意味も直し方もそのまま聞いてかまいません。
import roomkit
roomkit.list_items()
Traceback (most recent call last):
File "/home/taro/study/err2.py", line 1, in <module>
import roomkit
ModuleNotFoundError: No module named 'roomkit'
次のエラーが出て先に進めません。原因と直し方を教えてください。
- OS:(例:Ubuntu 24.04)
- Python の版:(例:3.11)
- 実行したコマンド:(例:python3 err2.py)
- やりたいこと:(例:教材にある roomkit というパッケージを使いたい)
(エラー全文を貼る)
普通に質問する方法と公式の学習用モードの違い
AIの各サービスには、学習向けの機能が用意されているものがあります。2026年10月5日に開いた公式ページの記載をまとめます。
| 機能 | 公式ページの記載 | 始め方(公式ページの記載) |
|---|---|---|
| ChatGPT の study mode | すぐに答えを出す代わりに、問いかけで考えを導き、段階的に説明し、理解を確かめる。やさしい説明から始め、準備ができたら詳しくする。ChatGPT の各プランで、Web・iOS・Android から使える | Web では入力欄に @study と入力するか、+ から study を探して選ぶ |
| Gemini の Guided Learning | 答えを得るだけでなく深く理解することを助けるモード。問題を一歩ずつ分け、説明を学ぶ人に合わせる。掘り下げる質問や自由に答える質問で参加を促す | Gemini アプリから使う |
| Claude Code の Learning 出力スタイル | 選んだ理由を Insight という囲みで説明し、設計の判断がある数行を学ぶ人に残す。その場所に TODO(human) というコメントを置き、書き終わるのを待つ | /output-style learning を実行する。設定ファイルでは outputStyle を Learning にする |
Claude Code には、コードは書いてもらい、理由の説明だけを加える Explanatory という出力スタイルもあります。
普通に質問する方法、この記事のプロンプト、学習用モードの違いは次のとおりです。
| 比べる点 | 普通に質問する | この記事のプロンプトを貼る | 公式の学習用モード |
|---|---|---|---|
| 答えの出方 | 答えと説明がすぐに返る | 指定した形(ヒント1段、採点、問題)で返る | 問いかけや段階的な説明で進む |
| 進め方を決めるのは | 質問する人 | プロンプトに書いたルール | モードの作り |
| 細かい調整 | 質問のたびに書く | ルールを書き換えれば変えられる | モードの範囲内 |
| 準備 | 要らない | 指示文を貼る | モードを選ぶ |
| 使える場所 | どのサービスでも | どのサービスでも | その機能があるサービス |
| 条件 | 選ぶもの |
|---|---|
| 使っているサービスに学習用モードがあり、まず試したい | 学習用モードを選び、足りない指定だけをプロンプトで足す |
| ヒントの段数や採点の形を自分で決めたい | この記事の指示文とプロンプト |
| 学習用モードの無いサービスを使っている | この記事の指示文を会話の最初に貼る |
| 環境構築のつまずきなど、答えがすぐ必要 | 普通に質問する |
学習用モードを使っているときも、「ここまで考えたこと」を先に書く、実行して確かめる、という進め方は同じです。なお、study mode の公式ページには、内容に誤りが含まれることがあるので大事な情報は確かめるように、との注意書きがあります。どの方法でも、コードは実行して確かめることを基本にします。
週ごとの振り返り用プロンプトと学習ログ
ヒントをどこまで使ったかを記録しておくと、自分がどこで止まりやすいかが見えてきます。
学習ログのひな形
| 日付 | 段階 | テーマ | 使ったヒントの段 | 自分で解けたか | 説明の採点 | つまずいた点 |
|---|---|---|---|---|---|---|
| 2026-09-28 | 文法 | リストと代入 | 0 | はい | 4 | copy = items が同じリストを指すこと |
| 2026-09-29 | 文法 | for と合計 | 1 | はい | 3 | total の初期値を書く場所 |
| 2026-09-30 | 課題 | 重複を除く | 2 | はい | 3 | set に入れる順番 |
| 2026-10-01 | 課題 | 件数を数える | 3 | いいえ | 2 | 辞書の get の第2引数 |
| 2026-10-02 | 読む | count_by_owner | 0 | はい | 4 | タプルを2つの変数で受けること |
| 2026-10-03 | 課題 | 件数を数える(解き直し) | 1 | はい | 4 | 特になし |
同じ内容のタブ区切りです(learning_log.tsv)。表計算ソフトに貼って使えます。
日付 段階 テーマ 使ったヒントの段 自分で解けたか 説明の採点 つまずいた点
2026-09-28 文法 リストと代入 0 はい 4 copy = items が同じリストを指すこと
2026-09-29 文法 for と合計 1 はい 3 total の初期値を書く場所
2026-09-30 課題 重複を除く 2 はい 3 set に入れる順番
2026-10-01 課題 件数を数える 3 いいえ 2 辞書の get の第2引数
2026-10-02 読む count_by_owner 0 はい 4 タプルを2つの変数で受けること
2026-10-03 課題 件数を数える(解き直し) 1 はい 4 特になし
| 列 | 書くこと |
|---|---|
| 段階 | 文法・課題・読む・自作 のどれか |
| 使ったヒントの段 | 0(使わなかった)〜3 |
| 自分で解けたか | 答えのコードを見ずに書けたら「はい」 |
| 説明の採点 | AIに説明を採点させたときの点数(5点満点) |
| つまずいた点 | 自分の言葉で1行 |
ログを集計するコード
import csv
import sys
from collections import Counter
with open(sys.argv[1], encoding="utf-8", newline="") as f:
rows = list(csv.DictReader(f, delimiter="\t"))
hints = Counter(int(r["使ったヒントの段"]) for r in rows)
solved = sum(r["自分で解けたか"] == "はい" for r in rows)
score = sum(int(r["説明の採点"]) for r in rows) / len(rows)
print(f"取り組んだ数: {len(rows)}")
print(f"自分で解けた数: {solved}")
for level in range(4):
print(f"ヒントを{level}段使った数: {hints[level]}")
print(f"説明の採点の平均: {score:.1f}")
print("ヒント3段まで使ったテーマ:", [r["テーマ"] for r in rows if r["使ったヒントの段"] == "3"])
python3 summarize_log.py learning_log.tsv
取り組んだ数: 6
自分で解けた数: 5
ヒントを0段使った数: 2
ヒントを1段使った数: 2
ヒントを2段使った数: 1
ヒントを3段使った数: 1
説明の採点の平均: 3.3
ヒント3段まで使ったテーマ: ['件数を数える']
週ごとの振り返り用プロンプト
今週の学習ログを貼ります。振り返りを手伝ってください。答えや解説ではなく、整理と質問をお願いします。
<log>
(学習ログのタブ区切りを貼る)
</log>
<task>
1. 「つまずいた点」を、似たものどうしでまとめ、2〜3個の見出しを付ける。
2. ヒントを3段まで使ったテーマと、自分で解けなかったテーマを挙げる。
3. まとめた見出しごとに、私の理解を確かめる質問を1つずつ出す。答えは書かない。
4. 来週の課題の案を3つ出す。うち1つは、今週つまずいたテーマの解き直しにする。
5. 今週できるようになったことを、ログから読み取れる範囲で2つ挙げる。
</task>
<output_format>
見出しは「つまずきの整理」「確かめる質問」「来週の課題の案」「できるようになったこと」の4つ。
それぞれ箇条書きで、1項目は1文。
</output_format>
振り返りの最後に、次の1行を足すと、解き直しが習慣になります。
今週ヒント3まで使ったテーマを、来週の最初に、何も見ずにもう一度解きます。そのための課題文を、数値や名前だけ変えて作ってください。
コード解説用・デバッグ用のプロンプトとの違い
似たプロンプトと、目的で使い分けます。
| プロンプトの種類 | 目的 | AIが返すもの | 向いている場面 |
|---|---|---|---|
| 学習用(この記事) | 自分で解けるようになる | ヒント、採点、確認問題 | 教材や課題で学んでいるとき |
| コード解説用 | そのコードを早く理解する | 処理の流れの説明、図 | 読む量が多く、内容を早くつかみたいとき |
| デバッグ用 | エラーを早く解消する | 原因の候補、修正案 | 作業を先に進めたいとき |
| 条件 | 選ぶもの |
|---|---|
| そのコードを読む力や直す力を付けたい | 学習用(先に自分の説明や仮説を書く) |
| 内容が分かればよく、読む練習が目的ではない | コード解説用 |
| 期限があり、動かすことが優先 | デバッグ用。解消した後で、原因を自分の言葉で説明して採点させる |
確かめて分かったこと
- 予想問題は、実行結果と並べると取り違えがはっきりする:見本のコードの出力は
4 4でした。3 4と予想した場合、違いは1か所(items の長さ)だけなので、何を取り違えたかを言葉にしやすくなります。 - エラー文は最後の1行に意味がまとまっている:TypeError の例では、最後の行に「str には str だけをつなげられる(int はつなげられない)」という内容があり、その上の行に
~と^で場所が示されていました。意味だけを聞くなら、最後の1行を貼れば足ります。 - 環境のつまずきと文法のつまずきは、エラーの名前で見分けやすい:パッケージが入っていないときは ModuleNotFoundError、型の組み合わせが合わないときは TypeError と、名前が違いました。前者は答えを聞いてよい場面、後者は自分で考える場面の目印になります。
- 学習用モードの始め方はサービスごとに違う:入力欄で選ぶもの、コマンドで切り替えるものがあり、公式ページで確かめてから使うのが確実でした。
- ログは数えると傾向が見える:見本のログでは、6回のうちヒントを3段まで使ったのは1回で、解き直しではヒント1段で解けていました。数にすると、進み具合を自分で確かめられます。
よくある質問
Q. プログラミング学習に生成AIを使うと、力が付かないのでは? A. 使い方で変わります。答えのコードを受け取るだけなら考える機会は減りますが、ヒント・採点・確認問題を出させる使い方なら、考える回数はむしろ増えます。この記事のプロンプトは、手を動かすのを自分にしておくためのものです。
Q. 答えを聞かずに理解するには、どう質問すればよいですか? A. 「ここまで考えたこと」を先に書き、ヒントを1段だけ頼みます。あわせて、自分の説明を書いて採点させると、分かったつもりの箇所が見つかります。質問の最後に「答えのコードは出さないでください」と1行足すだけでも、返ってくるものが変わります。
Q. ChatGPT や Claude の学習用モードと、プロンプトで頼むのはどちらがよいですか? A. 使っているサービスに学習用モードがあれば、まずそれを試し、足りない指定をプロンプトで足すのが手軽です。ヒントの段数や採点の形を自分で決めたいとき、学習用モードの無いサービスを使うときは、家庭教師役の指示文を貼ります。
Q. AIがすぐ答えのコードを出してしまうときは? A. 会話の最初に家庭教師役の指示文を貼り、途中で離れてきたら「家庭教師のルールに戻ってください」と書きます。課題文だけを貼ると答えが返りやすいので、「ここまで考えたこと」と「ヒント1をお願いします」をいっしょに書きます。
Q. どうしても分からないときは、答えを見てもよいですか? A. 見てかまいません。ヒント3まで使っても進まないときは、答えを見て、閉じてから何も見ずに書き直します。翌週にもう一度、数値や名前を変えた課題で解き直すと、自分のものになったかが分かります。
まとめ
- AIに出させるのは次の一歩のヒント・自分の説明への採点・確認問題の3つ
- 会話の最初に家庭教師役の指示文を貼り、答えのコードは頼んだときだけにする
- ヒントは考え方 → 道具 → 骨組みの3段階を、1回に1段ずつ
- 段階ごとに使うプロンプトが変わる:文法は穴埋めと予想、課題はヒント、読むときは添削、自作は質問
- 環境構築のつまずき・エラー文の意味・書き方は聞いてよい。アルゴリズムの組み立て・バグの原因は先に自分で考える
- 学習用モードがあるサービスではそれも使い、どの方法でも実行して確かめる
- 学習ログを付け、週に1回、ヒントを多く使ったテーマを解き直す
参考・出典
- OpenAI「Using study mode in ChatGPT」(OpenAI Help Center、2026-10-05 閲覧):study mode の進め方、始め方、使えるプラン、注意書き
- Anthropic「Output styles」(Claude Code ドキュメント、2026-10-05 閲覧):Explanatory と Learning の出力スタイル、TODO(human)、/output-style と outputStyle
- Google「Guided Learning in Gemini: From answers to understanding」(Google 公式ブログ、2025年8月6日付、2026-10-05 閲覧):Guided Learning の進め方
- Anthropic「Prompting best practices」(Claude Platform Docs、2026-10-05 閲覧):役割の設定、XMLタグによる区切り、してほしいことを伝える書き方
- OpenAI「Prompt engineering」(OpenAI API ドキュメント、2026-10-05 閲覧):役割・指示・例・文脈に分けるプロンプトの構成
本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。
(記載例)出典:株式会社RJC「プログラミング学習での生成AIの使い方 答えを聞かないプロンプト集」
株式会社RJC ― SI事業・SES事業・AI駆動開発。RJCは一緒に成長を楽しめる会社です。
WE ARE HIRING
RJCで一緒に開発しながら、
成長を楽しみませんか?
RJCは、Web・モバイル・AIを活用した開発プロジェクトで、テックリードやPM・PMOも活躍するシステム開発会社です。会社を知る、待遇を確かめる、話を聞いてみる。気になるところ見てみてください!
- 127日年間休日
- 12時間平均残業時間
- 毎日ガチャ遊びココロも大切にする福利厚生。アマギフなどの賞品ラインナップ!
ほかにも、チケットレストラン、書籍読み放題、2年ごとの慰労報奨(休暇 or 金一封)、11期連続の黒字決算。