2016/08/26

プログラミングの本質と学びへの効果 <阿部和広さんインタビュー前編>

「プログラミング教育」の本質とは何か
 いま私たちの手のひらにあるスマートフォンは、かつて人類を月に送ったアポロ計画のコンピューターよりも高性能になっています。世界の最新ニュースを見ながら通勤し、見つけた特産品を家族とチャットで相談し、オフィスに着くまでに宅配日時を指定して購入することもごく普通の光景になりました。また、従来は情報が伝わりにくかった貧困や社会的弱者支援などの社会課題にも、インターネットの力が活かされ、国内外でソリューションが提供され始めています。こんな社会の到来を、インターネット以前に予想していた人はほとんど居なかったでしょう。きっと子どもたちも、私たちが想像できないような未来社会を、自ら築き上げながら生きていくはずです。
 そのような未来に向けて、いま教育ができることはなんでしょうか。 知識だけではなく、それらをもとに試行錯誤しながら新しい価値をつくりだせる力を育むことが、教育のもっとも大切な役割のひとつになるでしょう。実際、次期学習指導要領の検討過程でも「プログラミング教育」は、未来を生きる子どもたちに必須の素養として、重要な論点のひとつとして議論されています。なぜなら、今や私たちの生活は社会インフラは勿論、革新的な商品サービスの多くも様々な優れたシステム無くしては実現できず、先進国の多く(※)が既にプログラミングを学校教育の中に採り入れているからです。
※平成26年度文部科学省「諸外国におけるプログラミング教育に関する調査研究報告書」より
 一方で、プログラミング教育の目的である「論理的思考力」の定義の曖昧さやエビデンスに基づく教育効果を精査しきれていないことから起こる、教育現場の曲解や過剰反応などが指摘されつつあるのもまた事実です。技術は日進月歩で、プログラミングも時代と共に変わっていくでしょう。だからこそ今一度、プログラミングの本質、プログラミングを教育の手段として学校や家庭に持ち込むことの効用とは何かを考えてみたいと思います。今年度の「まなびのかたち」は、議論百出する「プログラミング教育」の可能性を現場の実践から探っていきます。
BERD編集長 石坂 貴明

プログラミングは類いまれな表現手段

現在文部科学省内では、小学校段階でのプログラミング教育の在り方について、有識者も交えて議論が積み重ねられている。「プログラミング教育の必修化」は「日本再興戦略2016」にも盛り込まれ、政府、産業界、そして教育関係者のプログラミングに対する関心は非常に高い。
しかし、今回お話を伺った阿部和広さんが子どもたちへのプログラミング教育に熱心に取り組んできたのは、こうした流れを受けてのことではない。文部科学省のプログラミング学習に関する調査研究委員も務めた経験のある阿部さんは、プログラミングが教育の中でも「傍流の傍流」という扱いだった頃から、教育活動を続けてきた。阿部さんにとって、プログラミングとは類いまれな「表現手段」であり、子どもたちにとって非常に魅力的なメディア。だからこそ、その普及に力を注いできた。
阿部和広さん
(青山学院大学 客員教授)
プログラミングの表現手段としての特長を、阿部さんはこう話す。「学校では、図工や美術、音楽、国語といったさまざまな教科で多様な表現手段が実践されてきましたが、それらとプログラミングには大きな違いがあります。それは、プログラミングは新しいメディアを作ることができる、ということです。」たとえばピアノを弾くとき、ピアノはピアノ以外のものにはなれない。絵の具もずっと絵の具のまま。けれどプログラミングはピアノになって音楽を奏でたり、絵の具となって絵を描いたりすることができるという点で、他の表現手段やメディアにはない特長を持っている。
さらに、プログラミングに触れた子どもたちの反応も、阿部さんの活動を後押ししてきた。多くの子どもたちはプログラミングに「おもしろい!」という反応を示し、のめりこんでいく子もいる。子どもたちのプログラミングへの反応は、幼児が目の前におもちゃを差し出されればたいてい触ってみようとする反応に似ている。「おもしろければ、それだけで学ぶ理由になりますよね」と阿部さんは話す。

