79

再度、小学生とプログラミング

コンピュータを言葉で説明することはとても難しい。コンピュータという「発明」は、何々のようなものという例を挙げることができない。また、性能向上が桁違いで、実感できない程である。言葉を使わずにコンピュータとは何かを知るためには、コンピュータに直接触れるという体験が不可欠である。その直接触れるということが、すなわちプログラミングなのである。

本サイトのNo.67「小学生にプログラミングを必須科目にしてはいけない」では、「論理的思考の限界」ということと「読書、しかも古典を読むべき」ということを説明するための補助線としてプログラミングの必須科目化は無意味ではないか、という論を展開した。

42/54的な小さな会社の経営者に向けてのメッセージとしてはそういうことになるのだが、筆者の友人である原田康徳氏から、全く異なる観点からの小学生のプログラミングについてのご意見をいただいた。

プログラミングを通じてコンピュータとはどういうものなのか、情報とは何なのか、といったことを小学生に教えている彼が言うには、「プログラミング教育の第一の目的を『コンピュータとは何かを体験を通じて知る』ということに置く」のだという。つまり、論理的思考力を養う助けにはなるかもしれないけれど、そのためにプログラミングを学ぶのではない、というのである。

以下に、彼からの原稿を公開する。ぜひ、お読みいただきたい。

*        *        *        *        *

なぜ小学生にプログラミング教育が必要なのか?

コンピュータが社会に進出し、今やその恩恵を受けなくては生活が成り立たない。人間の仕事が奪われる原因はコンピュータであり、一方、コンピュータの周りには新しい仕事が生まれている。毎年、少しずつ確実に変化して、気がつくと10年前からは想像もできないような時代になった。10年前というとまだiPhoneは世になかったのである。コンピュータは我々に対し、とてつもない影響力を持ってしまった。

しかし、それほど重要なコンピュータであるのに、コンピュータがどういうものか、ほとんど知られていない。コンピュータは凄いといわれているけれど、逆にものすごくバカなところもある。プログラムにはどうして信じられない不具合が発生するのか。コンピュータウイルスはどこが怖いのか。身近な疑問が沢山ある。一方で「コンピュータなんて使いこなせれば良いのであって、中身なんて知る必要がない」と考える人もいる。

都会の小学校には小さな田んぼがあり、お米を育てる体験を授業のなかでさせていることがある。もちろん、農家を育成するためではない。お米がどのようにして育つのかを子供達が知るためにやっているのである。もし、その子供達が田んぼのことを全く知らないで成人したとしても、彼らの損失はほとんどないだろう。現に今の大人から見ても、どうやって作られているのかわからないものなんてごまんとあるし。一つぐらいわからないものが増えても、他に覚えなければならないものは沢山あるのだから、あえて教えなくても良さそうなのに。

しかし、田んぼの授業は多くの大人からは好意的に見られている。なぜなら、田んぼのことを知らない子供が育つことは、我々大人からすると「気持ち悪い」と感じるからである。大多数の大人にとって、お米は食べる物として特別であり、また収穫までのプロセスも常識的なことだからである。だから、子供への教育に受け入れられやすいのだ。

では、コンピュータはどうなのか? 大きな影響力を持ったコンピュータがどういうものか知らないままで良いのだろうか。どこまで厳密に知るべきかは程度問題であるが、小学生が授業でお米を育てるのと同じ程度には、社会全体で知っていて良いのではないだろうか。

仮に、コンピュータとは何かを知ることが重要だと社会に広く認識されたとして、次の課題はどのようにしてコンピュータのことを説明するか、である。先ほどの疑問をそのまま文章で回答したところで、多くの人の疑問が解消されるとは思えない。なぜなら、コンピュータは説明がとても難しい「発明」だからである。

コンピュータという発明は、他に類を見ない。他のほとんどの発明がそれまでにあったものとの差分として(たとえば、自動車のことを「餌のいらない馬車」というように)説明できるのに対して、コンピュータには前身となるような発明がない。「何々のようなもの」という例えができない。

さらに、コンピュータの性能向上が桁違いだ、というのもわかりにくさの原因である。ほとんどの発明がその前身と比較してせいぜい数倍、あるいは数十倍程度の性能の向上である。それくらいの変化は人間でも理解できる。それに対してコンピュータは、数億倍といったとてつもない性能向上をもたらした。あまりにも数字が大きすぎて、その凄さを想像するのが難しい。これらの理由により、コンピュータを言葉で説明することはとても難しいのである。

言葉を使わずにコンピュータとは何かを知るためには、コンピュータに直接触れるという体験が不可欠である。その直接触れるということが、すなわちプログラミングということなのである。

プログラミング教育は様々な能力が身につく、という説を唱える人たちもいる。その能力の筆頭は論理的思考力であるが、それ以外にも、創造性とかやる気とか自己肯定感とか、いろいろと言われている。これらは、プログラミングをやっている人たちの間では、たぶん正しいとうすうす感じていることではある。

しかし、当然ながらそれらの能力は、プログラミングがこの世の中に現れるずっと前から重要と言われ、それぞれの分野の専門家が、その能力を育成するために工夫されたカリキュラムを開発しているはずである。となると、それらのやり方よりもプログラミングで教えた方が好成績になるということを証明しなければ、プログラミングでそれらを教える理由にはならない。

