現代的なソフトウェア構築の技芸 -合理主義、経験主義、無知-

2014年9月5日(金)
Jaroslav Tulach(ヤロスラフ・ツゥラッハ)柴田 芳樹(しばた よしき)
APIデザインの極意 Java/NetBeansアーキテクト探究ノート
NetBeans開発プロジェクト10年超の蓄積!API設計の経験や考察をまとめた一冊Amazon詳細ページへ

この記事は、書籍『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)。

著者
Jaroslav Tulach(ヤロスラフ・ツゥラッハ)
NetBeansの生みの親で、初期のアーキテクト。NetBeansは当初、Java統合開発環境として開発され、現在はJavaScript・Ruby・PHP・C/C++などにも対応。今も、オープンソースプロジェクトで開発が続けられている。著者は、NetBeansを支える技術の生みの親として、このオープンソースプロジェクトの成功に貢献。現在も、プログラマーの設計スキルを向上させる新たな方法を探求しつつ、このプロジェクトに参加している。
著者
柴田 芳樹(しばた よしき)
1959年生まれ。九州工業大学情報工学科で情報工学を学び、1984年同大学大学院で情報工学修士課程を修了。以来、様々なソフトウェア開発に従事。ゼロックス社のパロアルト研究所を含め、5年間米国に駐在してソフトウェア開発に携わる。現在はソフトウェア開発、教育、コンサルテーションなどを業務としている。 本書の翻訳を担当。

連載バックナンバー

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています