macoblog

「ゲーム × プログラミング」で生きていく

アプリ検索ツール(β版)を公開

「今すぐできる」プログラミングで使える論理的思考能力の鍛え方

THOUGHT

文系プログラミング初心者

文系プログラミング初心者
「プログラミングには論理的思考が必要だってよく聞くけど、それってどうすれば身に付くんだろう、文系って言い訳はしたくないけどぶっちゃけイマイチよく分からないんだよね、理系の人が羨ましい、、、」

こんなニーズに答える記事になります。

プログラミングをするなら論理的思考は必要です、その理由を説明しつつ論理的思考能力を鍛えるコツ・方法について解説しております、やり方さえ分かればどこでも実践可能です、この機会に理系脳を手に入れましょう。

この記事で解説していること

自分が言うのもなんですが、プログラミングを学ぶなら読んでおいた方がいい内容かと思います、3分あれば読めますのでここは時間を惜しむところじゃないですね。

読み終えたらすぐに実践しましょう、すると、いつの間にか論理的思考が身に付いています、簡単なロジックなら書けるようになりますよ。

なぜ論理的思考が必要なのか?

なぜ論理的思考が必要なのか?

プログラミングの基礎的な部分、変数宣言や分岐処理、演算処理やループ処理など入門レベルの理解がある前提で話します。

プログラミングを勉強していると「〇〇をすると〇〇になる」「〇〇になると〇〇が変わる」というものを実装する機会があります、「クリック(タップ)すると色が変わる」とかですね。

これを「実装してみてください」と言われると論理的な考え方ができない人は、クリックすると色が変わる魔法のような呪文を思い浮かべます、そんなものあるわけないですよね。

逆に論理的な考えが出来る人は実装する上で必要なこと・ものを細分化し考えます、そこに魔法なんかありません。

細分化できる→ロジックを考える事ができる

例えば「クリックすると色が変わる」をフロントサイド言語で実装するとします、論理的思考が出来る人なら下記のように考えます。

  1. 色が変わる→色が変わるとはどういうことか考える
  2. 色が変わるとは→スタイルが更新された時
  3. スタイルを更新するには→スタイルを上書きする
  4. スタイルを上書きするには→新しくクラスを付与する(変更後の色を指定した別クラス)
  5. 答え→クリックした時にクラスを付与する処理を書けばいい

ここまで細分化できればあとは必要なものをググるだけ、上記なら「クリックした時にクラスを付与する方法」を調べるだけですね。

こんな感じで論理的思考を持てばロジックが自然と見えてきます、ロジックが見えれば後はそれを辿りつつ処理を書くだけ。

ここまで読んでいいなと思った方は読み進めてください、これをを身に付ける方法についてお教えします。

論理的思考能力を鍛える方法【場所不問・コストゼロ】

論理的思考能力を鍛える方法【場所不問・コストゼロ】

「論理的思考を身に付ける、プログラミングに活かす」、これには日常生活で起こることをプログラミングで表現するを繰り返せばOKです。

この説明だけだと「?」ですよね、なので、2つほど例を挙げて実践してみます。

  • 例1:「部屋の電気」
  • 例2:「走ると疲れる、座ると楽になる」

それぞれ解説しますね。

例1:「部屋の電気」

仕事から帰宅するとまず電気を付けます、何も考えずスイッチを押して明かりをつけます、この「スイッチを押すと明かりがつく、もう一度押すと暗くなる」をプログラミングで表現するとどうなのか?

箇条書きにして紐解いてみましょう。

  1. 状態を考える→「明るい = 1」「暗い = 0」
  2. スイッチを押すと明るさが変わる→状態が変わる(例:明るくなる = 0から1になる)
  3. 状態が変わる→分岐処理が動く
  4. 分岐処理→0なら明るくする(状態が1になる)、1なら暗くする(状態が0になる)

どうでしょう、ピンときたらなセンスあり。

明るさの状態を変数の値(1か0)に置き換えて考えています、スイッチを押すと明るくなったり暗くなったりすることを「変数の値が入れ替わり、それに応じて分岐処理が動く」と表現しているわけです。

これをプログラミングに落とし込んでみましょう。

// 明るい = 1, 暗い = 0
// 家に帰ったときは暗い状態だと思うのでflgには0を入れておく
var flg = 0;

