プログラミング教育が義務化され、プログラミングで学べることに興味を持っている親御さんもたくさんいるでしょう。プログラミングではプログラミング的思考を学べます。子供が自立するための基盤となる考え方です。今回は、プログラミング的思考の重要性や考え方の軸となる要素などを解説します。日常生活でプログラミング的思考を鍛える方法も紹介するので、ぜひ親子で実践してみてください。
目次
プログラミング的思考って何だっけ?
文部科学省によるとプログラミング的思考の定義は下記の通りです。
自分が意図する一連の活動を実現するために、どのような動きの組合せが必要であり、一つ一つの動きに対応した記号を、どのように組み合わせたらいいのか、記号の組合せをどのように改善していけば、より意図した活動に近づくのか、といったことを論理的に考えていく力
引用:小学校段階におけるプログラミング教育の在り方について(文部科学省)
要するにプログラミング的思考とは、自分の目的を実現するために必要な手段を整理して組み合わせ、効率的な解決方法を導き出していく考え方です。
プログラミングでは、数字や記号の組み合わせによって、コンピューターに文章を表示させたり、複雑な計算を行わせたりします。その過程で、プログラミング的思考が養われていきます。
プログラムを作成する際に、自分が意図していない動作が組み込まれてしまうケースも珍しくありません。
朝に目覚ましのアラームを通知するプログラムを作成したとしましょう。夕方の時間に「おはよう」と表示されてしまえば、原因を特定して修正しなければなりません。
このようにプログラミングでバグが発生したときは、自分が望んでいる結果を得るために、その都度プログラムを書き直して、実行して結果を確かめます。
したがって、プログラミング的思考は試行錯誤によって望ましい結果を導き出す考え方だと、結論付けられます。
プログラミング的思考は未来を生きていくうえで必要な能力
プログラミングといえば、ひたすらプログラムコードを打ち込んでいく作業であり、単なるパソコン操作だと思うかもしれません。
しかし、プログラミングで培えるプログラミング的思考は、未来を生きていくうえで必要な能力であり、コードを入力するスキルよりも本質的に重要です。
学校のテストでは理解が不十分でも、覚えたことを回答用紙に落とし込めば、点数を獲得して先生からの評価を高められます。
その点、現実世界では正解がわからない問題が山積になっており、同じ方法が通用しません。人から教えてもらったことを真似しても、うまくいかないことのほうが多いでしょう。
プログラミング的思考を学んでおけば、うまくいかなかったときに試行錯誤して、望ましい未来に向かってアクションを起こせます。
具体的には、うまくいかない原因を特定し、その原因に対してアプローチをかけ、生活の変化を観察していけます。
たとえば、学校生活で子供が友達をうまく作れず、悩むときがあるかもしれません。言動や身なり、趣味などを変えることで、状況が改善することもあります。
このように考えると、プログラミング的思考が自立を後押しする武器になることがわかるでしょう。
プログラミング的思考の軸となる4つの要素
プログラミング的思考と聞いても、まだ漠然としていてよく理解できない方もいるでしょう。プログラミング的思考には軸となる4つの要素があります。分解、抽象化、一般化、組み合わせです。それぞれの要素を理解しておけば、プログラミング的思考がさらに身近になることでしょう。
要素1.分解
分解とは、大きなものを小さなものに分けることです。
具体例としては、以下が挙げられます。
- 料理を作る時、調理器具の準備、食材の下ごしらえ、レシピに沿って調理、盛り付け、後片付け、などの活動内容を書きだすこと。
- 英語の作文問題で点を取るために、文法の知識、単語・連語の正しい用法、問題文の意図に沿っているか、最低限の文字数はあるか、などが必要。
要素2.抽象化
抽象化とは、目的に応じて適切な側面・性質だけを取り出し、他の部分を捨てることです。
具体例としては、以下が挙げられます。
- 料理をするうえで目的に応じて、必要な内容だけを選ぶ。(味付け済みの食材を買ってきたから、食材の下ごしらえは飛ばす)
- 英語の長文を読むうえで、「ここは具体例だから前と同じ内容だ」「逆説が来ているから、筆者の意見だ」、などの時間内に読み切る工夫する。
要素3.一般化
一般化は、既存の知識や経験をもとに未知の事柄を定義する考え方です。一般化することで、組み合わせのパターンをを選ぶこともできます。
具体例としては、以下が挙げられます。
- 順序がある→順次
- 規則性がある→繰り返し
- 属性情報がある→条件分岐
図の引用:図で解説「プログラミング的思考」とは
要素4.組み合わせ
組み合わせは、目的に向けて試行錯誤しながら合理的な手順を生み出す考え方です。
具体例としては、以下が挙げられます。
- 効率的に夕飯を作るため、いくつかの品物を並行して調理する。
- 英単語の勉強をする時に、単語ごとに何回間違えたかをチェックし、ノーミスになるまで繰り返す。
【ケース別】日常生活に潜んでいるプログラミング的思考
プログラミング的思考について解説しましたが、プログラミングでしかプログラミング的思考を学べないわけではありません。日常生活でもプログラミング的思考を学べる機会はたくさん潜んでいます。
ここからは日常生活でプログラミング的思考を学べるケースについて考えてみます。親子でプログラミング的思考を学ぶ方法として参考にしてみてください。
ケース1.お店
毎日利用しているお店の仕組みを考えてみるのも、プログラミング的思考を鍛える身近な方法です。
私たちは、レストランやガソリンスタンド、本屋などさまざまなお店を利用しています。お金を払えば、料理が運ばれてきたり、ガソリンを給油できたり、書籍を購入したりできます。
しかし、当たり前のように行われているお店のサービスは、複雑な仕組みで成り立っている場合がほとんどです。
例えば、コンビニの仕組みを考えてみましょう。
分解:コンビニを構成している要素を細分化します。職員(店員、店長、SV)、商品、客、お金、本店・支店、店名、などに分解します。
抽象化:特定のコンビニの仕組みではなく、一般的なコンビニの仕組みに興味があるので、店名は考えない。
一般化:お金のやり取りは客の商品を購入によって生まれるサイクルなので「繰り返し」に、商品の受注は店内の在庫がどれくらいに達したら、取り寄せるかといった「条件分岐」に該当する。
このようなシミュレーションを繰り返していけば、未知の出来事に対しても想像力を働かせ、正解を導き出せる力が身についていくはずです。
ケース2.料理
料理もプログラミング的思考が活かせる作業の一つです。
料理をするにも、作りたい品物の決定、調味料の準備、食材の下ごしらえ、実際の調理といった作業工程の分解が必要になります。そして、調理段階に入ったら、汁物とおかずは同時並行で作るといった、作業の組み合わせも要します。
このように、自分で料理の完成というゴールを見据えたうえで、複数の作業を並行しつつ、効率的に進めていかなければなりません。まさにプログラミング的思考そのものです。
調理を進める順番によっても、効率の良さが変わってくるので、試行錯誤して自分のやり方を発見できます。
ケース3.買い物
買い物の中にもプログラミング的思考は潜んでいます。
ここでは、スーパーでの買い物の所要時間を短くする問題を考えましょう。
まず、今回買ってくるものをリストアップ、つまり分解します。それと同時にスーパー店内の見取り図を描きだしてみます。どのエリアに、どの商品があるかが大まかにわかったところで最短のルートを考えます。商品の場所が離れている場合、どちらに先に行くかをレジへの所要時間を基準に条件づけても良いかもしれません。
当然、初めから効率的なルートを導き出すのは困難です。何度も試行錯誤を重ねて歩数が少なくなるようにチャレンジしてみましょう。万歩計を利用すれば本格的に取り組めるので、ぜひ検討してみてください。
まとめ
以上、プログラミング的思考の概要をはじめ、プログラミング的思考の軸となる要素について解説しました。
プログラミング的思考は、プログラミングによって培われる能力ですが、必ずしもプログラミングだけで学べるわけではありません。
今回紹介した身近な事例のように、プログラミング的思考を学べる機会は、日常生活のいたるところに散りばめられています。しかし、意識していないと見落としてしまいがちなので注意してください。
その点、プログラミング的思考の軸となる要素をおさえておけば、親子で触れあう中でプログラミング的思考を学べる機会に気づきやすくなります。
日頃から子供にプログラミング的思考を習慣化させれば、自立をするのに必要な能力が自然と身についていくことでしょう。
通塾不要のオンライン塾
プロの授業がご自宅で↓
オンライン塾一覧
オンライン塾一覧
オンライン塾一覧