Webの基本的な仕組み(2)
本日も引き続き、 Webの仕組みについて解説してまいります。
ただ、今回は仕組みというより歴史的な要素の方が強いかもしれません。
そもそものインターネットの起源の話から始めましょう。
1969年 「AR PANET」という米国内の大学や研究機関をつなぐネットワークが誕生したのがその始まりです。当時は現在のようにリアルタイムで通信するTCP/IPではなく、バケツリレー式のUUCPによる転送もあるなどしたため、メールを送信するにもタイムラグがあるといった状況だった模様です。
そんな中、1945年 Memexという情報検索システムについて構想が誕生しました。この構想に影響を受けた Ted Nelsonが下記2つの構想を提案します。
1) ハイパーメディア
→ 文書としての情報の集合体。
2) ハイパーテキスト
→ 文書だけでなく、音声が画像も情報媒体の構成要素として扱われる情報。つまり、
1)に加えて、音声や画像も情報として取り扱えるようになったということ。
さらに、時は流れ、1960sになります。この頃まではまだ、1台のホストコンピュータが周辺のコンピュータを管理する一元管理の時代でした。しかし、1970sになると、各コンピュータの処理速度などの能力が向上したことで、分散化が進みます。
その潮流の中で、RPC-分散システムを実現するための技術の1つ-が普及し始めます。
しかし、このRPCは比較的小規模のネットワーク環境である必要があり、地球規模の大規模な分散型ネットワークを構築するには不向きでした。理由は4つに分けられるようです。
1) 性能劣化の問題
→ ネットワークを超えた呼び出しをする場合は、その回数が増えるごとに加速度的に時間が必要になる。※ LANではなく、WANにまで拡張しようとした時、ネット回線の速度が遅くなるようなイメージという理解。
2) データ型変換の問題
→ プログラミン言語ごとに、サポートのデータ型が異なるため、互換性に問題が生じる。
3) インターフェースバージョンアップ時の互換性の問題
→ バージョンアップすることで、古いバージョンとの互換性がなくなってしまう。
4) 負荷分散の問題
→ サーバ間でアプリケーションを共有しなければならず、サーバで役割分担してアプリケーションを保存することが難しい。
そんな中、1990年についにWebの原型ともいうべきシステムが誕生しました。
CERNにて勤務していたBerners-Leeという研究員が Webの提案書を書き、最初のバージョンのブラウザとサーバを完成させました。これによって一気に世界中にWebが浸透し始める。さらに、1993年、NCSAがブラウザMosaicを公開したこともあり、一気に広まることになりました。
RPCは限定された数と種類のクライアント対象のサービスには有用だった。しかしながら、オープンなネットワーク環境には向いていないため、次第にその有用性を失ってしまいました。対して、Webは異なるOSやハードウェアからブラウザを通じて1つのWebサービスにアクセスすることができます。これはHTTPというプロトコルが存在することに依拠しています。
こうして、1990s半ば、MicrosoftやIBMなどがインターネット事業に参画することで、一層普及し、さらに標準化が始まりました。しかし、Webの市場への流通があまりに迅速だったため、それを支える技術側、つまりHTTP、URI、HTMLの方が成熟度が追いつかず、上記3つの間の互換性が無くなってしまうという新たな課題も浮上し始めました。さらに、1990s後半〜2000s前半にはWebの用途が多様化したことに伴い、プログラムの自動処理を行いたいという要求が出始めました。
こうした中、2000年、1人の大学院生がWebについての思想を体系化し、RESTという名称の理論を作り上げました。しかし、後年競合するSOAPという理論が登場しました。この2つの理論は覇権を握るべく、論争を繰り広げていくことになります。しかし、2002年にAWSの理論体系にRESTが採用されることにより、一気にREST優位となります。そして、2004年にWeb2.0の流れの中でGoogleやAmazonといった巨大企業がWebによるAPIを提供し始めることにより、RESTが勝利する形で論争が終結しました。
以上、長文でしたが、解説を終わります。ご覧頂きありがとうございました。
次回以降もよろしくお願いいたします。