【しばらく編集不可モードで運営します】 編集(管理者用) | 差分 | 新規作成 | 一覧 | RSS | FrontPage | 検索 | 更新履歴

StoryOfXmlhttp - XMLHTTP の話。

目次

XMLHTTP の話。

この文書について

XMLHTTP の話。

もう Microsoft を辞めるんだ。そう思うと、自分のやったプロジェクトのことを すこし振り返りたい気分になる。 XMLHTTP の歴史なんてのは、聞いてもらっても面白いとおもう。

XMLHTTP は後に大ヒットとなった。 人々がそれに気付いたのは、Google の Google Suggest 機能 で使われているのを目にしてからだろう。 ページのソースコードを調べ、仕組みを探ったわけだ。 実のところ Google は以前から GMail で使っていたんだけれど、 GMail のソースはずっと複雑でわからなかったんだな。

それ以来、XMLHTTP と "AJAX" (Asynchronous Javascript And XML) 技法は ウォールストリート・ジャーナルや CNET などのニュースでとりあげられるまでになった。

本当の話をしよう。 GMail のクライアント側アーキテクチャは、 Exchange 2000 で実装された IE5 向け Outlook Web Access の大まかな設計に倣っている。 今は昔、西暦 2000 年から売り出されたものに。

XMLHTTP は Exchange 2000 のチームで産声を上げた。 私が Microsoft に入ったのは 1996 年の 11 月で、 その後 1997 春にレッドモンドへ移った。 最初は インターネット標準の仕事をしていて、それは Outlook の行く末に関するものだった。 具体的にいうと、ウェブサイトのメタデータについてのことだ。 "Web Collection" に関する初期の提案もそう。 さてある日、Thomas Reardon が会議室に私を呼び、 入社したばかりの Jean Paoli という男を紹介してくれた。 彼は XML とかいう目新しいことをやっていて、 その XML はいつか大化けするという人もいた。 (この頃はなぜだかよくわからなかったけれど。)

XML についてざっと調べた私は、自分の "Web Collection" の提案に XML をかぶせた。 そして W3C に "Web Collection using XML" として 提出した。いま思い返せばひどい提案だった。 ただ一つ言わせてほしい ... 当時のウェブはアツい技術が "プッシュ" だったし、 私の知る限り XML のことを議論している公式の文書はこれが最古のものだ。

そんな経緯もあって、私は WebDAV 標準をやっていた Microsoft の同僚のところに行き、 WebDAV でもデータ通信のモデルとして XML を使うよう熱烈に勧めた。 それから間もなく私は Exchange のチームに入った。 Exchange 2000 を使った Microsoft 製 WebDAV サーバを仕立て上げるのが仕事だった。 (実装はふつうに IIS を使ってファイルシステムを見せる DAVFS と、 Exchange のデータを使う DAVEX がある。)

いつだかはっきりとは覚えていないけれど、 Exchange 2000 上で Outlook Web Access の開発が始まった。 私がチームに入っておよそ一年後だった気がする。1998 年の後半くらい。 とにかく Exchange 2000 (コードネーム "Platinum") プロジェクトの マイルストーンを一つか二つこなしたあたりのことだった。 私達は OWA 関係の問題をなるべく考えないようにしていた。 旧バージョンがなかなかのハックだったからだ。 その旧バージョンは前のイテレーションで作られたもので、 ASP を使って勢いに任せに作られていた。ひどい出来だった。 しかも性能やスケーラビリティに深刻な問題を抱えていた。

あるとき、Brian Valentine (当時の Exchange チームの親玉) が私達を呼んだ。Exchange 2000 向けの OWA をなんとかしろという。 二種類の実装が始まっていた。 一つは素直なウェブページによるもので、 まっとうな HTML を使いながらなるべく効率を上げようというもの。 もう一つは DHTML を使ったいかすユーザーインターフェイスを作ろうというもの。 Jim Van Eaton と Bob Gering の作った DHTML 版のデモを初めて見たときはかなり驚いた。 しかしそれは基本的に form のハックだった。サーバにポストバックするのだ。 だから旧バージョンと同じくスケーラビリティや動的なデータに関する問題があった。

その週末に私は Visual Studio を起動し、 やがて XMLHTTP となるものの初版をでっち上げた。 この初期バージョンは非同期サポートもなく、とても荒削りなものだった。 それでも Jim と Bob が Exhange 2000 の持つ WebDAV/XML サポートを叩くには 十分だった。DHTML による OWA の実装はぐっと加速した。

次回予告 -- 実際のところどうやって XMLHTTP を出荷したか。

