2020.12.12

プログラミング教育のキモ

2020年度から本格的に学校現場にも導入された「プログラミング的思考」の教育。でも
「プログラムなんか書いたことない」
と、あたふたしている先生方も多いのではないでしょうか。そこで今回は、プログラミング教育のキモをお話ししたいと思います。

まず重要なのは、学校現場における「プログラミング的思考」の導入は、「プログラムの書き方を教えることではない」という点です。世の中では「Scratchを使ったプログラミング学習」的な書籍や実践例が多く出ています。あれらは、あくまでも「プログラミング的思考」を身につけるための手段の1つとしてScratchを使っているだけです。そして手段の1つであるということは、他のやり方もあるということです。

プログラムの基本は「動作」を「順番に並べる」「繰り返す」「条件によって分ける」のことで成り立っています。「順序」「反復」「条件分岐」と言い換える事もできます。
「順序」は動作を時系列に並べることを指します。例えば「歩く」という動作を考えると、

1.右足を地面から離し、持ち上げる
2.(体重移動を行い)体を少し前に倒す
3.持ち上げた右足を左足よりも前の地面に下ろす
4.左足を地面から離し、持ち上げる
5.(体重移動を行い)体を少し前に倒す
6.持ち上げた左足を右足よりも前の地面に下ろす

という順序になっているはずです。3番の動作を行う前に4番の動作を行うと大惨事です。人間はこういうことを意識せずに行っていますが、もしロボットを歩かせるなら、この順序で動作をさせる必要があります。
このように、世の中にあるものは様々な動作を順番に行っています。

次の「反復」は動作を繰り返すことです。「歩く」場合、先ほどの1~6の順序で体を動かすと、2歩だけ歩くことができます。歩き続けるには7以降も書く必要があるのですが、よく考えると7~12の動作は1~6とまったく同じです。ですからこの場合、1~6を反復すれば良いわけです。プログラムでは「次の動作を○回繰り返しなさい」という指示を行います。これで書かなければいけない動作が大幅に減らせます。

最後の「条件分岐」は条件によって動作を変えることです。歩くという動作もずっと続けるわけにはいきません。目の前に壁が現れたら止まらなければいけません。先ほどの「反復」もあわせると、歩くという動作は「目の前に壁が現れるまで、1~6の動作を繰り返しなさい」となります。
もちろん条件は様々です。歩く場合の止まる条件は「階段」「横断歩道」もあるでしょう。目の前に人がいれば止まる必要がありますし、急に自転車が飛び出してきても同様です。

このように、自分たちが普段何気なくやっている動作を「順序」「反復」「条件分岐」という視点で捉え直すだけで「プログラミング的思考」を鍛えることができます。教員であれば
「教科の内容を教える手順は、本当に今のままで良いのか?」
に応用しても面白いでしょう。