<ブログ>【ひぎり―と】

小中学校の必修科目「プログラミング教育」が教えたい事

横浜市もGIGAスクール構想に則りiPadが支給され、本格的なICT教育が始まっています。

同時にプログラミング学習も行われているようなので、今更ではありますが、なぜプログラミング学習が必なのかまとめたいと思います。
もちろん、IT人材の不足による日本のものづくり競争力の低下も理由の1つとは思いますが、小中学校で行われるプログラミング教育はプログラマー養成を目的としているわけではなく、あくまでもプログラミング的思考の習得を目的としています。
プログラミング的思考とは論理的思考や創造性、問題解決力、実行力に影響する普遍的な資質で

  1. 物事を分解して考える
  2. 物事を組み合わせる
  3. 物事をシミュレーションする
  4. 物事を抽象化する
  5. 物事を一般化する

によって構成されます。

物事を分解して考える

物事を要素ごとに分解して考える力です。漠然とした目的に対してどのような作業が必要かを適切な単位に分けて整理します。犬小屋を作るにせよ、カレーを作るにせよ、物事を分解する力がなければ、どうやって完成までもっていくのか具体化できません。

物事を組み合わせる

分解した物事を組み合わせることで、目的達成までの選択肢や依存関係、順番が見えてきます。組み合わせの複雑さや、全体像が見えると、目的までの距離がわかります。
テスト勉強のスケジュールを立てる上でも大事なことです

物事をシミュレーションする

やるべきことが洗い出せても、ゴールに対して最も効率的なルートを見つけられなければ、実践的とは言えません。また、複雑なパターンをシミュレーションするための前提(分解、組合わせ)が足りなかったり、想像力が欠如したりすると、回り道をしてしまいます。高度なシミュレーション力はプログラミング的思考では必須なスキルといえます。

物事を抽象化する

一見、関係なさそうな2つの事柄から共通のふるまいを見出し、多角的に価値を見出す力です。この力を使いこなせると面白いアイデアや意見が湯水のように出てきます。カレー作りの過程から、煮込み料理全般の肝を掴む力。例えツッコミが巧い人はこの能力が高いイメージです。

物事を一般化する

複雑な過程を経て出た結論を整理し、誰でも理解できるように一般化する力です。短く簡単な言葉で本質をつくことができる人、資料をまとめたり、みんなの前で発表するのが上手い人はこの能力が高いです。

特に4と5は経験値やセンスも問われますが、日常的にプログラミングを組むことである程度、鍛錬することができます。
1から5の思考を直感レベルで瞬時に処理できるようになると、その人のバックボーンを全く知らない状態でも少しの会話で「この人は頭が良い」とわかります。

これらの思考を小学生から育んでいけば、日々発生する小さな選択、節目節目で直面する大きな決断で瞬時に最適解を導き出せるかもしれません。

プログラミング的思考が作る未来

大人になると何も無いところから物事を組み立てる局面が多く存在します。
カレー作りは先人が一般化してくれたレシピを参考にできますが、前例のない物事を0から前に進めるときはそう簡単には行きません。そこで役に立つのがプログラマーが、きちんとシステムを組む時の素地となるプログラミング的思考です。

次世代の子どもたちは知識を学ぶだけでなく、それを使いこなして0から物事を推進するクリエイティブな発想が求められています。

また大人の方々もプログラミングに触れてみることで気づきがあるかもしれません。
今だとマインクラフトというゲームでプログラミングを使って遊ぶことができますので興味のある方は是非やってみてください。

マインクラフトでプログラミング!親子の入門動画
子供に大人気の箱庭ゲーム「マインクラフト」とMicrosoft社が提供する「追加プログラム「Code connection for Minecraft」を使って、プログラミングの基礎を学ぶ方法を解説するレッスンムービーです。