「プログラミング教育は『目的』を考えるとダメになる」とは

おもしろいから学ぶ。子どもにとってはこれだけでプログラミングを学ぶ十分な理由になるが、多くの大人はそれだけでは納得しない。プログラミングを「教育」するならば、何のためにプログラミングを教えるのか、その目的を見出したがるのが多くの大人の反応だ。しかし阿部さんは「プログラミングは目的を考えるとダメになります」と話し、こう続けた。「たとえば、プログラミング学習で論理的思考力を養えるといった謳い文句を目にすることもありますが、プログラミングを学習している子どもが論理的になるかどうかは現時点では不明です。プログラミングという行為自体は高い論理性を求められますが、プログラミングが論理的思考力を養うかどうかはまだわかっていないんです。」政府が進める有識者会議での取りまとめ文書にも『論理的思考力』という言葉は登場するが、『論理的思考力』についての明確な定義はなされていない。こうした状況下では、プログラミングと論理的思考力の関係についての議論は始められないのではないかと阿部さんは考えている。
このように、学習内容とその結果得られるスキルの関係が不明確であるにもかかわらず大人が一方的に目的や目標を設定することの危険性を、阿部さんは次のように話す。「いったん学習目標を設定すれば、私たちはその目標達成に向けて教育プログラムの最適化を図ってしまいます。仮に『プログラミングを通じて論理的思考力を養う』という目標が設定されてしまえば、達成のための筆記試験の導入やルーブリックの作成などが進み、その結果本質を見失ってしまいます。そちらの方がもっと大きな問題だと考えています。」

プログラミングは目的ではなく、目的意識を養う「手段」

プログラミング学習そのものに目的を見出すのではなく、プログラミングで目的意識を養うことができる、という考え方を阿部さんは小学校の算数でならう「速さ・時間・距離」の問題を例にとって、紹介してくれた。
「速さ・時間・距離」の問題は、一般的には「はじき(きはじ)の法則」を使って解く。しかしこの法則を使って正答を導き出せることは、子どもが「速さ」というものを本当に理解しているということを必ずしも意味しない。一方で、たとえば敵から打ち出される球をよけるようなゲームをプログラミングして作ろうとしたとき、自分と敵の場所を想定しながら、敵の玉が何秒で自分に到達するかを予測することは、その子にとっては切実な問題になる。そうなったときに、距離や速さの意味を理解することの必然性がその子に生まれ、「速さ・時間・距離」の法則を覚えることに意味づけが与えられる。法則を使って「速さ・時間・距離」の関係を学ぶ目的(ここではゲームを完成させること)も生まれる。
この例のように、プログラミングはそれ自体が目的となるのではなく、従来の教科を学ぶ意味づけ、つまり学びの目的意識を与えられるという可能性を持っているのではないかと阿部さんは考えている。

Learn to Code、 Code to Learn

