プログラミング教育が実現する創造性を育む教育とは
計算機科学者、ビスケット開発者、博士(工学)、ワークショップデザイナー
原田 康徳

「プログラミング学習普及プロジェクト Computer Science for ALL」を運営するCANVAS理事長の石戸奈々子が、プログラミング教育の推進やIT人材の育成に関わる方々にインタビュー。今回は、「メガネ」という仕組みを組み合わせることで多彩なプログラムが作れるユニークなツール「Viscuit(ビスケット)」の開発者で、計算機科学者、ワークショップデザイナーでもある原田康徳氏に、プログラミング教育やコンピュータサイエンスを学ぶ上で何が必要なのかについて、お話を伺いました。

目次

  • 「コンピュータサイエンス」とはコンピュータについて総合的に理解すること
  • 直感的なプログラミングを可能にすることがビスケットとスクラッチの違い
  • 今後はプログラミングの大衆化が進む裾野を広げる新しい言語の登場に期待
  • プログラミングはあくまでツール感性を磨き創造性を育むことが重要

「コンピュータサイエンス」とはコンピュータについて総合的に理解すること

石戸

原田先生はこれまで一貫して、「コンピュータとは何かを伝えたい」という強い思いに基づいて活動されてきたと思います。ビスケットを作ったのも、コンピュータとは何かを伝えるためで、それを知ることこそがコンピュータサイエンスであるともおっしゃっています。この、コンピュータサイエンスについての原田先生の定義について、もう少し噛み砕いて教えてもらえますか。

原田

これまでコンピュータサイエンスというと、「コンピュータ的な考え方(コンピューテーショナルシンキング)を応用して生活に役立てること」と、一般には理解されてきました。しかし、そういった解釈には、ずっと違和感を抱いてきました。なぜ違和感があるかというと、コンピュテーショナルシンキングは目的ではなく、副産物だからです。コンピュータが何かが分かった人が副産物としてコンピュータ以外に役立つよ、なのです。

コンピュータサイエンスを学ぶ第一の目的は、「コンピュータについて全部知る」ということです。全部とはつまり、ハードウェアの中身からソフトウェアの仕組み、どのように社会に適用されているかまでで、「コンピュータとは何か」を総合的に理解することです。コンピュータは、回路から始まって段階的に完成品になっていく。その過程を全て知ることも含まれます。

石戸

回路から完成品までコンピュータの成り立ちを全て理解するための学びをデザインしようとすると、具体的にはどのような内容になりますか?

原田

まずは、トランジスタがスイッチになること。スイッチを組み合わせると足し算や掛け算ができるようになります。2進法ですね。ところが「2+3×5+6」を計算したい場合、足し算の装置が2つ、かけ算の装置が1つ必要になります。この調子で計算が複雑になってゆくと、その都度装置が増えてゆき回路がどんどん大きく、複雑になって行きます。

ところが、どんな複雑な計算でも回路を増やさずに計算をする仕組みがあるといいですよね。そこで、計算の途中結果を取って置くことと、回路をつなぎかえる方法が発明されました。順番に回路をつなぎかえてゆくことで複雑な計算が可能になります。回路のつなぎ方に名前をつけて、それを順番に並べることで複雑な計算を表現できるようになります。それがコンピュータです。つなぎかえ方を並べたものが機械語と言ってもっとも原始的なプログラミングになります。

石戸

ありがとうございます。では小学生のときからコンピュータサイエンスを学ぶとすると、どのような方法があるとお考えですか。

原田

例えば生物の教科に置き換えて学習方法を考えてみましょう。小学校では発芽の3条件を習い、中学校では遺伝について学びます。そういう生物の学習体系と同じような、コンピュータの学習体系が必要だと思っています。

石戸

確かに、そのように指摘されてみると、(理科の科目にある)生物については総合的に詳しく学んでいるにもかかわらず、コンピュータに関してはきちんと学んでいませんね。情報化社会を生きている我々は、コンピュータサイエンスについて小学校から高等教育まで体系的に学ぶことが必要だといえますね。

原田

その通りです。そういう体系に基づいたカリキュラムを、小学校から作ることを私はずっと目指してきました。生物でいう発芽の3条件に並ぶようなコンピュータの説明をいくつか考えています。

