ソフトウェア開発における“無知”は攻撃的な意味ではない
APIデザインの極意 Java/NetBeansアーキテクト探究ノート
NetBeans開発プロジェクト10年超の蓄積!API設計の経験や考察をまとめた一冊この記事は、書籍『APIデザインの極意 Java/NetBeansアーキテクト探究ノート』の内容を、Think IT向けに特別公開しているものです。
この連載では、何回かに分けて本書の内容を紹介します。今回は前回に続き、第1章の一部を掲載します。
さらなる無知
私達は、簡潔性と優雅さは、今日成功して利用されているソフトウェアシステムの目的ではないことを見てきています。哲学と同様に、合理主義は、誰もが実世界を理解するにはあまりにも学術的すぎます。最も有望な開発スタイルは、「ブルドーザ」方式を実用的に利用することのように思えます。つまり、どのように作られているかを完全に理解することなく、すでに利用可能なコンポーネントを再利用し、事前作成されたライブラリの大きな塊からアプリケーションを構成し、貼り合わせ、動作させることです。この視点を否定する人は多くいるでしょうが、これが、今日の巨大なソフトウェアプロジェクトの背後でほとんど意識されていない標準スタイルなのです。問うべき質問は、この無知の方法がもっとうまく機能させられるかということであり、私達はそのことを完全に意識しています。
ブルドーザ方式が優れていることは、参加者、すなわち、プログラマがシステムのほとんどを理解していなくても、良い結果を生み出すことができることです。最初、そのことは、ぎょっとするようなことかもしれません。一方で、私達はいつもこの方式を行っています。みなさんは、車を運転するために車の設計を理解したいとは思わないでしょう。歯を綺麗にするために化学を理解する必要はありません。同様に、単純なWin32アプリケーションを作成するためにWindowsのコードを理解する必要はありません。みなさんは、API(この場合Win32 API)の十分な知識を得て、適切なドキュメントを見つける方法を分かってしまえば、Windows用のプログラミングでかなり効率的に行えます。これは、ほとんどのシステムでも成り立ちます。Linux、Java、ウェブのコーディングをするためには、氷山の一角を学ぶだけでよく、コーディングをやり遂げるにはこれで十分です。その理由は、すべてのライブラリやフレームワークを覆い隠している抽象化のおかげです。この抽象化、すなわち、APIが、すべての複雑な部分を覆い隠しています。それが、この本の主要テーマです。
みなさんが選択的に無知であればあるほど、システムの信頼性は高くなります。この本全体を通して、人々がすべてを理解しなくても、みなさんのライブラリのあるバージョンをすぐに使用でき、その後のリリースでも有効な様々な方法を探求します。