実は今月のはじめに近所に子供向けのプログラミング教室が開講しました。
ScratchでmBotをつかった本格的なものです。
一か月4回で1万円程度の月謝なんですが、それを妻に話すと「あなたが教えたらいいじゃないか」と言われて、教えてみることにしました。
悩んだところ
実際に先週末、時間をとって息子(小学4年生になったばかり)に教えてみました。
先日からNHKの「whyプログラミング」でScratchをおもちゃにしていた息子にとっては、その延長線上あるものでしかありません。
ですから、あまりとやかく言わずに教えてみることにしたのです。
まず悩んだのが「何を教えるべきか」です。whyプログラミングも番組中では要点だけをネタとして扱いつつ、シュールなジェイソン氏の動きでプログラミングされた機械がどのように動作するのかをやっていました。
大人のように入門としてプログラミング言語の特性や文法なんてものを教える必要がなさそうに感じたので、そのあたりは割愛することにしました。なぜかというと、ブロックを並べてコードを記述していくので目の前に広がっているものが文法のすべてなんだということがあるからです。ですからひとつひとつのブロックが何なのかを教えるよりも、実際にブロックの名前から直観的に利用させて、予想と結果が違うときに補足する方法を採用しました。
次に悩んだのが「お題」です。ここも集中力が持続するためにはどうしたらいいかを考えたところ、自分が子供の立場になると興味のあることには集中するよね、ということに落ち着きました。そこで、息子の好きなゲームテイストのお題を選択しました。
以下がそのお題です。
最後に考えたのが「教える時間とその長さ」です。これは妻の考えで午前中の1時間だけ、ということにしました。一番集中してるときじゃないだろうか、ということです。
実際にやってみた
上記を踏まえて、土曜日の午前中1時間でやるよ、というアナウンスを本人にしておき、お題を一度だけ実行してみせました。こういうことをやるつもりだ、ということです。予習みたいなものですね。
すると、予想に反してその場でいきなりプログラミングをはじめてしまいました。
なにを触発してしまったんでしょう・・・
実はさきほどのサンプルはこのチラ見せのときにはコマンドメニューくらいしか実装しておらず、ほぼハリボテでした。しかし、見せたことによりインスピレーションを受けた?息子はコマンドメニューを実装してしまいました。
そのときは「やっべー…やることなくなったかも」と思ったのですが、そこは気にせずそのまま翌日教えることにしました。
息子の実装ではコマンドメニューは手書きした「こうげき」「にげる」などといった文字の横にこれまた手書きの矢印を別スプライトで用意しておき、動かすときに何らかの「キーを押したとき」というイベントに座標位置をジャンプさせる実装をしていたので、これをおさらいすることにしました。
おさらいとして、キーを押したイベント、メッセージによる操作などを使いながら上矢印キーと下矢印キーで矢印を移動させる方法、メニューを手書きではなく文字を入力したスプライトで書き直しさせるなどしました。が、好奇心で「ここをこうしてみたら面白そう」という暴走?を止めずに見守るようにしたので、実際に教えたのは最初の5分程度でした。
あとは息子の好奇心の赴くまま、つまづいたところをフォローするという方式ですすめていきました。
すると、BGMをつけたり変数によるHP(ヒットポイント、体力)の管理、座標位置計算、条件分岐などスムーズに覚えていきました。実際に身についたというよりは、「こうすればいいのか」という気づきを与えた、というくらいのものだと思います。
結局、疲れるまで1時間以上続きましたが、最後にコマンドメニューのネタバレをしてまとめにしました。
種明かし
おさらいのときに話をしたのはコマンドメニューをめちゃくちゃ簡単につくる方法です。もっと簡単な方法があるのかもしれませんが、Scratchらしくていいかな、ということでこうしました。
見ていただくとお分かりのとおり、コマンドメニューはスプライトになっています。しかし、矢印はスプライトとしては存在していません。これはなぜか?勘の良い方はすぐにお気づきだと思います。同じスプライト上にあるのです。
このスプライトは超手抜きでして、ExcelやPowerPointなどのOfficeスイートでオートシェイプをつかってつくっています。で、その図形をまるまるペイントへ貼り付けして画像として保存したものです。
あとはこれをコスチュームとして登録して上下の矢印キーで切り替えているだけなのです。
こうすると、コードは最低でも下矢印キーを押したときの「次のコスチュームにする」だけで下方向への矢印移動は完成してしまうというものです。
実際のコードでは背景がキーイベントを受け取ってメッセージを送り、各スプライトがメッセージを受け取って動作するようにしてあります。
このことを息子に説明しましたが、てっきり「手抜きじゃね?」と言うかなーと思ったのですが「こんな方法もあるんだー」と言ってくれました。でもOfficeスイートを使うのは面倒だなーという感想のようでした(^^;)それはそうか…
わたしの気づき
教え方、学び方は個人によって大きく異なります。座学は中学生以上にならないと意味がなさそうな気がしました。
個人的には幼児~小学生のころは自分の興味、好奇心に従って突っ走らせて、つまづきそうなとき、躓いたときにサポートする、というくらいがいいのかもしれません。
このことは本サイトの構成についても考えさせられるものでありました。
だって、ドリルを買う人がほしいのは、高性能なドリルではなくて穴なんですから…
あくまでもプログラミングは手段であり、ほしいものは面白いものです。
お仕事でされていらっしゃる方も、お金を払う会社がほしいのは事業に必要なものであり、ユーザーが満足するものなんですよね。
まだまだ修行が足りないなーと痛感しました。
なお、次回もまた続きを息子に教えていきます。次回予定はリストをつかって遊ぼうかと考えています。また気づきがありましたら投稿したいと思います。
また、お子さんへScratchなどでのプログラミングを学ばせようかな?と思う方はメールでもFacebookでもツイッターでもなんでも結構です。お気軽に声をかけてください。
0コメント