マクロを組む前に論理的思考を
何かのきっかけでプログラミングを覚えようと考えたあなたへ
まず、プログラミング学習というと、プログラミング言語の構文を覚えることから始まるかと思います。やれ変数だの、命令文の書き方はこうだの、関数の引数はこうだのと、多くのテキストが書式を説明するといった内容で編集されています。
しかし、プログラミング言語うんぬんの前に、「論理的思考」と呼ばれる考え方を身につけなければ、思った通りのプログラミングできないと言えるでしょう。
論理的思考ができないから「プログラムは、思ったとおりに動かず、書いたとおりに動く。」などという台詞が生まれるのでしょう。
論理的思考って?
そもそも「論理的思考」と最近になって耳にしますが、どういった考え方のことなのでしょう?
「論理的」だなんて難しい言い回しをしていますが、何も特別な事ではありません。
普段、当たり前のことと思って、考えることを放棄していることを考えるってことです。
目的を果たすために、その段取りを組む、手順を考える。ということです。
コンピュータの生まれる前から「段取り八部」と言われています。
例えば、横断歩道で道路を渡るという日常的な出来事で考えてみましょう。
あなたは道路を渡ろうとしています。そこに横断歩道がありました。

「横断歩道がある!渡ろう!!」と道路に飛び出したら、車に撥ねられた・・・・。これでは「道路を渡る」という目的が果たせていません。(時に運良く渡れるかもしれませんが)
そこで、道路を安全に渡るための手順が必要になります。
「手を上げて、右を見て、左を見て、右を見て、横断歩道を渡る。」と私の子供の頃は教えられました。
教えられた横断歩道を渡る手順には、大きく分けて3つの手順があります。
- 手をあげる
- 左右を確認する
- 横断歩道を渡る
では、この手順を意味もなくただ漠然と実行すれば、常に確実に道路を渡り切ることができるのでしょうか?
それぞれの手順の意味を考えてみましょう。
- 「手をあげる」は、横断歩道を渡りたいという周囲への意思表示です。
- 「左右を確認する」は、危険(自動車など)が無いか安全の確認のためです。
- 「横断歩道を渡る」という目的が安全に果たせるのは1と2の手順があるからです。
3つの手順にはそれぞれ意味があり、こういった目的を果たすための手順に対して、筋の通った理由を考えることが、論理的思考を身につけるキッカケだと思います。
要は「何かをするための段取りを考えること」が「論理的思考」だと言えば伝わりやすいのではないでしょうか?
プログラムっぽくしてみる
せっかくなので「横断歩道を渡る」という手順をプログラムっぽくしてみました。
こんな感じになるのでしょう。
- 開始
- 手をあげる
- 左右を確認する
- 右を見る
- 車が停まるまで待つ
- 左を見る
- 車が停まるまで待つ
- 右を見る
- 車が停まるまで待つ
- 右を見る
- 横断歩道を渡る
- 終了
この手順を、習得したいプログラミング言語に置き換えることで、プログラムは完成します。
論理的思考を身につける
論理的思考というのは、普段、当たり前のこととして気にしていないだけで、私たちの日常生活の中に溢れていて、誰でも自然と身についているものです。なので、それを意識することで、論理的思考ができるようになるハズなのですが、これまで考えてこなかった当たり前のことを考えるというのは、とても難しいようです。
誰かができていることは、いつか誰にでもできることですので、諦めさえしなければ、いつか身につくことでしょう。
普段からできそうな訓練方法?
- 出かけるときにナビ機能をなるべく利用しない。
- 何かをする前に手順を想像する。