プログラミングだけでない「プログラミング的思考」のひみつ

2020年のプログラミング教育必修化にて、政府はこれからの世界を生き抜く子供達にプログラミング的思考というものを身につけてもらいたいという考えを示しました。

しかし、このプログラミング的思考というもの、言葉だけを考えると「プログラミングの思考」であり、プログラミングだけに役立つと思われがちかもしれません。今回は、プログラミングだけでなく多くの物事で役立つプログラミング的思考についてお話しします。

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

プログラミング的思考では、5つの能力が身につくとされています。それが、

1.物事を抽象化して捉える能力
2.物事を分解して理解する能力
3.やるべきことを順序立てて考える能力
4.ベストな方法かどうか分析する能力
5.方法をほかに置き換えて一般化する能力

とされています。では、これら一つ一つを例をあげて解説していきます。

1つ目の「物事を抽象化して捉える能力」ですが、似ているものから共通点を見いだす力です。例として今回は「ラーメン」をあげます。

みそラーメン、醤油ラーメン、豚骨ラーメン、塩ラーメン……スープの味付けが変わるだけでもラーメンの種類は多くあり、さらに、チャーシュー大盛り、温玉つき、海苔とほうれん草トッピングなど、トッピングでもさらにラーメンの種類は多くあります。

ですが、それらは全て共通して「ラーメン」と呼ばれます。一つ一つは違うけれども、「茹でられた中華麺をスープと共にいただく」という共通点をとって、「ラーメン」とされます。これが抽象化です。


この上の麺料理は、中華麺とスープを共に頂くものなのでラーメンです。


しかしこの麺料理、見た目はラーメンに似ていますが、中華麺ではないためラーメンではありません。こちらは沖縄のソーキソバです。

2つ目の「物事を分解して理解する能力」ですが、これは例えば「醤油ラーメン」を例にあげます。醤油ラーメンでは、麺、だし、醤油、ネギ、チャーシュー、ナルト、メンマで構成されています。これらを調理、つまり合体させると醤油ラーメンとなります。この出来上がった一つの物事を分解することが分解する能力です。

3つ目の「やるべきことを順序立てて考える能力」は、醤油ラーメンを作る場合の調理手順となります。ネギを刻み、チャーシューを切り、ダシをとって、麺をゆでて……こうした手順を考える力のことです。

4つ目の「ベストな方法かどうか分析する能力」。あなたは醤油ラーメンを作る中で、今回麺のゆで時間を1分減らしてみました。普段のゆで時間の麺は柔らかく、自分の好みではなかったからです。このように分析して、どこを改善すればよりよいものになるかを考える力がこれです。

最後の5つ目、「方法をほかに置き換えて一般化する能力」。あなたは今回作った醤油ラーメンがすこぶるおいしかったので、家族や親戚、友人知人に教えたくなりました。この際、あまたの人に教えるにはわかりやすい言葉で、誰でも作れるような説明をしなくてはいけません。これが「一般化する能力」です。

今回プログラミング的思考について5つの要素に分けた上で、それら一つ一つをラーメンで例えました。こうした一つ一つの能力を、複雑な場面でも応用できるようにしていくのがプログラミング的思考を鍛えていくこととなります。

プログラミング的思考はあらゆることに応用が効く

プログラミング的思考を用いると、やるべきことを順序立てて考え、どれがベストな方法かどうか分析をしていきます。このことから、一つの仕事の流れをより効率的に進められるのだろうという想像がつくかと思います。

しかし、プログラミング的思考はそういった効率化以外の、世間一般では「創造力」とされる分野にも役立ちます。

またここでラーメンを取り上げます。あなたは醤油ラーメン店の店主です。新しいラーメンを作りたいと考えています。ここで闇雲にラーメンに具材を放り込んでも、おいしいものが出来るかは運となります。では、少しでもおいしいものが出来るための確率をあげるためにはどうするか。今までも「おいしい」とされたものを放り込んでみるのがよいですね。しかし、「おいしい」とされるものも余りに多いです。

ここでプログラミング的思考で高められる能力の一つ、「物事を抽象化して捉える能力」「物事を分解して理解する能力」が役立ちます。醤油ラーメンを分解した結果、「麺、だし、醤油、ネギ、チャーシュー、ナルト、メンマ」で構成されていることを確かめました。ここで、より醤油を今とは違ったものに変えるといったやり方を取ることができます。また、醤油に豚骨をくわえてみるといったことも行えます。

さらに一ひねりして、ラーメンという「茹でられた中華麺をスープと共にいただく」といった抽象化された部分に手をつけることも可能です。麺を茹でなかったらどうか、中華麺をスープと一緒に食べるのではなく、別々に出してみたらどうか? などです。

この結果、豚骨醤油ラーメンや、つけ麺などが生まれることとなります。小説家やコピーライターの中には、「思いつかなかったらとりあえず逆にしてみよう」という発想があります。その結果優れたストーリーやキャッチコピーが生まれているのです。無から有を生み出しているように見える「創造性」という能力も、有を分析し、その一部を組み替えることから生まれています。

このように、プログラミング的思考はさまざまな事に役立つ能力です。プログラミング教育ではこのプログラミング的思考を強化する上で非常に有効な手立てであります。「プログラミングに興味はないからプログラミング的思考は要らない」というわけではないのです。

各スクールレッスンで大好評!プログラミング脳を養う「西嶋式プログラミングパズル」

ステムアカデミーキッズ開発者の西嶋孝文氏によって考案されました。このパズルの対象者は小学校低学年~ご年配の方まで、幅広い方々が楽しめます。パズルを通してプログラミング思考を養い、プログラミングの考え方や記号の使い方を学ぶことはもちろん、考える力、論理的思考力、推理力、問題解決力、集中力などあらゆるスキルを身につけることができます。

ぜひ沢山の人に楽しく学んで頂き、これからプログラミングを学んでいくための素地となるパズルになっていけば幸いです。WEB上では毎週問題を掲載しますので、ぜひチャレンジしてみてください。

>プログラミングパズルの解き方
>西嶋式プログラミングパズルとは
>西嶋式プログラミングパズル問題一覧

※プログラミング脳を育てる「西嶋式プログラミングパズル」(c2019 StemAcademyKids Nishijima Takafumi)は、色・サイズ等を加工してご家庭や個人でご使用いただくことができます。但し、再販売・再配布を禁止致します。また著作権はステムアカデミーキッズ開発者に帰属します。商用利用をご希望の方は、ステムアカデミーキッズ事務局へお問い合わせくださいませ。