現代的なソフトウェア構築の技芸 -合理主義、経験主義、無知-
ガリレオは、ピサの斜塔から石を落とすことで彼の有名な法則を発見したと言われています。彼は本当に試したのかもしれませんが、疑いもなく動きを説明できたのは知的実験でした。それは、初めて、思考だけで観察と経験が誤っていることを証明したのです。現実には、私達は経験から軽い物体は重い物体よりゆっくりと落下することを知っていますが、今日では、重力に干渉している別の法則が落下速度に違いをもたらしていることも知っています。これは、純粋な推論を示す実験であり、ライプニッツとデカルトが経験よりも推察力を好むようになった要因です。これは、合理主義の哲学運動全体を促進しました。実際、この運動は、研究のテーマが推察可能であり、そうでなければならないとしています。実際、推察で発見可能であれば、推察可能な起源が存在する必要があります。
イギリス海峡の対岸では、経験主義が存在していました。ほぼ同じ頃、デイヴィッド・ヒューム(David Hume)(1711-1776)、ジョン・ロック(John Locke)(1632-1704)、ジョージ・バークリー(George Berkeley)(1685-1753)は、理解の主な源は経験であると主張しました。世界を見たり、聞いたり、感じたりしなければ、心が「考えつく」ことはありません。経験に対する手段を理解するには経験が必要であり、すなわち、より科学的な方法では実験を行うことが必要です。ここでも、考えや仮説が正しいかを証明する源として、科学的実験を広めた最初の科学者であるガリレオまでさかのぼることができます。経験主義的な観点からは、世界は推察可能である必要はありません。完全に知ることができないかもしれませんし、全く存在しないかもしれません。そして、実際、そのことは問題にはならないのです。人々が感じることに意味があるのであれば、必ずしもすべてを理解する必要はないのです。
今日の観点からすれば、世界を理解するためのこれら2つの極端な方法は、実際にはそれほど外れているわけではありません。少なくとも、現在の科学は、理論を証明するための実験の価値を理解しています。デカルトも、科学において実験の必要性を理解していました。したがって、私達にとって、2つの異なった視点を1つにすることは大きな問題ではないはずです。そして、実際、今日では、かなり簡単なことです。私達の生活のほとんどに関して、周りのものが哲学的側面を持っているかについては、それほど気にしていませんし、むしろ結果を気にします。人生は、楽しくあるべきであり、退屈だったり予測可能だったりすべきではありません。しかし、私達が使用するものは、日々、単に機能する必要があるだけです。つまり、どのように機能しているかについては、たいていは気にしません。たとえば、車や携帯電話については仕組みを全く気にしないで使っています。それらを使うのが当たり前だと思っていますし、どのように機能しているのかは知らないのです。私達は、全く無知な状態で生活しています。
無知に対する合理的な取り組み
世界中の聴衆に向けたAPIの作成と本の執筆は、どちらも容易ではありません。個人の好みや文化の違いが、私達が直面する問題への取り組み方に影響を与えます。合理主義者は、実際のオブジェクトの背後にある内部の結び付きに関する理論の話を好みますし、後から、実世界へ理論を対応付ける本当の例を作り出します。一方、経験主義者は、できる限り多くの実際の経験を積んで、その後に世界のオブジェクト間の関係について判断します。
この本は、無知の観点からAPI設計を説明します。つまり、APIについて、信頼できる結果を得ることができると同時に、無知を最大限にする完璧な道具であると見なしています。無知とは本当は何であるかを正しく感じることは重要です。しかし、合理主義者の観点から無知という用語を理解していきます。すなわち、理論から始めて、具体例からは始めません。これは、人によっては好ましい方法ではないかもしれません。しかし、一度にすべての人々を満足させることはできません。とにかく、がっかりしないでください。理論の説明が終わって、API設計科学のための共通の語彙を構築したら、十分なぐらい実際の応用を示します。
無知というのは、私達の多くが日常当たり前としていることです。それは、今日適用される合理主義と経験主義を混ぜた結果です。私達の周りに、多くの無知があります。プログラムを書いたり、ソフトウェアエンジニアリングを行ったりするやり方の中にも無知は存在します。
この記事のもとになった書籍 | |
---|---|
Jaroslav Tulach 著/柴田 芳樹 訳 |
APIデザインの極意 Java/NetBeansアーキテクト探究ノートなぜ、設計の良くないAPIを持つソフトウェアが量産されるのでしょう。エンジニアが良いAPI・悪いAPIについて分かっていない、あるいは、適切なレビューを受けていないからかもしれません。本書では、NetBeansアーキテクトの著者が遭遇してきた様々な誤りを解説し、APIの発展を考慮した設計について詳しく説明。あまり語られることがなかったAPI設計について、貴重な10年間の経験をベースに幅広くノウハウを披露。API設計の技術や知見の水平線を押し広げることができる稀有な一冊です。 |