プログラミングを学ぶ理由の一つとして、論理的思考力がよく挙げられる。これは、プログラムが論理的である以上、プログラムを正しく書いて動かすためには論理的思考ができないといけないから、結果として身に付くであろうということだ。ただし、この論理的思考力というのは、どちらかというと二次的な結果、副次的な結果として身に付くのだろうと考えている。

 では、一次的な目的はいったい何か。それは、学習に対する意欲の向上、態度の向上だ。従来の勉強では、子供が自ら進んで取り組むのは比較的珍しいことだろう。例えば、子供自ら算数を勉強したいと熱望し、ずっとやり続けるというのは稀なことだ。対してScratchプログラミングでは、子供が自ら積極的にやりたがる。空いている時間さえあれば、本当に寸暇を惜しんでScratchをやり続ける子供はたくさんいる。

 こうした多くの子供たちを見ていると、Scratchを使った学びは、従来の教科の勉強とは全然違うものだと認識させられる。プログラミング教育・学習に取り組むにあたっては、この違いについて、よく考える必要があるのではないか。

 よく考えるために、教科の勉強とプログラミング学習の違いを観察していくと、大きな違いが見つかる。それは、唯一の正しい答えを求めることが期待されているか否か、だ。教科の勉強では、唯一の正解があることが前提で、それを最短で求める方法を得るために努力することになる。一方、プログラミングの場合は、唯一絶対の解はない。逆に、いろいろなアプローチが求められる。

写真4●ワークショップの一コマ

 さまざまなアプローチを試す過程では、間違いを犯すことも当然のようにある。この間違いに対する認識も、教科の勉強とプログラミング学習では異なる。教科の勉強においては、間違いは悪で、正解は正義であるという位置付けだ。

 プログラミング学習においては、間違うこと自体がむしろ積極的に肯定される。間違いを直すこと、つまりデバッグが、大変効果的な学習となる、言い換えれば、試行錯誤しながら目標に近づく態度が身に付く。プログラミングをすることにより、この態度が自然と身に付いて習慣化することこそが、一次的な目的なのだ。