デカルトの4つの規則に学ぶエンジニアの思考法
自分も気づけば30代後半で、エンジニアとしての知識だけでなく、最低限の教養も持っておきたいなと思い、空いてる時間で哲学をかじり始めました(継続できる自信はない)。
その中で、あの有名な名言「我思う、ゆえに我あり」を残した、近代哲学の父と呼ばれるデカルトが、真実を探究するために作った4つの規則がエンジニアにも使える思考法だなと思い、記事化しておきます。
デカルトが4つの規則に到達するまで:背景と思想の流れ
本題に入る前に、少し背景を。
デカルトが生きた17世紀ヨーロッパは、「何が正しいのか?」が分からない時代でした。
- 宗教戦争(カトリック vs プロテスタント)で社会全体が混乱
- 占星術・錬金術などの怪しげな領域が科学として信じられていた
- 膨大な書物があっても、内容の真偽が曖昧
つまり「正しさの基準」が崩壊していました。
そんな中でも天才デカルトは20代前半までに哲学・数学・医学・法学・錬金術・占星術・魔術までを学び尽くしました(すごすぎ、20代の自分に爪の垢を煎じて飲ませたい)。ただ、やはり「学んでも疑い始めるとどれもボロが出るな」とモヤモヤしていたようです。
そこで、「数学のように誰がやっても再現できる方法を作ろう」と考え、その後様々な場所を約9年旅し、その旅路でいろいろ考えて考え尽くして(雑説明)、発見した知的プロセスを誰でも再現できる形にしたのが、方法序説に書かれている4つの規則です。
4つの規則の要約
4つの規則の要約は以下です。次の章で、各規則がエンジニアリングで生きるシーンを書いていきます。
| 規則 | ざっくり概要 |
|---|---|
| 明証性の規則 | はっきり確実でないものを真と認めるな |
| 分析の規則 | 問題はできるだけ細かく分割せよ |
| 総合性の規則 | 単純なものから順に考えよ |
| 枚挙の規則 | 漏れがないように全体を確認せよ |
各規則をエンジニアリングに当てはめると
自戒を込めて、各規則をエンジニアの仕事に当てはめて、どういうことを意識する必要があるかを列挙します。
あくまで一例で、他にもいろんなケースに当てはまると思うので、考えてみる価値はあると思います(この記事で一番言いたいのはこれかも)。
明証性の規則
- AIの回答を盲信せず、公式ドキュメントなどの信頼できる情報で裏をとる&設計・実装を学び続ける
- AIの精度は日々上がってるけど、まだまだ誤回答やいまいちなコードを提案されることはある(間違ってても結構誤魔化してくるので少なくとも自分はいまだにちょくちょく喧嘩してます)
- 不具合発生時に「たぶんこの処理が原因」と決めつけず証拠を集める
- 仮説を立てることは大事だけど、客観的なデータをもとにした仮説検証と、それに固執しすぎず別の仮説を立てるための全体俯瞰に戻る勇気の両方が大事
分析の規則
- 障害発生時に問題の切り分けを優先して実施する
- 自分が詳しくないサービスが絡んだ障害が起きたりして、最初は全く原因の検討がつかなくても、一つ一つ問題を切り分けていけば、少しずつでもゴールに近づける。一度に多くを考えられない自分に絶望せず地道に一つ一つ原因を潰していく
- 新しい技術を学ぶ時、一度に複数の概念を学ぶのではなく、細かく区切って少しずつ習得する
- まずは全体をふわっと学ぶことも大事だけど、一度にたくさんのことをやろうとすると挫折するので、小さくても良いので今日はこの技術のこの部分を学べた、という経験を蓄積したい
総合性の規則
- 複雑な機能実装をするときはまずはシンプルなパターンから作る
- いきなり複雑な機能を実装しようとしても手が止まってしまいがち。ここでもそんな自分に絶望せずシンプルなパターンで形を作ってから、そのあとに「ではこのパターンは?」と複雑なパターンを徐々に積み上げていく
枚挙の規則
- 想定される入力値を網羅的にテストケースとして挙げる
- カバレッジ100%を目指すべきではないけど、ここ怪しいなと思う箇所のテストは徹底的に書く、何よりどこが怪しいだろう?と考える時間に価値がある
- リリース前に「ユーザーフローの網羅チェック」を実施する
- エンジニアもユーザーのユースケースまで立ち返って、想定されるユースケースを全て満たしているかの視点を持ちたい
まとめ
デカルトは、宗教戦争や学問の混乱で何が正しいか分からなかった時代に、「確実性にたどり着くための方法」をつくりました。
それは哲学者のための高度な理屈ではなく、どちらかというと混乱した世界を生き抜くための思考のインフラのようなものです。
これらは400年前の哲学のルールですが、現代のエンジニアリングにも親和性があるなと感じました。むしろ、このAI時代、不確実で情報が飽和した世界に生きる自分たちこそ身につけるべき考え方なのかもしれません。
私たち(少なくとも自分)はデカルトほど賢くもなければ、すべてを疑い尽くす根気もないです。でも、デカルトが残した 「考えるためのフレームワーク」 はそのまま現代の知的労働の武器になりうると感じました。
どなたかの参考になれば嬉しいです。
Discussion