教えるのではなく、一緒に発見すること。
私は小学生にScratchを教えている立場なのですが、それで、つね日頃、Scratchを「教えたい」とは全く思ってなくて、Scratchから何か新しいことを発見させて、目的を達成させることに重きを置いて教えています。なかなか難しいことなのですが。
それでscratchを教えていて最近とある失敗をしたので、その失敗事例から、ケーススタディになればなと思っています。あるとき子どもたちと一緒にscratchをやっていたときのことです。それはtwitterでも書いたことですが。
そういえば、scratchで、小学生にプログラミング教えてるとき、やはり基本的な計算ができないと、プログラミングは書けないなと。割り算の計算が早くないと難しい、と思うような出来事があった。
— はなだ☆のぶかず@lisp &ボドゲ勢ボドゲプレイヤー) (@nobkz) December 10, 2019
とある児童S君、と一緒にscratchをやっていました。そのときは、一人一人が個別のテーマを持っていて作品制作を行っていました。彼のテーマは「花のアート」でした。
そのとき一緒にプログラミングしていたのですが、花びらを一枚ずつ回転してスタンプをしてくというアイディアをプログラミングしていました。
花びら一枚をこのようにかいて、
このようなスクリプトになっていました。
その結果、このようなのが画面上に表示されます。
これはこれでおもしろいのですが、彼はちょっと不満そうでした。花に見えなかったからです。彼は花びらを5枚だけ表示したかったのです。
私は上のようなスクリプトを作成した彼はどこまで、スクリプトの意味、内容を分かってるのか気になりました。そこで以下のような会話をしました
私:「ねぇ、なんで、1232回繰り返して、1223度回したの?」
S君:「わかんない!テキトーに入れた!」
なるほどと思い、その辺がわかってなさそうだなと思いました。次にじゃあ、角度がわかってないのかな?と思い聞きました。
私:「一回転って何度なのかわかっている?」
S君:「360度でしょ?知ってるよ?」
私:「うんだよね、じゃあ、花びらの動きは最後にはどうなったらいいと思う?」
S君:「最後に元に戻るように360度回転すればいいでしょ?」
と角度についても知っていて分かっているなと思いました。
私:「そしたらさ、5枚書くためには、ループは何回繰り返せばいい?」
彼:「5回でしょ?」
と、なるほど分かっているなと。でわたしは続けて
私:「じゃあ、ループ一回についき何度花びらは回ればいい?」
と聞きました。
S君:「わかんない」
ははぁ、そこかぁと思いました。そこで私は360/5をすればいいんだよと思ったので、
私:「じゃあさその角度を求めるための式はなにかな?」
などと聞きました。
S君:「わかんない、むずかしい~」
と言ったので、なるほど割り算の式が出てこないのかぁとか思って、割り算の式を彼から引き出すような会話をしてみようと考えました。
いま思えばこれは失敗だなと私は思いました。ここで私は、式を言わせようとするのではなく、一緒にいろんな数値を入れて実行させてみることをやれば良かったなと思いました。そこで割り算を発見させればよかったのです。
話を彼との会話に戻すと彼はそれでも割り算が出てこなかったので私が最終的には式を言いました
私:「360から5をればいいんだよ?」
とすると彼は言いました。
S君:「360÷5ができない~」
とここで、S君の学年はもう割り算ができているはずです。少なくとも360÷5はできる学年でした。でもプログラミングを習いに来る子はたまに算数がその学年レベルでできていない子もいます。
たぶんその子のことを考えればここで一緒に割り算をやってあげるのもよいと思いましたが、ここはプログラミングの場です。算数の授業ではありません。なので、私は
私:「そのときはプログラムでやってあげればいいんじゃない?」
といって割り算のブロックを使えばいいとと言ったら彼は納得して、スクラッチに割り算を計算させていました。
このscratchの時間が終わった後、私はすぐ思ったのは、scratchを書くためにはある程度算数の理解も必要だと思いました。花びらの角度を求める計算以外にもscratchでゲームつくったりアニメーションしたりするには、そこには、掛け算や割り算の計算を頭の中でやれることが必要になるからです。それは算数の文章題が自然にできていないとだめだからです。
しかしながら、先ほども述べたように、割り算や掛け算をscratchで発見することもできたように思えます。scratchで先ほどの角度を何度も何度も入れなおして、プログラムを実行させていく方法があって、その方がより、プログラミング教育らしい、と思いました。
つまり、今ある知識や理解を使ってプログラミングを書くのではなく、プログラミングから新しいことを学ぶようにすることがより、プログラミング教育にとって良いのではないかと思いました。既存の知識だとそれ以上のプログラミングはできません。しかし、プログラミングをすることで仮説検証のループを回すことができるようになれば、その子は勝手にいろんなことを学べるようになるのではと思いました。
では、そのためにはこのケースではどのようにすればよかったのでしょうか?わたしはこのように考えました。
私:「じゃあ、ループ一回についき何度花びらは回ればいい?」
S君:「わかんない」
私:「じゃあそこまでわかったら実験してみよう、いきなり大きい数字を入れると、おっきすぎて難しくなるから、小さい角度、たとえば1度とか2度とか入れてみよう!そしてちょっとずつ大きくしていって、5枚に見えるところを探してみよう!」
というように、どのように考えて、どのようにトライ&エラーをするかを教えてあげる、そのことがプログラミング教育に大事になることなんじゃないだろうかと思います。そしておそらく大事なのは、そのトライ&エラーをさせる方法だけでなく、トライ&エラーの後になんでこうなるのか?を考えさえる癖をつけるそういうことが大事なんじゃないかと思いました。そのなかでどのようにおもしろく、楽しく発見できるか、そしてその達成感を味合わせるかが大事なように感じます。
と今回のことを反省して、次回に生かそうとnoteに書きました。みなさんはどう考えられるでしょうか。なにか意見がありましたらコメント頂けると幸いです。
この記事が気に入ったらサポートをしてみませんか?