【実践例】遊びながらプログラミングの本質を学ぶ
今回は小学1年生、2年生向けのコンピュータがなくてもできるプログラミングの簡単な導入の学びについてご紹介いたします。実際に小学1年生や2年生で実施したことがあります。
基本的な学びの方針
プログラミングにおいて最も本質的な「命令」と「実行」のつながりを「命令を言語化して具現化する」遊びで体感します。プログラミングの導入ワークショップなので、今回はオプションとして、プログラミングの発展としてのコンピュータで学ぶとよいコンテンツをご紹介します。
学びの流れ
0.「プログラミング」ということばをきいてどんなことをイメージするか、みんなで語り合う
1.今回の学びで大切なこと「命令と実行」というキーワードを伝える
2.市松模様のカーペットなどを利用して、人を動かしてゴールまでいく道順を考えてやってみる。
3.使えることばを3つに限って、道順を考えてやってみる。
4.エクストラ:Codemonkeyで命令と実行を実践して学ぶ
0.「プログラミング」ということばをきいてどんなことをイメージするか、みんなで語り合う
実は、あまり大切ではないようで、このプロセスは最重要のステップです。これから学ぶ人達がどのような知識を持っているか、一人ひとり(人数が多い場合にはひとりひとつ)聞いていきます。それぞれの意見は黒板やホワイトボードに書いていくと良いでしょう。
例えばこんな返答が予想されます。
・ロボット
・きかいをうごかす
・わからない
・パソコンに関係する
・ゲームをつくる
などなどです。まずはどんなイメージを持っているかを知りつつも語り合っていく中で、いつのまにか「プログラミングをこれから学ぶんだ」という雰囲気ができてきます。
1.今回の学びで大切なこと「命令と実行」というキーワードを伝える
「語り合うときはじっくりと、伝えるときはさっくりと」というのが学びの雰囲気を作っていく上では最も重要なポイント。
プログラミングをするときにね、いちばん大切なことはね「命令と実行」なんだよ、つまり、僕たちがコンピュータに命令したことをコンピュータがやってくれる。僕たちがロボットに命令したことをロボットがやってくれる。ということなんだ。じゃあ、これから「命令して実行する」ことをやるためのゲームをみんなとやろう!
といった具合にさっくりと伝えて、次に行ってしまいましょう。
2.市松模様のカーペットなどを利用して、人を動かしてゴールまでいく道順を考えてやってみる。
こうしたチェスボードのような、市松模様のカーペット、もしくは格子状になっているタイルなどを使えば簡単にはじめられます。もしなければ校庭に格子を書いてもいいかもしれません。(準備は大変ですが。。)
基本的にこのゲームは他の人の考え方も大変参考になるので、可能であれば6人程度の少グループで、中心になるジェネレーター、一人を動かして始めるのが最も良いでしょう。
Step1 まずは、それぞれのことばで相手を動かす。
カーペットの上に何らかの目立つスタートとゴールの目印を置いてゲームを始めます。まず、「ここのスタートからゴールに行くまでにはどうすればいいかな、僕がみんなが言ったことを実行するから命令してね」と伝え、順番にそれぞれの命令を聞いて、「子どもが言ったとおり」に動きます。
スタートとゴールしかないので、全く制約なく子どもたちは大人を動かそうとします。
例えば、「まっすぐいく!」という発言があった場合には、「どこで止まるか」が示されていないので、ゴールを通り過ぎていってしまってください。
字義通りに動けば良いので、例えば「5歩前に進む」と出てきた場合には、極端に歩幅を狭くして5歩あるいてみるなど、そっくりそのまま実行するのがポイントです。
「ゴールのところまで行って!」と言われたらもう一つゴールの目印をつくっておいて「みんなが目指している方とは違う方」に行ってしまいましょう。
例えばこういう曲がることが必要とされる道順も結構面白いです。子どもたちはEgocentric (自分が中心)の見方である場合が多いので、他の人を動かすとなったときに「右に行く」となったときに自分の右の方向で行ってしまう場合が多くなります。その時は思いっきり命令されたとおりに動きましょう。
こうして、Allocentric(相手中心)の見方の大切さに気づき始めるのです。
以上のアクティビティはその場で順番に命令させるのでもよいですが、「ワークシート」などを用意して紙にその命令を書いておいても良いでしょう。小学1年生では文字を書ける場合とかけない場合もあるのでそのあたりをうまく調整しながらスムーズにみんなで試行錯誤できるとよいです。
3.使えることばを3つに限って、道順を考えてやってみる。
ここで、プログラミングにぐいっとアクティビティを寄せます。使える言葉を3つに限るのです。
・1マス進む
・右を向く
・左を向く
この3つだけでゴールに辿り着くための命令を考えるのです。
始めは一番簡単なものから、だんだん曲がらないとゴールに行けなかったり、障害物をうまく避けていかないとゴールに行けなかったりするようなステージをつくっていくとよいでしょう。
こうなってくるといろいろな解き方や発展の仕方を考えることができます。
・障害物を避けていく行き方いくつあるか
・どちらのほうが少ない命令の数で行けるか
・〇〇回繰り返すという新しい命令(ループ)を使って命令してみる
・自分で難しい道順の問題をつくってみる
などなど、様々に工夫をすることができます。それぞれ何回かの授業のコマにわけてもよいですし、一日の長い中で子どもたちといっしょに遊んでも構いません。大切なのは「いかに字義通りに大人が動くか」ということです。
4.エクストラ1:Codemonkeyで命令と実行を実践して学ぶ
今回のアクティビティはCodemonkeyで出てくる最初のステージに対応しています。Codemonkeyでの言葉に変換するとしたら、
・1マス進む => step 1
・右を向く => turn right
・左を向く => turn left
に対応しているので、それをそのまま書き換えればよいよ、と伝えてあげればあっという間にサクサク進めることができます。
もし、Codemonkeyでつまづいていたら、もう一度このアクティビティにCodemonkeyのステージを対応させてやってみると良いと思います。画面の中だと、「スピードが早い」ことや、「自分がやっているという感覚」がつかみにくいので、このワークショップはその理解を助けることができます。
実体験とことばをつないでいく、これこそ「プログラミング的思考」です。
ただ続けることを目的に、毎日更新しております。日々の実践、研究をわかりやすくお伝えできるよう努力します。