では、Scratchで何を学んで習うのでしょうか?

ワークショップでの一コマ
ワークショップでの一コマ

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

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

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

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

イベントScratch Day in Tokyoにて(写真/都築雅人)
イベントScratch Day in Tokyoにて(写真/都築雅人)

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

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

 なぜ、子どもたちが試行錯誤しながらプログラミングするかを補足すると、もちろん楽しいからである。そして、なぜ楽しいかというと、自分たちにとって意味があるからだ。

 ゲームを作りたい子どもは、敵キャラがいて、敵キャラと戦うとヒットポイントがゼロになって、アイテムをとると回復して、最後にボスキャラが登場して、というようなことを次々と思い付き、その実現に向けて目の色を変えてプログラミングする。自分がやりたい目標を達成するためであれば、子どもたちは自分の時間を使うことを全く惜しまないし、そのためなら代数や三角関数の勉強もする。

 これに対して学校の勉強はどうか。例えば、太郎くんと花子さんがいます、お皿の上におまんじゅうが3個あって、そのうち2個を食べると残りは何個でしょう。こうした問いを楽しく感じ、それを解くことに意味を見いだし、自らの目標にできるか。かなり難しいだろう。

 ものづくりを通した学習法(構築主義)を提唱したシーモア・パパート氏の言葉を借りれば、「子どもたちが真剣に問題に取り組むときは、自分たちにとって意味のあることをやっているときだけだ」ということだ。

 プログラミングは本当の学びになり得るか?

 そうだ。プログラミング、さらにはアラン・ケイ氏の言うコンピュータの本質的な特徴である「コンピュータはプログラム次第でどんなものにでもなり得る、メタメディアである」ということが、その子なりの興味・関心に沿ったものを作り得るという意味で、本当の学びになると考えている(関連記事「アラン・ケイが予測した『子供たちのパソコン』」)。