このいかすコンポーネントひとつのおかげでサーバは叩けるようになったけれど、 私達はまだこれを売り物で使える立場にはなかった。 Outlook Web Access の基本的な売りは、 どの計算機からでもブラウザがあればメールをとれるというもの。 ActiveX コントロールのダウンロードがいるとなったら、この売りを損ねてしまう。 そこで次のステップはこいつを Internet Explorer に載せることだった。

まずやるべきは、コードを製品レベルまで高めることだ。 私は OWA 開発者の一人、Shawn Bracewell を捕まえて仕上げを頼んだ。 優秀な開発者がよくやるように、彼はさっさと私のコードを捨て、堅牢な形で書き直した。 非同期サポートやエラー処理、そのほか色々もついた。

そのとき、 IE プロジェクトはベータ 2 をわずか二週間後に控えていた。 リリース前の最後のベータだった。 古き良き時代、リリース間近に超重要な機能を詰め込めた頃の話だ。 それにしたってこれはギリギリだった。 私は MSXML ライブラリが IE と一緒に出荷されるのに気付いた。 XML チームにはつてがあった ... 私は Jean Paoli に連絡した。 当時は彼がそのチームを率いていたのだ。 すみやかに話はつき、アレは MSXML ライブラリの一部として出荷できることになった。 これが本当の理由。XMLHTTP の名前はここに由来している ... ほとんど HTTP で XML 固有なものがなくても、XML を名乗れば一番簡単に口実ができた。 (それと ... 当時の XML はホットな技術だったから、 コンポーネントを売り込むのにも都合が良かった。)

Shawn と XML チームの Chris Lovett が統合作業を進めているあいだ、 私は残りの "ship it" 作業を片付け、IE チームを率いる Joe Peterson から サインオフ(出荷の確定)をとりつけた。私達は手早くセキュリティ・レビューを済ませた。 といっても当時は出荷するものが何であれ、 脆弱性の深刻さや種類を本当の意味で理解している人は誰もいなかった。 ベータ版の品質についてはこう考えていた。 「OWA 以外は誰もあれを呼び出そうとはしないだろう。 だからベータ版にバグがあったとしても、最悪その機能が使えなくなるだけさ。」 ベータの一週間前に私達はそれをチェックインし、ビルドに組み込んで試した。 なにもかも順調だった。

ベータが出荷されて OWA チームは ベータ版 IE5 で作業ができるようになり、 Shawn は IE5 の出荷日までに多くのバグを修正した。 Exchange 2000 の出荷までにはまだ 1 年半あった。 このときは目当てがあった。必要なモノが広く普及するのはそのくらい後だろう。

それを世に出すにあたり、私は上で述べた以外にも多くの人々に助けられた。 (忘れてしまっている人もいると思う。) Karim Battish と Sean Lyndersay の二人には、 仕様を更新するのに何度も助けられた。 (多くは実装が終ってから書いたけれど、仕様なんて時にはそんなものだ。) パートナーのチームと仕事をする時も手伝ってもらった。 Chris Tyner はテスト側で重要な役割を果たしてくれた。 彼の情熱と根気強さがなかったら、私達は穴だらけの製品を出荷していたことだろう。

Chris がつくったスゴい HTML ページを思いだす。 それは自由に HTTP リクエストを送信できる UI だった。 たしか "DAVUI" と呼ばれていたとおもう。 標準の HTTP 1.1, それに WebDAV と Exchange のリクエストすべてに テンプレートが用意されていた。 それまでに使っていたツール (伝統的な Win32 の EXE) と違い、 ユーザは .htm ファイルをひとつコピーすればどのマシンでも、 リモートからでもふつうにそれを動かすことができた。すばらしい出来だった。

CNET の新しい記事が AJAX, Dynamic HTML + JavaScript + XMLHTTP の開発手法について書いている。 記事では AJAX が Flash や Microsoft の Avalon/XAML から価値を消し去るのかと問いかけている。 過去四年間 Avalon の仕事をした経験からいうと、 この手の意見は Avalon や マネージド・コードの価値をわかっていないと思う。 Outlook Web Access を作るのは、ほんっとにすっっごく大変だった。 にもかかわらず出来は本物(Outlook)と比べものにもならない。 オフラインにはできないし、うまい方法で複数アカウントを扱えないし、 UI もそれほどぱっとしない。 これは OWA の本質、どこからでも使える価値を損ねはしない。 けれど DHTML 路線のプログラミングモデルや保守性は アプリの規模が大きくなるほど厳しくなっていく。 多くの Google 製アプリケーションの美点は、 きっちり用途を絞りながらウェブの特性を生かしているところだ。 この路線が Office のようなアプリケーションを作れるところまでスケールすると 考えるのは違う気がする。 Avalon のプログラミングモデルは、 コンポーネント化や保守性という点で大きな一歩を踏み出した。 加えて先進的なグラフィクス、ユーザーインターフェイスや使い勝手を備えている。 カリカリにチューンしたウィンドウズ用のコードを使うことだってできるのだ。

