Microsoft.NETが目指す次世代情報環境とは?

2.HTTP/HTMLからSOAP/XMLへ


デジタルアドバンテージ 小川誉久
2000/11/15

Page1 Page2 Page3 Page4 Page5 Page6

 インターネットがここまで発展した大きな理由の1つは、それが誰でも使える開かれた通信規約をベースにしていたこと、そしてそれらの通信規約が非常にシンプルで、実装が比較的たやすく、また拡張性にも富んでいたということが挙げられる。現在一般的なWeb情報サービスは、クライアントであるWebブラウザと、Webサーバとの間で、HTTP(HyperText Transfer Protocol)と呼ばれるリモート・ファイル転送プロトコルを使用し、この手順に従ってHTML(Hyper Text Markup Language)と呼ばれるフォーマットのデータを交換することで実現されている。このHTTPは非常にシンプルかつ拡張性に富むプロトコルで、コマンドを表す文字列(「GET」や「POST」など)と、これに対する応答をやり取りしながら、サーバ・クライアント間でのデータ交換を実現する。コマンド文字列と、その応答をやり取りするという成り立ちとしては、電子メールの送受信で広く使用されるPOP/SMTPに近いが、HTTPではPOP/SMTPでは必須のユーザー認証なども省略できる(必要なら認証することも可能)。またHTTP自身は転送されるデータのフォーマットを規定せず(データの種類に依存するような機能も用意されていない)、送信データがどのように処理されるかは、完全にWebブラウザに一任されている。このためキャラクタ・コードからなる文字列であろうと、静止画や動画、音声であろうと、任意のデータをこのHTTP手順で送受信することが可能だ。実際、インターネットへの通信回線の高速化に応じて、文字や静止画ばかりでなく、こうしたさまざまなデータを駆使したWebページが広く使われているのはご存じのとおりだ。

 一方のHTMLは、ハイパーテキストによるリンク機能を備えたドキュメントを記述するためのマークアップ言語である。HTMLは、ドキュメント構造を論理的に記述するために開発されたSGML(Standard Generalized Markup Language)仕様をベースにしながら、高機能で複雑なSGMLの仕様を大幅に簡略化し、使い勝手を向上させたものだ。SGMLは、文書の論理構造を記述することを第一の目的として考案されたものだったが、代わりにHTMLでは、表現能力(文書の見映えを向上させるための能力)にかかわる機能が大きく強化された。たとえば、今ご覧いただいているページも、スタイル・シート(文字フォントや余白など、Webページでの組版スタイルを規定する機能)やHTMLの表(table)の機能を駆使して、組版的な処理を行っている。それでもなお、最終的なWebページの表示はブラウザに任されており、ブラウザの違いなどによって微妙に表示が異なる場合もあるが、度重なるHTMLフォーマットの拡張によって表現能力が大幅に向上されるとともに、こうしたブラウザの影響を最小限に留めてページ・デザインを行えるようになった。

HTMLの限界とXMLの出現

 このようにHTMLフォーマットは、Webの普及とともに、必要性に迫られながら主に表現能力を拡張してきた。これ自体は、HTMLが普及するための時代の要請だったのだが、この結果としてHTMLでは、文書の構造に関する記述(見出しや本文、ハイパーリンクなど)と、文書の見映えに関する記述(文字サイズや色指定など)が1つのHTMLファイルの中に複雑に混在する結果となってしまった。後に、文書の見映えに関する部分はスタイル・シートとして分離できるようになったが、これとて完全ではなく、現実にやり取りされているHTMLファイルのほとんどは、両者が渾然一体となってしまっている。

きれいに組版処理されたWebページ

