小学校のプログラミング教育2020年度から、プログラミングが小学校の必須科目になるそうだ。新聞記事にはあまり詳しいことが書かれていなかった。教育の目的がはっきりしない。重要な目的が書かれていないとは、どういうことだろうか・・・。そこで、ここではプログラミング教育の目的を推測したうえで、プログラミング教育がその目的を達成するのに本当に適しているのかを考えてみた。考えられる目的は(とりあえず)4つ。システム)は私たちの日常生活と切り離せないほど深く結び付いている。運営にもITは欠かせない。多くの企業でシステム化されている。最近ではIoTという流行語に代表されるように、たくさんの機器やセンサーがコンピュータシステムとつながり、データ処理する方向へと進んでいる。このような背景から、私たちはITの利用者として、ITの基礎知識と、ITの使い方やルール(規範や倫理)に関する最低限の知識を学ぶ必要があるだろう。この目的に鑑みた場合、プログラミングは必要な知識領域のなかの些末な一部にしかすぎない。利用者側の視点からはプログラミングの知識はそれほど重要ではない。いまどきは小学生でもスマートフォンを持っているそうだから、プログラミングよりも、むしろPCやスマート・デバイス(スマホやタブレット)の使い方やルール(規範、倫理)を教えることが先決だろう。SNS(ソーシャル・ネットワーキング・サービス)は情報共有のためのツールだが、近年、殺人事件やそれに類する犯罪行為、あるいは企業にダメージを与える事件にSNSが絡んでいるケースが増えていると感じる。その多くは、社会規範や倫理を逸脱したSNSの使用が原因である。SNSそのものが悪いのではなく、使う側のマナーや倫理の問題である。2情報処理システムの構築技術ITを利用するだけでなく、ITを構築する側の技術も視野に入れて、その基礎知識を習得することが考えられる。この目的に鑑みたとき、プログラミングはシステム構築における下流工程の一部分ということになる。教育体系として考えたときには、下流工程の学習の先に、上流工程である要求定義やシステム設計の教育が必要になる。最近のITを考えたとき、コンピュータだけではなく、特にインターネットを中心としたネットワークの知識も不可欠である。最近の流行であるクラウドコンピューティングも、コンピュータとネットワークが融合することで可能になった技術だといえる。情報処理システムの導入教育として、プログラミングを教えることには一定の意義がある。どのプログラミング言語を教えるのか、という問題は残りそうだ。コンピューターの仕組み(原理)を教えるのにはアセンブラなどの低級言語が向いているが、今時アセンブラを使う場面はないだろう。オブジェクト指向言語や関数型言語を小学生が理解し得るのかという疑問もある。そもそも、近い将来プログラミング自体が不要になる可能性すらある。プログラミングの自動化が今よりもさらに進むか、AI(人工知能)がプログラムを生成する時代も夢ではないだろう。3デジタル・モノづくりを体験する技術家庭の一環で、デジタル・モノづくりを体験させるという目的が考えられる。新聞記事にはラズベリーパイを使ったモノづくりが紹介されていた。ラズベリーパイとは、手のひらサイズの超小型コンピューターのことである。価格が5,000円程度と手軽なことから、電子工作を楽しむ人が、子供だけでなく大人の間にも増えているそうだ。感覚的には、昔の手作りラジオやモーターを使った工作物の延長だろう。昔の工作物と違い、小さいながらもコンピューターであるから、出来ることの範囲が広くて柔軟性が高い。ソフトウェア(プログラム)次第でいろいろなものが作れる。アイデアを形にできる楽しみもあるだろう。デジタルモノづくりで今一つ思いあたるのが3Dプリンターである。こちらはプログラミングというよりは、(より本格的に作るとなると)3D-CADの知識が必要になる。今後モノのデジタル化が進展することを考えると、3Dプリンターや3D-CADに関連するスキルは、製造業で重要性を増すと考えられる。問題や課題の解決策を論理的に考え、それを文章などで表現して相手を説得するスキルを育成する。ビジネスマン向けの図書にも、ロジカル・シンキングの重要性と、その方法論などを謳ったものがある。この目的に照らして、プログラミングを学ぶことには一定の効果がありそうだ。プログラミングをとおして、ロジック(論理的な手続き)がどのようなものかを学ぶことができる。プログラミングを通して学べるのは、論理的思考の一部に過ぎないかもしれない。論理的思考の分類には、帰納法と演繹法というものがある。手続型言語におけるロジック(アルゴリズム)は演繹法に近い。帰納法はプログラミングでは学べないだろう。プログラミングで学ぶロジック・思考方法に弊害があるとすれば、それは原理的に(哲学的に)二分法であるという点である。最近はものごとを短絡的に「正義」と「悪」に二分する傾向が強い。ネット上の書き込みなどにもこの傾向がみられ、悪に分類された人を一方的に叩く傾向があるように思う。いった傾向を「社会全体が寛容でなくなってきている」と表現する人もいる。短絡的な二分法は分かりやすい反面、危険性も高い。以上、目的からプログラミング教育の適否を考えてみたが、教える時期も考える必要があるだろう。小学校から教える必要があるのか。読み書きの基礎と同じく、ITリテラシーの基礎(特にルール)を教えることの方が大事な気もするのだが。