人生と学び

変化の大きな社会で主体的に生きるために~プログラミング教育の大切さ

子ども向けビジュアルプログラミングソフトウェア「Scratch」の、日本における第一人者である阿部先生。現代社会では学校でのプログラミング教育が大切と、プログラミング言語を知らない子供にも分かりやすくプログラミングを教え、その考え方の大切さを説いています。
 
今回の「人生と学び」では先生の経験を基に、めまぐるしく変わる社会でのプログラミングの重要性を教えていただきました。


 

 

プログラミング教育と出会うまで

—先生ご自身はどのような大学時代を過ごされたのでしょうか。
 「私は広島県出身なのですが、小学生の頃からずっとコンピュータに触れてきました。大学は工業大学で、ほとんど男子校のような環境で生活していました。当時はデパートのパソコン売り場でアルバイトをして、得たお金をそこで使ってはお金を循環させるという暮らしです。楽しかったですね」
 
—プログラミングが大好きだったのですね。なぜ教育に興味を持ったのでしょう。
 「もともとは教える側の人ではなく、就職してプロのプログラマーになりました。10年以上働いていましたが、2001年にアラン・ケイさんに初めてお会いした時、アランさんが教育のお話をされていて、それでプログラミング教育に転身することになりました。それまでは子どもに教えるなんて考えたことはなかったです」
 
—教育の道で生きていこうと決めたきっかけは。
「2002年に子どもたちを集めて、アランさんたちが開発した教育用プログラミングソフトSqueak Etoysのワークショップを日本で初めてやることになったんですね。そこで、英語だったソフトを日本語化しました。それを現場でサポートすることになり、子どもたちがプログラミングをする現場を初めてみて、想像力の豊かさを目の当たりにしました。
子どもたちが作ったものも面白くて、これをどうすればもっとよい環境にできるかという考えが私の中に生まれました。それが今のScratchの活動につながります」
 

大学生への教え

—子どもたちへ向けてではなく、大学生へ向けては違った教え方になりますよね。津田塾大学ではどのような授業をされているのですか。
 
「最初は2012年に、情報科学専攻の院生を対象に、レゴブロックやScratchを使って、実際にものづくりをしてもらう授業を行いました」
 
「最初衝撃的だったのは、『作れない』こと。学生の皆さんは、プログラムは書けても、物理的なものが作れなかったことです。レゴブロックでこんな構造を作れば、このようにものを支えられる、という感覚がなかったですね。そこで考え方を変えて、ラーメン構造やトラス構造の話をするところからやってみました。たとえば、トラスは三角形なので、3辺が決まれば変形しないという数学的な性質と現実のブロックの関係がわかれば、壊れにくい理由もわかるのですが、数学は数学、ブロックはブロックで、つながっていなかったのです」
 
「そもそも、今の子どもたちは、何もないところから何かを作り出す力が落ちている気がします。みなさんも経験あるかもしれませんが、自由制作の課題を出しても、「作りたいものがない」と言われることがあります。最初に自分で作りたいものがあって、そのためにどうすればいいか考えて、必要なことを学んで、その結果を受けて次のアイデアが生まれるというループが切れている。それは何歳くらいからなのかと見て行くと、小学校高学年くらいからなんですね。そして、小中高大と上がるに従って、他者から与えられる問題を最短で解くことに汲々として、どんどん主体性が失われていく。それを取り戻すことが、今やっているプログラミング教育につながっています」
 
「なぜ特にプログラミングに注力するかと言うと、コンピュータはプログラム内容によってどんなものでも作り得る潜在的な可能性があるからです。ある時はピアノ、ある時はロボットになるわけですね。多様なものに変化しうる柔軟性が、プログラミングのいいところです。現在の「小学校におけるプログラミング教育」の授業の一環として行ったワークショップの中でも、子どもたちは自由に物語をつくったり、ロボットつくったりしていましたよね。本来、子どもたちは創造力に満ちているのに、私たちはなぜそれを失ったのか」
 

ワークショップ「津田塾生といっしょにプログラミング体験」の様子

今必要とされる プログラミング的思考

