【塾長の独り言2】小学生や中学生にプログラミングさせても無意味!?という誤解がなぜ日本には根強いのか?

なぜプログラミング教育は誤解だらけ?

塾長です。

2020年度から実施されるプログラミング教育が目の前に迫ってきました。それなのに、今だに「そんなの意味あるの?」という疑問の声を聞くことがあります。もちろん多くは「誤解」からくるご意見です。今回はその誤解の正体について語ります。

解説動画の方が良い方は下のYouTubeでどうぞ。

【塾長の独り言2】小学生や中学生にプログラミングさせても無意味!?という誤解がなぜ日本には根強いのか?

(※)動画を撮った後で気付いたのですが、「黒歴史」と「ブラック企業」の2つの「黒」で話しがまとまっている気がするのは偶然です。たまたまで、他意はありません。何はともあれ、誤解が解けて日本のプログラミング教育が正しい形で盛り上がることを願います。

 

子供にプログラミングなんて習わせてどうするの?

最初に政府がプログラミング教育をうたったとき、賛同の声よりも、むしろ批判の声が高まりました。多くの人が誤解し、そして混乱したからです。私が思うに、その混乱の原因は2つあります。

日本人の誤解

  1. 日本ではプログラミング教育で失敗した黒歴史があるから
  2. 日本では「プログラミング」の意味が「コーディング」だから

1つ目は、高校数学にプログラミングを導入して失敗した「黒歴史」があったからです。
あの時は「フローチャート」と「BASIC」という特定の技術領域に偏ってしまったのが敗因です。実際、2014年度のセンター試験まで数学2BでBASICのプログラミングが出題されていました。センター試験の過去問集が、まるで人に見られたくない黒歴史のアルバムのようになっています。

2つ目は、日本では「プログラミング」の意味が、頭脳労働ではなく肉体労働の「コーディング」を意味しているからです。
日本では経験豊富でスキルの高い人が頭脳労働の「設計」を分担します。そして若手がその設計をただコンピューター語に翻訳することを「プログラミング」と呼んできました。要するに日本の多くの職場では「プログラマー」=「下っ端」なのです。
ところが海外でプログラマーと言えば、時にスティーブジョブスビルゲイツのように「世の中の仕組みを変えてしまった人」という意味まで含みます。

さて、海外視察で意識を高めた政府高官は、もちろん未来志向で意欲的な意味を込めて「プログラミング教育」と言ったつもりでした。しかし上記2つの背景を持つ日本社会では、その言葉はマイナスイメージでした。とても残念です。

日本のプログラマーは文系で、海外では理系!?

海外でプログラマーが世界の仕組みを変え続けてきたのには、日本とかなり違った事情があります。それは、日本のプログラマーが文系で、海外のプログラマーが理系だということです。

日本では理系の大学生の多くが公務員か研究職か工業系に進んでしまい、ソフトウェア産業にはあまり就職しませんでした。一部のパソコン好きな人くらいでした。信じられないかもしれませんが、2010年ころまで、多くの日本企業はプログラムの価値を低く見てきました。若手はその価値を理解していたかもしれません。しかし日本は年功序列。企業の上層部の人達は平成初期の感覚でプログラムを機械の付属品くらいにしか思っていませんでした。そのためプログラミングしている部署自体が、出世の見込めない部署にされていました。そんな状況のため、理系の技術者が多く育ちませんでした。そして才能のある人間は海外に行ってしまいました

実際、日本においてプログラマーの仕事の多くは、理系の知識を使いませんでした。日本のIT会社の仕事と言えば、ほとんどが事務作業を自動化するような開発です。そのような仕事が山ほどあって、それで飯が食っていけました。その種のプログラムは高度な数学や物理を使いません。算数しか使いません。いえ、本当は目に見えない所で、めちゃくちゃ高度な数学や物理学が使われているのですが、そういう肝心な機能は海外で発明されてしまっており、日本はそうした海外の技術を使ってプログラミングするだけです(※)。ですから文系の人でもプログラミングさえ勉強すればできるようになります。しかも仕事が多くあって、常に人材不足で残業だらけ。文系だろうが理系だろうが、多くの人がプログラマーになってきました。それが日本です。

(※)悲しいことにソフトウェア産業において日本は技術後進国です。
WindowsにMacOS、Linux・・・どれもアメリカ産です。インターネットやデーターベースの仕組みもアメリカ産です。人工知能や新しいプログラミング言語など、時代を切り開くソフトウェア技術のほとんどが海外製です。ビッグデータを抱えるGAFAは全てアメリカの企業です。日本人の多くは日本ではなくアメリカに納税している形になっています。
そして、塾長がマイクラミングを開発した時に参考にしたのは、英語のホームページと中国語のホームページだけです。スクラッチ3.0の仕組みをちゃんと解説している日本人は一人もいませんでした

日本のプログラミングはプラモデルみたいなものだった

たとえ話をします。

