現代的なソフトウェア構築の技芸 -合理主義、経験主義、無知-
APIデザインの極意 Java/NetBeansアーキテクト探究ノート
NetBeans開発プロジェクト10年超の蓄積!API設計の経験や考察をまとめた一冊この記事は、書籍『APIデザインの極意 Java/NetBeansアーキテクト探究ノート』の内容を、Think IT向けに特別公開しているものです。
この連載では、何回かに分けて本書の内容を紹介します。今回は、第1章の一部を掲載します。
ソフトウェア開発の歴史は浅く、人々が最初のコンピュータプログラムを書いて実行してから、100年は経過していません。短いですが、この歴史は、他の知的発明の歴史を思い起こさせてくれます。これまでに、私が聞いた最も興味深い類似性は、コンピュータサイエンスの歴史と実世界を人々が理解しようとした方法との比較です。この比較の結果も、優れたアプリケーション・プログラミング・インタフェース(API)が必要な理由を説明してくれています。では、その道をこれから辿っていきましょう。
合理主義、経験主義、無知
現代科学の復興は、2つの主要で極端な哲学的方法を生み出したように思えます。合理主義は、理性を情報の主な源(みなもと)として取り扱い、純粋な思考だけを使用して、実世界を理解し説明することが可能であると主張しました。この考えを支持した哲学者には、近代科学の祖であるルネ・デカルト(René Descartes)(1596--1650)とゴットフリート・ヴィルヘルム・ライプニッツ(Gottfried Wilhelm Leibniz)(1646--1716)、それに、汎神論を生み出したバールーフ・デ・スピノザ(Benedict Spinoza)(1632--1677)が含まれています。
この種類の理解を行うことによる最初の衝撃は、ガリレオ・ガリレイ(Galileo Galilei)の落体の法則(2つの物体は質量に関係なく同じ加速で落下する)です。落体の法則は、普通に期待することに完全に反しています。なぜならブロックと1枚の紙を落としたことがあれば、両方が同時に着地することはないことを知っているからです。ガリレオや他の近代科学者の素晴らしさは、それを様々な自然の法則の相互影響であり、落体の法則はそのうちの1つの法則にすぎないとしたことです。ガリレオはどうやって落体の法則を発見したのでしょうか。彼は、知的実験を行いました。彼は、同じ大きさと重さの中空でないボールが2つ落ちていく状況を想像しました。実際、その2つのボールは同時に着地するでしょう。それから、彼は同じ実験を想像したのですが、今度は1つは中が空でないボール、もう1つは2つに切られてそれぞれが非常に接近したボールです。この実験の結果は、最初の実験と全く同じ結果になります。つまり、同時に着地します。ここで、もし、2つ目のボールの半分にされた部分を少しずつ離し始めたら何が起きるでしょうか。1つの物体とするために細いひもで結んでみてはどうでしょうか。実際、2つの半分の部分が1センチ、1メートル、あるいはもっと長く離れていても、この物体は、完全に中が空でないボールと同じスピードで落下し続けることになります。そして、最後に、そのひもを取り除いても同じ結果になるでしょう。この結果は、普通の経験とは完全に反しています。経験から言えるのは、1枚の紙は石よりゆっくりと落下するということです。この純粋な知的実験は、落下する物体の加速には重さは影響を与えないことを説明しています。
無意識の数学と物理
この本を読み進めると、私が物理学のたとえ話で頭がいっぱいであることに気付くと思います。近代数学と物理の成功における無意識の重要性に関するペトル・ヴォピェンカ(Petr Vopěnka)の本*1。を読んだ後、哲学的説明が頭から離れなくなっているからです。この本は800頁以上あり、注意深くすべての用語を適切に理解できるようになっています。私は、非常に簡略化された形式ですが、時々彼の見解を再利用しています。この本は、彼の本と同じではありません。彼のすべての概念を深く説明するには、この本では足りませんし、この本の目的ではありません。したがって、簡略化されています。
[*1] Petr Vopěnka, Úhelný kámen evropské vzdělanosti a moci (Prague: Präh, 1999)。