—プログラミングを専攻する人以外も、共通して必要となってくる考え方ですよね。
 
「プログラミングが理系の学問と決まっていることがおかしいと思います。ピュアなコンピュータサイエンスを突き詰めれば、数学に基づく理系の要素があるわけですが、日々の問題に向き合う手段であれば文系理系の違いはなく、むしろ文系的な力が必要かもしれない」
 
「料理を作るのと一緒ですよ。たとえば、カレー作るとしても、そこに手順があるわけです。玉ねぎを刻むとか、ルーを入れるとか、何をどの順番で、どうするのが最適かを試行錯誤的、かつ、漸近的に求めるのがプログラミング的思考です。日常的に私たちがやっていることに他ならないのです。そのなかのひとつにコンピュータを使ったプログラミングがあるだけです。
 
そう考えると、プログラミング的思考はすべての人に必要とされる理由が分かると思います」

—では、今私たちはどのようにプログラミングに関わっていけばいいのでしょう。
 
「他の人に言われたから仕方なくやるのではなく、自分の興味や関心につながるものを見いだせればと思います。それが見つかれば、プログラミングはそれを実現する助けになるでしょう。従来は一部の専門家やメーカーでなければ作れなかったものが、今では技術的にも費用的にも誰でも作れる時代になりました。自分のアイデアを現実にするためにプログラミングを活かせることがますます増えてくると思いますね。でも、いきなり大きなことをやらなくても、ちょっとしたことからでいいと思います」
  
 
—先生はプログラミングを教える上で心がけていることはありますか。
 
 「教えないことを大切にしています。主体性を持っているのは学生なので、教員はそれを助けることしかできない。ものをつくるにしても、教員が説明書みたいなものを提示すれば確かに完成はするだろうけれど、自分で調べて作ってみない限り本当に分かったとは言えない。そもそも、先生は教えたがりなので、本当は教えてしまったほうが楽なのですが、それでは仕方がない」
 
「評価方法も、同じ立場の学生から見てどうなのかという相互評価、ピアレビューに加えて『値段をつける』ことを最近は行っています。自分で作ったものの市場価値を考えること。その価値を伝えるためにどのようにアピールして、原価はどのくらいで、それをどのくらいの期間で回収できればよいのか。実は課題の中に占める純粋なプログラミングの割合はごく一部で、最終的にどのような社会的価値を作り出したかが重要です。そのためには、主体的な学習者、創造者になる必要があり、受講者の皆さんには授業を通してそうなってもらいたい。そうしないと生き残れない時代がやってきていますからね。今までは会社に入ればゴールだったのですが、今は違う。予測できない社会になっているのです」 


 

—予測できない社会。何を信じればいいのでしょうか。
 
「変化は間違いなく起こるので、それを前提として行動すること。変化を抱擁する(embrace change)ためのメタな視点を持ちましょう。つまり点や面で物を見るのではなくもっと高い次元から見るということです。問題領域を平面と捉えると、レイヤーが変わったら意味がなくなってしまう。俯瞰する視点を持つべきです。単に技能を身につけるだけでは足らないということです」
 
「また、批判的思考(critical thinking)をすること。世の中のものを疑ってみると、より本質的なものが見えてくると思います」


—最後に、読者のみなさんへメッセージをお願いします。
 
「MITメディアラボには、初代所長のニコラズ・ネグロポンテさんが考えた『Demo or Die』というスローガンがあります。要は、自分が何を研究しているか聞かれた時、実際に動かして説明できないとダメということです。そのくらい常に備える必要がある」
 
「2011年に伊藤穰一さんが所長になり、スローガンも『Deploy or Die』にアップデートされました。Deployは『展開する』という意味で、単にDemoできるだけでなく、社会に広めて初めて価値があるということです。アイデアを商品やサービス、あるいは社会システムの形で展開して初めて意味がある。

一般的な大学生は、そこまでの気構えができていないかもしれません。ただ、いま学んでいることは、何のために、何を目的にしているのかを自らに問ってみると良いのではないでしょうか。ぜひ根源的な答えを探してみてください」