ソフトウェア開発における“無知”は攻撃的な意味ではない

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

この記事は、書籍『APIデザインの極意 Java/NetBeansアーキテクト探究ノート』の内容を、Think IT向けに特別公開しているものです。

この連載では、何回かに分けて本書の内容を紹介します。今回は前回に続き、第1章の一部を掲載します。

さらなる無知

私達は、簡潔性と優雅さは、今日成功して利用されているソフトウェアシステムの目的ではないことを見てきています。哲学と同様に、合理主義は、誰もが実世界を理解するにはあまりにも学術的すぎます。最も有望な開発スタイルは、「ブルドーザ」方式を実用的に利用することのように思えます。つまり、どのように作られているかを完全に理解することなく、すでに利用可能なコンポーネントを再利用し、事前作成されたライブラリの大きな塊からアプリケーションを構成し、貼り合わせ、動作させることです。この視点を否定する人は多くいるでしょうが、これが、今日の巨大なソフトウェアプロジェクトの背後でほとんど意識されていない標準スタイルなのです。問うべき質問は、この無知の方法がもっとうまく機能させられるかということであり、私達はそのことを完全に意識しています。

ブルドーザ方式が優れていることは、参加者、すなわち、プログラマがシステムのほとんどを理解していなくても、良い結果を生み出すことができることです。最初、そのことは、ぎょっとするようなことかもしれません。一方で、私達はいつもこの方式を行っています。みなさんは、車を運転するために車の設計を理解したいとは思わないでしょう。歯を綺麗にするために化学を理解する必要はありません。同様に、単純なWin32アプリケーションを作成するためにWindowsのコードを理解する必要はありません。みなさんは、API(この場合Win32 API)の十分な知識を得て、適切なドキュメントを見つける方法を分かってしまえば、Windows用のプログラミングでかなり効率的に行えます。これは、ほとんどのシステムでも成り立ちます。Linux、Java、ウェブのコーディングをするためには、氷山の一角を学ぶだけでよく、コーディングをやり遂げるにはこれで十分です。その理由は、すべてのライブラリやフレームワークを覆い隠している抽象化のおかげです。この抽象化、すなわち、APIが、すべての複雑な部分を覆い隠しています。それが、この本の主要テーマです。

みなさんが選択的に無知であればあるほど、システムの信頼性は高くなります。この本全体を通して、人々がすべてを理解しなくても、みなさんのライブラリのあるバージョンをすぐに使用でき、その後のリリースでも有効な様々な方法を探求します。

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

連載バックナンバー

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

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

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

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