見出し画像

コンピュテーショナル・シンキングとプログラミング教育

オンライン上にも、街のそこかしこにも、多くのプログラミング教室を見かけるようになりました。

2021年、小学校で「プログラミング教育」が必修化されました。プログラミングという科目はなく、理科、算数や総合的な学習の時間、あるいは他教科の時間内に実践されています。

2022年、高校で「情報科」が必修になります。「情報Ⅰ」を、全ての高校生が履修することになります。大学入学共通テストでは、2024年度から入試科目になる予定です。

「これからの時代は、プログラミングが必要なんだ!」という空気が感じられます。しかし、なぜプログラミング教育が必要なのでしょうか?また、プログラミング教育とは何を目指しているのでしょうか?

日本の小学校のプログラミング教育必修化の背景とは?

小学校のプログラミング必修化の背景にあるのは、我が国のIT人材不足を補うため、早い年齢からの「IT力」の育成です。子どもたちの将来の可能性を広げるために、コンピューターの仕組みを理解し、どうやったら効果的に使えるのか知識や技術を身に付けます。そして、小学校で理解したことも、中学校や高等学校では、コンピュータを用いた問題の発見・解決のための知識及び技能の習得に繋げようという狙いがあります。

その「IT力」を鍛えるのが、プログラミング的思考です。

プログラミング的思考
「自分が意図する一連の活動を実現するために、どのような動きの組合せが必要であり、一つ一つの動きに対応した記号を、どのように組み合わせたらいいのか、記号の組合せをどのように改善していけば、より意図した活動に近づくのか、といったことを論理的に考えていく力」
文部科学省, 小学校プログラミング教育の手引(第三版)より抜粋

文部科学省の「小学校プログラミング教育の手引き(第三版)」によれば、プログラミング的思考は、コンピュータを使って、課題を発見・解決していくために役立ち、将来どのような職業に就くとしても、普遍的に求められる力だとされています。ただし、プログラミング的思考は、プログラミング言語を覚えたり、プログラミングの技能を習得したりすること自体をねらいとしているものではないと明記されています。プログラミング的思考の育成の中に、どうやって適切に情報を使うかという情報活用能力の育成を組み込みこもうとしていることを考えれば、プログラミング的思考がプログラミングに限定されないより幅のある概念であることが分かります。

「プログラミング的思考」という言葉は、日本独自の言葉です。様々な国で実践されているプログラミング教育の中心にあるのは、「コンピュテーショナル・シンキング(computatinal thinking)」だと考えられています。「プログラミング的思考」と「コンピュテーショナル・シンキング」について明確な関連を示す資料はないようです。

プログラミング教育の目的は、「プログラム的思考」を鍛えようであって、プログラムを作ってみよう(コンピューターに指示を出してみよう)ではない。


コンピュテーショナル・シンキングとは?

コンピュテーショナル・シンキングは、課題を解決するための考え方です。多くの国で実践されているプログラミング教育の目的は、コンピュテーショナル・シンキング力の獲得です。コンピューターを使うこともあれば、使わないこともあります。

2006年、アメリカのコンピューター科学者:ジャネット・ウィンが「Computational Thinking(コンピュテーショナル・シンキング)」という論文を発表しました。この論文で、彼女は、「コンピュテーショナル・シンキングとは、コンピューター科学者の考え方」で、「プログラミングとは異なる」と言っています。

コンピューター科学者の考え方とは、課題は何かを理解したり、課題の解決策を見つけたり、どうやって実現したら良いかを順序立てて説明したりすることです。コンピューター科学では、説明する相手はコンピューターです。コンピューターは便利ですが、人間が指示をしないと自分では動けません。つまり、コンピューターで何ができるかは、私たちがどんな指示をコンピューターに与えるかで決まるのです。しかし、コンピュテーショナル・シンキングは、相手がコンピューターでも人でも使える考え方です。

コンピュテーショナル・シンキングは for everyone(すべての人のもの)だとウィンは言います。読み書き算数と同じように、誰もが子どものころから身に付けておくべきスキルです。 課題を整理したり、順序立ててものごと伝えることは、人と人とのコミュニケーションにおいても力を発揮します。コンピュテーショナル・シンキングがこれほど注目されているのは、この考え方を通して複雑な物事を分析して説明する力が手に入り、理科や体育など他分野に応用できると期待されているからです。

基本的には「プログラミング的思考」と「コンピュテーショナル・シンキング」は近いものはありそうです。あるいは、コンピューターに焦点を狭めたものという印象も受けます。なぜ、新しい概念を打ち出してきたのかは疑問が残ります。

「コンピュテーショナル・シンキング」は、課題は何かを理解したり、課題の解決策を見つけたり、どうやって実現したら良いかを順序立てて説明したりする力のこと。「プログラミング的思考」の下敷きになる考え方。


なぜコンピュテーショナル・シンキングが必要なのか?

では、なぜ「コンピュテーショナル・シンキング」がこれほどまでに注目されているのでしょうか?

これからの社会は、先行きが不透明で、将来の予測が困難になる(VUCA時代)と言われています。すると、今後私たちが直面する課題は、より複雑で、簡単に解決することができないものが増えると予想されます。だからこそ、コンピュテーショナル・シンキングを用いて、課題が何かを特定し、実現可能な解決策を立て、それを実行できるように説明できる力がより重要になってくるのです。

様々な要素が絡み合い、ものごとの本質が見えない時、コンピュテーショナル・シンキングでは、いくつかのテクニックを使ってものごとを整理します。

・分解
・パターン化
・抽象化
・アルゴリズム(手順や計算方法)

