子供にScratchを使わせてみてわかったこと

半年くらい前から11才の息子にScratchでプログラムを自由に作らせる試みを行っている。自分が昔そうだったようにゲームを作ることに興味があるようだ。私は試しに数か月の間、何も指示を与えることなく、勉強の合間の時間に自由に作品を作らせてみた。

Scratchなどの最近の教育用のプログラミング環境では、他の人のプログラムに変更を加えて自分の作品にすることができる。他の人のプログラムの中から、自分の好きなゲームプログラムを見つけて、それを自分の好きなように変えるという方法は、一からプログラムを作って動かすのに比べて近道のように見える。

はじめはピンポンゲームのような単純な作品を作り、それなりにプログラミングを楽しんだ。その後、他の人のプログラムからスーパーマリオブラザーズのような作品を見つけて、自分のプログラムに取り入れようとした。ところが、他の人のプログラムの意味を理解せずに手を加えるので、いくら試行錯誤しても思うような動きにならない。何週間も取り組んでもいっこうに成果があがらない。どうやら、他の人のプログラムに修正を加えて自分の好きな動きを作る、というやり方には落とし穴があるということらしい。動いているプログラムを部品として取り入れることができるからといって、意味を理解せずに取り入れると、結局手に負えなくなる。まず小さい部品や単純な動きを作るやり方を理解してから、それを組み合わせることによって、より複雑なものを作るようなアプローチが必要なのだ。

プログラミングの構成要素である繰り返しや条件判断については、簡単な説明があれば小6でも問題なく理解できる。ところが、変数を使いこなすのはちょっと難しい。算数では未知数を□などの記号で表すことがあるが、あくまで定数であり、変数ではない。変数を習うのは中学以降である。繰り返しの中で変数の値が変わるようなプログラムの動きを理解するのは、小学生にはちょっとしたチャレンジである。また、小学校の算数ではマイナスを扱わない。したがって、-1をかける式がどういう意味かわからない。論理演算もやったことがない。

これらのことから、Scratchを教材として小学生にプログラミングをさせる場合は、まず、新しい概念についてレクチャー形式で理解させ、比較的簡単な課題をいくつか与えて最低限のコーディングスキルを身につけてもらってから、自由に作品を作らせるのがよいのではないだろうか、と感じている。