プロジェクト・マネジャーが知るべき97のこと/Web が道を示す (今のところは)
「私たちは先人を手本にしています。私たちは後人の手本になります」

この言葉をスローガンにしたチャリティグループがあります。これは私たちソフトウェア開発者にも関連があります。新しいアーキテクチャ、言語、プラットフォームが有名になるたびに、私たちは「これがあらゆるプログラミング問題に対する解になる」と期待します。ところが、それは今の問題を解決してくれたとしても、明日には新しい課題に直面することになるのです。

現在、私たちは何十億ものユーザーにまでスケールし、個々の構成要素のエラーに対してロバスト†に機能するソフトウェアアーキテクチャをひとつだけ知っています。それはWeb です。Web は今までのところ、人類によって作られた最も大規模で、最も使われている、最も堅牢な情報検索システムなのです。

なぜWeb はそんなにうまく機能するのでしょうか？

有名なApache プロジェクト††の創設者であるロイ・フィールディングは、まさにこの疑問について研究しました。フィールディングは初期のWeb の理想的なアーキテクチャを評価し、そこからアーキテクチャスタイル要素を抽出しました。

その結果、この新しいソフトウェアのアーキテクチャスタイルにはみんなが好きになる特性が備わっていることがわかりました。その特性とは、個々の構成要素の変化にも破壊にもロバストであることです。構成要素に分割することで、プログラミング言語などの実装詳細について気にしなくてもよくなりました。ここでは言語に中立なリクエストを交換するために、共通語（母国語が違う人たちでコミュニケーションするための言語）が使われます。これは非常に大きくスケールします。ここにはステートがないのです。

すべてのWeb サイトがこうした指針となる原則を利用しているわけではありませんが、これは多くのサイトで利用されています。そして、Web は全体として、この原則を利用しています。しかし、こうした原則もお手本にすぎず、新たな革新的なアーキテクチャの開発が引き続き行われています。

私たちはWeb の成功から重要なことを学べます。おそらく最も重要なのは、今やムーアの法則†のおかげで、私たちはシステム設計においてかなりの抽象化ができることです。もはやハードウェアとソフトウェアを非常に効率よく動かすことだけでなく、非常に安定した、非常にロバストな、非常にスケーラブルな、非常に柔軟なシステムを作ることについて考えることができるのです。また、将来の革新のための基礎となることを十分理解することで、現在のアーキテクチャの非効率性までも許容できるようになったのです。

Web のような分散システムを設計するのは難しいことです。おそらくこれは、私たちそれぞれが個体であるためです。私たちはソフトウェアシステムを、世の中で経験するように中央集権化された、個人が作るものとして扱ってきました。それにもかかわらず、Web という分散システムはそのやり方を私たちに示してくれました。分散システムは概念化するのが難しく、作るのも難しいのですが、それを作るために努力する価値はあります。

もちろん技術も変化します。アイデアやテクニックも変化します。フィールディングが描いたシンプルなWeb は、現代のWeb とは異なっています。将来のWebもまた現代のWeb とは異なるでしょう。必ずしもWeb は道を示すわけではないかもしれませんが、新たなシステムに適応するために重要なことは、システムに柔軟性を作り込んでおくことです。それによって初めて、動作する適応可能なソフトウェアシステムを作れるのです。こうして作られたシステムは、新たに発見された技術やアイデアと統合できるようになっており、後人の手本となるでしょう。