プログラミング的思考とは?

プログラミング的思考とは?

プログラミング的思考は、ロジカルシンキング(論理的思考)やコンピュテーショナル・シンキング(計算論的思考)の一部です。

簡単に言うと、「目的を達成するために必要なことを順序立てて、組み立てる」ことです。

プログラミング的思考と言うと難しいですが、私たちも生活の中でいつも行っています。これをちゃんと表現しようとすると次のようになります。文部科学省の定義では、

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

【文部科学省】小学校段階におけるプログラミング教育の在り方について(議論の取りまとめ)

これは、何かの目的を達成するために必要な動きを分解し動きに対応した命令を(記号)にする。そして、それらを組み合わせることを表しています。この一連の活動を「試行錯誤しながら継続的に改善」する考え方をプログラミング的思考と言います。

例えば、お家を建てることを例にしてみましょう。

「どんなお家がいいかな?」「どんな素材が必要かな?」「どうやって組み立てれば、理想通りのお家ができるかな?」という風に、必要なモノ・コトを分解して、適切と思われる順序でお家を組み立てていきますよね。これらを表すのが設計図や工程表です。この部分が、いわゆるプログラミングでいうプログラム(ロボットがわかる言葉で書いた指示書)のことです。

プログラミング的思考が身につけば、ある問題を、何が・どうやって、難しくしているのかを自力で考え、解決策を打ち出せるようになります。

【参考資料】プログラミング思考とは具体的にどういうこと?将来のために身につけると有利?-久留米工業大学

【参考資料】教育新聞企画特集 プログラミング的思考とは

ちょっと難しいけど、もっと詳しく知りたい人は…↓↓↓

プログラミング的思考とは何か、詳しく分解すると、5つの概念で構成されています。

  • 分解(問題の分割)

 問題を理解し、さらに問題を解決出来る一番小さい単位に分けます。

  • 抽象化

 目的に応じて大切な部分だけを抽出し、必要でないと思われる情報は削除し、シンプルにします。

  • パターン認識

 似ているところ、パターンを見つけます。

  • 一般化

 無駄がない、適切だと思われる順番に形を決めます。

  • 分析・評価(シミュレーション)

 これが適切だろうと組み立てて来た順番を振り返ったり、行ったりして(検証)、必要に応じて修正・改善します。

上記の、分解・抽象化・一般化・分析・評価を組み合わせることで問題を解決していきます。この「組み合わせ」もプログラミング的思考にとって重要な要素で、「アルゴリズム(アルゴリズム思考)」といいます。アルゴリズムには順次、繰り返し(反復)、条件分岐といった種類があります。

アルゴリズムの例については、■小学校のプログラミングって、どんな授業をしているの?の記事でわかりやすく書いています。

また、アルゴリズムの設計(分解・抽象化・一般化・分析・評価)を繰り返し、共通点や似ている所のある課題や目標で活用回数を増やしていくと、「パターン認識」が育まれていきます。

【参考資料】小学校におけるプログラミング的思考の育成を目指すプログラミング教育の実践

プログラミング的思考が身につくと、どんなことができるの?

上記では、プログラミング的思考はアルゴリズム設計(分解・抽象化・一般化・分析・評価)と、パターン認識から出来ているとお話しました。この考え方が身につくと、簡単に言えば問題解決能力が身につきます。

具体的には、「分解」の工程が身につくと、状況を多角的に見ることができるようになります。「抽象化」の工程が身につくと、重要度を意識して物事の優先順位をつけられるようになります。「一般化」の工程が身につくと、相手の理解を得るための論理的な説明ができるようになります。「分析・評価」が身につくと、関連情報を分析し、問題の本質を把握することができるようになります。

そのため、生活や仕事など、日常のあらゆる場面で困ったことが起きても「どうしたら解決できるかな?」と様々な方法を考え出すことが出来る様になります。

どんな場面で活用できる?

例えば、仕事の引継ぎを例にしてみましょう。

『コピー用紙は無くなりそうになったら補充しておいてね』という作業を新人さんに教えるとします。そのまま『コピー用紙は無くなりそうになったら補充しておいてね!』とだけ伝えた場合、コピー用紙はきちんと補充されるでしょうか。

もちろん、それだけで理解し、きちんと補充することができる人もいるでしょう。ですが、多くの場合は何かしらの問題が発生します。

『無くなりそう』というのは、コピー用紙がどれくらいの量になったことを指すのでしょうか?補充する紙はどこにあるの?どこかに注文する必要があるの?注文する場合、誰が注文するの…?

