公立はこだて未来大学で行ってきた「計算論的思考(computational thinking)」に関する教育の試みをもとに構成された、中島秀之 先生と平田圭二 先生 編著『計算論的思考ってなに? コンピュータサイエンティストのように考える』を読みました。
「computational thinking」をどのように訳すかによって、ICTをどのようなものに捉えるのかが違うようにも思います。「プログラミング的思考」と訳してしまうと、おそらく本来の「computational thinking」よりもずっと狭い範囲になってしまうように思います。大変勉強になりました。特に関心があった部分をメモとして共有したいと思います。
論文「Computational Thinking Educational Policy Initiatives (CTEPI) Across the Globe」(Yu-Chang Hsu, Natalie Roote Irie & Yu-Hui Ching)から参照された「計算論的思考を取り入れる国(地域)」(p.73)の表で、それぞれの国や地域で計算論的思考を取り入れている根拠が書かれているのですが、これが非常におもしろかったです。とても幅広い。これがもう、「コンピュータとは本当に幅広い範囲に働きかけるのだ」ということがわかりますし、「プログラミング的思考」という言葉でちょっとICTを使うのでは全然足りないという印象も受けるのではないでしょうか。
平田圭二 先生と中島秀之 先生が書いた「3章 分野を超えた計算論的思考の教育」で、「計算論的思考とは、コンピュータサイエンティストのように考えること」と書かれています。
計算論的思考とは、コンピュータサイエンティストのように考えることです。ただし、コンピュータのハードウェア、ソフトウェア、システムに詳しいということを指すのではありません。
コンピュータサイエンティストは、コンピュータのことを深く広く理解して親しみを感じているので、往々にして、コンピュータの仕組みや動作を擬人化することがあります。たとえば、親プロセスと子プロセスと呼ぶ関係があったり、プログラムを走らせるなどと表現します。(略)また逆に、コンピュータサイエンティストは現実世界の様子をコンピュータ用語を使って表現します。たとえば、この料理レシピはリファクタリングした方がいい、彼に仕事を頼んだらタイプエラーを起こした、などです。
(略)
コンピュータは万能です。原理的にコンピュータはどんな計算でもできて、あらゆる機能が実現できます。だから、コンピュータの仕組みや動作を深く広く理解しているコンピュータサイエンティストなら、現実世界の事物や出来事に関して、その本質的な性質や関係を損なうことなく、コンピュータの仕組みや動作に喩えることができるのです。(p.88-89)
これに続けて、どのようにコンピュータの仕組みや動作に喩えるとはどのようなことなのかが書かれています。
コンピュータのしくみや動作に喩えるとは、具体的にどのようなことを行うのでしょうか。ここで重要になってくる概念を3つ挙げます。それは、抽象化、モデル化、仮想化です。すべて○○化という形になっていることからも分かるように、元のモノに対して○○を適用して新しい何かを創り出すということです。(p.89)
美馬のゆり 先生が書かれた「6章 生活と計算論的思考」のなかで、プログラミング的思考と計算論的思考の違いが書かれていました。
日本の教育界に広まっている「プログラミング的思考」は、計算論的思考とは異なるものです。プログラミング的思考では、「コンピュータのように考える」という比喩がよく用いられます。それに対し、計算論的思考はこれまで説明してきたように、「コンピュータサイエンティストのように考える」ことです。計算論的思考は、気候変動やゲノムの解析、フェイクニュースの検出など、社会が直面している問題にも使える、汎用性の高い問題解決のアプローチなのです。(p.142)
プログラミングを教えるときには、「論理的思考や問題解決思考を身につける」ことを学習目標にすることもありますが、プログラミング教育単体で考えてはいけない、ということも書かれていました。
1980年代盛んに行われたLOGOを用いた教育研究の中では、プログラミングスキルの習得が、論理的思考や問題解決能力の獲得や育成にはつながらないという結果が多く出てきました。その後の学習科学分野における研究成果から明らかになったことは、学習の転移(前に学習したことがのちの学習に影響を及ぼすこと)は、文脈を超えて自動的には起こらず、文脈に依存して起こる、経験を伴うものだということです。これは、現在プロジェクト型学習(PBL: Project-Based Learning)が有効な学習方法として世界的に広まっている理由の1つでもあります。したがって計算論的思考についても、プロジェクト型学習のような活動の中で活用していくことで、有効なものとなりえるでしょう。プログラミングだけでなく、STEAM教育の活動や、社会的活動、共創的なデザイン活動の中で、計算論的思考が立ち現れるような状況をデザインし、それを見つけて伸ばしていくことができるのではないでしょうか。(p.147)
自分の身のまわりを、「コンピュータサイエンティストのように見る」≒抽象化・モデル化・仮想化していく活動をプロジェクト学習のなかに組み込んで、計算論的思考をする機会を増やしていきたいと思いました。
自分自身が大人数のクラスでプログラミングの授業をさせてもらうときにも、まずは第一歩として「思い通りに動かすのが楽しい!」と思わせるところで止まってしまうことも多いのですが、その先までを見据えて、可能ならばどんどん前に進ませてあげるようにしなければならないな、と思いました。「計算論的思考」について、いろいろなことを知ることができた本でした。
(為田)