たとえば、プラモデルを組み立てるのに文系も理系も関係がありませんよね。必ず組み立て方を説明する図面や解説が着いてきます。その通りに組み立てれば、ちゃんと形が出来上がります。確かに作るためには一定の技量が必要で、時間もかかるし苦労もします。同時にチャレンジや楽しさもあります。色塗りなどで作り手の個性を出すこともできます。日本のプログラミングは、正に「プラモデルを組み立てる作業」のような感じでした。

しかし海外のプログラミングは、もっと根本的な開発を含んできました。

化学の専門知識を持った技術者がプラモデルに相応しいプラスチックそのものを創造しました。あるいは塗料を作りました。物理学や工学の専門家がプラスチックを綺麗に成型する機械を発明しました。数学を操る技術者が図面や解説を何倍に拡大・縮小して印刷しても滑らかに表示できる数式を作りました。ソフトウェア工学の専門家が、それらをデーターベースやソフトウェアに置き換えてパッケージ化し、製造方法そのものを商品にしました。

上の話しは、あくあまでもたとえ話です。

要するに、ほとんどの日本のプログラマーは、今まで発明の必要がないか、発明ができない立場や状況にいました。しかしプログラミングは安い作業ではありません。他の職業と同じで、むしろ世の中を良くする仕組みを創造する活動です。

色々な分野の専門知識が、色々な立場の人たちに広く利用できるようになる、そういう仕組みを創り出していく活動も「プログラミング」に含められます。また、そういう夢をぜひ持って欲しいと思います。

20世紀後半、確かに日本人の技術力は多くの分野で世界1位だったかもしれません。しかしコンピューターが発達してソフトウェアの重要性が高まるにつれ、日本の技術力はどんどん影を薄めてきました。過去の栄光に浸るには、僕らはまだ若すぎます!

早く目覚めなければいけません。日本人はプログラミングにおいても「世の中の仕組みを根本から変える発明」を目指さすべきです。そういう人が千人に1人、いや万人に1人でも出て来るような社会にしていく必要があると思います。

プログラムの基礎が国語や数学や物理!?

プログラミング教育よりも、まず読解力だ、算数・数学だ、という主張が根強いです。英語教育を強化する時にも同様の主張があります。読解力や算数・数学が大切なのはもちろんです。しかし、だからと言ってプログラミングや英語は後回しで良いとはなりません。むしろ読解力や算数・数学の技能を発揮してプログラミングして欲しいと思います。

それがどういう事かを考えてみましょう。

コンピューターを触らないプログラミング

今から25年くらい前、大学生の時。私は選択科目の中で「コンピューターアルゴリズム」を受講しました。大学生になったらプログラミングを勉強しようと決めていたからです。「アルゴリズム?」という疑問を抱きつつも、コンピューターと名の付く講義がそれしかなかったので、迷わず選択しました。ところが、最初の講義で取り組んだのは図形の問題でした。次の週も数学でした。最後は円周率を速く正確に求める数式の問題でした。結局、その講義の中ではコンピューターを1秒も使いませんでした。紙と鉛筆だけの世界でした・・・

アルゴリズムは「算法」と和訳されるみたいですね。そういえばコンピューターは計算機でした。同じ計算結果を得るために、どんな式を使うかで計算の速さが変わりますプログラミングする前に、より速くより正確に計算できる数式を考えること。それがアルゴリズムでした。ですから、残念ながら最後までコンピューターを使わなかったわけです。

仕事の早さも電気代もプログラマー次第!?

ただし学びは大きかったです。

  • プログラマーが数学や物理の公式を知っているか否か
  • 更にその公式を目的に応じてカスタマイズできるか否か

こうしたことで、計算の速さも計算結果の正確さも大きく変わってしまう、ということを理解できました。しかも電気代も時間も大きく変わってしまいます。同じ仕事をするのに、時には1万倍くらい効率が変わったりします。使うエネルギーが何桁も小さくて済みます。

もしも世界中のプログラマーがアルゴリズムを学べば、世界中のコンピューターが消費する電力が今よりもずっと減って、地球の温暖化さえ防げるのではないか、と思ったくらいです。

例えば、四捨五入をどう求めるか?

アルゴリズムしだいで計算量が変わってしまう簡単な例を出します。おそらく、よくある例題だと思います。

「与えられた小数を、小数第1位を四捨五入して整数の概数にしなさい。」

これを四捨五入の考え方どおりに、正直にプログラミングするなら、次のような6行以上の処理(プログラム)になるでしょう。

「整数部分」 に 「小数」の整数部分を代入しろ
「小数第1位の数」 に 「小数」の小数第1位を代入しろ
もしも 「少数第1位の数 」が4以下 ならば
「整数部分」を表示しろ
そうでなければ
(「整数部分」+1)を表示しろ

しかし、もっと簡単な方法があります。

「整数部分」に(「小数」+ 0.50 )の整数部分を代入しろ
「整数部分」を表示しろ