// スイッチを押した時を「画面をクリックした時」に置き換える
$(window).on('click',function(){
  
  // 暗い(0)なら明るくする(flgに1を再代入)
  if(flg == 0){
  flg = 1;
    console.log('明るくなりました');
  // 明るい(0)なら暗くする(flgに0を再代入)
  }else if(flg == 1) {
    flg = 0;
 	console.log('暗くなりました');
  }
});

こんな感じで処理に落とすことができれば上出来です、次の例も見てみましょう。

※てきとうなサイトでデベロッパーツールを開きます、Consoleを選択し上記コードをコピペして実行(Enter)すれば画面をクリックすると結果がログに出力されます、興味がある方は試してみてください。

例2:「走ると疲れる、座ると楽になる」

誰しも走ると疲れますし、座ると楽になりますよね、これをさっきと同じような感じで考えてみましょう。

  • 状態を考える→疲労度(初期値は0)
  • 疲れる(しんどい)→疲労度が一定以上になる(50以上)
  • 楽になる(しんどくない)←疲労度が一定以下になる(50未満)
  • 走ると→疲労度がちょっとずつ増えていく
  • 座ると→疲労度がちょっとずつ減っていく
細かく書くと長くなるので割愛しますが、疲労度という変数があって、走る処理が動くと疲労度に値が足される、疲労度が50以上になる「疲れた」と結果を返す、座る処理が動くと疲労度が減るって感じです。

これだけでも意味は理解できるかと思います、ちょっとレベルを上げて「筋肉痛になる」を考慮するのも面白そうですね、「いや、まだピンと来ない」って方はゲームをイメージすればいいかと思います。

ゲームでは生命力をHPという値で表現していますよね、値が半分以下になるとグッタリしますし、1割未満になると瀕死状態です、他にも「殴られるとケガをする→攻撃されるとHPが減る」と表現しています。

「例え上手くね!?」

論理的思考が出来る人は抽象化するのも上手いです、日常の周りにあることをプログラミングで表現してみましょう、すると、いつの間にか論理的思考が身に付いているはずです。

ちょっとだけ高度な例

  1. ご飯を食べると満腹になる
  2. プレゼントを上げると彼女が反応する
  3. 自分の鍵だと扉が開く、他人の鍵だと開かない
  4. 水を沸騰させる

イメージを膨らませるほど効果あり、例えば②なら「プレゼントによって彼女の反応は変わります」、③なら「合鍵ではどうなのか」、④なら「火力には種類があるはず」ってな感じです。

追記:状態を0か1に置き換える発想

現役の文系大学生の方に「明るいを1、暗いを0」に置き換える感覚がイマイチぴんと来ないとご指摘頂きました、言われてみるとその通りかもなのでこれについて補足しておきます。

無理に数字に置き換える必要はありません、「明るい→電気がついている、暗い→電気がついていない」、「しんどい→疲れている、楽→疲れていない」でもいいんです。

ただ、プログラミングをしているとこの表現は数字で置き換える事が多いってだけです、慣れてくると分かると思いますが、端折りすぎた感は否めないので陳謝、申し訳ないです。

質問にはお答えしますので遠慮くなくどうぞ、出来ればTwitter(DM)でお願いします、、、

プログラミングに役立つ論理的思考の参考本

プログラミングに役立つ論理的思考の参考本

論理的思考は本を読むことでも鍛えることができます、ただ、闇雲に本を読んでも効果はありませんので、私がオススメする本を何冊か紹介しておこうかなと思います、論理的思考能力を鍛える方法を実践しつつ暇な時に読んでおきましょう。

本①:世界一やさしい問題解決の授業

問題解決に必要な事を学べます、広い範囲で活かせますのでこの一冊だけでも読んでおいた方がいいかと思います。

特にプログラミングは問題(バグ)がないことがない、というか作業のほとんどがデバッグなので「動かない、オワタ」ではいけません、それをいかに解決に持っていくかが大事です。

本②:そもそも「論理的に考える」って何から始めればいいの?

「論理的思考、ロンリテキシコウ、ろんりてきしこう」、こんな感じで頭がパンクしかけた方にはこの一冊。

内容自体はそこまで濃くありませんが、この記事を読んでしっくりこなかったって方やちょっと苦手かもって方はこの本を読むといいです、その後にもう一度この記事を読み直しましょう。

おまけ①:自分のアタマで考えよう