児童生徒1人1台端末などICTを活用した教育についてさまざまな情報を掲載します。

Sky株式会社

公開日2024.08.26

プログラミング的思考とは? 必要性や身につく力を解説

著者:Sky株式会社

プログラミング的思考とは? 必要性や身につく力を解説

小学校でプログラミング教育が必修化された背景には、誰にとっても、あらゆる活動においてコンピュータなどの情報機器やサービスと、それらによって得られる情報を適切に活用して問題解決していくことが不可欠となる社会が到来しつつある現状があります。しかし、プログラミング的思考が一般的な論理的思考とどう違うのか、疑問に感じている方も多いのではないでしょうか。この記事では、プログラミング的思考の概要や必要性、論理的思考との違いなどについて解説します。

プログラミング的思考とは、知識や技能を組み合わせて試行錯誤する力のこと

プログラミング的思考とは、課題解決のために、既物事を順序立てて考察したり、関係性を理解したりする論理的な思考のことです。文部科学省の資料「小学校プログラミング教育の手引(第三版)」の中では、有識者会議の取りまとめを引用する形で、次のように説明されています。

プログラミング的思考の定義

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

プログラミング的思考が働くイメージは、意図した一連の活動の実現のために、既習の知識・技能を活用し、「必要な動きを切り分けて考える」「動きに対応した命令(記号)にする」「組み合わせる」といったことを、試行錯誤しながら継続的に改善し、問題の解決を図るというものになります。

プログラミング的思考を働かせるイメージ

プログラミング的思考の必要性

プログラミング的思考の必要性は、コンピュータのある生活が浸透した現代だからこそ高まっています。プログラミング的思考は、必ずしもプログラマーなどのITエンジニアリングに携わる人だけが備えていればいいものではありません。現代はVUCA(変動性・不確実性・複雑性・曖昧性)の時代といわれています。確かな正解がなく、目まぐるしく変化し続ける時代を生き抜いていくには、知識や技能を集結させ、何度でも課題に向き合える粘り強さが必要です。また、生成AIが良い例であるように、従来は人間が担ってきた役割がテクノロジーに代替されるケースは将来に向けてますます増えていくと予想されています。人間だからこそ可能な創造性を発揮するには、AIやコンピュータをツールとして使いこなし、自ら考え、課題を解決する力を育成することが重要だとされています。

プログラミング的思考と論理的思考の関係

前述のとおり、プログラミング的思考は論理的思考の一部といえます。文部科学省の有識者会議における「小学校段階におけるプログラミング教育の在り方について(議論の取りまとめ)」によると、前述の「プログラミング的思考の定義」は「コンピュテーショナル・シンキング」の考え方を踏まえつつ、プログラミングと論理的思考との関係を整理しながら提言された定義であるとされています。

コンピュテーショナル・シンキングとは「コンピュータサイエンティストのように思考すること」や「アルゴリズム的な思考法」と説明され、ある課題に対して、コンピュータが情報を処理するときのように順序立てて分析し、どのように解決を図ればよいかを考える思考法のことです。プログラミング的思考はその一部とされています。

プログラミング的思考の5つの

プログラミング的思考では、具体的にどのような力が求められるのでしょうか。さまざまな捉え方ができますが、一般的には次の5つが挙げられます。

物事を分解して整理する

プログラミング的思考では、物事を小さな単位に分解して整理します。例えば、コンピュータを用いて「正三角形を描く」という課題の条件を整理すると「三辺の長さがすべて等しい」「角の大きさがすべて等しい」「円に接する」「中心角の大きさがすべて等しい」というように、正三角形の定義や性質に照らし合わせて条件を絞り込むことで、解決に至るまでの手順や工程を求めやすくなります。例えば小さな単位に分解して整理すれば、複雑な課題でも1つずつ着実に解決することが可能です。

適切に組み合わせて考える

プログラミング的思考では、物事を適切に組み合わせて考えることが必要です。コンピュータが理解できる命令は限られているため、それぞれの命令をどのように組み合わせれば想定どおりの動きをするのか考えることが必要です。例えば、コンピュータで「正三角形を描く」場合、「長さ100進む(長さ100の線を引く)」「左に120°曲がる」、それを3回繰り返すと正三角形を正しく描くことができます。

シミュレーションする

プログラミング的思考では、物事の手順を整理してシミュレーションを行い懸念点や新たな課題を事前に想定します。筋道を立てて抜け漏れなく計画したつもりでも、実行するとうまくいかなかったり、非効率だったりするケースは少なくありません。前述の「正三角形を書く」という課題の場合、「長さ100進む」「左に120°曲がる」という命令を3回連続させることでも課題は解決できますが、2つの命令を「3回繰り返す」と命令すれば一度の命令で済みます。必要に応じて小さな単位で実行と検証を繰り返していくことによって、課題を解決するための手順をより効率的なものへと改善できます。

物事を抽象化して捉える

プログラミング的思考では、物事を抽象化して捉えます。例えば「正三角形を書く」場合、「線を引く」「角を作る」「繰り返す」というように手順を抽象化できます。手順をこのように捉えると、ほかの多角形を作図する場合でも応用することが可能です。構築した手順や論理をその場限りのものとするのではなく、さまざまな事柄に応用できるようになることは、プログラミング的思考を伸ばすメリットの一つだといえます。

思考を言語化して一般化する

プログラミング的思考の育成は、思考を言語化して一般化する力も必要です。一般化とは、工程を整理することによって、誰にでも実行可能な状態にすることを指します。課題を解決したとしても、考えた手順が言語化により可視化されなければ、ほかの人に説明できません。物事を一般化する力が身につけば、作業を分担したり、複数人で課題解決に取り組んだりする上でも有用です。さまざまな人の思考やアイデアを取り入れやすくなるため、創造性が高まる効果も期待できます。

