薄い青紫色のランドセルの写真、背景は白

前回記事ではアメリカのプログラミングとコンピュータサイエンス教育の思想について紹介しました。今回は、文部科学省の有識者会議での議論内容をベースに、今後の日本のプログラミング教育の背景にある考え方を紹介します。そこでのコンピュータサイエンスの欠如には危機感を覚えます。

前回記事「『プログラミング経験を持った初めてのアメリカ大統領』のコンピュータサイエンス教育施策」では、アメリカの連邦政府2017年予算に盛り込まれた「Computer Science for All(全ての人にコンピュータサイエンスを)」イニシアチブの根底にある考え方を紹介しました。

その中でも少しだけ触れましたが、日本の文部科学省においても、有識者会議において小学校段階におけるプログラミング教育の在り方が議論され、その内容が2016年6月に公開されています。まだ政策にどのようなかたちで反映されるかわかりませんが、日本の有識者においても、「プログラミングスキルの取得」を主目的とするような教育を目指すべきではなく、「プログラミングを通して、21世紀の社会に生きる人間としてのスキルを身に付けること」を目的とすべきとの認識がなされています。心強いとは言え、コンピュータサイエンスの一部にすぎない「プログラミング」に限定した議論には危機感を覚えます。

今回は、この有識者会議の議論内容を紹介しつつ、考察したいと思います。

以下のドキュメントから引用しながら話を進めます。

小学校でのプログラミング教育の目的

公表資料の冒頭で、小学校でのプログラミング教育の目的に関する考え方が述べられています。ここは、心配されるような「プログラミングを学ぶ」ではなく「プログラミングで学ぶ」という姿勢が明記されています。

「プログラミング教育とは、子供たちに、コンピュータに意図した処理を行うように指示することができるということを体験させながら、将来どのような職業に就くとしても、時代を超えて普遍的に求められる力としての『プログラミング的思考』などを育むことであり、コーディングを覚えることが目的ではない。」(強調は筆者、以下同様)

強調した部分は、前回記事で紹介した、米国ホワイトハウスの

  • 「コンピュータサイエンスの基礎を身に付けることで、生徒はほかの関心・興味を追及する能力を得ることができる。また、どんな仕事を将来選ぶとしても、そこで成功するためにも役に立つ」

という考え方と同じです。ただ、コンピュータサイエンスという素地に乏しい日本の状況に合わせて、「プログラミング的思考」という語を使っている、と考えられます。

ただ、やはりこういう言葉の使い方はまどろっこしいですね。早く「コンピュータサイエンス」や「computational thinking(←うまい訳語が必要)」が広く普及してほしいものです。

「こうしたプログラミング教育を実施する前提として、言語能力の育成や各教科等における思考力の育成など、全ての教育の基盤として長年重視されている資質・能力の重要性もますます高まるものであると考えられる。」

ここは重要な点です。従来型の教育を否定するのではなく、従来の教育による「学びの成果があること」が、プログラミング教育の前提だ、というわけです。

ここで私が思い出すのは、元マイクロソフト・リサーチ・インディアのマネージング・ディレクターで、現在米国ミシガン大学教授のケンタロウ・トヤマが提唱する「増幅の法則(Law of Amplification)」です。

これは、「全てのテクノロジー、特にITは、個人がすでに持っている能力を増幅するものである」というもの。例えば、コンピュータをオフィスに導入することで最も得をするのは、コンピュータ導入以前からも仕事をうまくこなせている人材。なぜならば、そういう人材が最もうまくコンピュータを使いこなせるから。同様に、コンピュータ教育で最も得をするのは、コンピュータ教育以前の教育による学習成果を蓄積している子、つまり「コンピュータ教育以前からの『できる子』」ということです。

「増幅の法則」についての参考情報:

「技術は個人に新たなスキルを与えない、技術は個人がすでに持っているスキルを増幅する」というのが「増幅の法則」。なので、プログラミング教育も、子どもに新しいスキルを与えることはなく、その子がすでに持っているスキルを増幅するものだといえるでしょう。これはとても大事な点。近年のプログラミング教育ブームにおいて、親御さんたちはそれに踊らされずに、しっかりと従来の学びの成果を蓄積することがますます大事になります。文部科学省有識者会議の出席者が「増幅の法則」を知っていたかどうかはわかりませんが、その主張は大筋において一致していると言えるでしょう。

