プログラミング思考力、論理思考力とは?現役エンジニアの解説!

子供プログラミング教育のプログラミング的思考、論理思考って何?
  • 子供向けのプログラミング教材やロボット教室で「プログラミング的思考力」、「論理思考力」というのをよく聞くけど…これってなんなの?
  • プログラミング的思考力、論理思考力が身につくとどんなことができるようになるの?

プログラミング関連の子供向け教材について調べていると、どこもかしこも謳っているのが…

  1. プログラミング的思考
  2. 論理思考力

というもの。言葉からしてなんとなく意味はわかるけど…

どんなことができるの?どんなメリットがあるの?

よくわかりませんよね。ここでは現役のエンジニアが論理思考力について解説します。

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

さて、プログラミング的思考とはいったいなんなのでしょうか?

これを解説するためにはプログラミングの構造を簡単に知っておく必要があります。

プログラミングは簡単に説明すると、実はたった3つの要素しかありません。

  1. 処理は連続する
  2. 処理は分岐する
  3. 処理は反復する

処理が連続して進んでいくと分岐したり、反復(ループ)することもある、ということです。ソフトウェア工学では構造化定理と呼ばれています。

プログラミングを日常生活に置き換えて考えてみる

私たちの普段の生活、ここでは洗濯物を取り込んでいる場面にたとえてみます。

あなたはベランダに干してあった洗濯物を取り込み、1枚1枚手にとってたたんでいきます。

このとき、頭の中では下記のような処理の流れになっているはずです。

  1. 洗濯物を手に取る
  2. もし、洋服だったらたたみ方A
  3. もし、ズボンだったらたたみ方B
  4. 手順1~3を、洗濯物が無くなるまで繰り返す

上記がすでにプログラミングをしていることになります。作業を順番にこなすため、手順をプログラムしてますよね。各手順の完了を引き金に次の作業に移る、まさにプログラム、プログラミングそのものです。

もうひとつわかりやすく例えます。運動会の案内と同じです。何時になったら徒競走、何時になったらリレー…。時刻を引き金にして項目・プログラムが実行されています。

普段の生活の中で無意識に、何気なく行っていることですが、頭の中では作業手順…処理が頭の中で組み上がっているはず。ただ単純にプログラム・プログラミングの定義とはなにか?が今はまだわかってないだけの人が多いのです。

はるき

実は、ほとんどの人が本当は頭の中でプログラミングがすでにできているんです。でもそれを言語化できず、ついむずかしく考えてしまっているだけなんです。

論理思考力とは

次に、論理思考力とはいったい何者なのか?

論理思考力というか論理的な思考というのは一言で説明するのであれば、

  1. 物事を説明するとき、論拠を持ってして説明することができる
  2. 問題に対して手持ちの論拠、証拠をもとにして解決に導く

というところにあります。

簡単なたとえですと、

AはBである。BはCである。よって、AはCである。

という感じの説明。三段論法と言います。

なんとなく覚えていないでしょうか?小学校中学校、算数や数学で「図形の証明問題」を解いたことはないでしょうか?

だいたいどこかの角の角度、辺の長さがわかっている、証明するための材料があるんですよね。これらをもとに求めたい角の角度や辺の長さを求めていきます。

リアルなソフトウェア開発の現場でも似たようなことが起こります。作ったソフトウェアに不具合があって、発生している現象からどこに問題があるのか、手持ちの数少ない材料から正解を導いていく、証明していく。

はるき

問題解決力、なんて言うこともありますね。

プログラミング的思考、論理思考力が身につくと何ができるの?

プログラミング的思考、論理思考力が身につくと、具体的に下記のことができるようになれると期待できます。

  1. 将来、エンジニアの道が選択肢としてできる。
  2. 人に物事を説明するとき、結論から述べたり根拠を持って説明できるようになる。
  3. 仕事・作業の効率を上げることができる。

今のうちにプログラミングなどを学習させておけば将来エンジニアという手堅い職業が選択肢の1つとして出来上がるでしょう。

大人になってから、

なんの仕事をしようかなぁ~…

と子供が悩んだとき、「そういえば昔プログラミングやったっけ、エンジニアなんてどうだろう?」と頭の片隅に置いておければ儲けものです。

プログラミングの学習はプログラミングができなかったとしても、仕事の作業効率が高い人材になれることも期待できます。その理由を詳しく説明します。

論理思考ができることの具体例

プログラミングができずとも、論理思考が身についていれば作業効率の高い大人になれることが期待できます。

それはなぜか?先程の洗濯物のたとえの続きをしていきます。

ほとんどの人が洗濯物を1つ1つ手にとってから洋服かズボンかインナーか…ということを判断して作業を進めていくでしょう。

これが一番早い作業方法でしょうか?いいえ、違います。

本当に作業効率が早い人は下記の作業手順のはずです。

  1. 洗濯物を洋服、ズボン、インナー…など、ジャンルで分ける
  2. 洋服だけをたたんでいく
  3. ズボンだけをたたんでいく
  4. インナーだけをたたんでいく

なぜ早いか?処理は分岐させたり作業内容をころころ変えていると判断の時間が挟まって時間がかかるためです。

これはソフトウェア工学におけるクイックソートというアルゴリズムです。

つまり、プログラミング的思考、論理思考力があれば、日常の何気ない作業を言語化し、最適な作業効率を出すためのアルゴリズムを考えることができるということです。

はるき

ソフトウェア工学におけるアルゴリズムは他にも二分探索など、いろんなものがあります。日常生活に転用することもできるので、プログラミングは学んで損のない学文です。

論理思考力があるとアルゴリズムを考えることができる

アルゴリズムとは、上記のような「目的を達成するための手順」のようなものです。

ただ何気なく人から言われたことをやっているだけだと、洗濯物を1枚とってはたたんでいくだけです。

ですが、プログラミング的思考や論理思考力があればその中でどのような手順でやれば最も効率よく作業をこなせるのか、数学的な思考で考え実行することができるようになります。

なんとなく、

プログラミングなんて日常生活で役に立つことなんてなさそう…

と思っていませんでしたか?プログラミングはしっかり習得できれば、パソコンを使わずとも日常生活で役に立つんです。

断言しますが、習い事としても英語と比較すれば低価格で習得も容易です。にも関わらず、日常生活で使える場面も多く、将来的にエンジニアという就職先の候補ができあがります。

私自身は偏差値40台前半の大学卒業ですが、今では東証一部上場企業で正社員として働いています。プログラミングほどコスパの良い学文、習い事を他にないのではないでしょうか。

現在、人間の仕事がロボットにどんどん置き換わっています。人からの指示を聞いてこなすのが良い人材でしょう

人からの指示をもっとも効率よい方法でこなし、さらに自動化させていくのが良い人材ではないでしょうか。

はるき

これから先の時代、パソコンを扱える人材では不足、プログラミングができて当たり前になるかもしれません。パソコン・ロボット使えて当たり前、その先を見据えるならロボットを作る側まで視野に入れておくと良いです。

まとめ

以上のことをまとめると下記です。

  1. プログラミング的思考とは、作業を手順として考える言語化できる考え方
  2. 論理思考力とは、論拠を持ってして物事を考え、説明できる力
  3. プログラミング的思考、論理思考力があると作業効率の高い人材になれることが期待できる

ネットとかテレビで「…はい、論破!」というセリフを聞くことあります。この論破ができる人というのは論理思考ができている人と言えるでしょう。

実際のところ、そんなこと言う人は変な人として扱われていますが、本質としては問題を持っている証拠から証明、解決させているということなんです。