プログラミングと試行錯誤の関係って?

プログラミングを学ぶには試行錯誤(=トライアルアンドエラー)が効果的!

そんな風に聞いたことはありませんか?

ですが、専門家の中には「試行錯誤ではプログラミングは身につかない。教えてもらって正解を真似する方が大事」と主張する人もいます。

このような正反対の意見が存在する背景には、そもそも「試行錯誤」という言葉の意味を、人によって違うものとして使っているという事実があります。

この記事では、「学びにつながる良い試行錯誤とは何か?」をテーマに、プログラミング学習との関係性をわかりやすく解説していきます。

目次

1. 試行錯誤=いきあたりばったり?

2. 人間の試行錯誤はどう違う?

3. まとめ:学びにつながる試行錯誤とは

試行錯誤=いきあたりばったり?

心理学には、「試行錯誤学習」という言葉があります。これは「ランダムにいろいろ試してみて、たまたま成功すると、次からはその成功パターンを覚えて短時間でできるようになる」という学習の形です。

20世紀初頭、心理学者ソーンダイクはネコを使った有名な実験を行いました。ネコをパズルのような仕掛けの箱に入れ、脱出できたら餌がもらえるという条件を与えたところ、ネコは回数を重ねるごとに徐々に脱出が早くなるという結果が得られました。

ソーンダイクのパスルボックス(イメージ)

この試行錯誤学習は、近年ではAIの「強化学習」という分野にも応用されています。AIに何度もゲームなどの課題に挑戦させ、成功すると報酬が与えられる仕組みにすると、最初は失敗ばかりでも、徐々に効率よく成功するようになっていくのです。

試行錯誤学習のおかげで、AIは囲碁の世界チャンピオンと戦えるほどに強くなりました

ただし、このような「いきあたりばったりに見える試行錯誤」が効果的なのは、あくまで動物やコンピューターの話。

「プログラミング学習に試行錯誤が効果がなかった」と主張する研究者の指す試行錯誤をよく見てみると、実はこの「いきあたりばったりの試行錯誤」を指していることがほとんどです。

人間の試行錯誤はどう違う?

私たち人間の試行錯誤は、それとは少し違います。単に手当たり次第に試すのではなく、「こうすればうまくいくかも?」といった予測や経験、直感をもとに行動しています。

たとえば、横スクロールのゲームを初めてプレイする場合、キャラクターが最初に向いている方向にゴールがあるだろう、と自然に想像してその方向に進んでみる——そんな行動はまさに人間らしい試行錯誤です。

横スクロールゲーム

こうした予測に基づく行動は、「ヒューリスティック」と呼ばれることもありますが、要するに「直感や経験を頼りに、最も可能性の高い方法を試してみる」姿勢だと言えるでしょう。

さらに、人間は「うまくいかなかった理由」を振り返り、「次はこうしてみよう」と仮説を立てて行動を修正することができます。こうした学びのプロセスは「アブダクション(仮説的推論)」と呼ばれています。アブダクションは、帰納・演繹(えんえき)と並ぶ論理的な思考法と呼ばれ、特に、新しい事実を発見したり、これまでに実現できなかったことを実現したり、という場面でとても重要な考え方です。

まとめ:学びにつながる試行錯誤とは

では、プログラミング学習における「良い試行錯誤」とはどのようなものでしょうか?

それは、単にやみくもにコードを書いて試すのではなく、「なぜこのエラーが出たのか」「どう書き換えたら動くだろうか」と考えながら修正を繰り返すプロセスです。つまり、自分の頭で仮説を立てて、実際に試し、結果を見てまた考える——この繰り返しこそが学びを深めていく鍵なのです。

試行錯誤は、ただの手探りではありません。「考えながら試す」というプロセスを通じて、子どもたちは自分で考える力を身につけていきます。

プログラミングスキルの習得において重要なのはもちろんのこと、この“試行錯誤する力”そのものは、これからの時代に欠かせないスキルでもあります。

そして、その力を育てるには、何より「実際に試行錯誤を重ねること」が必要です。だからこそ、子どもたちが安心して失敗し、チャレンジできる「試行錯誤しやすい環境」を整えてあげることが大切なのです。

次回の記事では、ロボットプログラミング教室「プログラボ」がどのようにしてそのような環境をつくっているのか、実際の授業での子どもたちの様子をご紹介します。

どうぞお楽しみに!

参考

米盛 裕二 『アブダクション: 仮説と発見の論理』

S. Gautam. Thorndike’s Trial and Error Theory. Psychology Discussion

Merisio, C., et. al. There is No Such Thing as a “Trial and Error Strategy”.

Berland, M., et. al. Using Learning Analytics to Understand the Learning Pathways of Novice Programmers