1つはものと情報の違いです。「もの」はどういうものかわかるとおもいますが、「情報」というのはたとえば「美味しいラーメン屋さん」というのが情報ですね。自分の持っている「もの」を相手にあげると、自分からはなくなります。つまり、ものは「移動」します。ところが、自分が持っている「情報」を相手に教えても、自分は忘れたりはしませんよね。つまり情報は移動ではなく「複製」するのです。これが何度も重ねると情報は「拡散」してゆきます。情報で作られた世界は本質的に拡散する性質を持っているということなのです。「質量保存則」に従っている「もの」の世界とは根本が違います。

多くの自然科学とコンピュータサイエンスが発展する方向も違います。多くの自然科学は、その研究対象が我々が生まれる前からあったものです。自然に隠されている謎を解明して、その成果を世の中をよりよくすることに活用して行きます。最初に謎があるのです。それに対してコンピュータサイエンスには、謎は一つもありません。全て人間がイチから設計して作ったものです。どうしてこう動くのかといった疑問は全て知ることができるのです。

この違いは、とても重要です。学び方も違ってくるし、全てを知ることができる世界ですから、それをこれからどのように変えていくか、奇抜な誰も思いつかないアイデアを生み出していくことがとても大切になってきます。これが、コンピュータサイエンスにおいて、今までの教育とは違うところです。

それに一般に、コンピュータは難しいものと思われがちですが、じつは、コンピュータを全部知るのに難しい知識は必要ありません。まずは、小学校の算数の知識があれば十分です。

直感的なプログラミングを可能にすることがビスケットとスクラッチの違い

石戸

誰もが思いつかないものを生み出す力が大切とのことですが、原田先生は以前、美術系大学にも通われていましたよね。原田先生がお考えになるコンピュータサイエンスの教育の実践と密接な関係がありそうですね。

原田

昔のコンピュータは、コスト面から「回路をどう節約するか」考えられていました。今のコンピュータは、コストがどんどん安くなり、「回路をいかに(無駄に)増やすか」を考えられるようになりました。

そうしたコンピュータをこれからさらに発展させてゆくには、これまでの工学的なセンスのものづくりでは対応できません。与えられた問題を解けるだけではなく、問題の存在しないところに問題を見つけ出す能力が重要です。クリエイティビティのセンスを持つ人です。そうしたゼロからモノを作る教育はどうするのだろうかと考えました。で、それを日々実践しているアーティスト、それを育てる美大はどんな教育をしているのだろうと思いました。美大の教え方を体験すれば、ゼロからモノを作る教育が分かるだろうと思って。

例えば、彫刻家は何百年も前から素材としては変わっていないものを使って、いままで誰も作ったことのない形をどうやって作れば良いかということを日々考えているわけですよね。その苦労は並大抵なものではありません。でも、ちゃんとそれをトレーニングする教育法があったのですよね。それには感動しました。もちろん、授業でそんな話は一切しません。僕がこの問題意識から汲み取ったのです(この詳細は、ここであっさり話してしまうよりも自分で見つけた方が感動するので秘密にします)。

コンピュータもそろそろ何かつくるだけで新しいというのは終わりかけていて、新しいものを作り出すことに苦労する時代になって来ています。今の子どもが大人になる頃にはもっと厳しくなるでしょう。

石戸

つまり、子どもたちに必要なのは、コンピュータとは何かを総合的に知ることと、創造性を育むこと。その両方が合わさって価値のある学びを提供できるということですね。それは、ビスケットの開発思想そのものですよね。

原田

ビスケットを開発した当時、私の娘は小学2年生でした。そのくらいの年齢でも、プログラミングの面白さは理解できるはずと考えたのが、ビスケットを開発したきっかけです。作ったものが動いて、直して、自分の目的に近づいていくプロセスは、プログラマーが普通にやっていることと同じ。それを、難しいコードを使わなくてもできるのがビスケットです。

ビスケットを開発する前は、子どもではなく大人を相手に、プログラミングを簡単にする研究を続けていました。それは道半ばで挫折したのですが、ノウハウやアイデアは蓄積されていました。それを子ども向けにしたのです。

石戸

ビスケットのほかにも、子ども向けのプログラミング言語はいくつかあります。ビスケットがその他の言語と違うところや強みはどこにあるとお考えでしょうか。

原田

多く教育用の言語は、今あるプログラミング言語を子ども用にどうアレンジするか、という発想から生まれています。それに対してビスケットは、プログラミング言語を新しくしようという発想から誕生しています。ビスケットの特長は、「メガネ」を使うことにより設定したゴールに到達するまでのステップ数が少ないこと、できることのバリエーションが豊富なこと、直感的に使えることです。