慣れていると自然と出来てしまうことかもしれませんが、新人さんはどういう決まりがあるのかを知りません。そのため、思った様な作業をしてもらうには、必要な作業に分解して伝える必要があるのです。

まずは『コピー用紙は無くなりそうになったら補充しておく』という一連の作業を、必要な作業一つ一つに「分解」していきます。分解すると次のような要素に分けられます。

〈『コピー機の前にある用紙の束が』『一つだけになったら(無くなりそうになったら)』、『補充して』おいてね!〉

でもこの作業を完了するのに必要な作業はまだあって、

〈『総務に』『500枚つづりを1箱』『発注用紙に記入して』『担当の〇〇さんに用紙を提出しておき』『届いたと連絡があったら』『総務の倉庫に』『用紙を取りに行き』『コピー機の前に用紙を置く』〉という細かい工程を経て、初めて完了できます。

相手に伝えたいことを自分の意図したとおりに伝えるには、まずは細かく「分解」し、伝えたいことを明確にすることが大切です。

この工程がまさに、プログラミング的思考を用いていると言えます。

また、作業を分解し、説明を組み立てて伝えた後でも、実際にやってみて分かることもあります。用紙は500枚つづり1箱を注文するより、2箱にしておいた方が、注文回数も、用紙を取りに行く回数も減らせそうだという事がわかったりします。これは、「解決方法の手順を検証し、必要に応じて修正・改善する」という、プログラミング的思考の「分析・評価」の部分と言えます。

プログラミング的思考は、プログラマーなどその道に進む人でなければ身につけなくても良いかというと、そんなことはありません。上記のように、プログラミング的思考は日常のさまざまな場面で活用されている思考方法なのです。全くプログラミングとは関係のなさそうな営業職でも、営業が出来る人というのは、普段からプログラミング的思考で動いているからだといいます。

【参考資料】実は営業にとって大切なスキル!プログラミング的思考とは何か

まとめ

ここまでプログラミング的思考についてお話してきました。ここでもう一つ同じくらい大切なことをお伝えしておきたいと思います。

人とコンピューターの違いは何か、考えてみたことがあるでしょうか。コンピューターやロボット、AIなどプログラムで動くものたちは、「これくらいの事は察してわかるだろう」というのが通用しません。なぜならコンピューターは、プログラムされた通りにしか動けないからです。

■そもそもプログラミングとは?(内コンピューター、AIが得意なこと)

でも人は、想像力を働かせることが出来ます。相手の気持ちを想像したり、察したりして、仕事をすることも出来ます。過剰に「言いたい事を察してね」と、相手に求めることは様々な問題が起こる原因になります。なので、伝えなくてはいけないことはしっかりと伝えるのが大事です。日本の文化にある「言わなくても分かってね」というのは、ひとたび海外に出ると通用しない文化です。それでも、思いやりと想像力で成り立っていることが、世の中にはたくさんあったりします。何が言いたいかと言うと、プログラミング的思考は決して万能ではなく、それだけでは上手く行かないことを、生きていると経験することがあるという事です。プログラミング的思考は大事だけれど、それだけでは世の中はきっと上手くいきません。

この先、デジタル技術や先端技術の進歩でますますプログラミング的思考は重要になります。

プログラミング的思考は、国境を超えて様々な価値観の人たちと一緒に働いたり、交流したりする時にも役に立ちます。必要のない争いや衝突を避け、お互いを理解する上で必要な考え方です。そこに思いやりの気持ちがあればどうでしょうか。プログラミング的思考で解決策を探り、優しさで譲り合い、お互いの幸せを考えられたらどうでしょう。きっと凄い技術を生み出し、様々な世の中の問題を解決していける気がしています。


プログラミング的思考を身につける方法はさまざまですが、実際にプログラムに触れてみるのは効果的な方法の一つです。特に、プログラミング教育が導入されたばかりの小学生は、今が学び始めるチャンスといえます。この機会に、ぜひプログラミングを体験してみてはいかがでしょうか。

「個別指導 キッズプログラミング教室 ピタゴラミン」は、個別指導のキッズプログラミング教室です。一人の講師が担当する生徒は三人までなので、生徒一人ひとりの疑問に丁寧に向き合うことができます。また、動画教材を使用しているため、わからない部分を見返すこともでき、各自のペースで学習を進められます。

プログラミングの技術より、プログラミング的思考を学ぶことに重点を置いているので、小学1年生から学べる教室です。

体験会も行っていますので、ぜひお近くの教室へお問い合わせください 。