web-history

Webの歴史 ハイパーメディアシステムと分散システム

前回は、Webの用途とそれを支える技術の全体像について、Webの特徴はシンプルさであることについてまとめた。ここでは、Webが持つ歴史的背景について、ハイパーメディアシステムと分散システムの2つの側面から解説する。

1 Web以前のインターネット

インターネットの起源は1969年に構築されたARPANETである。ARPANET(Advanced Research Project Agency NET)とは、アメリカ国防総省国防高等研究計画局が構築したコンピュータネットワークで、米国内の大学や研究機関の間を接続した。

Web以前のインターネットの環境は、すべての文字が英数字であった。インターネットのアプリケーションは、電子メール以外にもたくさん生まれた。複数人が参加できるフォーラム形式のネットニュース、ファイル交換のためのFTP(File Transfer Protocol)、UNIXホストにリモート接続するためのtelnet、コンテンツを簡単に公開するためのGopherなどである。

 

2 Web以前のハイパーメディア

Memex-ハイパーメディアの起源

ハイパーメディアの起源は、1945年に米国の研究者Vannevar Bushが発表したMemexという情報検索システムについての論文だと言われている。Memexとは、電気的に接続した本やフィルムを相互にリンクし、リンクをたどって次々と表示するという構想である。

 

Xanadu-「ハイパーメディア」という言葉の誕生

Ted Nelsonは1965年に「ハイパーテキスト」と「ハイパーメディア」という言葉を考案した。ハイパーテキストが文字中心の文書を相互にリンクさせた概念であるのに対し、ハイパーメディアはその考え方を拡張し、音声や動画など多様なメディアを相互にリンクさせた概念である。

Xanaduとは、Nelsonが構想・開発した、Webをさらに進化させた機能を持つ理想的なハイパーメディアである。しかし、高機能ゆえの複雑さから頓挫した。

 

HyperCard-初の実用的なハイパーメディア

Web以前に成功を収めたハイパーメディアとして、Bill Atkinsonが1987年にAppleで開発したHyperCardがある。HyperCardとは、「カード」と呼ばれる文書を単位に相互リンクを張り、スクリプト言語HyperTalkによるプログラムを実行できるWebサービスである。

 

Web以前の分散システムの問題点

Webの成功の一因は、必要最低限のリンク機能だけを備えていたことと考えると、Web以前のハイパーメディアの問題点は、複雑さにあったと言える。

 

3 Web以前の分散システム

集中システムと分散システム

最も初期のコンピュータは、科学技術計算などの専用目的で作られていた。その後、1960年代にメインフレームが開発され、1つのコンピュータが複数の目的に利用できるようになった(集中システム)。1970年代以降、コンピュータの小型化かつ高性能化が進み、複数のコンピュータを組み合わせて処理を分散させる方法が考案された(分散システム)。

 

RPC-他のコンピュータの機能を利用

分散システムを実現するためには、各サーバが提供する機能を他のサーバやクライアントから呼び出せる必要がある。RPC(Remote Procedure Call)は分散システムを実現するための技術の1つで、リモートのサーバで実行しているプログラムをクライアント側から呼び出すことができる。例えば、Sun MicrosystemsのSunRPC(ONC RPC)やアポロ、IBMとDECが共同開発したDCE(Distributed Computing Environment)がある。

 

CORBA、DCOM-分散オブジェクトへの進化

RPCとは関数を呼び出すしくみである。しかし、現代的なプログラミング言語はほとんどオブジェクト指向機能を備えている。そこで、オブジェクト自体をリモート側に配置する分散オブジェクト(Distributed Object)という技術が考案された。その代表例がCORBA(Common Object Request Broker Architecture)や、Microsoftが開発したDCOM(Distributed Component Object Model)である。CORBAやDCOMは非常に複雑な仕様であり、相互に互換性がなかったため普及しなかった。

 

Web以前の分散システムの問題点

RPCは現在でもNFS(Network File System)などの分散システムの実装に使われている。しかし、以下の4つの問題があるため、より大規模な異種分散環境では使われていない。

  • 性能劣化:ネットワーク越しの関数呼び出しは、同一プロセス内で関数を呼び出すのに比べて何倍もの時間がかかる
  • データ型変換の問題:プログラミング言語ごとにサポートするデータ型が異なるため、複数の言語が混在する環境ではデータ型の変換時に問題が発生する
  • インタフェースバージョンアップ時の互換性の問題:機能追加に伴ってサーバのインタフェースを更新した場合、古いクライアントに対して下位互換性を保てない
  • 負荷分散の問題:一般にRPCベースのシステムは、サーバ上にクライアントのアプリケーション状態を保存する。そのためサーバ間でアプリケーション状態を共有しなければならず、多数のサーバで負荷を分散することが難しくなる

 

4 Webの誕生

1990年11月12日、スイスのCERN(European Organization for Nuclear Research、欧州原子核研究機構)で働いていたTim Berners-Leeが、ハイパーメディアを用いたインターネットベースの分散情報管理システムとしてWebの提案書を書いた。Beaners-Leeは翌日から実装を開始し、その年のクリスマス休暇に最初のバージョンのブラウザとサーバを完成させた。

Webの普及を一気に押し進めたのが、1993年にイリノイ大学のNCSA(National Center for Supercomputing Application、米国立スーパーコンピュータ応用研究所)が公開したブラウザMosaicである。Mosaicは本文にインラインで画像を混在させることができ、現在のブラウザの源流になっている。

 

