プログラミング教育の必修化が進むなか、注目されているのが「プログラミング的思考」です。文部科学省によりプログラミング学習を通して習得するべき力として定義されました。
プログラミング的思考は、学習計画や将来の仕事、余暇活動などあらゆる場面で役に立つものです。今回の記事では、プログラミング的思考の概要やプログラミング的思考を身に付ける意義などを解説します。
プログラミング的思考とは
文部科学省は、プログラミング的思考について以下のように定義しています。
「自分が意図する一連の活動を実現するために、どのような動きの組合せが必要であり、
一つ一つの動きに対応した記号を、どのように組み合わせたらいいのか、記号の組合せをどのように改善していけば、より意図した活動に近づくのか、といったことを論理的に考えていく力」
つまり、プログラミング的思考とは「ある目的を達成するために、情報や技術をうまく活用しながら効率のよい方法を考え、結果を出していく力」だといえます。
論理的思考とは
論理的思考とは「ある目的を達成するために、あらゆることの因果関係を整理しスタートからゴールまでの筋道を考えてわかりやすく説明する力」のことです。一般的に、ロジカルシンキングとも呼よばれます。
論理的思考ができると自分の考えが伝えやすくなったり、原因特定や問題解決の能力が上がったりするので、重要な能力だといわれています。
プログラミング的思考と論理的思考の関係
論理的思考は、その方法が最もいい方法であるとは限りません。論理的思考は、「物事のスタートからゴールまでの筋道を考える」のに対し、プログラミング的思考は、「スタートからゴールまでの筋道をいくつか考えて、試行錯誤しながら最適な筋道をとっていく」ことです。
つまり、プログラミング的思考では試行錯誤しながら最適なものをつくる過程に意義を持っています。
プログラミング的思考の具体例
プログラミング的思考の概念について説明したので、次に日常的な例をみていきましょう。
料理
料理をするときにもプログラミング的思考は使われています。たとえば、オムライスを作る手順をみてみましょう。
- 玉ねぎ、ピーマンはみじん切り、ソーセージは小口切りにします。
- フライパンに有塩バターを入れて熱し、1を加えて炒めます。
- 2にご飯を加えて炒め、ケチャップを加えて味を調え、ケチャップライスを作ります。
- ボウルに塩こしょう、卵、牛乳を入れてフォークで卵をときほぐしながら混ぜます。
- フライパンにサラダ油を入れて熱し、4を一気に加えて手早く混ぜます。
- ケチャップライスを盛った器に5の卵をのせてできあがりです。
引用:クラシル「ふわとろオムライス レシピ・作り方」
わかりやすいレシピはこのように、順序よく端的に説明されます。この例でも「ボウルに1を入れて…」といったように、記号を使って端的にわかるよう工夫されています。
「卵をときほぐしながら」という箇所では、実際には半熟など好みの固さにするためにコツや火加減をみながら試行錯誤し最適な焼き加減を探っているという点で、プログラミング的思考が活用されているといえます。
国語の問題を解く
たとえば、国語の評論文のテストで、
「情報技術を用いて、新しい価値を創る力」とはどういうことか説明しなさい。
という問いがあったとします。
この問題を解くとき、多くの場合は以下の手順で解くことになります。
- 「{A}を用いて、{B}を創る力」と分解する
- {A}と{B}に当てはまる文章を考える
- 「用いる」と「創る」を別の表現に換える
このように、「国語」という一見プログラミングとはかけ離れていそうな問題でも、回答を導くため3つにステップを分けること、文章を2つに要素を分けること、記号を使って考えやすくすること、といった過程を踏んでいる点でプログラミング的思考が活用されているといえます。
プログラミング的思考は、どの仕事でも求められる
現在は情報のデジタル化により分からないことはすぐに調べられるため、情報を上手く活用できる力が重要視されるようになりました。つまり、情報を正しく取捨選択して組み合わせ、最適な方法を求めるプログラミング的思考が必要です。
情報を読み解く力
ある課題をいくつかの要素に分解し、それぞれの関連性を踏まえながら分析する力が「情報の読解力」です。一つひとつの要素について具体的に考えたり、本質を捉えるため抽象的に考えたりしながら、目的を達成するまでの方法を探っていくことが重要です。
複雑な問題を小さな単位に分割して解きやすくしたり、適切な側面だけを取り上げたりする力は、社会に出てからも重要な力となります。
情報技術を用いて、新しい価値を創る力
インターネットの仕組みを理解し、自分の意図することをコンピュータにどう処理させるか考え、さらに身の回りの課題解決にどう活用できるかを想像し、他者と協力しながら今までにない課題解決の方法を生み出す力のことです。情報化社会において重要なスキルとなります。
学んだことを生かす力
実践したことに対して、「なぜ失敗したのか」「どうしたらもっとよくなるか」を考え、次に生かせる力のことです。何かを実践したときには、失敗することやもっと改善できたことが必ず出てきます。
何かを実践したあとには、まわりの人と振り返る場を設けることが重要です。お互いの考えや感性を働かせながら、よりよいモノ・社会について考えその後に生かしていくことは、仕事だけでなく私生活や余暇活動でも役立ちます。
プログラミングを通して身に付ける力
これまではプログラミング的思考について見てきましたが、次に実際にプログラムを書いていくことで身に付けられる力について解説していきます。
プログラミング知識や技能
実際にプログラミングするということは、目的とゴールまでのプログラムを書いたり読み解いたりしていくことになるので単純にプログラミング知識や技能がつきます。
プログラミングといえば理系のスキルのイメージが強いですが、2020年からプログラミング教育が義務化されたことにより、将来的には文理関係なく必須スキルとなっていくでしょう。近年は、無料でプログラミング学習できるWebサービスも増えてきています。
思考力・判断力・創造力
プログラミングをすることで、ゴールまでの道筋を論理的に考える「思考力」、あらゆる条件でどれを選択するのがよいかを考える「判断力」、さらに新しい価値を生み出す「創造力」がついていきます。
創造力については、プログラミング習得自体が目的になってしまうと身に付けるのが難しいため、意図的につくりたいものを考えたり手を動かしたりする「余白」の時間をつくるといいいでしょう。
新しい価値を生み出す力は社会に出ても役立つのはもちろん、自身の生きがいにもなる可能性を秘めています。
学びに向かう力
物事にはすべて「目的」と目的にたどり着くまでの「過程」があります。プログラミングを通して、インターネットやコンピュータの働きだけでなく、よりよい人生や社会づくりに生かそうとする心を養うことができます。それは、社会をよりよく生きるうえで重要な教養となるでしょう。
プログラミング的思考を育てるには
正しい答えを素早く出すことではなく、「答えを出すためにどういう手順を踏んでいくべきか」という過程を重視してください。具体的には、以下の方法をとるとよいでしょう。
やり方を議論して、実践する
何かをしようと考えたときに、最初に「どうやって目的を成し遂げるか」を考える時間をとります。たとえば、高校の授業でいうと以下のようなものが挙げられます。
- 物理で、実験方法を検討する
- 地理で、資料の集め方やリサーチの方法を議論する
- 体育で、跳び箱をもう一段高く飛ぶための方法を検討する
こうすることで、はじめから指示・提示されたことを実践するよりも、どの方法がもっとも効率がよさそうかなどを考える思考力・判断力をつけられます。
結果に対して、成功・失敗要因を議論する
成功しても失敗しても、実践した結果を考察して各要因を認識することが重要です。
成功要因を明らかにしていると、次回同じような事象を実践したいとき、あるいは他の誰かが同じようなことを実践したいと思ったときに役立ちします。失敗要因は、何をすれば成功したのか、どの過程で行えばよかったのかなど明らかにしておけば、次回はもっとよい結果を出すことができるでしょう。
よりよい方法を考え結論を出す
成功・失敗要因を明確にしたあとは、改善されたよりよいモノを生み出すための「最適な方法」の結論を出すことです。
その際には、Aの場合はこの対応、Bの場合はこの対応、と条件によって行うパターンまで落とし込めているといいでしょう。ある課題に対して試行錯誤しながら随時アップデートしていくのは、論理的思考や問題解決能力を高めるのに役立ちます。
まとめ
プログラミング的思考はプログラミングに携わる仕事に限らず、どんな進路を歩むにしても役立つ力となります。まずは日々の生活で、プログラミング的思考を少しずつ取り入れて見るのはいかがでしょうか。