ソフトウェア作成において、美しさや優雅さより大切なこと

2014年9月19日(金)
Jaroslav Tulach(ヤロスラフ・ツゥラッハ)柴田 芳樹(しばた よしき)

アイザック・ニュートンの物理法則と幾何学との組み合わせによってもたらされた、ルネサンス時代の物理学の大きな成功は、物理学をほとんど完璧な科学にしました。実世界を説明しただけでなく、幾何学と同じ優雅さでもって説明しました。惑星は、楕円軌跡を動きます。塔から投げられた物体は、実世界の法則に従って落下し、科学はそれを把握して理解しています。この知識に基づいて、未来を予想することが可能です。物理学は世界を把握し、世界がどのように振る舞うかを分かっており、その法則の背後にある真実を分かっています。結果として、世界は、もはや暗黒で曖昧な場所ではなく、完全に美しい場所となりました。もう一度述べると、ニュートン物理学を分かっている人は、今では幾何学の世界だけでなく現実世界にも、真実と美しさがあることを再確認することができます。

ニュートン物理は、ルネサンス時代の最終傑作です。すなわち、ルネサンス物理の完成版です。それは、優雅であり、正しく、美しいものです。それは、世界がユークリッドの幾何学空間において構築されていることを説明していますし、実際、合理主義の最善で最も限定された形式です。このような世界は、経験することなく純粋な思考により発見可能です。しかし、それ以降、物理学が世界を変えてしまいました。アイシュタインは、空間はユークリッドの空間のようなものでなく、むしろ湾曲していることを認識させてくれました。量子理論は、(大きさが問題とはならない)幾何学は、実世界のモデルとしては不適格であるとしています。物事はより複雑になっているだけであり、近代物理学は、ギリシャ幾何学とは全く関係なくなっています。それでも、科学は役立ちますし、様々な真実を予想することができますが、幾何学から離れていった副作用として、世界は美しさに適した場所ではますますなくなっているように思えます。

一方、(ソフトウェアエンジニアを含む)ほとんどの大人は、ニュートンが発見した程度の物理学について知っているだけです。私達の多くは、相対性理論を聞いたことはあります。しかし、説明できる人は多くありません。それが、世界はうまく構成されて美しいという幻想を今でも私達が持っている理由です。そして、自然科学の最もはっきりとしたニュートン物理で世界が支えられているように思えたりします。それも、私達が世界の他の部分も美しいと確信して期待しているように見える理由です。実際、すべての科学は、幾何学や物理学のようにできるだけ純粋であろうとしています。真実を美しさと融合させた場合にだけ、優れた科学であると一般に受け入れられています。おそらく、美しさは、構造を持たないカオス理論と異なり、自然に認識できますし、覚えやすいだけなのです。

映画『エニグマ』

最近、私は、第2次世界大戦中の機密暗号に関わるロマンスを描いた映画『エニグマ』(Enigma)を見る機会がありました。主人公の数学者は、数学が好きかと尋ねられます。彼の答えは、「私は数が好きです。なぜなら、数には真実と美しさがあるからです。すべてが良くなっていれば、正しい方向に歩んでいることが分かります。そして、数は、すべての物事の秘密の部分へあなたを近づけてくれます」でした。私は、ギリシャ人の真実、美しさ、優雅さの考えに対するこれ以上の賛辞を想像できません。このような言葉が科学者向けではないロマンス映画の中で使われているのは、真実、美しさ、優雅さがひとまとまりであるという感覚が、ほとんどの人々の中に深く存在するということです。

コンピュータサイエンスとソフトウェアエンジニアリングも、美しさと真実を好むということでは例外ではありません。しかし、ソフトウェアを作成することの主な目的は、信頼性のあるリリースをすることだということを覚えておいてください。リリースサイクルの最終段階での慌ただしさの中では、エンジニアは実際には美しさを考慮する余裕はありません。重要なバグを修正、より正確には回避する方法を選んで、それから、製品をリリースします。実際、簡潔性と優雅さは、全く目的ではないのです。必要性は感じられても、それらの余地はありません。このことを認識しているので、今日と将来に対するソフトウェア開発手法として無知を提案することで対応することができます。

この記事のもとになった書籍
APIデザインの極意 Java/NetBeansアーキテクト探究ノート

Jaroslav Tulach 著/柴田 芳樹 訳
価格:3,200円+税
発売日:2014年05月23日発売
ISBN:978-4-8443-3591-7
発行:インプレスジャパン

APIデザインの極意 Java/NetBeansアーキテクト探究ノート

なぜ、設計の良くないAPIを持つソフトウェアが量産されるのでしょう。エンジニアが良いAPI・悪いAPIについて分かっていない、あるいは、適切なレビューを受けていないからかもしれません。本書では、NetBeansアーキテクトの著者が遭遇してきた様々な誤りを解説し、APIの発展を考慮した設計について詳しく説明。あまり語られることがなかったAPI設計について、貴重な10年間の経験をベースに幅広くノウハウを披露。API設計の技術や知見の水平線を押し広げることができる稀有な一冊です。

Amazon詳細ページへImpress詳細ページへ

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

連載バックナンバー

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

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

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

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