画面は@ITのトップページ。このトップページでは、HTMLの表機能を縦横無尽に駆使することで、さまざまな組版処理を実現している。このようにHTMLは、見映えのよいページ表現するためならほぼ十分な機能を持つに至ったが、その代償として、文書構造をソフトウェアで簡単に見抜くことは困難になった。

 いわば見映えの改良は、人間にとっての見やすさや読みやすさの改良であった。しかしその代償として、HTMLデータは、文書構造とは無関係のタグだらけになってしまった。これによる最大の問題は、文書中に記述された情報をソフトウェアなどによって機械的に取り出すことが困難になった点だ。理屈を言えば、HTML文書中のどこかに必要なデータは存在するのだから、見映えに関する必要な情報を除去すればよいのだが、ページ構成はサイトによってもまちまちだし、仮に特定サイト向けにこのようなソフトウェアを記述したとしても、ページ・デザインが変更されると、ソフトウェアの変更を余儀なくされてしまう。

 こうしたHTMLの問題を克服し、Webページという限られた分野だけでなく、インターネット上で広く交換可能な標準文書仕様として開発されたものがXML(eXtensible Markup Language)である。このXMLもSGMLを父親とし、これをサブセット化した、いわばHTMLとは兄弟の関係にあるマークアップ言語だ。HTMLとXMLの違いをひと言でいえば、HTMLがページを人間に表現するための言語であったのに対し、XMLはソフトウェアなどによる機械的な文書処理をも可能にするために、文書の構造化を主目的とした言語だということだ。具体的にXMLは、DTD(Document Type Definition:文書型定義)と呼ばれる定義ファイルを文書とは別途用意し、この中で特定の目的に応じた独自のタグを定義できる。HTMLでは、各タグの意味や機能がHTML仕様として一意に決定されていたが、XMLでは、このタグを自分自身で定義することができる。つまり言語書式の自己拡張が可能なのだ。このDTDでは、XML文書中で使用されるエレメント(開始タグと終了タグの組み合わせ)や、文書中で使用可能なエンティティ(たとえば画像データなど、構造とは無関係な文書中のパーツ)などを規定する。このようなXMLの機能をうまく使えば、構造を犠牲にしない文書作成が可能になると同時に、組版情報などを文書データとは完全に独立させて持たせられるようになる。

XMLテクノロジを利用した分散オブジェクト環境を構築可能にするSOAP

 タグの自己拡張が可能という、ある意味では無限と思える拡張性を備えたXMLに対し、特定のアプリケーションやOSに依存しない、高い汎用性を備えたドキュメントの記述形式として、XMLは急速に注目を集めることとなった。IBMやMicrosoft、Oracle、Sun Microsystemsなど、コンピューティングをリードするキー・プレイヤーたちはいずれも、次世代ネットワーク環境における標準文書フォーマットとしてこのXMLの採用を決定しており、対応機能の製品への実装を進めているところだ。

 すでに述べたとおり、XML文書では、情報が構造化されて記述されているため、これをソフトウェアなどで読み取り、内容を把握することが容易である。つまりWebサーバが適切なインターフェイスさえ備えてくれれば、ソフトウェアがこれにアクセスし、必要な情報を無人で取り出せるようになる。これを可能にするために、米Microsoft社と米Userland Software社などが中心となって開発された通信プロトコル規格がSOAP(ソープ。Simple Object Access Protocol)である。SOAPは、下位プロトコルとしてHTTPなどを使用し、簡単なXMLベースのメッセージをやり取りすることで、RPC(Remote Procedure Call)ライクにリモート・マシン上のサービス・ルーチンを呼び出したり、オブジェクト(データ)にアクセスしたりできるようにする。

 下位プロトコルとしてHTTPなどの既存のプロトコルを使用する理由は、それらがインターネット/イントラネットで最も広く普及しているプロトコルの1つであり、ファイアウォールなどが存在する企業でも、そのまま利用できる可能性が高いからだ(たとえばHTTPが通過しなければ、Webは使えないことになる)。具体的にSOAPでは、たとえばHTTPプロトコルのPOSTコマンド(サーバに対してデータを送るためのコマンド)を使って、アクセスしたいオブジェクトを表わすXMLデータを相手に送り、そのコマンドに対する(HTTP要求の)応答として、目的のデータを含むXMLデータを受け取る。現在SOAPは、W3Cにおいて標準化が進められている公開仕様であり、特定のOSやプログラミング・モデル、オブジェクト・モデルなどには依存することなく、インターネットを舞台とした汎用的な分散オブジェクト環境を構築することができる。

