プログラミング教育における使用言語・環境について

中学校では必修化されているプログラミング教育ですが、小学校ではどのようなプログラミング言語・環境を採用すればよいのでしょうか?学習指導要領や過去の実践などを交えて書きます。

これまで

 過去も現在も、プログラミング自体が小学校学習指導要領に明記されたことはありません。ですので、公立小学校においてプログラミングを習得する授業が行われた例は非常に少なく、小学生に対して実施された実験授業はとても少ない状況があります。実施できたのは、学習指導計画に裁量をもたせられる附属小学校や私立小学校などで、私の知る限り一番古い実践は大阪教育大学附属小学校の算数の授業でプログラミング環境BASICが使用された事例です。その後をざっくり言えば、BASICが広まり、LOGOが登場して扱われるようになり、HTMLなどが割り込み、Scratchが隆盛している状況だと言えます。

 様々な言語・環境が扱われるようになるのですが、大事なのは「プログラミング教育が必修化になるかも・・」という政府の計画が出た頃から、「道具(手段)としてのプログラミング」から「内容(目的)としてのプログラミング」へと、プログラミングがプログラミング教育と変容した事だと言えます。


どのプログラミング言語・環境を採用すればよいのか

 この件は、永遠のテーマだと言えますし、慎重に判断すべき点です。例えるならば、プログラミングはコンピュータを動かすための操作盤のようなものです。なので、操作盤を作った人によって、ハンドルやレバーの位置やデザインなど、仕様が違って当然です。トヨタとVWではハンドルやダッシュボードなどのデザインやボタン配置、ブレーキの深さなどが違うわけです。ATとMTの違いもあります。その違いは、言語・環境を作った人の意図が反映されたものです。おそらく「もっと便利に」という熱い思いは共通しているのだと思います。
 全ての言語・環境で共通していることがあります。それは「コンピュータを動かす」という目的があるという事です。コンピュータの仕組みは、CPUの仕組みと言い換えることができます。私は教育学出身で専門ではありませんが、CPUの概念的な仕組みについて文献で読んだのですが「実は非常に単純な仕組み」だという事に驚かされました。ここでは割愛しますが、興味のある方は様々な文献がありますので読んでみてください。(ダニエル・ヒリスの著書はオススメします)
 話がちょっと逸れましたが、どのプログラミング言語・環境がよいか?についてですが、2点がポイントになると思います。


 1 学習の目標を達成するために適した言語・環境を選択する

 2 学習指導者の好み

 

 「なんだ、そんな事か」と思うかもしれませんが、1については、小学生に対する授業を考えると、学習の内容を吟味した上で、言語・環境を選択するべきだと考えます。教科教育ではごく当たり前の流れです。十進位取り記数法を1年生で扱おう→マグネットブロックを採用。のようなものです。
 ですが、ここ最近のプログラミング言語は何がよい?の議論では、まず言語・環境がありきで、それで何を教えるのか?という逆の流れが見受けられるように思います。それぞれの言語・環境は、先にも述べたように得意不得意があり、何か1つの言語・環境に浸かり過ぎるのも危険だと考えています(この件はまた別の記事で書きます)。
 ポイントの2で「好み」と書きましたが、指導する側が扱いやすいという事もとても重要だと思っていますが、もっと様々な言語・環境に指導者が触れて、作ってみることが必要ではないでしょうか。食べず嫌いをせず、色々な言語環境に触れることで、指導者側がプログラミングとは?について迫った上で、「これが美味しい!(良い)」と判断することが大事なのではと思います。何より指導する人が楽しんでプログラミングしている事を子どもたちに見せるのが一番大事です。