ソフトウェア作成において、美しさや優雅さより大切なこと
アイザック・ニュートンの物理法則と幾何学との組み合わせによってもたらされた、ルネサンス時代の物理学の大きな成功は、物理学をほとんど完璧な科学にしました。実世界を説明しただけでなく、幾何学と同じ優雅さでもって説明しました。惑星は、楕円軌跡を動きます。塔から投げられた物体は、実世界の法則に従って落下し、科学はそれを把握して理解しています。この知識に基づいて、未来を予想することが可能です。物理学は世界を把握し、世界がどのように振る舞うかを分かっており、その法則の背後にある真実を分かっています。結果として、世界は、もはや暗黒で曖昧な場所ではなく、完全に美しい場所となりました。もう一度述べると、ニュートン物理学を分かっている人は、今では幾何学の世界だけでなく現実世界にも、真実と美しさがあることを再確認することができます。
ニュートン物理は、ルネサンス時代の最終傑作です。すなわち、ルネサンス物理の完成版です。それは、優雅であり、正しく、美しいものです。それは、世界がユークリッドの幾何学空間において構築されていることを説明していますし、実際、合理主義の最善で最も限定された形式です。このような世界は、経験することなく純粋な思考により発見可能です。しかし、それ以降、物理学が世界を変えてしまいました。アイシュタインは、空間はユークリッドの空間のようなものでなく、むしろ湾曲していることを認識させてくれました。量子理論は、(大きさが問題とはならない)幾何学は、実世界のモデルとしては不適格であるとしています。物事はより複雑になっているだけであり、近代物理学は、ギリシャ幾何学とは全く関係なくなっています。それでも、科学は役立ちますし、様々な真実を予想することができますが、幾何学から離れていった副作用として、世界は美しさに適した場所ではますますなくなっているように思えます。
一方、(ソフトウェアエンジニアを含む)ほとんどの大人は、ニュートンが発見した程度の物理学について知っているだけです。私達の多くは、相対性理論を聞いたことはあります。しかし、説明できる人は多くありません。それが、世界はうまく構成されて美しいという幻想を今でも私達が持っている理由です。そして、自然科学の最もはっきりとしたニュートン物理で世界が支えられているように思えたりします。それも、私達が世界の他の部分も美しいと確信して期待しているように見える理由です。実際、すべての科学は、幾何学や物理学のようにできるだけ純粋であろうとしています。真実を美しさと融合させた場合にだけ、優れた科学であると一般に受け入れられています。おそらく、美しさは、構造を持たないカオス理論と異なり、自然に認識できますし、覚えやすいだけなのです。
映画『エニグマ』
最近、私は、第2次世界大戦中の機密暗号に関わるロマンスを描いた映画『エニグマ』(Enigma)を見る機会がありました。主人公の数学者は、数学が好きかと尋ねられます。彼の答えは、「私は数が好きです。なぜなら、数には真実と美しさがあるからです。すべてが良くなっていれば、正しい方向に歩んでいることが分かります。そして、数は、すべての物事の秘密の部分へあなたを近づけてくれます」でした。私は、ギリシャ人の真実、美しさ、優雅さの考えに対するこれ以上の賛辞を想像できません。このような言葉が科学者向けではないロマンス映画の中で使われているのは、真実、美しさ、優雅さがひとまとまりであるという感覚が、ほとんどの人々の中に深く存在するということです。
コンピュータサイエンスとソフトウェアエンジニアリングも、美しさと真実を好むということでは例外ではありません。しかし、ソフトウェアを作成することの主な目的は、信頼性のあるリリースをすることだということを覚えておいてください。リリースサイクルの最終段階での慌ただしさの中では、エンジニアは実際には美しさを考慮する余裕はありません。重要なバグを修正、より正確には回避する方法を選んで、それから、製品をリリースします。実際、簡潔性と優雅さは、全く目的ではないのです。必要性は感じられても、それらの余地はありません。このことを認識しているので、今日と将来に対するソフトウェア開発手法として無知を提案することで対応することができます。
この記事のもとになった書籍 | |
---|---|
Jaroslav Tulach 著/柴田 芳樹 訳 |
APIデザインの極意 Java/NetBeansアーキテクト探究ノートなぜ、設計の良くないAPIを持つソフトウェアが量産されるのでしょう。エンジニアが良いAPI・悪いAPIについて分かっていない、あるいは、適切なレビューを受けていないからかもしれません。本書では、NetBeansアーキテクトの著者が遭遇してきた様々な誤りを解説し、APIの発展を考慮した設計について詳しく説明。あまり語られることがなかったAPI設計について、貴重な10年間の経験をベースに幅広くノウハウを披露。API設計の技術や知見の水平線を押し広げることができる稀有な一冊です。 |