「学校教育が目指す子供たちの姿と、社会が求める人材像の関係については、長年議論が続けられてきた。現在、社会や産業の構造が変化していく中で、私たち人間に求められるのは、定められた手続を効率的にこなしていくにとどまらず、自分なりに試行錯誤しながら新たな価値を生み出していくことであるということ、そしてそのためには生きて働く知識を含む、これからの時代に求められる資質・能力を学校教育で育成していくことが重要であるということを、学校と社会とが共通の認識として持つことができる好機にある」

「定められた手続を効率的にこなしていく」ことは、情報機械たるコンピュータと最も得意とするところです。「定められた手続」として仕事の内容と書けるならば、それはプログラミング言語でも書けてしまいます。そしてそのプログラムを忠実に実行し、決して間違うことのないコンピュータには人間は絶対に勝てません。人工知能の発展を待たずとも、このようなタイプの仕事はどんどん機械化されていくことでしょう。

人間は、そのような仕事はコンピュータに任せて、「自分なりに試行錯誤しながら新たな価値を生み出していく」ことに専念すべきです。

そのために必要な資質は何だと思いますか?わたしはそれは「好奇心」、そして「自分でそれをやりたいという心」だと思います。答えの決まった問題を解く能力の重要性は下落していき、自分の好きなことを見つけ、それを追及していくことが人間の生き方になっていくと思っています。

人工知能時代に求められる力

「…人工知能が、与えられた目的の中での処理を行っている一方で、人間は、感性を豊かに働かせながら、どのような未来を創っていくのか、どのように社会にや人生をよりよいものにしていくのかという目的を自ら考えだすことができる。多様な文脈が複雑に入り混じった環境の中でも、場面や状況を理解して自ら目的を設定し、その目的に応じて必要な情報を見いだし、情報を基に深く理解して自分の考えをまとめたり、相手にふさわしい表現を工夫したり、答えのない課題に対して、多様な他者と協働しながら目的に応じた納得解を見いだしたりすることができるという強みを持っている」

人間はこのような強みを持っていると有識者会議は述べていますが、子供が持っているその強みを引き出してやることは大人たちの役目だと思います。ほおっておいても勝手に顕在化するようなものではありません。

これからの時代を生きるためには

「将来の予測が困難な時代の中で、これからの子供たちに求められるのは、これまでにないような全く新しい力ということではなく、従来からも重視されてきている読解力や論理的・創造的思考力、問題解決能力、人間性等について、加速度的に変化する社会の文脈の中での意義を改めて捉え直し、しっかりと発揮できるようにすることであると考えられる。」

ここでも、従来から重視されてきた基本的なちからが、ますます重要になってくるとの指摘がなされています。これが有識者会議の最重要ポイントだったと言えそうです。そしてこの点についてはわたしも全く同感です。

読解力の重要性

「(1)情報を読み解く」

特に「情報を読み解く力」つまり読解力は全ての基本。「未来を切り拓く!数学は『働く力』」という著書で、高濱正伸氏はこのように書いています。「以前、小中学生の子たちに、文章題をできなかった理由を分析してもらったことがある。原因としては『公式を忘れていた』『いい発想が浮かばなかった』というのもあがったけれど、7割を占めたのは『問題文を正確に読み取れなかった』という理由だった」(106頁)。

また、東京大学の入試に合格する人工知能を開発している「東ロボくんプロジェクト」の新井紀子教授は、人工知能よりも読解問題の得点が劣る高校生が多数存在することに気づき、中高生を対象に読解力調査を行ったところ、ほとんど文章が読めていない生徒が多数いることがわかったとのこと。プログラミング教育などやっている場合ではなく、きちんとした読解力を身に付けさせることが急務だと指摘しています。(日本経済新聞2016年3月30日記事「AIで変わる大学教育 学生の読解力こそ重要」)

読解力などがプログラミング教育の前提だとした有識者会議ですので、「国語教育よりもプログラミング」などという乱暴なことになることはないと思います。が、プログラミング教育と従来の教育のバランスには十分考慮することが必要でしょう。

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

