AIと独学

AIを使ってプログラミングを独学するには?自分で書けなくならない6つの手順(AIとプログラミング学習の研究と、その限界)

約8分で読めます

パソコンの画面に表示されたプログラムのコード
Photo: Markus Spiske markusspiske / CC0 / Wikimedia Commons
AIによる調査公開された研究をAIが調べて整理しました(独自の実験ではありません。出典は末尾)。

AIに聞けば、動くコードはすぐ手に入ります。でも、AIを閉じると1行目から手が止まる。そんな不安を感じながらプログラミングを独学している人は少なくありません。研究では、AIを使うかどうかより「どう使うか」で差が出ていました。課題を丸ごと渡してコードを出させる使い方ほど、AIなしで書く力が育ちにくく、先に自分で書いてから部分的に頼る使い方では、その害が小さくなっていました。

3行でわかる

  1. 10〜17歳の初心者69人の実験では、AIを使った組は練習の正答が1.8倍になり、1週間後のAIなしのテストでも使わなかった組と同じかわずかに上だった(差ははっきりしない)。
  2. ただし課題の全文をAIに渡す使い方は、練習中の正答は最も高く、そのあと自分でコードを書き換える課題の正答は最も低かった。数学の1,000人近くの実験でも、答えを聞けるAIはAIなしの試験の点を17%下げた。
  3. やり方は「先に自分で書く→ヒントだけ聞く→読んで説明する→エラーは自分で読む→書き換える→AIなしで書き直す」。どの研究も短期間で、社会人の長い独学で確かめたものではない。

01 悩みの正体AIに頼ると、なぜ自分で書けなくなる?

AIが出したコードを読まずに使うと、問題を分ける・書く・直すという練習そのものを飛ばしてしまうためです。しかも「わかった気」だけは残りやすく、自分の遅れに気づきにくくなります。

プログラミングの力は、問題を小さく分ける、コードを書く、エラーを読んで直す、という作業をくり返す中で育ちます。AIに全部任せると、この作業をほとんどしないまま、動くコードだけが手元に残ります。

21人の初心者を観察した研究では、つまずいていた学生にとってAIが学びの妨げになりうる様子が見られました。AIに誤った方向へ導かれたり、本当は進んでいないのに進んでいると感じたりすることが、初心者のつまずきとして挙げられています[3]。まわりから見えにくいのが、この悩みのやっかいなところです。

02 科学的にわかっていることAIでプログラミングを学ぶと、力はつくの?

AIを使っても、AIなしで受けたテストの点が下がらなかった実験があります。差を分けたのは使い方で、課題を丸ごと任せる使い方ほど、自分で書く・直す力が弱くなっていました。

Kazemitabaarら(2023)[1]

初めてPythonを学ぶ初心者を2組に分け、45問のコードを書く練習をしてもらった。片方の組だけ、コードを自動で書くAI(OpenAI Codex)を使えた。AIを使えた組は練習の完了率が1.15倍、点が1.8倍になり、各問題のあとにAIなしで行うコードの書き換え課題の成績も下がらなかった。1週間後にAIなしで受けたテストでは、AIを使った組がわずかに上だったが、統計的にはっきりした差ではなかった。事前の基礎テストの点が高かった人ほど、AIを使ったことがテストの成績につながっていた。

対象: 10〜17歳の初心者69人 / 限界: 子どもと10代が対象で、2022年ごろのAIを使った実験。この記事では論文の要旨で確認した。

Kazemitabaarら(2023)[2]

上の実験でAIを使えた組の使い方を分析し、4つに分けた。課題の全文をAIに1回で渡す、AIに少しずつ頼む、自分で書きながら一部だけAIに頼む、自分だけで書く、の4つ。全文を渡す使い方は、練習中の正答は最も高かったが、そのあと自分でコードを書き換える課題の正答は最も低かった。

対象: 10〜17歳の33人 / 限界: 使い方と成績の関係を見た分析で、使い方が原因だとまでは言えない。この記事では論文の要旨で確認した。

Pratherら(2024)[3]

