プログラミング教育って。。。#8(論理的思考)
前回、プログラミングに必要なのは、論理的に物事を考える力、それがプログラミング的思考力や問題解決力であると申し上げました。
今回は、論理的に物事を考える力、いわゆる論理的思考について述べたいと思います。
論理的思考
論理的思考。。。
英語では、ロジカルシンキングと言います。
耳にした事がある方も多いでしょうし、熟知している方も多いと思いますが、いつも通り、私なりに勝手に解説していきます。
一般的には、筋道が通っているとか、納得するとか、因果関係がある。。。とか。
うーん。なかなかピンときませんよね。
もう少しブレイクダウンしてみます。
ロジカルシンキングの元となる論理学。。。
演繹法
2つの情報を関連付けて、そこから結論を必然的に導き出す思考法
例えば。。。
- 小学生は小学校に通う
- Aさんは小学生である
- だから、、、Aさんは小学校に通う
誰もが納得できますよね。
帰納法
いくつかの事象の共通点に注目して、結論を導き出す思考法(演繹法の逆の発想)
例えば。。。
- Aさんは小学生で〇〇小学校に通っている
- Bさんも小学生で△△小学校に通っている
- Cさんも小学生で□□小学校に通っている
- だから、、、小学生は小学校に通っている
なるほど。。。
更に、ロジカルシンキングにはいくつかのツール(手法)があります。
MECE
Mutually Exclusive and Collectively Exhaustiveの略
「ミーシー」って読みます。
物事を要素分解する際に漏れなく重複する事もないように整理する手法
プログラミング教育って。。。#7で述べた日本マクドナルドのV字回復の例でいうと、
売上を増やす(業績を回復させる)ために必要な要素として、顧客、商品、キャンペーンを挙げたんだと思います。
こんな感じ???
ロジックツリー
MECEを更に細かく分解、具体化(ツリー化)したもの
勝手に書きましたが笑、こんな感じ???
日本マクドナルドがロジックツリーを利用したかどうかは不明ですが、多分、間違いなく「目的のために必要な事は何か?」みたいな議論はあったんだと思います。
論理的思考とプログラミング
では、ロジカルシンキングが、なぜプログラミングに関係あるかというと。。。
プログラミングって、決まった仕様を満足するために、漏れなく確実に実装する必要があります。
例えば、検索条件を入力して、それに該当する商品の一覧を表示、一覧から商品を選んで商品の詳細画面を表示するという商品検索画面を作成するとすれば、、、
まずは、検索条件はどうするか? 検索結果の一覧や商品の詳細画面に表示する項目は? などから決めていきます。
というふうに、処理に抜けがないように整理していきます。まさにMECEの考え方ですよね。
そして、検索条件に対する検索方法(部分一致とか範囲検索とか)や入力チェック方法、一覧に表示する件数など、更に具体化していきます。
プログラム作成にあたっては、上図のように、要素を整理し、抜けのないようにする事が重要なんです。
まさに、ロジックツリーの世界ですよね。
プログラムを作成する上で、処理の抜けがあったりする事は許されません。
銀行の入出金や振込、飛行機や列車の予約、ホテルの予約、インターネットでの買い物、、、
今や、なんでもコンピュータシステム化されていますよね。
これらのコンピュータシステムは全てプログラムの命令によって処理されています。
もし、ここで処理の抜けとか、不具合とかあったら、、、
間違いなく、大混乱ですよね。。。
だから、プログラミングは、論理的に考えて、処理の抜けや不具合がないように実装しないといけないんです。
こういった背景もあり、
プログラミング教育を通じて、子供のうちから論理的に物事を考える力を身につけさせていきたい。。。
そして、子供の将来に向けての可能性を広げたい。。。
という国の強い思いがあるんだと思います。