プログラミング的思考を育む教育の目的

学習指導要領改訂により、小・中・高等学校を通じてプログラミング教育を充実するとされました。小学校で2020年度よりプログラミング教育が必修化されました。しかしプログラミング教育といっても、小学校ではプログラミング言語の習得を目指しているわけではありません。現代は誰にとっても職業生活をはじめ、学校での学習や生涯学習、家庭生活、余暇生活など、あらゆる活動においてコンピュータなどの情報機器やサービス、またそれらによってもたらされる情報を適切に選択・活用していていくことが求められます。

コンピュータをより適切かつ効果的に活用していくには、どのような仕組みで機能しているのかについて思いを巡らせ、プログラミングを通じて人間の意図した処理を行うものであるというコンピュータの特性を知ることが重要です。つまり、コンピュータが「魔法の箱」ではないと知り、より主体的に活用することができるようになることが大切です。これからの社会を生きていく児童生徒にとって、将来どのような職業に就くとしても、コンピュータを理解して上手に活用していくことは重要な要素となります。プログラミング的思考を育む教育の実践は、こうした社会の変化に即した教育を実現していくことにほかなりません。

学校のプログラミング教育で育む資質・能力

学校で実践されているプログラミング教育では、どのような資質・能力の育成を目指しているのでしょうか。学習指導要領では、学校教育を通して育成を目指す資質・能力を「知識及び技能」「思考力・判断力・表現力等」「学びに向かう力・人間性等」を3つの柱として整理しています。これをプログラミング教育に当てはめると、次のように考えられます。

知識及び技能:プログラミングの知識と技能

プログラミング教育で育む「知識及び技能」は、プログラミングの知識と技能そのものです。プログラムを作成する上でのアルゴリズム(問題や解決する手順)の考え方やその表現の仕方、コンピュータを用いた問題の発見・解決のための知識および技能を身につけることは、学校でプログラミング教育を実施する大きな目的の一つとなっています。

ただし、小学校段階で初めからプログラミング言語を取り入れることはありません。児童がコンピュータに自分が意図した処理を行うよう指示する活動を通して体験的に学び、次のことに気づくことだとしています。

  • コンピュータはプログラムで動いていること
  • プログラムは人が作成していること
  • コンピュータには得意なこと,できないことがあること
  • コンピュータが日常生活の様々な場面で使われ,生活を便利にしていること
  • コンピュータに意図した処理を行わせるためには必要な手順があること

なお「教育情報化の手引き-追補版-」では、学習指導要領の改訂に向けた有識者会議の内容を紹介し、小・中・高等学校の各段階において、身につけるべき「知識及び技能」を次のように示しています。

学校段階ごとのプログラミング教育で育む知識及び技能

参考:文部科学省「教育の情報化の手引き-追補版-(令和2年6月)第3章」に基づいて作成

思考力・判断力・表現力等:プログラミング的思考

小学校のプログラミング教育で育む「思考力・判断力・表現力等」は、プログラミング的思考に相当します。プログラミングそのものはあくまでも手段であり、最終的な目的ではありません。児童生徒が試行錯誤を繰り返しながらより効率的な順序や方法に気づいたり、プログラムを動かして判明した問題点を修正しながら適切な解決策へと到達したりして気づきを得る過程そのものが「思考力・判断力・表現力等」を培うために大切です。

また、プログラミング的思考は、短時間の授業で身についたり、急激に伸ばしたりできるものではない点に注意が必要です。さまざまな教科学習でプログラミング的思考の育成につながる体験を取り入れていくなかで、「思考力・判断力・表現力等」を育むことが求められます。

学びに向かう力・人間性等:コンピュータを活用して、より良い社会を築く

小学校のプログラミング教育で育む「学びに向かう力・人間性等」は、前述の「小学校プログラミング教育の手引(第三版)」の中で、有識者会議における「議論の取りまとめ」で示された「発達の段階に即して、コンピュータの働きを、よりよい人生や社会づくりに生かそうとする態度を涵養すること」を挙げ、「児童にとって身近な問題の発見・解決にコンピュータの働きを生かそうする」「コンピュータ等を上手に活用してよりよい社会を築いていこうとしたりする」という2点を示しています。また、他者と協働しながら粘り強くやり抜く態度や、著作権等の自他の権利を尊重すること、情報セキュリティの確保に留意するといった情報モラルを育成することも重要だとしています。

プログラミング的思考を伸ばす授業の実践が必要

プログラミング的思考は、これからの社会を生き抜いていく児童生徒にとって不可欠な資質・能力だといえます。特に小学校で実践されているプログラミング教育では、プログラミングそのものを教えたり、技能を身につけさせたりすることを目的とせず、プログラミングの体験を通じて得られる気づきが重要だとされています。そうした観点で各教科等の学習活動の中でプログラミング的思考の育成につながる指導を取り入れ、これからの時代に必要とされる力を育むことが求められています。

ICTを活用した学習活動を支援する「SKYMENU Cloud」

GIGAスクール構想によって、児童生徒1人1台の端末が配備され、ICTを基盤とした新しい学びのかたちが広がっています。児童生徒が自己調整しながら学びを進める「個別最適な学び」や多様な個性を最大限に生かす「協働的な学び」、これらの学びを一体的に充実させ、児童生徒が自らの手で未来を豊かに創り出していく力の育成を「SKYMENU Cloud」は支援します。