AIのコード補完や対話AIを使える状態で、初心者に課題を解いてもらい、観察・面接・視線の記録で調べた。もともとつまずいていない学生は、自分で考えていたコードをAIで速く書き、間違った提案は無視できた。一方でつまずいていた学生にとっては、AIが役に立たないだけでなく、学びの妨げになりうる様子が見られた。論文の題は「広がる差」。

対象: プログラミング初心者21人 / 限界: 少人数の観察研究で、学習の成果は測っていない。この記事では論文の要旨で確認した。

Bastaniら(2025)[4]

高校の数学の授業で、ふつうの対話AIを使える組、答えを直接言わずヒントを出すよう設定したAIを使える組、教科書だけの組をくらべた。練習問題の成績は、ふつうのAIで48%、ヒント型のAIで127%上がった。ところがAIを外した試験では、ふつうのAIの組は教科書だけの組より17%低く、ヒント型の組は差がなかった。

対象: トルコの高校1校の9〜11年生、1,000人近く / 限界: プログラミングではなく数学。1つの学校の短期間の結果。

ShenとTamkin(2026、査読前)[5]

Pythonを1年以上使っている若手中心のエンジニアが、初めて使う道具(ライブラリ)で35分の課題に取り組み、そのあとAIなしで理解度テストを受けた。AIを使った組の点は約17ポイント低く、差が最も大きかったのはエラーを直す問題だった。作業時間の差ははっきりしなかった。AIに書かせた後で説明を求めた人や、概念だけを質問した人は点が比較的高く、全部を任せた人は低かった(各数人の比較)。

対象: 52人 / 限界: 査読前の論文で、テストは課題の直後だけ。使い方ごとの比較は人数が少なく、目安にとどまる。

実験の多くは、子どもや大学生が数時間〜数週間取り組んだものです。社会人が何か月も一人で学ぶ場合に、同じ大きさの差が出るかはまだ確かめられていません。

03 今日からできる小さな一歩AIを使ってプログラミングを学ぶには?

AIを「答えを書く係」ではなく「ヒントと説明を出す係」にします。先に自分で書き、聞くのは次の一歩だけ。受け取ったコードは読んで説明し、書き換え、翌日にAIなしで書き直します。

1

AIを開く前に、10分だけ自分で書く

問題を「入力」「処理」「出力」に分けてメモし、書けるところまで書きます。途中で止まってもかまいません。全部を任せた人ほど、あとで自分で書き換える力が弱かったためです[2][5]。

所要 10分

2

聞くのは「次の一歩のヒント」だけにする

「答えのコードは書かずに、次に考えることを1つだけ教えて」と頼みます。答えを言わないAIでは、AIを外した試験の点が下がりませんでした[4]。頼み方の例はAIへの依頼文テンプレート表にまとめています。

所要 1分

3

受け取ったコードは、1行ずつ説明してから動かす

各行に「何をしているか」を自分の言葉でコメントし、動かす前に結果を予想します。説明できない行は、その行だけAIに質問します。つまずいていた学生には、AIが学びの妨げになりうる様子が見られました[3]。自分の説明をAIに確かめてもらうやり方はAIに説明して抜けを見つける記事で紹介しています。

所要 5〜10分

4

エラーが出たら、5分は自分で読む

エラーメッセージの最後の行と行番号を読み、「原因はたぶん〇〇」と予想を1つ書いてから試します。それでも直らなければ、予想と一緒にAIに見せます。AIを使った組の差が最も大きかったのは、エラーを直す問題でした[5]。

所要 5分

5

動いたコードを、自分の手で1か所書き換える

「入力を2つに増やす」「結果を並べ替える」など、条件を1つ変えてAIなしで書き換えます。課題の全文をAIに渡した人ほど、あとで自分で書き換える課題の正答が低くなっていました[2]。

所要 10分

6

翌日、白紙からAIなしで書き直す

前日の課題を、何も見ずにもう一度書きます。書けなかった部分が、次に学ぶところです。AIを外したテストで差が出たように[4][5]、力はAIなしで確かめるしかありません。思い出して書く練習の効果は思い出す練習の記事で詳しく説明しています。

所要 10〜15分

04 続けるためのコツAIに頼りすぎていないか、どう確かめる?

