小学1年生にプログラミングを教えようとした話
(1)
- 小学1年生にプログラミングを教えようと思いました。
- でも当然ですがひらがな・カタカナがやっと読める程度で、アルファベットなんかほとんどわかりません。
(2)
- それで最初は日本語プログラミングを試みました。検討した範囲では、特に「なでしこ」が優秀でした。
- しかしそもそも日本語入力ができません。そりゃそうですよね。紙に書く練習を学校でやっているくらいなんですから。かな入力を教えようかと思いましたが、それは将来的には使わなくなりそうなスキルだと思い、そして私はローマ字入力ができるようになってほしいと思っているので、この路線はいったん没にしました。
- それでローマ字入力を教えることもやってみましたが、「何のためにこんなことを練習しているのか感」がひしひしと伝わってきて、ああやっぱりこれはダメだと思いました。ということで日本語プログラミング路線はいったん封印です。
(3)
- やっぱり最初に必要なのは意欲と納得感です。「僕もプログラミングができるようになりたい!」「プログラミングできるようになるためにはこれができるようにならないといけないんだな」と思わせるのが先だと思うようになりました。
- それでblaライブラリ(→p20181024a)を使って、インベーダーゲームを作ってみたり、ブロック崩しを作ったりしました。私がぱぱぱっと作って「ほらやってごらん!」とやらせてみると、最初はぎこちなくやって即死していましたが、だんだんうまくなってきておもしろそうにするようになってきました。
- そして「ねえ、このキーでも操作できるようになんないの?」とか「ここはちょっと色を変えてほしい」とか言うようになったので、そこをぱぱっと直してやりました。・・・つまり私は暗に「プログラミングができるようになれば、こういうゲームが自分で作れるようになるし、改造だって思いのままだよ」ということを伝えているつもりなのです。気づいてもらえていないかもしれませんが・・・。
(4)
- 先日、世界オセロ選手権で横浜市の小学5年生が優勝しましたが(快挙!)、それをきっかけにオセロをやらせてみました。オセロはルールがシンプルで習得しやすく、それでいて「先読み」ができると強くなれるので、「ああしたら、こうする」を考えるきっかけには最善だと私は思っています。・・・そしてそうやって頭の中で、ああなって、こうなって・・・と考えるスキルは、プログラミングには(特にデバッグには)必須のスキルです。
- しかし先読みを覚えるより前に、そもそもオセロがどうしようもなく弱いのです。まあ初心者だからしょうがないのですが・・・。私が相手をしてもいいのですが、私も手加減すると疲れますし、ハンデとして4隅を与えても本気でやると全然勝てないので、かわいそうです。
- それでどうしようかと考えて、「ランダム打ち」のオセロゲームを作ってやりました。つまりPCに相手をさせようというわけです。もちろんこれもblaライブラリで作りました。・・・するとどうでしょう、何回かやるうちにうまくなって、やがてはランダム打ちに全く負けなくなるではありませんか! いやあ反復ってすごいですね。
- それではということで、隅が取れそうなときはすぐに取るだけのAIや、終盤14手だけは最善手を読み切るAIなどを作り、好きなだけやらせました。・・・そして徐々に強くなってきて、私が「どうしてここに置かないの?」と聞いたら「だってそこに置くと、次にここに置かれて取り返されてしまうから」などと言うようになったのです! おお、初歩的ではあるけど、ちゃんと先を読んでいるじゃないか!!
(5)
- とりあえずこの話はここでおしまいです。この先はどうなるかまだ不明です。・・・進展があればまた書きたいと思います。
(6)
- とりあえずここまでやって思ったこと。まず教える側に超絶なプログラミングスキルはいりません。オセロだって何も世界最強のAIを実装する必要なんてないのです。そんなことしたら、小学1年生はボコボコにされてしまい、つまらなくなってしまうでしょう。ほどほどに弱いからこそ、楽しんで練習できるのです。
- ゲームにしたって、何も知らない無垢な小学1年生なら、本当にみすぼらしいゲームでも十分に楽しめます。だからそういうゲームを作るべきです。・・・実はこれは重要なことで、私が短大で教えていた時、学生たちは世のかっこいいゲームに見慣れてしまい、授業で何を作ってもちっとも満足できなかったのです。これでは制作意欲はわいてきません。最初からすごいゲームは作れないので、最初はみすぼらしいゲームでも満足できるように、みすぼらしいゲームを大人が作って遊ばせるべきなのです。・・・ゲームの良し悪しはグラフィックや演出じゃない、ゲームバランスなんだと、それに気づけるようになるくらいに。
- とはいえ、さすがにテキストベースでは見栄えがしないでしょう。だからblaライブラリはちょうどいい感じです。
- 私はプログラマです。プログラマだからこそ、「作ってみせる」ことができます。プログラミングができない人だったら、あれこれとアプリをみせて「これはプログラムで動いているんだよ」ということくらいしか教えられないでしょう。しかも「じゃあそれのプログラムを見せて」と言われても見せられないのです。プログラマは、プログラミングを教えるには、すごく有利な立場にいると思います。
- ちなみに彼は算数で「16-9=」などの、10〜18の数から1桁の数を引く、繰り下がりがある引き算がすごく苦手で、よく間違えていました。普通ならここで算数ドリルとかをやらせるのかもしれませんが、私はblaライブラリで引き算練習プログラムを作ってやり、それで練習させました。今では繰り下がりのない引き算よりも正確に答えられるようになりました。
- そんなこんなで、とにかくPCを身近に感じてもらえるように誘導中です。
(7)
- [Q] 小学1年生用のPCはありますか?
- [A] はい、1万円で中古のWindows7機を買いました(15インチのノートPC)。既にバッテリが死んでおり、コンセントに刺さないと使えません。またインターネットに接続するための設定はしていません。・・・これなら壊されてもショックは小さいですし、とても安心して遊ばせられます。大人とPCの奪い合いをする心配もありません。
こめんと欄