プログラミングで身につく「論理的思考力」っていったい何なの?
ていうか、論理的思考力があると何が嬉しいの?そもそもプログラミングで本当に論理的思考力が付くの?
本記事ではプログラミングや論理的思考力に関するこのような疑問や悩みに関する以下の4点についてまとめました。
- 論理的思考とは何なのか?どのような思考法か具体的に紹介
- 論理的思考力がどのように役立つのか
- プログラミングで論理的思考力が身につく理由
- プログラミングは論理的思考力を身に着ける手段として適しているのか?
自分自身も、プログラミングを数年やっておりますが、確かにプログラミング中で「論理的思考力」が鍛えられたなぁとは実感しております。
最後まで読んでいただければ、プログラミングで身につく論理的思考力とは何か、そして論理的思考が何に役立つのかがわかるはずです!
プログラミングで身につくと言われる「論理的思考力」とは何か?
論理的思考力とは
論理的思考力とは、ものごとを系統的に整理し、矛盾や飛躍のない筋道を立てて考えられる力のことです。もうちょっと詳しく見ていきますと、そもそも「論理的思考力」という言葉は
「論理的思考力」=「論理的」+「思考力」
という風に分解して考えることが出来ます。後ろの「思考力」は単純に、考える力という意味ですのでそこまで難しくないと思います。
なので、「論理的」とは何か具体的に分れば「論理的思考力」という言葉が理解できるでしょう。
「論理的」とは理屈に合っているさま、論理にかなっているさま、きちんと筋道を立てて考えるさま
コトバンクより抜粋
つまり、「論理的思考力」とは簡単に言ってしまうと、「筋道が通った考え方ができる力」のことなのです。
「筋道が通った考え方」と言われてもピンときませんよね(笑)。そこで「論理的思考」の主な例を3つ紹介していきます。
論理的思考の例1:因果関係を考える
因果関係とは2つ以上のものの間に原因と結果の関係があることです。
つまり、「結果」を得た時に、「なんで?」と問いかけてその原因や理由を考えるという思考方法です。
結果 | 原因(理由) |
---|---|
コンビニで傘を買った | 急に雨が降ってきたから |
昨日は夜中ずっと起きていた | エナジードリンクを飲みすぎたから |
いつもより勉強を頑張った | 次のテストで悪い点を取ると留年するから |
ものごとの理由を考える、というのはおそらく皆さん日常で自然とやっているのではないでしょうか?
論理的思考の例2:抽象化と具体化
抽象化とは、「複数のものごとの共通点をとりだし、一つ(の概念など)にまとめること」です。
具体化はこの逆で、「抽象的なことがらを個々の具体に落とし込んでいくこと」です。以下に簡単な例をのせます。
抽象 | 具体 |
---|---|
果物 | りんご、ぶどう、なし |
昆虫 | カブトムシ、蟻、ゴキブリ |
プログラミング言語 | Python,C++,Ruby,Java |
これに関連して、少し難しい言葉で「帰納法」や「演繹法」といった論理的思考の手段があります。
帰納法は、複数の個別の事柄から共通点を見つけ、それらを統合して結論を導く方法です。
例えば、「急にテストの点が良くなった生徒が複数いるが、全員最近部活を辞めたらしい」という事実を統合して得られる結論は「部活を辞めると(勉強時間が確保できるから)成績が上がる傾向にある」ということです。
逆に、演繹法は、一般の事実や法則を具体化したものに当てはめて考えることです。例えば、「昆虫は足が6本あり、蜂も昆虫なので、足が6本あるはずだ」のような考え方です。
論理的思考の例3:要素分解をして考える
「要素分解」はある課題やトピックなどを小さな要素に分解して考えていくことです。
いくら大きく複雑そうに見える課題でも、小さなシンプルな要素が絡まり合ってできているだけなので、個々の小さな要素について解決策を考えていくことで、全体の大きな課題の解決策につながります。
例えば、あるAさんが「異性にモテない」と悩んでいるとして、要素を分解して考えてみると下の図のようになります。
モテるためには何が必要か?「外見がいいこと」「若いこと」「まわりに異性が多い環境か?」の3つに要素を分けたとしましょう。
ですが、Aさんは20代前半でまだ若く、まわりに異性も多い環境です。なら、「外見」に問題があるのでしょう。外見をさらに要素分解すると「顔の良さ」「スタイル」「服装」「髪型」になります。
Aさんは顔は普通なのですが、髪型や服装にはほとんど気を使っていません。だったらAさんがモテない大きな原因は「服装」と「髪型」にあるのではないでしょうか?
このように、要素分解すると一見難しそうな問題でも結構シンプルな問題に帰着でき、解決策も思い浮かびやすくなったりします。
論理的思考って聞くと難しそうだけど、3つの具体例を見る限りそこまで馴染みがないものじゃないよね。
というか自然にこういう考え方してるときってあるよね!
論理的思考力はどういう風に役に立つの?
論理的思考力は主に仕事・ビジネスで役に立ちます。
論理的思考のメリット:課題解決力が向上する
論理的思考力があると、何かトラブルや課題が発生したときに、その解決策を考えるのに非常に役立ちます。
トラブルや課題の要素を分解し、何が原因になっているのかを見抜き、適切な解決策を提案・実行することができるからです。
「仕事がデキる」人はたいてい論理的思考力がある人ばかりです。
論理的思考のメリット:説明力・提案力が向上する
論理的にものごとを考えられるということは、「人に物事を筋道立てて説明できる」ということです。
当然ですが、人は話を聞く時、その話に筋道が通っていないと話の内容やその主張を理解できません。
つまり、論理的にものごとを説明できると、説得力や分かりやすさが増すのです。
論理的思考のメリット:人の話や物事をの骨組みがわかる
論理的思考力があると、人が話している内容やものごとを構造的にとらえることができます。簡単に言うと、人の話などの理解力が上がるということです。
人の話を構造的に捉えるとは、話の全体像を俯瞰して見ることができ、今はどの話題をどんな目的で、どこを目指して話しているかを判断・理解できる力です。
また、論理的思考力があると人の話の抜け落ちている部分や穴を逆に指摘できたりすることができ、議論やディスカッションがより有意義なものとなるでしょう。
論理的思考のメリット:生産性up!効率が良くなる
論理的思考力があると、ゴールと現状を把握し、課題を解決するための道筋がわかります。
なので、無駄なプロセス・不必要な手順などを省くことができ、結果的に生産性の向上につながります。
プログラミングで論理的思考力が身につく理由
プログラミングで「論理的思考力」は身につくとよく言われますが、それはなぜでしょうか?
プログラミングのどんな場面で論理的思考力が必要とされるのか詳しくみていきましょう。
プログラムのエラーやバグの「因果関係」を探る
プログラミングをしていると、エラーやバグ(不具合)に悩まされることが日常茶飯事です。
エラーやバグを解消するためには、なんでエラーや不具合が起きているのか、その原因を突き止める必要があります。
少なくともここで論理的思考で重要な「因果関係」をつきとめ考える力が養成されます。
複数の処理に共通する性質や法則を見出しまとめる「抽象化/具体化」
プログラミングでは、似ている個々の処理を抽象化(一般化)して効率化したり、コードを分かりやすくしたりする場面が多いです。
例えば、「適当なゲームで、プレイヤーがゲームをクリアしたらスコアを10点増える」というプログラムを書くとします。
初めは、かなり非効率ですが下のようにプレイヤーごとにその処理を書いていたとします。
太郎さんがゲームをクリアしたならば、太郎さんのスコアを10増やす 次郎さんがゲームをクリアしたならば、次郎さんのスコアを10増やす 三郎さんがゲームをクリアしたならば、三郎さんのスコアを10増やす
ですが、これってプレイヤーが異なるごとに処理をいちいち書いていたらコードが膨大になりますし、新しいプレイヤーが増えるたびにコードを追記する必要があり、都合が悪いです。
xさんがゲームをクリアしたらxさんのスコアを10増やす (xさんは太郎さんでも、次郎さんでも、三郎さんでも、何なら他の人でもOK)
このように、今まで「太郎さん」や「次郎さん」のように個々に具体的に書いていたコードを、「xさん」のように抽象化して効率化しました。
こういったように、プログラミングでは「抽象化や具体化」の能力が身に着けられます。
目的のプログラムを作るために何が必要か「要素分解」
プログラミングをしていて、割と難しい機能を実装する必要があるとします。こういう場合は、「要素分解」をしてシンプルな機能に分けて考えていきます。
例えば、「朝の7時に目覚ましを鳴らし、停止ボタンを押すまで音を鳴らし続ける」プログラムを作りたいとします。
このプログラムに必要な機能は「目覚ましの音を鳴らす機能」、「時間を判別する時計機能」の2つに要素を分解し、個別に機能を作った後、統合してやればいいのです。
今回の目覚まし時計プログラムの例は簡単ですが、もっと複雑になればなるほど要素分解は効果を発揮します。
このようにプログラミングでは複雑な物事を要素分解して考える力が身につきます。
この章では、「因果関係」「抽象化・具体化」「要素分解」の力が必要とされる場面を紹介しました。
しかし、一例にすぎず、他にもプログラミングではこれらの論理的思考力が必要とされる場面は往々にしてあります。
論理的思考力を身に着けようとプログラミングを勉強するのは遠回り
論理的思考力だけを身に着けたいならプログラミングはおすすめできない
確かにプログラミングをすると、論理的思考力を身に着けることは可能です。
ですが、論理的思考力を身に着ける方法はプログラミング以外にもたくさんあり、何ならプログラミングは論理的思考力を身に着ける方法としては若干遠回りです。
論理的思考力を鍛えることが目的なら、プログラミングをするよりも、論理的思考方法について解説した本やマンガを読んだり問題集をする方が効率的です。
論理的思考力の他にも理由や目的があるならプログラミングは超オススメ
論理的思考力を身に着けたいだけなら、プログラミングでなくて、他の手段のほうが効率的だとお話ししました。
しかし、「論理的思考力を身に着けたい」という理由の他に、プログラミングを勉強したい理由があるなら、プログラミングは超オススメです。例えば以下のような理由が挙げられるでしょう。
- ITエンジニアに就職・転職したい
- プログラミングの副業で稼げるようになりたい
- ITスキルを身に着けたい
- フリーランスになって、時間や場所に縛られずに働きたい
- プログラミングを使って自分のサービスを作ってみたい
プログラミングと論理的思考力についておさらい
論理的思考力とは、「筋道立ててものごとを考えることが出来る力」のことで、具体的な論理的思考方法として、因果関係の考察や、ものごとを一般化・抽象化能力、要素分解する力などが挙げられました。
そして、論理的思考力はビジネスや日常でかなり役に立ち、身に着けることで課題解決能力・コミュニケーション能力・生産性の向上につながります。
実際に、プログラミングではエラーやバグの解消・複数の処理の共通化・複雑な機能の実装の際に論理的思考力が必要とされるので自然に身に着けることが出来ます。
ですが、論理的思考力を身に着けることを主目的にプログラミングを勉強するのは遠回りで、解説書や問題集を使う方が効率が良いです。
ですが、「論理的思考力を身に着けたい」以外にもプログラミングを勉強したい理由があるなら、今すぐにでもプログラミングの勉強を始めるべきです。
プログラミングの勉強は1秒でも早く始めよう
「プログラミング、面白そうだから勉強してみたいな!」
そう思ったが吉日、勉強を始めるのは本当に1秒でも早い方が良いです。でも、
そう思ってたんだけど、いざ勉強を始めると難しくて続かなかった・挫折してしまった
という方は本当に多いです。なので、初心者には特にプログラミングスクールをオススメしています。
プログラミングスクールは、プログラミング学習のブースターのようなもので、初心者が特につまずいたり、挫折しやすい初期段階を徹底的にサポートしてくれます。
プログラミングスクールは結構数が多くて、迷ってしまうとの声も多いですが、コースも豊富で、かつ現役エンジニアに教えてもらえる「テックアカデミー」が一番おすすめです。
ちなみに、逆にある程度プログラミングに慣れている方にはスクールは全くオススメしないです(笑)
コメント