これらの様々な能力が身につくという考えは、プログラミングを教える副次的な効果であると割り切り、それを主たる理由としてはならない。それらの副次的な効果はそれぞれの専門家に任せるべきで、その人たちの口から「プログラミング教育は私たちが大事にしているXX力を育てることにも使えるので、応援します」と言ってもらうのが良い。そのためには、まずはプログラミングが社会全体に知られることが重要なのだ。

プログラミング教育の第一の目的を「コンピュータとは何かを体験を通じて知る」ということに置く。まずはそれが浸透することに注力する。次に重要なのは、その体験をどのように設計するかである。ギチギチな義務教育の貴重な時間を割いてもらうのであるから、それを学ぶのに何十時間も必要というのではなかなか理解を得にくい。極力短い時間で効果の高い方法を開発すべきである。

私は2003年に、子供にプログラミングを教える目的で「ビスケット」というプログラミング言語を開発した。それが2016年には総務大臣に触っていただくくらいにまでは成長した(笑)。これまで7000人以上の子供たちに直接ビスケットを教え、毎月開催されているビスケットの指導者向け講習では、全国から160名を超える受講者が参加し、さまざまなところで活躍している。

ビスケットは、いわゆる普通のプログラミング言語とは異なり、「メガネ」と呼ばれる絵の書き換え規則を組み合わせるだけでプログラムを作る言語である。構成要素が単純であることから、ビスケットを使えるようになるための必要知識はとても少なくて済む。

一方、かなり複雑な内容のプログラムも作れるために、短時間でプログラミングの楽しさと可能性を感じられるようになっている。作れるものの対象が異なるので、単純には比較できなないものの、ざっくり言うと他の言語の1/10くらいの時間で自由に作れるようになる。プログラミングの入門には最適なツールである。

具体的に、ここで、私が小学生を相手に実施している授業の一つをご紹介しよう。
まずは、YouTubeの動画「感染のシミュレーション」を見てイメージを掴んでいただきたい。

画面には、たくさんの棒人間と、1人の風邪をひいた棒人間が置かれている。

79_fig01

次に、棒人間が横に動くという「メガネ」を定義する。このメガネは、左右で絵がずれている分だけ棒人間が動く。下記では、左の棒人間が右寄りに位置しており右の棒人間は真ん中左寄りに位置している。つまり、薄い色で示している元の位置から真ん中左寄りまで動く。これを先の画面に適用すると、棒人間全員が左に動く。

79_fig02

また、下記の二つのメガネを定義することで、風邪をひいた人はゆらゆらと動くようになる。右上に動くメガネと左上に動くメガネを両方定義した結果、ゆらゆらと上の方に動くようになる。

79_fig03

さらにメガネには、条件判定の仕組みもある。特定の場合に左側の絵を右側の絵に置き換えるという動作をする。下記の例では、メガネの左側は「風邪をひいた人と普通の人がぶつかる」という意味である。右側では、薄い色で示した普通の人が風邪をひいた人に置き換わって風邪を引いた人が2人になっている。これは、健康な人に風邪が感染する、ということを意味する。

79_fig04

メガネの機能は「移動」と「置き換え」だけというシンプルなものであるが、このプログラムを走らせると、最初は風邪はなかなか広がらないが、徐々に広がって後半は一気に進むことがよく分かる。

79_fig05

79_fig06

この風邪が感染するシミュレーションを全員が作った後で、ものと情報の違いについて解説をする。

  • 自分の持っているものを相手に渡すと自分からは無くなる(移動)。
  • それに対して、自分が知っている情報を相手に教えても自分からは忘れない(複製)。
  • 情報の広がり方は、この風邪の感染と同じ。最初はすごくゆっくりだけれど、少しずつ早くなって最後は一気に広がってしまう。
  • 情報は原理的に拡散するようにできている。いい情報が拡散するのは良いけれど、悪い情報が拡散するのは怖い。
  • 情報が拡散するというイメージをもって、コンピュータやインターネットに接するのが大切である。

ビスケットを初めて使った子供達が、プログラムを自分で作って(棒人間を描いて、メガネをいくつか定義する)走らせて、この解説を聞くまで、せいぜい20分くらいしかかからない。自分でプログラムを作り、それを動かして、そこに意外な動きの結果を自分で見たから、最後の解説がぐっと説得力を持つのである。

ビスケットは、コンピュータの原理的な現象を説明することにとても適しており、ここで例示したような「最初に体験してから解説する」というスタイルの教材がいくつも開発されている。

最後に、私がどのような想いで子供達にプログラミングを教えているかを述べておきたい。

現在進行中の情報革命は、残念なことにお金持ちと技術者という一部の人間だけで進められてきた。しかし、文化的に豊かな情報化社会を実現するためには、もっともっと多くの人が関わる必要がある。そのために、プログラミングによってコンピュータを身近なものとして感じ、誰もが情報革命に主体的に関われるようになって欲しい。

harada

原田康徳氏 1963年北海道生まれ。1992-2015年、日本電信電話株式会社 NTT基礎研究所、NTTコミュニケーション科学基礎研究所。 1998年-2001年、JSTさきがけ研究員。2004年-2006年および2010年-2013年、IPA未踏ソフトウェア創造事業プロジェクトマネージャ兼務。NTT退職後、合同会社デジタルポケット設立。ビスケット開発者、計算機科学者。ワークショップデザイナー。

書名
会社をつくれば自由になれる
出版社
インプレス/ミシマ社
著者名
竹田茂
単行本
232ページ
価格
1,600円(+税)
ISBN
4295003026
Amazonで購入するKindle版を購入する