この記事の目次
プログラミング的思考ってなに?必要な理由や子どもが身に付ける方法を解説
プログラミング的思考ってなに?必要な理由や子どもが身に付ける方法を解説
公開日:2023/02/06
更新日:2023/02/06
「プログラミング的思考」という言葉を耳にしたことがあるでしょうか。文部科学省が推進するプログラミング教育。それに伴い、子どもたちが将来どのような職業を選択するのかを問わず必要とされる能力がプログラミング的思考です。また、世間一般にもプログラミング的思考は重要であると注目されつつあります。そこで、本記事ではプログラミング的思考の概要や身につくスキル、学習方法などを含めてその必要性について解説します。
1.プログラミング的思考とはどういったものなのか
プログラミング的思考はなにかをする前に完成するまでの動作・順序などを正確に理解したうえで、論理的かつ効率的な方法を考えられる能力です。プログラミング的思考は最適な方法で問題解決をするために、さまざまな方法を繰り返し試すことで身につけられます。プログラミング的思考についてプログラミングのコーディングと混合している人もいますが、正確には異なります。コーディングとは、プログラミング言語を使ってソースコードを作成することです。また、ソースコードはプログラムの設計図のようなものを指します。プログラミングは、あくまでもプログラミング的思考に必要な論理的な考え方を育てるためのひとつの方法です。
論理的思考とプログラミング的思考を同じものだと勘違いされる場合も少なくありません。論理的思考はロジカルシンキングとも呼ばれており、こちらも筋道を立てて考える能力です。そのため、プログラミング的思考に似ている部分もあります。正確には、論理的思考のなかにプログラミング的思考が含まれており、プログラミング的思考は論理的に考えることに加え、順序やプロセスの効率性にも目を向けているものです。
2.プログラミング的思考が現代で必要な理由
ICT(通信技術)の発達がめざましく、将来的にもこの流れはさらに加速していくだろうと考えられているのが現状です。そういったなかで新しい技術を使いこなせるようになるためには、さまざまなことに柔軟に対応できるプログラミング的思考が求められています。ITエンジニアを目指していない人であっても、今後の社会で生きていくための必須スキルとして、プログラミング的思考は身につけておかなくてはなりません。大人だけではなく、これは子どもにも必要なものです。プログラミング教育は必修化されており、スムーズに理解できるようになるためにも小学生の頃からプログラミング的思考を伸ばしておくのが望ましいといえます。
日本では社会問題としてIT人材の不足が挙げられます。IT社会になりつつある世の中に対して、2023年現在は約34万人、2030年には約80万人の人材が不足すると予想されている状態です。プログラミング教育が必修化された背景には、こういったことも理由のひとつとなっています。プログラミングを通してプログラミング的思考を育て、新しい仕事や自動化システムを生み出せる人材が一人でも多く誕生することが期待されています。
3.プログラミング的思考で身に付く5つの能力とは?
プログラミング的思考は学習することで「分解して考える能力」「組みわせて考える能力」「シミュレーション能力」「抽象化する能力」「物事を一般化する能力」の5つを身につけられるといわれています。こちらでは、それぞれについて詳しく見てみましょう。
3-1.1.分解して考える能力
「分解して考える能力」とは、大きな問題を解決するために、小さく分解して考えることを指します。問題が大きく複雑な場合、そのままではどこから取りかかればよいのかわからないケースも多いです。そのため、まずは元の大きな問題を解決する流れを考え、小さな問題から解決をしていくほうが論理的といえます。このように分解して考える能力が身につけば、目標を達成するまでに必要な手順に分けて考えることが可能です。たとえば、正多角形の作図では、辺の長さの等しさ、角の大きさの等しさ、円に内接するか否かなど必要な手順に分解できます。そのうえで、どの順番で組み立てていけばよいのかを考えることで効率的に作図することが可能です。
もっとわかりやすい例でいえば、料理があります。ケーキを作るとしましょう。ケーキの基本として、材料をすべて揃える必要があります。材料は小麦粉、バター、砂糖、生クリーム、フルーツなどです。さらに、作るための型や泡だて器、オーブンといった調理道具も用意しなければなりません。ケーキという1つのものから材料などを具体的に書き出せる能力が分解して考える能力です。
3-2.2.組みわせて考える能力
「組み合わせて考える能力」は目的達成のために2つ以上のものをグループ化してさまざまな手段を試し、より良い方法を見つけることです。組み合わせる方法は「順次」「分岐」「反復」の3つがあり、特にプログラミングにおいて組み合わせて考える能力が重要になります。一つひとつを正しい順で行うこと、分岐は想定外のことが起こった場合に流れの別パターンを追加しておくこと、反復は行動を効率よく繰り返すことです。
なにかの作業を完成させるために質にこだわって段階を5つに分けるか、とにかく完成することを優先して3つに分けて行うかといった選択をする際に必要になる能力になります。5つに分けるか、3つに分けるかは質と時間の選択になりますが、出来上がりには大きな差が出る可能性が高いです。質の良さを選択する場合は5つに工程を分けたほうがよいという結論が出ます。しかし、締切日がある場合は5つの工程に分けたうえで、さらに効率的な方法を見つけなければなりません。その際、さらにグループ化するなどして考える必要があります。
3-3.3.シミュレーション能力
「シミュレーション能力」はなにかをする際に自分なりの考えの組立を行った後、頭の中でその組立通りにあらかじめシミュレーションをしてから行動に移すことです。たとえば、料理を作る際に完璧なレシピを用意していても、必ずしもその通りにできるとは限りません。適当に作っていては失敗することもあります。たとえば、ケーキを作る際には材料の量を正確に計らなければ、ふっくらとしてスポンジケーキに仕上がりません。
料理をする前には所要時間は十分か、道具はすべて揃っているか、出来上がるタイミングや家族が好む料理かといったシミュレーションをしてから調理します。レシピ通りに料理を作るためにはシミュレーション能力は必須です。材料や道具を用意するだけではなく、必要に応じて作る前に材料と道具を行程別に分けてまとめておけば、さらに効率的に作ることができます。
3-4.4.抽象化する能力
「抽象化する能力」とは余計な部分を捨て、大事な部分のみを抜き出すことです。たとえば、プログラミングを勉強する際はプログラミングの機能面に注目するのがポイントになります。プログラムの内容については、最初は横に置いておきましょう。抽象化する能力が高いほど、シンプルなコードが書けるようになります。コードはプログラムの細かな処理を詳しく並べるより、抽象してわかりやすい機能に分けたほうが見やすいです。たとえば、食べ物でうどん、ラーメン、そばはそれぞれ違う食べ物ですが、「麺」というグループとして一つにまとめられます。
抽象化する能力を鍛えると理解力、発想力、説明力などを高めることが期待できます。具体的には、新しい法則を見つけたり、過去の経験を応用したりできるようになるため、理解力が高まると同時に問題の解決力も高いです。物事を本質・特徴別にグループ化できるので、これまでになかったグループを見つけられるなど斬新な発想力で活躍できるようになります。
3-5.5.物事を一般化する能力
「物事を一般化する能力」は物事の共通点・類似性を見つけ出し、ほかの場所やほかの人でも利用できるようにすることです。一般化すると、物事の予想ができたり、さまざまな問題を解いたりできます。たとえば、難しい数字の解き方を誰でもわかるように解説した参考書は、一般化の典型的な例です。さらに具体的にいえば、外国語の本を自分なりに翻訳してまとめ、ほかの人がその本の内容を理解できるようにする行為は一般化といえます。
一般化するためにはわかりやすい言葉を見つけ、文章の組立などを考えなければなりません。わかりやすい言葉を見つけるためには、自分自身がそれについて正確に理解しておく必要があります。文章の順番、言葉の選び方次第では正しい意味が伝わらない可能性があります。頭で理解をしていても、それを実際に言葉として口に出そうとするとうまく伝わらない経験がある人もいるのではないでしょうか。物事を一般化する能力はそういった場合でも、相手にわかりやすく分解して説明したいときに役立つ能力です。
4.子どもがプログラミング的思考を身に付けるための方法
プログラミング的思考を子どもが身につけるには一朝一夕というわけにはいきません。日常生活から少しずつ、できるだけ楽しみながら習得させるのがポイントです。こちらでは子どもがプログラミング的思考を身につけるための方法について解説します。
4-1.お手伝いを通して学ぶ
子どもにプログラミング的思考を自然に身につけさせたい場合は、家事のお手伝いをしてもらうのがおすすめです。たとえば、料理を作るためにはメニューの決定、食材の選択、調理手順の整理、実際に作るといった作業に分けられます。料理をする際の流れとしては当たり前の流れですが、これも一種のプログラミング的思考といえるでしょう。おかずを複数作る場合、1品ずつ作っていると時間がかかってしまいます。
ハンバーグ、ごはん、味噌汁、野菜炒めなどをメニューとして出す場合を例に挙げてみましょう。この場合、出来上がりまで時間がかかるごはんを優先します。まずはお米を先に洗って炊飯にセットし、次に野菜炒めや味噌汁、ハンバーグで使う材料をカットする、ハンバーグを焼くのは最後にするといった流れです。調理の流れは最短で、そして効率的に考える行為がプログラミング的思考につながります。
年齢にもよりますが、家事を手伝ってもらうときにはできるだけ手順を説明しないほうがよいでしょう。これは、子どもに自分自身で考えてもらうためです。たとえば、洗濯をしてほしい場合は「洗濯をお願い」とのみ伝えて様子を見ます。子ども自身がどのような手順でやればよいのかを考えることがプログラミング的思考では重要です。
4-2.ゲームや玩具を通して学ぶ
小学校高学年頃には頭を使うゲームを通してプログラミング的思考を身につける方法もよいでしょう。机に向かうのが好きではない子どもでも、ゲームならば楽しみながら身につけられるかもしれません。ほとんどのゲームはスマホ・タブレットで開始できるのでお手軽です。カードゲームやボードゲームなどは、特にプログラミング的思考を育てやすい方法といえます。これらのゲームはさまざまな選択肢から最適な答えを見つけ出さなくてはならず、そのためには試行錯誤を繰り返す必要があります。また、ほかのプレーヤーとの駆け引きもプログラミング的思考の成長を期待することが可能です。
パズルやブロックなどのオモチャで遊ぶのも効率的なプログラミング的思考のトレーニングになるといわれているので試してみましょう。たとえば、多くの種類のブロックを組み合わせて建物や仕掛けなどを作り上げるマインクラフトは、プログラミング的思考を育てるために有効なゲームです。実際、小学校でもプログラミング教育の授業で活用されています。しかも、子どもは達成感や自信をつけることも可能です。
4-3.プログラミング教室に通う
プログラミングをするために必須といえる論理的な思考能力。プログラミングを学習すればプログラミング的思考の成長につながります。ただ、子どもがプログラミングを独学で学習するのは難しい面もあるので、プログラミング教室に通うのもおすすめです。プログラミング教室であれば、子どもの年齢やレベルに合わせたカリキュラムを用意されています。
プログラミング教育 HALLOでは、子どもがゲーム感覚で夢中になって学べるPlaygramという教材で学べます。Playgramには子どもが飽きないような仕掛けがさまざま盛り込まれています。ゲームのように進めていくなかで必要な知識を学んでいき、気がついたときには実用できるレベルのコーディングもしっかり身についているのが特徴です。また、個別レッスンなので複数人で学ぶレッスンよりもきめ細かい対応ができるのもメリットです。コーチがヒントを出しながらレッスンを進めるため、自分で考えながら行動する力が身につきます。
自宅学習を毎日15分、週に1回のレッスン、さらに月に1回学んだ内容を自分で発表する機会もあるので子ども自身が自分の成長の実感、達成感などを得ることも可能です。学習管理システムで学習ペースを把握し、子どもの学習の理解度などを考慮しながら効率的に指導できます。
効率的にプログラミング的思考を伸ばすならプログラミング教室へ
プログラミング的思考は考え方の基盤になるもので、子どもの将来のために習得させておきたいスキルです。日常生活のなかでお手伝いやゲームなどを活用して伸ばすこともできます。ただ、より効果的な学習を望む場合は、プログラミング教室に通うのがおすすめです。「プログラミング教育 HALLO」では、自分で学んで理解する力を伸ばすための環境が整っています。無料で体験することも可能なので、まずは気軽にお問い合わせください。
執筆者:プログラミング教育HALLOコラム編集部
更新日:2023/02/13
プログラミングの始め方|小学生・中学生がプログラミングを身につけるには?
2020年度から、小学校でプログラミング教育が必修化されました。プログラミングが身近になったことで、「本格的に子どもに学ばせたい」と考えている保護者や、「もっと勉強してみたい」と思っている小学生・中学生も多いのではないでしょうか。
更新日:2023/02/02
Pythonとは?主な特徴や子どもに習得させるメリットを知っておこう
Pythonは日本だけでなく海外でも大きな注目を集めているプログラミング言語のひとつです。子どもにプログラミングを学ばせたい親御さんの中には「Pythonの何がそれほどよいのか?」「子どもに習わせるべきか?」といった疑問を持っている方も多いのではないでしょうか。