2020年11月
8月と9月の雑感で新しい学習指導要領で新設される「論理国語」のことについてお話しましたが、今回は同じく改定にあたり賛否さまざまな意見が出された「プログラミング教育」について考えてみようと思います。

まずは新学習指導要領での「プログラミング教育」の内容をみていきます。
まず小学校では今年度からすでに必修化されています。
当初は「プログラミング」という授業が出来て、子どもたちにプログラムのコードを書く練習をさせるのか? という誤解も生じたようですが、実際には従来の算数、理科、総合学習などの授業の中で簡単なプログラミングを体験することで「プログラミング的思考」を育み、教科の内容の理解を深めることを目的としたもののようです。
具体的な例が文科省、総務省、経産省と民間協働の事業である「未来の学びコンソーシアム」( https://miraino-manabi.jp )のサイトに掲示されているので参考にしてください。
またここで言う「プログラミング的思考」については「小学校プログラミング教育の手引」の中で 「自分が意図する一連の活動を実現するために、どのような動きの組合せが必要であり、一つ一つの動きに対応した記号を、どのように組合せたらいいのか、記号の組合せをどのように改善していけば、より意図した活動に近づくのか、といったことを論理的に考えていく力。」と説明されています。

中学校では前回の指導要領から既に技術・家庭でプログラミングが取り入れられていたのですが、今回の改定で「ネットワークを利用した双方向性のあるコンテンツのプログラミングによる問題の解決」という内容が加えられ、よりネットワーク時代に対応したかたちに改定されます。
実施は2021年度からになります。

高校ではこれまで選択科目の「情報の科学」でプログラミングが扱われていましたが、実際に選択される割合は2割程度だったようです。そこで今回の改定では必修科目の「情報Ⅰ」が新設され、すべての生徒がプログラミングを学ぶようになります。実施は2022年からになります。

以上が小、中、高での改定内容ですが、この中で特に小学校での必修化が議論になりました。
小学校の場合、専門の教員がいるわけではないので、学級を受け持つ担任が「プログラミング教育」を実施しなければなりません。当然プログラミングは未経験、IT機器も苦手という教員も多くいるはずで、そうした人たちはただでさえ忙しい時間を割いて新たに学ばなければなりません。こうした負担を教員に押し付けることの是非、そしてその効果を疑問視する意見が出てくるのは当然でしょう。ICT支援員などの制度も作られているようですが抜本的な解決にはならないのではないでしょうか。
小学校での「プログラミング教育」を意味あるものにするためには教員の増員、少人数クラスの実現など人的な環境の整備は欠かせないと思います。

その上で、個人的にはプログラミングを教材とすることは有意義であると思っています。
以下、その理由を説明していきますが、まず自分のプログラミングに関する知識の程度について述べておきます。
自分は30歳を過ぎてから初めてパソコンを使うようになったので、今の子どもたちから比べるとかなり遅いスタートでした。
ただ、元来「中身がどうなっているかわからない機械」を使うのが嫌いだったので、はじめにマシン語の勉強をして、以後様々なプログラミング言語をちょっとずつ齧ってきました。ですから趣味的にプログラミングで遊ぶことはできますが、専門の人のような深い知識は持っているわけではありません。以下の説明はその程度の知見からの発言であることをご了承ください。

プログラミングをしていて「一番勉強になるな」と思うことは、実は自分で作ったプログラムが思ったように動かないことです。
コンピューターという機械は人間と違い、余計な忖度などせず、言われたことを忠実に実行します。ですから思ったように動かないのは自分の考えに問題があるからです。どこかに「こうなるに違いない」といった思い込みがあったり、想定している範囲が狭かったりすれば、エラーという明確なかたちで返されるのです。 そうなると「どこがまずかったのか」を考えて、プログラムを修正し、改めて実行してみることが必要になります。しかもそれが一発でうまくいくことは少なく、たいがいは修正と実行を繰り返すことになります。
この過程で自分の狭く誤った考えが修正されていく経験をするわけですが、それこそがプログラミングを学習することの大きな意味だと思っています。
実はこうした過程はプログラミングに限られたことではなく、多かれ少なかれどんな学習にもみられるのですが、プログラミングの場合、結果がすぐに明確に現れるのが利点なのです。
ただ、こうした体験をするためには子どもたちが自分の意思でいろいろ試してみることが必要になります。「言われたとおりにプログラムを組んで、たしかにうまく動きました。」という体験だけをしたのではプログラミングを学習する意味は低いと思います。子どもたちが興味を示し、主体的に取り組むことが必要なのです。
小学生の場合なら、変に教えようとはせず、ゲーム感覚でプログラムを組めるビジュアル環境で、自由にあれこれ試してみることから始めたら良いのではないでしょうか。
こうした条件をクリアすれば、プログラミングを含めたIT技術は子どもたちの体験する世界を広げていく強力なツールになると思っています。

以上がプログラミング教育が有意義であると思う理由ですが、ひとつ気をつけておかなければならないことがあります。
それはプログラミングによる問題解決の方法と、人間による問題解決の方法には違いがあるということです。 例えばパズルをコンピューターに解かせる場合、ある程度までは論理を使いますが、その先はコンピューターの圧倒的な処理速度を使って「しらみつぶし」に調べてしまいます。変に論理的な解法にこだわるとプラグラムが複雑なるばかりで実用性がなくなるし、それでは人間による解法をコンピューターに模倣させているに過ぎないのです。
これに対し、人間の問題解決法は行けるところまでは論理で進めますが、その先は「勘」に頼る部分があります。そのため「論理的な思考力」を身につけるとともに体験の中で「勘」を鍛えていくことも重要なのです。ここで言う「勘」とは「当てずっぽう」ということではなく、何らかの根拠はあるけど言語化出来ていない部分のことで、それを身につけるためにはリアルな世界での体験の積み重ねが欠かせません。
しかしプログラミングで身につけることができるのは論理的な部分なのです。 その意味でのプログラミング的思考の限界も理解しておくことが重要だと思います。
余談になりますが、コンピューターが持っていない「勘」の部分を膨大なデータと処理速度で補うのがディープラーニングなどのAI技術なのではないかと思っています。

最後になりますが、今回のプログラミング教育の導入に関して問題に思っていることがもう一つあります。
それは導入の目的です。
先述の「未来の学びコンソーシアム」が出しているパンフレットには「プログラミング教育が必修化された背景」が述べられています。
そこでは「これからの国の競争力を左右するのはIT力である。」「日本ではIT人材が不足している」「そのためにはプログラミング教育を実施してIT人材を育てなければならない」という論理が展開されています。
ここには明治以降の日本が欧米に追いつくために一律の一斉授業を導入していったのと同じ発想が感じられるのです。この方法は20世紀の産業では確かに有効ではあったのかもしれません。しかし21世紀の今、そんな旧態依然な発想でIT人材が育つかは疑問です。
もしプログラミング教育がIT人材育成のために、上から教育現場に押し付けられていくのであれば、意図したように機能することはないと思います。
本当に「未来の学び」を目指すのであれば、子どもたち一人ひとりが「自分の思ったように生きる」ための力をつけることを目的にすべきであり、そのために子どもたちの世界を広げていく手段としてプログラミングやIT技術が利用されるべきでしょう。
そして、それが実現すれば結果としてIT技術を身につけた子どもたちが育ってくるのではないかと思います。