幼少期のプログラミング教育

大岩 元 ohiwa@sfc.keio.ac.jp
慶應義塾大学 名誉教授 ohiwa@sfc.keio.ac.jp
(一社)協創型情報空間研究所 代表理事

小学生からのプログラミング教育が世界中で始まった

 世界中で小学校からのプログラミング教育が始まった。これは、情報技術が社会全体のインフラとなると同時に、それが人間の仕事を奪い出したことに危機感をいだいた先進国の子どもの親達が、情報技術の基礎であるプログラミングを学校で教えるべきであるとして、政府に圧力をかけたかららしい。
 幼児にプログラミングを教える研究は1980年代から米国のマサチューセッツ工学大で始まり、LOGOという言語が開発された。日本でも先駆的な研究が富山県の小学校教諭の戸塚滝登氏によって行なわれ、教育学者の佐伯 胖氏が岩波新書「コンピュータと教育」の中で紹介している。
 ハンガリーで行なわれた Marta T.Szabo 氏の指導した幼児がLOGOを用いて描いた線画を図1に示す。手ではとても描く気になれない複雑な花の絵は、プログラム機能を利用すれば幼児でも描けるのである。しかし、このような入門教育を慶応大学SFCの学生に行っても、なかなか幼児のようには描けず、2000年代に入ると簡単な絵ですら描ける学生はいなくなってしまった。幼児に行なえば可能なことが、大学生になってからでは非常に困難であることは識字教育との関連性をうかがわせる。

図1

プログラミング教育とコンピュータ科学(Computer Science、略称CS)

 コンピュータに実行させたい仕事を、コンピュータが実行できる言語で記述することをプログラミングと呼ぶ。その中核は仕事の手順を考えることである。これは、母語でやるより方法がないので、専門家も場合によっては自分の母語でプログラムを書くし、書くための思考は母語でやるしか方法がない。
 しかし専門家の場合はプログラム作成の中で作った典型的なプログラムの蓄積があって、それを手直しして目的のプログラムを作る事が多い。そこで、専門家の育成においても日本では、蓄積された典型的なプログラムをまず覚える写経プログラミング教育が行なわれてきた。この方法では自分の創り出したい仕組をどう作るかという教育は行なわれず、専門家の実務作業をそのまま覚える形式で行なわれてきたのである。外国のプログラミング教育は時間をかけて創り出したいプログラムを一から作り出す方法が訓練され、その教育体系が Computer Science(CS) という学問体系を生んだ。

プログラミングに適した言語である日本語

 実は、日本語はプログラムを書くことに適した語順をしており、目的語を言ってから動詞を言うことになっている。このため日本人は「1に2を足して3を掛ける」と聞けばすぐにどんな計算が行なわれるかイメージできる。米国人の場合は(1+2)×3という数式を頭の中に思いうかべて、それを読み上げることで、この計算を言語化するらしい。
 この例からも分るように、日本語の語順は仕事の記述に適した構造をしているので、米国人が日本語の語順のプログラミング言語をいくつか作っている。その1つのAPLは、IBMがこんな簡単な記述でこんなすごい事ができるのだからみんなで使いましょうと言って広めようとしたが、英語の語順とちがうために受け入れられなかった。
 そうした言語の1つであるFORTHを輸入している片桐 明さんが、単語を日本語化したら、ほぼ日本語でプログラムを書くのと同じ状況が生まれて、プログラムが楽に作れるようになった。MINDという商品名で売られて、世界標準のLOGOやBASICより教育効果が上がったが、パソコンの有用性が認識されて、ソフトウェア製品が供給されるようになると、日本ではプログラミング教育は専門家が習得すれば良い専門的なことだと考えられるようになってプログラミング教育自体が行なわれなくなってしまった。
 しかし欧米では、ソフトウェア製品が使えるだけでなく、高等教育に進学する人々にはプログラミング教育が必要であると認識されており、その教師を育成するためにオーストラリアでは Computer Science と教育学を学ばせる教師の育成を30年以上前から行ってきた。他の国もそれに順じた教師育成の体制をとっているが、日本では Computer Science の教育そのものも、欧米の20分の1程度の学生にしか行っていない。写経教育で十分ビジネスが成立したので、その必要性を感じなかったからである。