例えば、何か複雑な問題に出会ったら、まずは理解できる単位に噛み砕きます(分解)。そして、小さく噛み砕いた一つ一つの要素に間に共通点がないか、あるいは、別件で似た事例がないか調べます(パターン化)。検討する中で、考えなくても良いことは省き、本当に重要な点だけを抜き出します(抽象化)。問題を理解し、解決策が見えてきたら、問題解決に向けての手順を作ります(アルゴリズム)。

この4つ以外にも様々な考え方があり、国や組織によって明示しているテクニックは異なります。ご参考までに、いくつかリンクを貼っておきます。
Microsoft  ➡ 4個
Barefoot(プログラミング教育の小学校教諭ネットワーク)➡ 6個
ISTE(教育者支援にあたる団体)➡ 9個

VUCA時代にはより複雑な課題が増える。複雑な課題は、課題を切り分けたり(分解)、不要な詳細を取り除いたりして(抽象化)本質を見極める必要がある。だから、コンピュテーショナル・シンキングが必要になる。


コンピュテーショナル・シンキングにコンピューターはいらないのか?

コンピュテーショナル・シンキングは、コンピューターがなくても鍛えることが出来ます。コンピューターを用いない、「アンプラグド」という学び方もあります。実際、初等教育ではアンプラグドで「考え方」を鍛え、中等教育で「考えたことを実現する」ことに繋げるという流れでプログラミング教育を実践している国が多いようです。

コンピュテーショナル・シンキングは特別なものではありません。例えば、夕食を作る時。何を作ろうか、何が必要か、どれくらい時間が必要か、どんな順番で進めたらいいか。これもコンピュテーショナル・シンキングだと言えます。実際に、日本の小学校の低中学年のプログラミング教育の実践例を見ると、このように手順を説明するような授業が登場しています。

それなら、わざわざプログラミングを学ぶ必要はないんじゃないかと思うかもしれません。しかし、今後の私たちの生活は、コンピューター技術(IT)とは切り離せないところにあります。将来、子どもたちがどんな職業を選んだとしても、何らかの形でITに関わることになるでしょう。そう考えると、コンピューターを使う上でのルールだったり、コンピューターがどうやって動いているのかを知っておくことは重要です。

例えば、木製のテーブルがグラグラしているとします。脚のネジが緩んでいるからだろうか、木が弱っているのだろうか、なにか脚の下に挟まっているのだろうか。そんなふうに原因がいくつ頭に浮かびます。もしネジが緩んでいたのだとしたら、恐らく多くの人がドライバーでネジを締めるでしょう。このような対応ができるのは、私たちがテーブルの仕組みを知っているからです。ただ、テーブルを作れと言われて、すぐに実用的なテーブルを作れる人は少ないと思います。

プログラミングも同じではないでしょうか。プログラミング出来る必要はないけれど、プログラムがどのように動いているのかを理解していると、より的確な行動や指示が出せます。

コンピューターなしでも習得は可能。しかし、将来子どもたちがどんな職業を選んだとしても、何らかの形でITに関わることになる。ンピューターがどうやって動いているのかを知っておくことは役に立つ。


今後は?

世界でプログラミング教育がさかんになったのは、ここ数年のことです。プログラミング教育が子どもたちにどんな変化をもたらし、プログラミング教育を受けた子どもたちがどんな成果を示すかは、時間が経ってみないとわかりません。

OECD(経済協力開発機構)のPISA(学習到達度調査)プログラムにおいて、2021年より数学分野に「コンピューテーショナル・シンキング」に関する項目が追加されています。今後、「コンピューテーショナル・シンキング」が子どもたちにもたらす影響が評価されることになるでしょう。

日本では、プログラミング教育が過熱しています。プログラミング教育のゴールは、プログラミングスキルを磨くことではないという点を忘れてはいけません。パズルやドリルのようにプログラムを作ることは、必ずしもコンピュテーショナル・シンキングを鍛えることには繋がりません。

Scratchを立ち上げたMITメディアラボのミッチェル・レズニックは、自著「ライフロング・キンダーガーテン」の中で、「コーディングには基本技術と表現力の両方が必要だ」と言っています(コーディングはプログラミングと同義と捉えます)。つまり、プログラムの書き方を学ぶだけでは不十分で、物語やアイディアを伝えられるようになることが重要なのです。多くの日本の子ども達にとって必要なのは、この物語やアイディアを伝えられるようになる力なのではないでしょうか?

レズニックの学習哲学は、「コーディングを学ぶ」ではなく「学ぶためにコーディングする」です。私たちは、時に基本技術の習得にばかりに目が向き、技術を使ってどうするかという視点を見落とすことがあります。これは、語学の習得でも同じことが言えると思います。単語や文法を沢山覚えるだけでは英語は使えない、多くの大人が苦い経験をしているはずです。

あくまで、プログラミングはコンピュテーショナル・シンキングを学ぶための一つのツールです。もしプログラミングが嫌いだという子がいたら、別のツールを選びましょう。コンピューターを使おうと使わざると、結果としてコンピュテーショナル・シンキングが身に付けば良いんです。一度別のツールでこの考え方さえ身に付けてしまえば、プログラミングが簡単に感じられるようになるかもしれません。 


参考)

BBC, Introduction to computational thinking, https://www.bbc.co.uk/bitesize/guides/zp92mp3/revision/1
※中学生向けの内容で、分かりやすくまとまっています

Jeannette M. Wing, 2006, Computational Thinking, COMMUNICATIONS OF THE ACM, 49(39): https://www.cs.cmu.edu/afs/cs/Web/People/15110-s13/Wing06-ct.pdf
日本語訳: https://www.cs.cmu.edu/afs/cs/usr/wing/www/ct-japanese.pdf
※ジャネット・ウィンの論文


この記事が気に入ったらサポートをしてみませんか?