プログラミング教育が学びにおいて何を意味するのか、という問いかけを阿部さんが重要視する背景には、「プログラミング教育=コーディング技術の習得」という認識が急速に広まってきているという現実がある。子ども向けのプログラミング言語であるScratch(スクラッチ)の開発者、MITメディアラボのミッチェル・レズニック氏は、昨今の"Learn to Code(コーディングを学ぶ)"ことへの関心の高さに理解を示したうえで、あらためて"Code to Learn(学ぶためにコーディングする)"ことの重要性を説いている。
同じことは、今年6月に公開された文部科学省「小学校段階における論理的思考力や創造性、問題解決能力等の育成とプログラミング教育に関する有識者会議」の取りまとめ文書にも明記された。阿部さんもプログラミングは単なるコーディング技術の向上を目指すものではなく、「IT機器が当たり前のように身の回りにあふれる時代において求められる教養は変わってきており、プログラミングはその教養を培う一分野であり、学ぶべきもの」だと説明している。しかし、コーディングを学べるプログラミング教室の人気の高まりと同じレベルで、レズニック氏の唱える"Code to Learn"の考えが広まっているとはいえないというのが日本の現状だ。
こうした背景には、今の子どもたちが職に就く頃の環境変化を見越した、親たちの思いがある。たとえば、オックスフォード大学のマイケル・オズボーン氏が2013年に発表した論文『雇用の未来』のなかで示した「今後10~20年程度で、半数近くの仕事が自動化される可能性が高い」という予測は、日本でも大きな反響を呼んだ。人工知能の発達による仕事の自動化は、雇用環境を変えてしまうというのだ。ゆえに自分たちの子どもが暮らす未来は、今とはかなり異なった社会状況になるのではという親世代の不安は増幅されがちだ。こうした社会の変化に備え、近い将来を有利に生き抜ける可能性の高そうなプログラマーやソフトウェア開発者といった職に子どもたちが就けるよう、子どもたちの素質を伸ばしておいてあげたい。そのための有効な習い事のひとつとして、コーディングスキルの上達が見込める「プログラミング教室」の人気が高まっている。
オバマ大統領は演説のなかで、プログラミングを学ぶことは子どもたちの将来にとって重要なだけでなく、アメリカにとっても重要だと述べた
https://www.youtube.com/watch?v=6XvmhE1J9PY
このような流れを受けてのプログラミングへの関心の高まりは世界的な徴候であり、他国の状況をみても、プログラミング教育は商業的な視点からの重要性が叫ばれることが多い。2013年12月にアメリカで開催された"Computer Science Education Week"に寄せたオバマ大統領のメッセージにも、そうした傾向がみてとれる。プログラミング教室の人気の高まりは、プログラミングへの関心の高さを示す一方で、レズニック氏や阿部さんが考え、発信してきたプログラミングの本質はそこでは薄れてしまっているように見える。

プログラミングと「プログラミング的思考」

そもそもコーディングとは、プログラミングをする過程における一作業にすぎない。阿部さんは「小学生の段階からスマホアプリのコードが書けるようになっても有能なプログラマーになれるという保証は一切ないです。むしろ有能なプログラマーに求められる能力は、コンピューテーショナル・シンキングができるかどうかです」と話す。
コンピューテーショナル・シンキングの概念は奥が深いが、あえて一言で表現するなら「計算機科学の流儀に基づき問題を解決するための考え方・アプローチ」である。プログラミングの本質を理解するには、コンピューテーショナル・シンキングとともに、「プログラミング的思考」について知る必要がある。
先の有識者会議では、プログラミング的思考とは「自分が意図する一連の活動を実現するために、どのような動きの組合せが必要であり、一つ一つの動きに対応した記号を、どのように組み合わせたらいいのか、記号の組合せをどのように改善していけば、より意図した活動に近づくのか、といったことを論理的に考えていく力」だと紹介されている。阿部さんは「プログラミング的思考はコンピューテーショナル・シンキングの一部分」と話す。
プログラミングを行う際の言語には、「順次・分岐・繰り返し」という3要素をベースにした手続き型言語の他にも、論理型や関数型等の複数言語があり、それぞれは異なったパラダイム(※)を用いている。しかし、先の有識者会議取りまとめで言及されているのは手続き型言語のみであり、「複数のパラダイムのうち、ひとつだけしか明示していないことは大きな問題だと思います」と阿部さんは言う。プログラミング的思考を身につけるには複数ある言語それぞれの特徴やパラダイムを知らなければならないし、プログラミングの本質に触れるのであればそこからコンピューテーショナル・シンキングへと理解を進めていく必要がある。しかし、そこに目を向けている人は少ない、というのが阿部さんの印象だ。
※パラダイム…プログラミングにおいて、与えられた目標をどのように実現するのかという基本的な考え方や枠組み

議論が始まったばかりのプログラミング教育