さて、この話から何がわかるだろう。 出荷することの大切さ、何か成功するために必要な忍耐強さは強調したい。 報道などを見ていると、Avalon の価値を登場時のアプリの数で測ろうとしているようだ。 まったくばかげている。この種の大きな変化にどれだけ長い時間がかかるものかわかっていない。 考え方を変え、巨大で新しいプラットフォームで開発し、それを学ぶ必要があるのだ。 Microsoft は来年 Avalon を出荷する。Microsoft も業界もそれを迎え入れる。 長期的な視野でみれば、5 年後には普通に使われるものになるだろう。 逆にいうと、はっきりと勢いが見えるまでに数年かかるのも確かだろう。

Microsoft で働くのは素晴しいことだった。今もそうであって欲しいと思う。 長期的なビジョン、 バージョン 3 でやっと主流になる、その時までコミットする力。 スタートアップのように常に適応し、効率的かつ速やかに出荷すること。

少しだけ宣伝。私が今やっているネット関係のプロジェクトについて。 この飛行機の写真(訳注:リンク切れ)みたいに AJAX ベースでズームや変更ができる画像ライブラリや カレンダーでイベントをまとめる calendardata.com のサイトなどに手をだしているところ。

追記 2007/1/31

今週 Adam Bosworth の講演があり、 eWeekSlashdot などのメディアで取り上げられている。 Slashdot のコメントでは、 彼が初期の DHTML と Ajax について話したことで、 Ajax を発明したというくだりをとりあげている。 そして彼の主張が私が書いたこの XMLHTTP の話と食い違っていると指摘している。

どちらも正しい、と言いたい。 紛らわしいのは、 Ajax という時に多くのものを指しているからだろう。 基本的な dynamic HTML の基盤。XMLHTTP と非同期通信。 これら全てを組み合わせるやりかた。

アダムと彼のチーム (特に Rod Chavez と Michael Wallent、それに他の大勢の人々。 私の忘れている重要人物もいるだろう。) は Dynamic HTML の部分を発明した。 それは同じ時期に Netscape がやっていたものより数キロ先を行っていた。 私は XMLHTTP のピースをはめただけだ。 そして他の皆と協力しあい、ふたつを組合せた最初の大きなアプリケーション (Outlook Web Accesss) を作りあげた。 早い段階からの Trident/IE チームによる協力がなかったら、こんなことはできなかったと思う。 なにより絶対に間違いないのは、 Adam や彼の同僚が それらを組み合わせる思想の上にビジョンを持っていたことだ。 (当時は weblications と呼んでいた。)

そうは言っても、彼らが実際にアプリを作ることはなかったし、 実際に作ろうとする行動があったからこそミッシング・ピースに気付くことができた。 それが XMLHTTP に繋っている。 そのほかの Trident や XML チーム自身が切り拓いた成果についても同じことがいえる。 Adaptive Path の人々についても触れておきたい。彼等はいい名前(Ajax)をつけてくれた。 当時の Microsoft で、私達はこの技術を広める好機を逸した。1999 年のことだ。 それはまた長い話だから、別の機会に譲ろうとおもう。 私が思い知ったのは、 "全てが工学だ" という部分のある技術的なコミュニティであっても、 マーケティングや自分のアイデアを伝えるのは重要だということ。私達はそれを欠いていた。

Adam はなぜ 1997 年時点で Ajax が流行らなかったのかについても議論しているけれど、 重要なことを見落していると思う。そう、当時はネットワーク接続が遅過ぎた。 計算機自身も Javascript も遅過ぎた。(標準的なマシンは 200 MHz だったわけだから。) IE4 に載っていた最初のバージョンの DHTML は、 その ... まともに使うには問題があった。 (OWA が新しいバージョンを必要とする理由は一つだけではなかった。) けれど、そもそも開発者のコミュニティがそう速やかに新しいテクノロジへ移行するとは思えない。 先に書いたとおり 3-5 年はかかる。そう驚くことはない。 1996-1998 年あたりに少しずつ開発されたものが 2000-2002 年に広く使われはじめ、 2005-2006 年に大ヒットしたわけだから。

著作権情報

 2005 - 2007 AlexHopmann.com. All Rights Reserved.