「(2)情報技術を手段として使いこなしながら、論理的・創造的に思考して課題を発見・解決し、新たな価値を創造する

…そのためには、自分が意図する一連の活動を実現するために、どのような動きの組合せが必要であり、一つ一つの動きに対応した記号を、どのように組み合わせたらいいのか、記号の組合せをどのように改善していけば、より意図した活動に近づくのか、といったことを論理的に考えていく力が必要になる。

こうした『プログラミング的思考』は、急速な技術革新の中でプログラミングや情報技術の在り方がどのように変化していっても、普遍的に求められる力であると考えられる。また、特定のコーディングを学ぶことではなく、『プログラミング的思考』を身に付けることは、情報技術が人間の生活にますます身近なものとなる中で、それらのサービスを受け身で享受するだけではなく、その働きを理解して、自分が設定した目的のために使いこなし、よりよい人生や社会づくりに生かしていくために必要である。言い換えれば、『プログラミング的思考』は、プログラミングに携わる職業を目指す子供たちだけではなく、どのような進路を選択しどのような職業に就くとしても、これらの時代において共通に求められる力であると言える。

このあたりは至極最もなことで、このような議論が有識者会議でなされたことは大変喜ばしいと言えるでしょう。

ただ、同様のことを、米国政府は「コンピュータサイエンス」という文脈で語っています。わたしも、これを「プログラミング的思考」と呼ぶのは、無用な制限をかけているため賛成できません。「記号の組合せで意図を表現する」のは確かに重要ですが、さらに重要なのは「与えられた課題を、より小さなサブ課題に分割し、それぞれに対して解決法を創り出すこと」です。コンピュータを用いた解決法を考えるために必要なのがコンピュータサイエンスであって、記号の組合せによって解決を考えるのはコンピュータサイエンスの一部であるプログラミングである、ということになります。

ここにも、日本におけるコンピュータサイエンスの欠如の悪影響が、如実に現れていると思います。もったいないし、残念なことです。

学校教育におけるプログラミング教育の在り方

「子供たちが、便利さの裏側でどのような仕組みが機能しているかについて思いを巡らせ、便利な機械が『魔法の箱』ではなく、プログラミングを通じて人間の意図した処理を行わせることができるものであり、人間の叡智が生み出したものであることを理解できるようにすることは、時代の要請として受け止めていく必要がある。」

「…子供たちには、コンピュータに意図した処理を行うよう指示することができるということを体験させながら、時代を超えて必要となる資質・能力を、発達の段階に即して身に付けていくことが求められる。」

言っていることは間違いではないですが、強い違和感を感じます。結局、プログラミングというスキルの教育の範疇から出るものではないからです。例えば、情報の理論や情報に関する自然界の法則に関する部分は完全に議論から抜け落ちています。

もちろん、小学校教育で全てを学ばせることはできません。どこかで線引きする必要があります。しかし、プログラミングというスキルに限定した議論をする限りこのような限界が来てしまいます。米国の「コンピュータサイエンス教育」の考え方とは、その思想的な厚みで差があることがわかるでしょうか。

「全ての日本の人にコンピュータサイエンスを」

プログラミング教育に関する有識者会議、かなり良い指摘もなされていますが、やはり議論をプログラミングに限定しているために、例えば

  • 電子機器を使わずにコンピュータの原理をどのように実体験させられるか
  • ハードウェアとソフトウェアの組合せでどのように目的を達成できるか
  • 情報の理論が、コンピュータだけでなく生物の遺伝子や物理の世界にもどのように関連しているか

などの、自然科学としてのコンピュータサイエンスの観点が抜け落ちてしまっています。これは「モノづくりスキルとしてのプログラミング教育」と言っても誤りではないでしょう。

コンピュータサイエンスは、プログラミングと同じではありません。米国をはじめとする諸外国が「コンピュータサイエンス教育」に注力し始めたいま、日本だけが「プログラミング教育」ばかりを議論している状況には危機感を覚えます。

ホーム画面に戻るにはこのリンク

関連記事:

(かながわグローバルIT研究所 森岡剛)