では、日本の(そして世界の)プログラミング教育は、コーディングスキルの向上をより重視する方向へ走っていってしまうのだろうか。未来の行く末はわからないが、少なくとも日本では、プログラミング教育の目指すものや、それを学校教育にどう落とし込んでいくかという議論が始まったばかり。プログラミング教育の「質」に至っては、議論をする段階までもいっていないというのが現状だ。
現在一部の私立小学校や公立小学校で、プログラミング教育の導入が試行錯誤を繰り返しながらも始まっている。しかしそういった学校は、まだまだ少数派。プログラミング教室の人気が高まる一方で、国内全体をみれば「プログラミング」に対する関心の高まりは局所的なものであり、ゆえに現状は親や校長の意識の差が子どもたちの学びの機会の差になってしまってもいる。
プログラミング教育の「質」については、議論も実践も発展途上だ。たとえば、プログラミング教育の本質を尊重して「答えのない問いに答える」ということを意識してプログラミング教育をやっていこうとしても、既存の学校の制度や授業設計にはなじまないので、工夫が必要だ。けれど教師たちは非常に忙しく、授業設計に割く時間をどのようにねん出するのかという課題が常につきまとう。また、プログラミングの授業ではテーマを設定し授業を展開していくことが多いが、「授業はそれで成り立ったとしても、その授業で学んだことが結果として高校、大学の入試へと結びついていくものでなければ多くの人の理解と賛同を得ることは難しい。だからこそ、大学の入試改革や中高連携の話、中高接続の議論とこの話は切り離せないんです」と阿部さんは話す。プログラミング教育についての議論をするならば、質だけでなくその意味や、既存の仕組みのなかでの位置づけといった全方位的な議論が不可欠だ。

プログラミング教育の 「いかに学ぶかを学べる」可能性

全国的にみれば本格導入には至っていないプログラミング教育だが、学校での学びに取り入れていくことで、学びが大きく変わると阿部さんは考えている。その根拠のひとつにもなるのが、プログラミング教育の普及のため全国を飛び回るなかで出会った教師たちのコメントだ。
プログラミングを取り入れた授業の様子
(写真提供:阿部和広さん)
プログラミング教育を実践した教師たちからは、「(プログラミング学習において)生徒が試行錯誤するようになった」「自ら進んで取り組むようになった」という2つの声が共通してあげられるという。生徒のこうした変化がプログラミング以外の教科の学習意欲の向上や、学びに対する態度の変容に結びつくならば、教科学習で身につくとされる知識や技能の枠を超えるメタな能力がついたということになる。プログラミング教育がこのメタな能力を育成できることが何らかのかたちで検証できれば、プログラミングを教育に取り入れることで学びの質全体の向上が期待できる。
今まで全く興味の持てなかった学習内容に、プログラミングというメディアを持ち込むことで、学習意欲を持って取り組めるようになる。わからないことに出会ったとき、自ら調べて仮説を立て、試行錯誤して、答えを見つける。その結果、学習内容が身についていく…という「学び方」を、プログラミングを通して生徒が身につけられる。もしプログラミングがこのような役目を果たせるのであれば、プログラミングは既存の教科では成し得ることが難しかった子どものメタな能力を向上させることができるかもしれず、それは新たな学びのスタイルとして大きな可能性を持つことを意味する。阿部さんは現在、こうした研究を進めているという。
【阿部和広さんプロフィール】
1987年より一貫してオブジェクト指向言語Smalltalkの研究開発に従事。パソコンの父として知られSmalltalkの開発者であるアラン・ケイ博士の指導を2001年から受ける。Squeak EtoysとScratchの日本語版を担当。近年は子供向け講習会を多数開催。
『小学生からはじめるわくわくプ ログラミング』、『小学生からはじめるわくわくプ ログラミング2』など、著書多数。
多摩美術大学研究員、東京学芸大学・武蔵大学非常勤講師、サイバー大学客員教授を経て、現在、青山学院大学客員教授、津田塾大学非常勤講師。プログラミング学習普及プロジェクト「PEG」、NHKのプログラミング番組『Why!?プログラミング』監修。
【企画制作協力】(株)エデュテイメントプラネット 山藤諭子、柳田善弘、水野昌也
【取材協力】阿部和広さん