最近、こどもたちにプログラミングを教えたり、もともと3年ほど大学生〜社会人向けの講師もしていたりということで、プログラミング教育について話をいただくことが増えてきました。
実際に教えた中での経験や、いままでのエンジニアとしてのキャリア、さらに今後のAIやIoT時代というところも少々考慮に入れつつお話しさせていただくのですが、気になるのは「なぜプログラムを学ぶのか」、「プログラムで何を教えるのか」といったことです。
プログラムを学ぶ・教える理由
プログラムを学ぶ理由、教える理由というのは、大きく分けて2つあると思います。学ぶ方が最初からそこまで考えて学ぼうとしているのかは微妙なところ(特にこどもが相手の場合は、そのご両親も含めて)なので、教える側がきちんと考えておく必要があります。
1つは、プログラミングそのものを学ぶ・教えるということです。つまり、将来的にプログラマやエンジニアになることを目指したり、自分で何かを作りたいから学びたいというような理由です。
もう1つは、プログラミングは単なる材料であって、本当に教えたいのは理論の構築力とか、目標の達成力とか、思考力に関するものである場合です。
安倍政権で検討している2020年からの小学校でのプログラミングの必修化は、どちらかというと後者が目的のように見えます。ただ、本当の理由がこれなので、だったら数学の問題を解く力とか、理科の実験とかでもまかなえるのではないか、わざわざプログラミングでやる必要はないのでは?といった反論を招くことにもなります。
では、何を教えるのか
プログラミング自体を学びたいのであれば、教える側も簡単です。プログラミング言語はPHPとかJavaScriptとか実利性の高いものが良いでしょう。PHPを覚えればちょっとしたWebアプリも作れるし、最近はWordPressでブログや会社のサイトを作ることが多いので、それをちょっといじれるというメリットもあります。
学びたいのはプログラミングよりも思考力の場合、PHPやJavaScriptといった実利的プログラミング言語では弊害がある場合もあります。そもそも今のこどもたちがキーボードをちゃんと打てるのかとか、ifとかforとか英語じゃないかとか(それはそれで英語の勉強になるじゃないかという話もあります)・・・。プログラミング言語の癖とか技術的な云々のようなものが学習の主対象になってしまうことも考えられます。学びたい・教えたいのはそこじゃないよと。
だったら、Scratchとかの方が良いのではないかということになります。Scratchならマウスのドラッグ・アンド・ドロップでプログラムが作れるし、日本語だし(ひらがなモードもあるし)。でも、そこから実利的なプログラミング言語に移ろうとするとちょっとジャンプが必要になります。
目的を明確にする
学ぶ・教える理由(目的)がどちらの立場であっても、それは間違いではありません。どちらの理由もあって然るべきだからです。ただ、目的と教える言語等の選択がズレてしまうことは避けなければなりません。
少なくともプログラミング自体を学んで実利的になにか作ろうしている人にScratchを教えるのはズレています。一方で、思考力が目的の場合に例えばPHPを教えることが是か否かの判断は微妙なところです。PHPのような実利的なプログラミング言語の危惧は技術的な課題にハマりすぎることですが、その辺は教材次第でどうにでもなるかもしれません。
この問題の解を簡単に挙げることはできませんが、少なくともプログラミングを教えようというのであれば、目的をきちんと詰めておいて、後でブレないようにしておくことは重要だと思います。