ハイパーメディアとしてのWeb

Webはインターネットを使ったハイパーメディアとして設計された。メリットは、不特定多数の情報をリンクさせ合うことができ、システムを大規模化しやすいことである。反対に、情報の集中的な管理が難しく、リンク切れを起こしやすいというデメリットがある。Webが実現しているリンクは、シンプルな単方向リンクだけであることが特徴である。

 

分散システムとしてのWeb

Webでは世界中のユーザが世界中のWebサービスを利用できる。各ユーザのコンピュータ環境は特定のOSやハードウェアに統一されておらず、様々なブラウザやデバイスから1つのWebサービスにアクセスできる。

 

5 Webの標準化

Webの仕様策定

Web以前のインターネット標準はすべてIETE(Internet Engineering Task Force)のRFC(Request for Comments)として定められてきた。しかし、Webが急速に普及してしまったため、各社の実装がバラバラで相互運用性にかける状態が発生した。そこで、1994年にBerners-Leeを中心としてW3C(World Wide Web Consortium)が設立された。W3Cでは、HTML、XML、HTTP、URI、CSS(Cascading Style Sheets)などの標準化作業が行われた。

 

RESTの誕生

REST(Representational State Transfer)とは、Roy Fieldingが提唱したWebのアーキテクチャスタイルで、Webの成功要因の研究から生まれた概念である。つまり、HTTPはもともとハイパーテキストを「転送」(Transfer)するためのプロトコルだったが、実際にはハイパーテキスト以外の様々なものを運んでいる。それは、「リソースの状態」(Resource State)の「表現」(Representation)だという主張である。

 

様々なハイパーメディアフォーマットの誕生

Webの普及に伴い、HTML以外のハイパーメディアフォーマットが誕生した。例えば、HTMLに様々な意味を持たせることのできる技術としてmicroformatsが登場した。また、Webページの新着情報をサーバで配信し、専用のプログラムでそれをチェックするためにRSS(RDF Site Summary, Rich Site Summary, Really Simple Syndication)が提案された(後にAtomが標準化される)。さらに、HTMLやAtomより単純なデータフォーマットとして、デファクトスタンダードになったものがJSONである。

 

6 Web APIをめぐる議論

SOAPとWS-*

SOAPとは、RPC/分散オブジェクトグループ(Webをプログラムから利用できるように拡張しようとする勢力の1つ)の動きの中で最も基本的なプロトコルである。SOAPは、HTTPをアプリケーションプロトコルではなくトランスポートプロトコルとして扱い、HTTPの上で独自のメッセージを転送する。

WS-*とは、WS-Security、WS-Transaction、WS-ReliableMessagingなどの周辺仕様群のことで、W3CやOASIS(Organization for the Advancement of Structured Information Standards)に提案された。しかし、同じような仕様が複数乱立してしまい、各社が標準化競争を引き起こしてしまった。

 

SOAP対REST

Fielding(SOAP)と大手ベンダー(REST)の競争では力の差は歴然としていたが、徐々にFieldingの意見に賛同する人たちも現れてきた。その代表格がMark BakerとPaul Prescodである。

 

RESTの誤解と普及

RESTの誤解の最たるものは、「RESTはおもちゃ」というものである。シンプルなRESTではセキュリティや信頼性が求められる基幹システムは作れない、という侮辱の意味が含められていた。

しかし、2002年に登場したAmazon WebサービスやGoogleによって、REST形式のWeb APIが普及していった。2004年から始まったWeb2.0で重要だったのは、マッシュアップ(Mashup)である。マッシュアップとは、いろいろなWeb APIが提供する情報を組み合わせて1つのアプリケーションを実現する方法のことである。マッシュアップでは手軽さが求められたため、Web APIが提供するリソースをHTTPやURIで簡単に操作できるRESTスタイルの方が受け入れられたのである。

 

SOAPとWS-*の敗因

SOAPとWS-*の敗因として、著者は以下の2つのことを挙げている。1つは複雑な技術の継承であり、もう1つは各ベンダーの利害調整が手間取ったという政治的な理由である。

 

7 すべてがWebへ

RESTが普及していくと同時に、Webはインターネット全体を覆っていった。この背景には、Ajax(Asynchronous JavaScript and XML)やCometなどの技術革新がある。これらの技術により、ユーザインタフェースと使い勝手が向上したのである。

 

最後に

ハイパーメディアシステムでは、MemexやXanaduといった情報検索システムから発展していったが、その複雑さからWebに落ち着いていった。分散システムでは、RPCやCORBAといったシステムが使われていたが、数を限定した均一なクライアントを前提としていたため普及しなかった。これらのことから、シンプルかつ多くの人に利用されたWebが、大きく普及していったことが理解できる。

次回は、Webのアーキテクチャスタイル(設計思想)であるRESTについて説明する。

Webを支える技術 -HTTP、URI、HTML、そしてREST (WEB DB PRESS plus)


「Webの歴史 ハイパーメディアシステムと分散システム」への2件のフィードバック

  1. Webの歴史が簡潔かつ明快にまとめられていて素晴らしいです。私の分野でも、とても良く似たことが10年遅れで繰り返されていますが、この記事を読んで今後の流れに確信が持てました。

    1. sk さん
      お役に立てたようで嬉しいです。
      私が行ったのは要約程度であり、著者の山本陽平氏の筆力の部分が大きいです。
      よろしければ著書をお読みください。

sk へ返信する コメントをキャンセル

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>