例えば、子ども向けのプログラミング言語としてよく使われているものにScratch(スクラッチ)がありますね。スクラッチはほとんど一般の言語と同じ構造なので、一般のプログラミングがわかる方だと突き詰めたらどれくらいのことができるのかという直感はあると思います。ところが、やはり自分で自由に作れるようになるには理解しなければいけないことが多すぎます。それを全部乗り越えたら自由に作れるようになるし、教える側もそれを知っているので、頑張って教えるのだと思いますが。ところが子供には乗り越えるのが結構大変。そこを無理にやると嫌いになる子が出て来ても仕方がないと思います。工夫すれば最初の壁を低くはできるのだけど、どうしても「言われた通りにやってみなさい」となりがちではないでしょうか。確かに言われた通りにやれば、プログラムを作ることはできます。ただ、もともと難しいものを入り口だけ簡単にしただけで、そのあとに来る本質的に難しい壁を低くした訳ではありません。なかなか、自在に応用してプログラミングが楽しいというところまでは進めないのではないでしょうか。そして、応用が利かないと、いずれ楽しくなくなってしまうでしょう。

ビスケットは使いこなすために必要な知識は本当に少ないです。メガネの左にある絵を右にある絵に変えるということだけですから。ところが、組み合わせると実に複雑なことができます。それに子どもの感性にあっているようにも思います。例えば、子どもは単純なことを延々と繰り返す作業が好きです。よくある、プログラミングでの繰り返しの教え方として、単純作業を続けさせてそこに繰り返し構文を導入すると簡単にかけるという例が使われたりしますが、これは大人の視点です。子どもは繰り返すのが好きなんですから。簡単にかけることに興味はないのです。簡単に書けるということよりも、まずは自分の書いた通り思い通りに動くということで有頂天になっています。

たとえば、数を数えて100になったらゲームオーバーというのを作りたかったとすると、普通のプログラミングの発想だと繰り返しと条件分岐で作りますけれども、子どもは100個の絵を描いて、それが順番に切り替わってゆく100個のメガネを作るという作業を平気でやってしまいます。一度作ってしまえは、あとは何度でも同じように動くということは同じです。作る手間だけの違いです。難しいことを覚えないと作れないというのではなく、自分の知っていることを組み合わせるだけで作れる。ここが受けている理由です。

完成までを完全に自分でコントロールして作っているので、その上でアイデアをどんどん活かして行くようになるのです。去年、全国小中学生プログラミング大会でグランプリを獲った子は、メガネを100個くらい使って作りました(笑)。(編注:「第2回全国小中学生プログラミング大会」の「僕のドラえもん」のこと。その解説記事はこちら)。

今後はプログラミングの大衆化が進む裾野を広げる新しい言語の登場に期待

石戸

理解できるから応用できる、応用できるからアイデアを形にできる――というのは魅力ですね。私も全国小中学生プログラミング大会のこの作品をはじめて見たとき、驚きました。

何歳くらいの子どもからの使用を想定しているでしょうか。

原田

もうクレヨンと同じで、3歳から。クレヨンは握る力をコントロールできないと絵が描けませんが、むしろ、それができない子どもでも絵が描けるのがビスケットです。だから、保育園や幼稚園からの引き合いも多いですよ。小学校では、1年生がビスケットで、3年生からスクラッチという学校が多いですね。教科に取り入れると確実に成果を上げそうなのは、やはり図工です。文部科学省で、プログラミングを使う授業案の図工でビスケットが採用されました。

特別支援学級でも、教材として使われています(編注:特別支援学校での使用例はこちら)。絵を並べてプログラムを作るというもので、先生や子どもの反応は良かったですね。

石戸

原田さんははじめて会った2002年からずっと、コンピュータは粘土にならなくてはいけないとおしゃっていました。粘土をこねてオブジェを作ったり、絵を描いたりすることに比べると、コンピュータで何かを作るハードルはまだ高いと思いますが、今後コンピュータはどうなっていくとお考えですか。

原田

今はまだ、コンピュータを使った「情報のものづくり」の重要性が認識されていません。みんなテレビを見て泣いたり笑ったりしますが、テレビって全部情報ですよね。もののように触ったりできないです。粘土で人を泣かせるのは難しいですよね。それが、情報にはできるのです。それなのに、学校の教育でも「情報のものづくり」を軽視する傾向があるように思います。