これなら、たったの2行です。工夫すれば1行にもできます。注目すべきは小数第一位について「四捨」と「五入」で場合分けする必要がないところです。コンピューターで遅い処理の1つが場合分けです。これが無いのは大きいですね。

これがアルゴリズムを考えるということです。そして本来はアルゴリズムも「プログラミング教育」に入ります。むしろアルゴリズムの方が大切です。

「目的」と「手段」を分けて考える発想を養う

上で見たように、コンピューターを使いこなすということは、目的と手段を分けて考えることに他なりません。

「四捨五入を求める」という目的の実現方法は何通りも考える事ができます。視野を広げるほど、いろいろな手段が思いつきます。
そして上の例題では、たまたま「小数第1位を」四捨五入する条件だったので「0.5を足す」という短い計算方法が選択できたわけです。

プログラミング教育では、次のような取り組みを体験させる狙いがあります。

  • 答えが1つに定まらないような問題にチャレンジする。
  • 試行錯誤で最適解を見つける。

難問に対して「無理だ」と即答しては何も生まれません。正解が1つという発想を捨て、今できる最大限の答えを見つける発想を変えれば、できることが生まれます。そのように視野を広げて、手段を何通りも並べて、何度も試しながら、最適解を導いていくこと大切なのです。

またそのために、国語、算数、理科、社会、英語や美術、技術などの素養が必要です。逆に、勉強したことを使おうとするから身に着きやすくなる、という側面も出てくるでしょう。

今こそ理系的なプログラミング教室が必須!

ですから「ただ図面を見ながら組み立てるだけ」みたいなプログラミング教室には、絶対にしたくありませんでした。
また、時代や流行りに依存するような専門知識を詰め込んでも、価値がないと思いました。

かつて高校生がBASICというプログラミング言語を習わされて、それでセンター試験も受験しました。しかし今やBASICを使う最先端の仕事など、ほとんどありません。高校までの学校教育において、特定のプログラミング言語の用語や文法を覚えさせても意味がないのです。時代に合わせた職業訓練は専門学校の仕事です。
第一、みんながプログラマーになるわけではありません

そして実際のところ、「組み立てるだけ」とか「職業訓練の簡易版」のような小中学生向けのプログラミング教室が多いです。私はそういうプログラミング教室を教育とは見なしていません。もちろん趣味と割り切れば良いですが、私は少なくとも自分の子供にそれをやらせようとは思いません。

そうではなく、もっと根本的に、生徒たちの血肉になるような活動にしたいと思いました。
理数系の頭脳や論理的な思考力を、ちゃんと伸ばす活動にしたいと思いました。

知らないうちに、高度な数学的なセンスや図形のセンスが身に着いている。
知らないうちに、創造する喜びが体験できている。

そんなプログラミング教室にすべきだと思いました。

だから、もう自分でプログラミング教室を作るしかなかったのです。

マイクラミング

本来のプログラミング教育は、偏った専門知識を覚えさせたり、特定の技能を訓練するものではなく、子供たちが問題に立ち向かう基礎力を育てるものです。

マイクラミング」は、そんなプログラミング教室になっています。そうなるように教育改革後の学習指導要領をにらめっこしながら作りました。子供たちの頭を良くするために塾長が自ら開発!しました。

そして、テキストは本厚木校の髙橋先生にお願いして、小学生にも親しみやすい構成にしてもらいました。「プロボン」というキャラクターも生まれました。ありがとうございます。

生徒たちは、パソコンやプログラミングの専門用語なんて、ほとんど覚えません。いち早く課題を解決することやマインクラフトで建築を「創造」することに没頭できるようになっています。試行錯誤が大切なのであって、専門知識の暗記をしたいわけではないからです。

それでいながら、小学1年生がマイナスの数を理解し、計算もできるようになります。それどころか、高校2年生の空間ベクトルで習うはずのxyz座標を、小学生が理解して、使いこなしています。そのような数学の知識を活用してプログラミングを楽しんでいます。
そして、マインクラフトの世界に多くの魔法をもたらしています。

小学1年生でも取り組めるジュニアコースから、三角関数やデータ処理を扱うハイコースまで用意しました。実際ヒーローズ植田一本松校プログラミング教室には、小学1年生から高校3年生まで広い層が在籍しています。

日本人の「プログラミング」に対する誤解がちゃんと解けて、正しいプログラミング教育が、もっともっと盛り上がっていくことを願うばかりです。

まずは近隣の方から、ぜひお立ち寄りくださいませ。

 


名古屋市天白区の植田で塾を探すなら個別指導のヒーローズ!!

★ 直接のお問い合わせ ★
――――――――――――――――――――――
個別指導ヒーローズ 植田一本松校
〒468-0009
名古屋市天白区元植田1-202 金光ビル2F
TEL:052-893-9759
教室の様子(360度カメラ) http://urx.blue/HCgL

  • このエントリーをはてなブックマークに追加

SNSでもご購読できます。