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

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

プログラミング教育の目的

2020年度から、小学校でのプログラミング教育が始まりました。2025年度には、大学入学共通テスト(旧センター試験)の基礎科目に導入されることも決まっています。これにより、実質、小学生から高校生までプログラミング教育を受けることになります。

ではなぜ今、プログラミング教育が必要になったのでしょうか。これについて、文部科学省の小学校プログラミング教育の手引(第三版)で、とてもわかりやすく書かれているので少し長いですがご紹介します。

今日、コンピュータは人々の生活の様々な場面で活用されています。家電や自動車をはじめ身近なものの多くにもコンピュータが内蔵され、人々の生活を便利で豊かなものにしています。誰にとっても、職業生活をはじめ、学校での学習や生涯学習、家庭生活や余暇生活など、あらゆる活動において、コンピュータなどの情報機器やサービスとそれによってもたらされる情報とを適切に選択・活用して問題を解決していくことが不可欠な社会が到来しつつあります。

コンピュータをより適切、効果的に活用していくためには、その仕組みを知ることが重要です。コンピュータは人が命令を与えることによって動作します。端的に言えば、この命令が「プログラム」であり、命令を与えることが「プログラミング」です。プログラミングによって、コンピュータに自分が求める動作をさせることができるとともに、コンピュータの仕組みの一端をうかがい知ることができるので、コンピュータが「魔法の箱」ではなくなり、より主体的に活用することにつながります。
プログラミング教育は子供たちの可能性を広げることにもつながります。

プログラミングの能力を開花させ、創造力を発揮して、起業する若者や特許を取得する子供も現れています。子供が秘めている可能性を発掘し、将来の社会で活躍できるきっかけとなることも期待できるのです。

このように、コンピュータを理解し上手に活用していく力を身に付けることは、あらゆる活動においてコンピュータ等を活用することが求められるこれからの社会を生きていく子供たちにとって、将来どのような職業に就くとしても、極めて重要なこととなっています。諸外国においても、初等教育の段階からプログラミング教育を導入する動きが見られます。

こうしたことから、このたびの学習指導要領改訂において、小・中・高等学校を通じてプログラミング教育を充実することとし、2020年度から小学校においてもプログラミング教育を導入することとなりました。

【文部科学省】小学校プログラミング教育の手引(第三版)

要約しますと、現代では、コンピューターを上手に活用する力が非常に重要です。そのためには、コンピューターは自身の意思で動いているわけではなく、人間がして欲しい動きをプログラムして動いていると言う仕組みを知ることが重要です。そして、その仕組みを早い段階から学ぶことで創造力を育み、発明をしたり、起業したり、特許を取ることも出来ます。この様な力は、これからの予測不能な社会を生きて行く子供たちにとって、非常に重要なのでプログラミング教育が始まったのです。

しかし、文部科学省の小学校段階におけるプログラミング教育の在り方について(議論の取りまとめ)では、「小学校のプログラミング教育の目的は、プログラミング技術を覚えることでは無く、プログラミング的思考を身に着ける事である」としています。以下、抜粋です。

プログラミング教育とは、子供たちに、コンピューターに意図した処理を行うよう指示することができるということを体験させながら、将来どのような職業に就くとしても、時代を超えて普遍的に求められる力としての「プログラミング的思考」などを育むことであり、コーディングを覚えることが目的ではない。

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

と、書かれています。

少し矛盾しているようにも見えますが、小学生から高校生にかけて段階的にプログラミング教育をしていきましょうという事のようです。そのために、小学校ではまず、プログラミングをする上で大事な考え方「プログラミング的思考」を身につけましょうと言っています。

小学校では、プログラミング的思考を身に着けるために、プログラミングツールを使用したりもします。これは、命令をパズルで繋げて行けば、プログラムを書けるようになっています。

【関連記事】■小学校のプログラミングって、どんな授業をしているの?

では、「プログラミング」と「プログラミング的思考」は、どこが違うのでしょうか。

「プログラミング」と「プログラミング的思考」の違い

「プログラミング」とは、プログラムを作る作業のことを言います。プログラムとは、運動会のプログラムの様に、必要な工程や手順を書いた「指示書」のようなものです。

 一方で「プログラミング的思考」は、コンピューターやプログラムの概念に基づいた、課題を解決するための思考のことです。少し難しいですが、小学校プログラミング教育で求められるプログラミング的思考をとても簡単に言うと、

順序立てて考える(骨を組み立てる)

実行(正しいと思ったことをやってみる)

解決 or 再度考察(思った結果が出なかったらどこに問題があるか考え、再び試す)

という段階を繰り返し行う考え方のことです。

以下は、文部科学省の定義するプログラミング的思考についてです。

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

では、これらについて詳しく見ていきましょう。

プログラミングとは

前述したとおり、「プログラミング」とは、「プログラムを作る(書く)作業」のことをいいます。
プログラムは、コンピューターを動かすための指示書のようなものです。コンピューターは複雑な処理を行うことができますが、『なんとなく予想する』というような『想像する力』はないため、処理の内容を自分で考えることができません。そのため、コンピューターを動かすために『ひとつひとつの動き』を『順番に指示する』必要があります。

この『処理を行いたい一連の動きを、コンピューターが読み取れる形(コンピューターがわかる言葉)で正しく命令したもの』が、プログラムです。現代では様々なものにコンピューターが活用されており、それらはすべてプログラムによって動いています。つまり、プログラミングは、現代社会において無くてはならない技術のひとつと言えます。

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

一方、「プログラミング的思考」とは、「コンピューターやプログラムの概念に基づいた、課題を解決するための思考」です。

では、課題を解決するための思考というのは、どういったものなのでしょうか。