図工の時間でも、道具を使ってモノを作ることにこだわり過ぎている。「ものづくり」には、作文や作曲も含まれると思います。図工と音楽と作文を融合させて「創造性の時間」にして、ものでも情報でもいいから何かを作る時間にする。そこにコンピュータやプログラミングが関わってくる。学校では図工の時間が減らされているようですが、図工の中にプログラミングを戦略的に入れ込んで、図工の時間を拡大するという戦略を採るべきです。

石戸

デジタルだけではものづくりとして認められないという風潮を変えるべきということですね。今後はますます、情報によるものづくり、その表現の重要性が高まって来るように感じます。

原田

例えば映画は、見る人全てに同じストーリーが提供されます。そのストーリは映画監督が選んだものです。対してゲームは一人ひとりがたどるストーリーが異なります。ゲームで人を感動させるには、それぞれが体験するストーリが「感動の原理」に従っている必要があります。感動するとはどういうことかを一般的に考えてそれが生成されるようにゲームをつくるのです。ゲーム製作者が考える感動をプログラムするということになります。プログラミングによるものづくりでは、ひとつの最高の例を考えるのでなく、多様な感動を説明する一般的な原理を求めるということになります。

ビスケットでやってみたもっと簡単な例として、ビスケットで作る作曲マシンがあります。これはひとつの曲を作るというよりも、その人が考えるよい音楽とは何かをプログラムで表現して、それによって音楽を自動生成させるということになります。

石戸

より本質的なものづくりができるようになるということですね。原田先生にとってコンピュータとは、そういった本質的なものづくりが自由にできるようになるツールですか。そう考えると、まさに作り手の気持ちをさまざまに表現できる「粘土」という言葉はぴったりという気がしますね。

原田

私にとってのコンピュータとは、作りたいものを何でも作れる魔法のツールです。今後コンピュータがどうなるかについては、プログラミングの大衆化が起きると考えています。

かつてのWebやメールがたどってきた道は、専門家が使っていたものを一般が使うようになるというものです。唯一、プログラミングだけ大衆化が進んでいません。今後、大衆化が進む過程においては、プロの使うツールとは全く違うコンセプトの新しいツールが現れます。その一例がビスケットです。ビスケット以外にも、一般向けの簡単なプログラミングツールが登場すると思います。

プログラミングはあくまでツール感性を磨き創造性を育むことが重要

石戸

大衆化して裾野が広がれば、プロフェッショナルのレベルも上がります。大衆化のためには、コンピュータが人間に近づいたことで利用者が増えたように、プログラミング言語ももっと人間に近づいてくる必要があると考えます。

プログラミング教育が必修化して全ての人が学ぶようになるのは、産業界にとってもコンピュータ研究者にとってもいい話のはず。ならば、研究者がプログラミングの大衆化につながるような、新しい言語の開発などに積極的に取り組んでもらえればと思うのですが。

原田

それが、なかなかやらない。プログラミング言語を新しく作るのは難しいのです。海外でも、そういう研究は見られません。それは、いい人材はAI(人工知能)など最先端の研究分野に進みたがってしまい、プログラミング教育を専門とはしたがらないからではないでしょうか。これは、今後の課題でもありますね。

石戸

本日は、コンピュータサイエンスとは何かについて、それを学ぶ上では工学的な視点だけでなく、新しいものを生み出す創造性を育むことが重要であること、プログラミングがものづくりや創造性の育成にどう貢献するかについてなど、非常に興味深いお話を伺えました。最後に、これからプログラミングを学ぶ子どもや保護者のみなさんへ、メッセージをお願いします。

原田

10年前から一貫して言っているのは、子どもにはいろんな体験をさせましょう、ということです。もしプログラミングを職業にしたいと思っているなら、子どもの頃はプログラミング以外のことをいろいろと経験した方がいい。なぜなら、作ることは孤独な作業で、自分からアウトプットするしかない。それは、プログラミングを職業にする人も同じです。そうすると、子どもの頃の経験から引っ張り出すしかないので、蓄えがどのくらいあるかが重要になってきます。例えば大自然のすごさに感動するなど、感性を刺激するような経験をたくさんしてください。

石戸

プログラミングはツールであって、大事なのは感性に基づいた発想や創造性ということですね。とても示唆に富んだメッセージだと感じます。本日はどうもありがとうございました。