週に1回、AIを使わずに小さな問題を1つ解き、どこで止まったかを記録します。速く進んでいる感覚より、AIなしで書けた量で進み具合を判断します。

  • 週1回「AIなしの日」を作り、15分で小さな問題を1つ解く。止まった場所をメモし、次の週に重点的に学ぶ。
  • 学び始めの数週間は、手順1と2を特に守る。基礎の点が高かった人ほどAIの恩恵を受けていた[1]ので、まず基礎を自分の手で作る。
  • 「AIのおかげで進んだ気がする」ときほど、手順6で確かめる。進んでいないのに進んでいると感じることは、初心者のつまずきの1つとされている[3]。
  • すでにAIなしで書けなくなったと感じたら、AIなしで解ける力を取り戻す記事の手順から始める。解き方の例をどう読むかは例題学習の記事も参考になる。

05よくある質問

AIを使ってプログラミングを学ぶと、自分で書けなくなりますか?

使い方しだいです。10〜17歳の初心者69人の実験では、練習中にAIを使えた組は、1週間後にAIなしで受けたテストで使えなかった組とほぼ同じか、わずかに上でした(差は統計的にはっきりしない)。ただ、課題の全文をAIに渡してコードを出させるやり方をした人は、あとで自分でコードを書き換える課題の正答が最も低くなっていました。

まったくの初心者でもAIを使ってよいですか?

使ってかまいませんが、答えを出させる係ではなく、ヒントと説明を出す係にします。上の実験では、事前の基礎テストの点が高かった人ほどAIを使ったことの恩恵が大きく、21人の観察研究でも、もともとつまずいていた学生ほど、AIが助けより妨げになりうる様子が見られました。最初の数週間は、自分で書いてから聞く順番を守ると安全です。

エラーが出たら、すぐAIに貼り付けてもいいですか?

最初の5分は自分で読むことをすすめます。52人のプログラマーの実験(査読前の論文)では、AIを使った組の理解度テストの点が低く、差が最も大きかったのはエラーを直す(デバッグの)問題でした。エラーの1行目を読み、原因の予想を1つ書いてから聞くと、聞いた答えも理解しやすくなります。

どの研究も子どもや大学生が対象なら、社会人の独学には当てはまりませんか?

そのまま当てはまるとは言えません。ここで紹介した研究は、子ども・大学生・若手のエンジニアが数時間〜数週間取り組んだもので、社会人が何か月も一人で学んだ場合を調べた研究はまだ見当たりません。ただ、プログラミングでも数学でも、答えを丸ごと任せた使い方ほどAIなしの成績が下がる、という向きはそろっています。

出典

  1. Kazemitabaar, M., Chow, J., Ma, C. K. T., Ericson, B. J., Weintrop, D., & Grossman, T. (2023). Studying the effect of AI code generators on supporting novice learners in introductory programming. Proceedings of the 2023 CHI Conference on Human Factors in Computing Systems. https://doi.org/10.1145/3544548.3580919
  2. Kazemitabaar, M., Hou, X., Henley, A., Ericson, B. J., Weintrop, D., & Grossman, T. (2023). How novices use LLM-based code generators to solve CS1 coding tasks in a self-paced learning environment. Proceedings of the 23rd Koli Calling International Conference on Computing Education Research. https://doi.org/10.1145/3631802.3631806
  3. Prather, J., Reeves, B. N., Leinonen, J., MacNeil, S., Randrianasolo, A. S., Becker, B. A., Kimmel, B., Wright, J., & Briggs, B. (2024). The widening gap: The benefits and harms of generative AI for novice programmers. Proceedings of the 2024 ACM Conference on International Computing Education Research (ICER). https://doi.org/10.1145/3632620.3671116
  4. Bastani, H., Bastani, O., Sungu, A., Ge, H., Kabakcı, Ö., & Mariman, R. (2025). Generative AI without guardrails can harm learning: Evidence from high school mathematics. Proceedings of the National Academy of Sciences, 122(26). https://doi.org/10.1073/pnas.2422633122
  5. Shen, J. H., & Tamkin, A. (2026). How AI impacts skill formation. arXiv:2601.20245(査読前の論文) https://arxiv.org/abs/2601.20245