プログラミング的思考って?分かりやすくすると「○○的思考」

ママ疑問

先生に「プログラミング教育の目的って何ですか?」ってきくと、「プログラミング的思考を育むこと」って言われたんだけど、どういことかいまいち分からないわ・・・


パパ

じゃあ今日は 「プログラミング的思考 」についてできるだけ分かりやすく説明するね。

小学校の「プログラミング教育必修化」の一番の目的が「プログラミング的思考を育みこと」です。
子どもへ正しい「プログラミング教育」ができるように、的外れな塾へ通わせないように、 「プログラミング的思考」とは何なのかを理解しておきましょう。

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

文部科学省によると、「プログラミング的思考」は次のように定義されています。

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

小学校プログラミング教育の手引 より

すごくざっくり言うと、
「ものごとを論理的に考える力」
です。
プログラミング的思考 = 論理的思考
ということですね。
ただ、これだけだと「算数でいいじゃん。」となってしまいます。
もちろん、この論理的思考には色んな意味が含まれているので、もう少し詳しく言うと、

  1. 大きな課題小さな課題分解する力
  2. 分解してできた、たくさんの小さな課題を整理する力
  3. 整理した小きな課題を組み上げたり、一つずつ解決して、最終的に大きな課題を解決する力
  4. 大きな課題を解決したあとや、解決方法が分かったあとも、より良い方法はないかを試行錯誤する力

上記は、プログラムを作る上でとても重要なプロセスです。
「分解する ⇒ 抽象化・一般化する ⇒ 組み立てる ⇒ 改善する」
課題解決のプロセスの中でどれかひとつでも欠けると、良いプログラムを作ることが出来ません。
そして、ここであげている「課題」には、パソコンで作るプログラムはもちろん、学校のテストや料理、仕事のタスクなど幅広く含まれているのです。

学校のテストもプログラミング的思考で解決できる?

例えば「学校のテストで平均90点とって10位以内に入る」という目標(課題)があれば、

①小さな課題に分解する
・各教科ごとに目標点数を決める
・各教科ごとになにをやれば、目標の点数を取れるかを考える(教科書を暗記する、練習課題を解くなど)
・それをするにはどのくらい時間がかかるかを考えて、 各教科ごとに必要な勉強時間を出す

②課題を整理する
・電車の中で出来る勉強、まとまった時間がほしい勉強、前日にやるだけで大丈夫な勉強など整理する

③課題を組み上げて解決していく
整理した課題からスケジュールを立て、スケジュール通りに勉強する

④ 試行錯誤する
・毎日スケジュール通りにいったかを確認し、もし必要ならスケジュールを変更する
・テスト終了後も、もっと良い勉強方法が無かったかを振り返る

このように、「プログラミング的思考」は プログラムを作るときだけに必要な特別なもの では決してありません。
私の周りを見ても、勉強・仕事ができる人は無意識で上にあげたような行動を取っています。

意識的に課題解決のプロセスを身に付けることが大切

ただし、全ての人が無意識で上にあげたような課題解決のプロセスを実行できるわけではありません。
むしろほとんどの人ができていないと思われ、もちろん子どもにも意識的に教えていかなければいけません。

そのために、プログラム作りを通して課題解決のプロセスを身に付けてもらい、少しずつ日常生活へ応用するよう気づかせてあげることが必要だと思います。