XMLとSOAPで変わる次世代のWeb環境

 今述べたSOAP/XMLインターフェイスをWebサーバが備えてくれれば、人間の手を煩わせることなく、ソフトウェアが能動的にインターネット上にあるこれらのWebサーバを閲覧し、必要な情報を取り出し、分析し、アクションを起こせるようになる。具体的なビジョンや製品などには多少の温度差があるものの、MicrosoftやSun Microsystemsを始めとするインターネットのキー・プレイヤーたちが目指す次世代インターネットをひと言でいえばこういうことになるだろう。

 たとえば読者がWindows環境を利用しているなら、標準の検索機能([スタート]メニューの[検索]コマンド)を利用して、ローカル・ハードディスクやネットワーク上の共有ディレクトリに対し、特定の単語(たとえば「Microsoft」)を含む文書を検索することができる。しかしローカル・ディスクなどを検索したところで、見つかるのはせいぜいWebページのキャッシュ程度のつまらないものだろう。この検索コマンドがローカル・ハードディスクなどにアクセスして、ファイルを開き、文字列を含むかどうかを検出できるのは、それらが検索コマンドにとって制御可能な状態にあるからだ。ローカル・ハードディスクではつまらなかった検索処理も、相手がインターネットだとしたらどうだろうか。今度は運がよければ、「Microsoft」が開発中のソフトウェアに関する最新情報を見つけられるかもしれない。そんなもの、Yahoo!やGoogleなどの検索サイトを使えばいいじゃないかって? いやいや、文字列検索などは一例にすぎない。インターネット上の情報をソフトウェアで制御可能なのだから、たとえば前日の東京証券市場や、米NASDAQ市場、ニューヨーク市場の株価動向を分析して、あなたが今日買うべき銘柄を導き出すことができるかもしれない。

 話が少々脱線してしまったので、図を使ってここまでの話をまとめておこう。まずは既存のWebサイトとWebブラウザの関係を次に示す。

現在のWeb情報サービス

Webブラウザは、HTTP手順に従って、HTMLデータをWebサイト(Webサーバ)から受け取り、これを解釈してユーザーに表示する。見映えのするWebページを表示するというだけならこれでも十分だが、ユーザー・インターフェイスなどはWebサイトごとにまちまちで互換性はない。またHTMLでは、文書構造と書式に関するタグがファイル内に混在しており、ソフトウェアによる処理の自動化は困難である。

 既存のWeb環境では、Webブラウザは、HTTP手順でWebサーバにアクセスし、HTMLデータを受信してこれを解釈し、ユーザーに表示する。見映えのする組版処理やページへのグラフィックスの組み込み、入力フィールドを活用したインタラクティブなWebページを作ることは可能だが、ユーザー・インターフェイスなどはWebサイトごとにまちまちで、互換性はない。またHTMLでは、文書構造と書式に関するタグがファイル内に混在しており、これをソフトウェアで機械的に読み出し、その中から適切な情報を抽出するのは困難である。

 一方、次世代インターネットでは、WebサイトやWebクライアントが新しいSOAP/XMLインターフェイスに対応することで、それぞれが分散オブジェクトとして振る舞えるようになる。

次世代のWeb情報サービス

WebサイトやWebクライアントが新しいSOAP/XMLインターフェイスを備えることで、人間の手を借りることなくソフトウェア同士が会話をする分散オブジェクト環境になる。既存のHTTP/HTMLインターフェイスを残せば、既存のWebブラウザでサービスを受けることは可能だ。しかしWebクライアント自身もSOAP/XMLインターフェイスに対応することで、次世代のアプリケーションを実現できるようになる。

 このように必要なら、現在のHTTP/HTMLインターフェイスを残すことで、既存のWebブラウザを経由した情報サービスへのアクセスも可能である。しかしこの際でも、Webサイト(Webサーバ)同士は会話を交わし、互いに必要な情報を交換できるようになっている。またWebクライアント自身も新しいSOAP/XMLインターフェイスに対応することで、既存のWebブラウザにはない機能性を実現することが可能になる。


 INDEX
  [特集]Microsoft.NETが目指す次世代情報環境とは?
     1.インターネットの過去・現在・未来
   2.HTTP/HTMLからSOAP/XMLへ
     3.マイクロソフトが提唱する次世代インターネット・ビジョン、Microsoft.NET
     4.Web ServiceとWeb Application、Microsoft.NETの関係
     5.次世代インターネットの主導権を握るのは誰か?


 



Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間