大まかに分けると、プログラミング的思考の流れは次のようになります。

  • 分解
  • 抽象化
  • 一般化
  • 組み合わせ
  • 分析・評価

工程を試行錯誤しながら改善していき、課題の解決を目指します。
それぞれ詳しく見ていきましょう。

例として、10個のボールを右から左へ移動させるプログラミングをしたいとします。

【分解】

『分解』は、大きな課題を解決可能な小さな課題に分ける工程です。
『10個のボールを右から左へ移動させる』という動きを、『ボールを持つ』『左へ』『移動する』『ボールを置く』『右へ』というように、それぞれの行動に分けていきます。これが『分解』です。

【抽象化】

『抽象化』は、目的に応じて適切な側面や性質(重要な部分)を抽出し、不要な細かい情報は削除する工程です。
例の場合、『左から右へ移動する』『右から左へ移動する』の『移動する』という動作を抜き出すのが『抽象化』です。

【一般化】

『分解』で解決可能な小さな課題に分けてみると、10個のボールを右から左へ移動させる際に、『右から左へ移動する』『左から右へ移動する』という類似した動作があることに気が付くと思います。このように、問題の類似性や関連性を見つけるのが『一般化』です。

【組み合わせ】

順番に処理を行う『順次』、条件を満たすまで処理を繰り返す『繰り返し(反復)』、条件によって処理の変化する『条件分岐』がこの工程にあたります。
前述のプログラミングをする場合、『ボールを持つ』『持ったまま右から左へ移動する』『ボールを置く』『何も持たずに左から右へ移動する』という、順を追った一連の流れが『順次』です。
また、『10個のボールを右から左へ移動させ終わるまで繰り返す』のが『繰り返し(反復)』です。そして、『もしボールを持っていなければボールを持つ』『もしボールを持っていたらボールを置く』というように、手元にボールがあるかどうかの判断によって行う行動が変わるというのが『条件分岐』になります。

【分析・評価】

最後に、ここまでの工程を経た結果が目的の活動に近づいているかどうかを確認するのが『分析・評価』です。
意図した動きになっているか、もし違う動きだったらどうすれば正しく動くのかを考え、トライ&エラーを繰り返すことで、より効率の良いプログラムを作っていくのです。

プログラムについての説明でも記したとおり、コンピューターは処理を行うことができますが、処理の内容を考えることができません。そのため、効率の良いプログラムは、人間が考えなければならないのです。
このように、プログラミング的思考は、プログラミングをする上で非常に重要な思考です。小学校では、この“考え方の習慣”を身に着けることが重要だという事です。

この、考え方の習慣が身に着けば、普段の生活の中で何かを考えたり、行ったりする時にも役立てることができます。では、どんな風に役立てることが出来るのか例を見てみましょう。

プログラミング的思考の活用

例えば、プログラミング的思考を料理に活用するとしてみましょう。

まず『材料を取り出す』『皮をむく』『1cmくらいの大きさに切る』といった具合に、実際に行う作業を細かく分解し、必要な動きと順序を考えます。『切る』『焼く』『煮込む』『盛り付ける』など、先ほど分解した内容を抽象化することで、フェーズ(段階)を分担できます。そして、各フェーズで『もしすべての野菜を切ったら』『もし中まで火が通ったら』など、条件によって作業を実行していくことで、料理が完成します。

この時、いかにして『より効率の良い方法を見つけるか』がプログラミング的思考を活かすポイントです。材料を切る前に煮込んでしまうなど、大きく順序を間違えてしまうことがなければ、料理を完成させることはできます。しかし、『1品目の材料を切る』『煮込んでいる間に2品目の材料を切る』というように、必要な動きと順序を考え、その動きに対応した作業を組み合わせることで、効率良く料理を完成させることができるようになります。

仕事に活用した場合も、同様です。細かい部分までタスクを書き出し、関連するタスクをまとめ、こなさなければならない順番と条件を組み合わせることで、作業能率を上げることができるのです。

プログラミング的思考は、コンピューターだけではなく、人間にとってもより効率良く課題を解決するために重要な考え方だと言えます。

まとめ

ここまで見てきたことをまとめると、次のようになります。

  • 小学校プログラミング教育は、これからの社会で活躍するためのスキル(新しいものを生み出す創造力、思考力等)を育むために始まった
  • 小学校プログラミング教育では、プログラミング的思考を身に着けることが授業の到達点
  • プログラミングとは、プログラムを作る作業のこと
  • さまざまなものにコンピューターが活用されている現代では、プログラミングについての理解を深める必要がある
  • プログラミング的思考とは、課題を解決するための思考で、より効率の良いプログラムを作るうえで重要な思考
  • プログラミング的思考は、プログラミング以外の場面でも活用することができる

小学校のプログラミング教育は、プログラミングができるようになることよりも、プログラミング的思考を理解することに重点を置いているといえます。
グローバル社会において英語教育が必要であるように、将来プログラマーを目指すかどうかにかかわらず、現代社会においてプログラミング教育も必要となっているのです。


学校の授業だけでは不安、楽しく学べる機会があればいいのに、とお考えの方は、プログラミング教室を検討されてはいかがでしょうか。

『個別指導キッズプログラミング教室 ピタゴラミン』では、動画教材を使用しているため、お子様それぞれのペースに合わせて学習を進めることができます。

また、講師1名につき生徒は最大3名という少人数制のため、生徒ひとりひとりの疑問にすぐ対応できます。 豊富なコースで、しっかりと基礎をおさえながらも楽しいプログラムを作成するので、遊びと同じ感覚で楽しく自然に学ぶことができる教室です。

無料体験会も行っておりますので、詳しくは各教室の公式ページをご確認ください。