幼児とスマホやパッド

 私は2000年頃に、ゲームが子どもに与える影響について「赤ちゃん学」を提唱した小西行郎教授や教育学者の坂元 章教授と研究したことがある。当時スマホはなかったが、ビデオ装置が普及してビデオに赤ん坊をあずけて子もりをさせる親が多く現われていた。そうした子守ビデオを見た小西教授は、これは犯罪的な製品で赤ちゃんの脳を破壊しかねないと憂いておられた。
 実はそれ以前から米国の小児学会は、3歳児まではテレビは見せてはいけないと警告しており、小児病棟にはテレビを置かれないことになっていた。多分、日本でもそのようなことが行なわれていたはずである。
 なぜ見せてはいけないかというと、赤ちゃんは面白い動画があるとそれを見続けてしまうのだが、奥行きのある画面をテレビ画面に焦点を合わせて見ているので、遠くに見える物に焦点を合わせる必要が無くなってしまう。このため焦点を合わせる目の機能が発達しなくなってしまう。学習障害の一つで、視点を合わせることができない児童がいるが、この影響ではないかと思われる。
 一方、静止画しか見えないスマホや iPad アプリの場合は、動画のような問題があるようには思えない。色々な仕組の入ったアプリになれた幼児が、実際の絵本に出会った時に「これは壊れている」と言ったというジョークのマンガを見たことがある。
 米国では、幼児にはスマホやタブレット類を使わせないという運動もあるようだ。しかし、後で紹介する paintone という iPad アプリは幼児の創作活動を活発化するようである。このあたりのことは、発達科学者、幼児教育者、コンピュータ科学者で協同研究をする必要がありそうだ。

無藤 隆教授のコメントと「絵」と「声」でデジタル作品を作る paintone

教育学者で保育の専門家である無藤 隆教授は、Facebook の中で御自分の友達に向けて「幼児が生成過程をイメージする」と題する重要なコメントを発表された。その概略は次の通りである。

幼児は積み木などで複雑なものを作り、時にややこしい(ある意味で本質的なことを)発言したりする。それはどうして可能なのだろうか。
 基本となることは、積み木のような単純な動作を繰り返すことで複雑になっていくことを可能にする素材が幼児に向いていることである。積み木の場合、単に積むという動作を反復すると、巨大になったり、置き方を少し斜めにすると螺旋形になったりする。何かを作ろうとしてまず小さな部分を作ってみて、それがいくつかうまく作れるようになったらそれを組み合せて複雑なものを作ったりする。これはプログラミング思考の始まりであると考えても良さそうだと最近考えている。

 福岡のしくみデザイン社の経営者である中村俊介氏は、iPad で遊び出した2歳のお嬢さんのために自分の「絵」と「声」でデジタル作品を作れる paintone (https://www.paintone.org/jp/) を作って彼女に渡したところ、彼女は一人でコマンドを試して何がおこるかを調べ、その後それらを連ねてデジタル作品を自分だけで作ってしまった。2歳は言葉を話し出す年齢である。コマンドを試すことを一語文を話す、それを2つ連ねると2語文を話す、と考えると納得できる。コマンドを連ねて作品を作ることは、ことばを話すことと同じ認知過程であり、それは作りたい作品を作り出す創作活動でもある。中村氏は「読み、書き、算盤」は「Audio, Visual, Algorithm」になるとだと主張している。

並べたパネルの上でロボットを動かす「クミータ」

https://kumiita.com/

 幼児用のプログラミンク教具として横浜のICON社で開発された「クミータ」は、パネルを平面上に並べることで、その上を動くロボット「クミータ」を動かすプログラムを構成することができる(図2)。バネルには音や絵などの要素が組みこまれており、パネルの上を通る時に音を出す。例えば象の絵の上にくると、クミータは象の鳴き声を出す。

 パネルの中には色を指定するものがあり、この上を通るとクミータは指定された色の着物を着ることになる。バネルの中には、着物の色によって進む方向を前後左右の4方向にクミータを進ませるものが入っている。また、一つの矢印だけが描かれていて、置き方によって4方向に進ませることができるので、四角いループを作ることができる。
 音楽会のプログラムのように、上から順番に書かれたこと実行していくのは、コンピュータのプログラムでも同じである。しかし、コンピュータのプログラムはループを作ることで長い計算を実行することができる。このループがクミータではパネルの配置によって作成できて、プログラムの実行に応じて動くロボットの動きを見ることができる。
 「クミータ」をスタートパネルに置くと、ファンファーレを鳴らして次のパネルに動き出し、ゴールバネルに到達すると、またファンファーレをならす。その間にパネルを置くと、そのパネルが命令する動作を実行する。子供はこうしてパネルの意味を理解できる。ある程度の数のパネルを理解したら、それらを並べてプログラムを作れるようになる。

図2−1
図2−2

プログラミング教育で最も大事なデバッグ

 作ったパネルプログラム上をロボットが動き出すと、子どもの思った通りには動かない場合が出てくる。プログラムに誤り(バグと呼ぶ)があったのである。この時大人はどう配置すれば良いかを絶対に教えてはならない。これを子どもに考えさせることがプログラミング教育で最も大事な点である。
 従来日本で行なわれてきた教育は正しいことを身につけることを目的とするので、間違うことは厳しく叱責されてきた。しかし、創造活動を行なえることを目指すのが21世紀の教育の目的であり、日本もその方向に教育の舵をきった。この教育では間違うことが重要で、それを克服する体験することこそが創造活動につながるのである。プログラミングはこの教育を行なう最も強力な教育方法である。