サーチマン佐藤です。
こんにちは。
さてさて。
今日はお勉強の話です。
この業界では、
起きている事象をとらえ、観察し、
「こっちが正しい」と推論する力が必要ですね。
この力はどうやって磨かれるのか?
何を意識すればいいのか?
天才は意識しなくても、
「直観」を駆使して、すぐに
「こっちが正しい」と推論できるようですが、
我々ふつーの技術者は、
「演繹法」と「帰納法」のどっちかを使うべきですし、
強く意識すべきです。
意識しないから、ぬるいことになってしまう。
少なくともどっちかを意識すれば、かなりピリッとした
いい技術者に変貌する可能性が高いので、
今日は、そのへんのこと話してみますね。
(私も、なるべく意識するようにしています)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
【演繹法】正しい仮定の積み重ね
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
「演繹法」は、まあ簡単に言えば、
「A=B」「B=C」ならば、
「A=C」ってやつ。
例えば、
(仮定)「被害者の近くに、凶器の包丁が落ちていた」
(仮定)「包丁には指紋があった」
(仮定)「その指紋とAの指紋は一致した」
ならば、
→(結論)「犯人はAだ」とか。
こんな推論方法ですが、
納得できますよね。
上記の場合、当然ながら100%正しい「仮定」が積みあがることで、
100%正しい結論が導けるということになるし、
仮に、その積み重ねる「仮定」の確率が低くなれば、
結論の確かさは低くなります。
例えば、日本の有名なことわざに
「風が吹けば桶屋が儲かる」というのがありますよね。
・風で土ぼこりが出る
・土ぼこりが目に入って、盲人が増える
・盲人は三味線を買う
・三味線には猫皮が必要
・猫が殺されて減る
・猫が減ってネズミが増える
・ネズミは桶をかじる
・桶屋が儲かる
だから、(結論)「風が吹けば桶屋が儲かる」
となるわけですが・・・
全く正しくないです(苦笑)。
もちろんこれは、「演繹法」を模した
江戸時代の庶民の言葉遊びだから、
それはそれでいいんですけどね。
まあ、こんな感じで、とにもかくにも「演繹法」は
積み重ねる「仮定」の確率が重要ということを知っておいてください。
参考までに言えば、この推論方法は、
「左脳的アプローチ」でもあります。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
【帰納法】経験則からの推論だけど・・・・・
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
かたや「帰納法」の話です。
こちらは経験則とも言われている通り、
たくさんの事象を観察し、そこから結論を導く方法です。
例えば、
「人間Aは死んだ」「人間Bも死んだ」「人間Cも死んだ」
「太古から生きている人間は一人もいない」ならば、
→(結論)「人間はいつか死ぬ」とか。
わかりますよね。
こんな推論方法だから、
小難しい論理は必要ないのですが、
多分に直感的なわけで、そりゃ、
危ない(間違った)結論を導く可能性も多分にあります。
例えば、さっきの話で言ったら、
「Aはいつも悪いことやってる」
「Aは被害者と知り合いだった」
ならば、
→(結論)「犯人はAだ」とか。
危ないでしょ?
どっかの検察みたいに。
そんな感じで「帰納法」は
経験即を積み重ねることで推論してしまう方法です。
これは、参考までに言えば
「右脳的アプローチ」でしょう。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
【技術者】このシステムはどう動くのか?と推論するためには
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
じゃあ、我々の世界で、例えば
システムがどう動くか?と推論する場合、
どういうアプローチをとるべきか?
という話です。
仮に「演繹法」でいくなら、
ソースを読むべきでしょう。
ソースこそ、100%正しい「仮定」の積みあげであって、
このインプットがあれば、こういうアウトプットが出ると、
正しく予想できるはずです。
例えば、Javaのフレームワークやコネクションプールだって、
そのソースを丹念に読めば、こういう結果が得られる
と正しく推論できるはずなんです。
でも、そんなの現実的じゃないですよね(苦笑)。
やってられません。
現実的には、「システムはどう動く?」と予想する場合、
「帰納法」で攻める方が簡単だし、実感できます。
具体的には、
まずシステムを自分で実際に動かしてみる。
「こうやって動くんだ~」
と確認できますよね。
次に重要なのは(ここ本当に重要ですよ!!)動いた後、
(結果に影響を及ぼしていると思われるところ)
「一か所だけを変更」してみること。
そして動かす。
そうすると、その一か所変更したところが、
結果にどう影響してくるのか?
それを「帰納的」に納得できるんですね。
よくやってしまう間違いが、
何か所も変更して、動かしてみて、
何の変更が何に影響しているのか意味不明・・・・
みたいなことをやっている人。
重要なので繰り返しますが、
とにかく動くシステムがあったら、
一か所だけ変更してみる、
そして結果を丹念に観察する。
この地道な繰り返しなんですね。
勉強なんて。
これが血となり肉となるための、
技術者の正しいアプローチ。
余談ですが、一番ダメなのは、
「教科書は、いつも正しい」
「教科書には、こう書いてあった」
ならば、
→(結論)「教科書に書いてあることを読めばいい」と、
「演繹法」だか「帰納法」だかわけわからないこと言って、
お茶を濁して勉強すること。
これじゃあ、血となり肉となりません。
(私も昔はよくやってしまいましたし、
今でもついついやってしまいます)
これじゃあ、ダメです。
勉強って、もっと地道だし、
技術者だったら、「演繹法」でも「帰納法」でもいいですが、
どちらかを強く意識して勉強すると、きっと力がつくと思います。
まあ、両方からアプローチするのが一番いいですけどね。
以上、今日は
自戒も込めて話してみました。
ではでは、
またお会いしましょう。
ありがとうございました。