伊本貴士
メディアスケッチ代表取締役 兼 コーデセブン CTO、サイバー大学客員講師

 2020年に小学校でプログラミング教育が必修化することが話題になっています(文部科学省のサイト)。

 私はエンジニアとして、小学校でプログラミング教育を必修にすることは歓迎すべきことだと思います。しかし、これからの時代を引っ張る優秀な人材を育てるために、何が本当に必要なのかをきちんと整理することがより重要だと考えています。そこで、教育する側である自分への自問自答も含めてプログラミング教育のあり方を考えてみたいと思います。

 まず、文部科学省の資料『小学校プログラミング教育の手引』を読んで驚きました(同手引)。「プログラミング必修化」と言っているのに、プログラミング言語によるコーディングを教えるわけでも、「プログラミング」という科目ができるるわけでもないのです。

 では、何をどうするのか。文部科学省の資料を読むと、ビジュアルプログラミング「Scratch」による論理的思考を養うために、算数や理科など既存の教科でアルゴリズム演習を行うというのです。

 つまり、「プログラミング(コーディング)の方法を学ぶ」のではなく、「(ビジュアル)プログラミングを通して論理的に考える方法を学ぶ」という話です。ややこしいので注意しましょう。

 私は、ICTを駆使する次世代人材を本気で育成するのであれば、コンピューターサイエンスを小学校から教えて、パソコンの仕組みなどを理解した上で、プログラミングをするのが理想だと思っています。今はゲームやスマートフォンを使っている子供たちが多いので、案外興味を持って学習し、理解するのではないかと思うのです。とはいえ、私が世の中の小学校の実情を全て把握できているわけではないので、ここでは一個人の理想にとどめておきたいと思います。

「論理的思考」の誤解

 論理的に考える方法には、「帰納」と「演繹」という2つの方法論があります(正確には、仮説形成もあります)。

 「世の中には帰納的な考えができる人は多いが、演繹的な思考ができる人は少ない」というのがデータサイエンスの授業を行っている私の感想です。現代のデータサイエンスの考え方が基になっている人工知能も演繹的なアプローチのため、帰納的な考えだけでは理解することができません。

 帰納法は、規則と前提条件から結論を導き出します。

例:「免許を持っている人は運転できる」という規則と「Aさんは免許を持っている」という前提条件から、「Aさんは運転できる」と結論付ける方法です。

 演繹法は、結論と前提条件から規則を導き出します。

例:「Aさんは運転ができる」「Bさんも運転できる」「Cさんは運転できない」という結論と「AさんとBさんは免許を持っている。Cさんは免許を持っていない」という前提条件から、「免許を持っている人は運転できる」という規則を導き出す。

 例えば、文部科学省の資料には、正三角形を描くアルゴリズムを作成するプログラミング教育の例を掲載しています。

 「100移動し、60度右に回転する。これを3回繰り返せば長さ100の正三角形になります」というのは帰納的思考法です。「正三角形がたくさんある。これらの正三角形に共通している特徴から正三角形と呼ばれるための条件を考えましょう」や、「正三角形をいくつか使って正方形を作るにはどうすればよいか考えましょう」というのは演繹的思考法です。

 これからの時代を担う人材には、帰納的な思考ができることはもちろん、演繹的な考え方ができる人材が必要になります。