Insider's Eye
マイクロソフトWebアプリケーション最新動向

コラム
ブラウザ間に残る非互換性の課題

Greg DeMichillie
2004/09/07
Copyright (C) 2004, Redmond Communications Inc. and Mediaselect Inc.

 Internet Explorer(IE)は何年かの間、急速な勢いで開発が進められ、その間はIEの新版がリリースされるごとに新しいAPIが登場していた。その後、クライアント・サイドのWebアプリケーション開発は落ち着いたものの、急速な開発の名残として、ブラウザのバージョンやAPIが過剰に存在していることが、IEのバージョン間、および各種のインターネット標準化団体が策定した標準との間に、非互換性の問題をもたらしている。

 1996年にリリースされたIE 3.0以来、MicrosoftのWebブラウザはどのバージョンも1つまたは複数のDocument Object Model(DOM)をサポートしてきた。DOMとは、クライアント・サイドのコード(通常はVBScriptやJScriptといったスクリプティング言語で書かれている)が、オブジェクト指向のインターフェイスを介して、文書のコンテンツを読み取ったり、には修正したりできるようにするためのAPIだ。例えば、開発者はHTML DOMを使えば、列数と行数などのプロパティを備えたテーブル・オブジェクトを介してテーブルにアクセスできるため、テーブルの列と行を定義する<TR>タグや<TD>タグを探すためにHTMLページのテキストを構文解析する必要はない。実際、DOMはそれぞれ1種類のAPIを定義し、ブラウザはしばしば複数のDOMをサポートする。

 だが新しいDOMが登場するたびに、Web開発者はそのメリットと、複数のブラウザで正しく機能するコードを書く難しさとを比較考慮しなければならなかった。World Wide Web Consortium(W3C)はHTMLを標準化する取り組みの一環として、機能性に応じて、各種のDOMを分類している(IEがサポートするDOMについては、表「WebクライアントのAPI」を参照)。

■Level 0
 Level 0 DOMは最初にNetscapeが開発し、その後、MicrosoftがIE 3.0に採用した。Level 0 DOMは正式にはW3Cによって標準化されていないが、その後もDOMの基盤として使われている。Level 0 DOMは画像やフォームなど、基本的なHTML機能へのアクセスを提供し、ユーザーが画像の上にマウスを置いたときにその画像の内容が変わるようにする、シンプルな「マウス・オーバー」のスクリプトにも対応できる。下位互換性を維持するために、IEのその後のバージョンでは、新しいDOMを採用する一方で基本のDOMのサポートも継続されている。

 ブラウザにできる限りの互換性を与えたいと考えるWeb開発者にとっては、静的なHTMLページを除けば、Level 0 DOMは依然として唯一有効な選択肢となっている。

■中間のDOM
 「ブラウザ戦争」の真っただ中で、NetscapeとMicrosoftはそれぞれインタラクティブなWebページをサポートするブラウザを投入した。Dynamic HTML(DHTML)と呼ばれるMicrosoftの新しいDOMでは、それまでシック・クライアント(サーバ側で実行するアプリケーションとデータをやりとりするブラウザや端末など)・アプリケーションでしか利用できなかったユーザー・インターフェイス(UI)が提供され、開発者はドロップダウン・メニューなどの新しいUI機能を追加できるようになった。DHTMLを使ってシック・クライアント・アプリケーション並みの完全なUI体験を提供している高度なWebアプリケーションの一例には、Outlook Web Accessがある。Microsoftの実装とNetscapeの実装は多くの点で共通していたが、両社のブラウザは相互に互換性を備えなかったため、Web開発者はどちらのブラウザをサポートするかを選択するか、あるいは使用されているブラウザの種類を特定したうえで、それに応じて処理を進められるようにするためのコードを書かなければならなかった。

■Level 1
 W3C Level 1 DOMは当初、XML向けに開発されたが、その後、HTML向けに改変された。Level 1 DOMは1998年10月にW3C勧告となったが(その後、2000年9月にアップデートされた)、バージョン6.0以前のIEではLevel 1 DOMは完全にはサポートされていない(IE 5.0は部分的にLevel 1 DOMをサポートしている)。主要な競合ブラウザの中では、MozillaのみがLevel 1 DOMのサポートを公言しており、OperaやAppleのSafariブラウザは互換性を保証していない。またしても、IEのバージョン間、およびIEと競合ブラウザ間でDOMのサポートの不一致が生じたわけだ。これによりWeb開発者が、すべてのブラウザで動作する高度なアプリケーションを構築することはほとんど不可能となった。開発者の中には、アプリケーションの対応ブラウザを数種に限定する向きもあれば、HTMLとDOMを使わず、代わりにMacromediaのFlashといった代替技術をアプリケーション開発の土台としている向きもある。

■Level 2以降
 Microsoftはその後、開発の重点を再びブラウザからWindowsやシック・クライアント・アプリケーションへと戻しているが、その間もW3Cの取り組みは進められてきた。DOMはその後、2つのアップデートがW3C勧告として採用されている。Level 2(2000年11月に採用)ではLevel 1 DOMにCascading Style Sheets(CSS)のサポートが追加され、Level 3(2004年4月に採用)ではXMLのサポートが拡張されている。Microsoftはこうした拡張機能をIEに採用する計画の有無やその時期については、まだ何も発表していない。

WebクライアントのAPI

 以下の図は、Internet Explorer(IE)がサポートするDocument Object Model(DOM)の推移を示している。

WebクライアントのAPIの変遷

 DOMは、HTML文書やXML文書を読み取ったり、編集したりするためのオブジェクト・ベースのAPIだ。

 1996年にIE 3.0がリリースされて以来、IEはクライアント・サイドのHTML向けに2つのプログラミング言語、VBScript(Microsoftのプログラミング言語Visual Basicの簡易版)とJScript(MicrosoftによるJavaScriptの実装)をサポートしている。

 IEがサポートする最も基本的なDOMは、W3C Level 0 DOMとしても知られているIE 3.0 DOMだ。このDOMは、HTMLページの各種エレメントへの基本的なアクセスのほか、HTMLページの修正を限定的にサポートする。例えば、開発者はLevel 0 DOMを使って、マウス・オーバーのトリガを記述できる。マウス・オーバーとは、ユーザーが画像の上にマウスを置いたときに、その画像の内容が変わるというもの。

 Microsoftは1997年、基本のDOMをDynamic HTML(DHTML)で拡張し、ドロップダウン・メニューなどのユーザー・インターフェイス・エレメントを構築できる、より完全版のDOMが完成した。DHTML DOMはW3Cによる標準化はされていないが、IEの最近のバージョンでも依然としてサポートされている。

 W3Cは標準化の取り組みの一環として、DHTMLと同じ機能性を備え、なおかつNetscapeなどの競合ブラウザに含まれる機能を統合したLevel 1 DOMを策定した。IE 5はこのLevel 1 DOMと部分的には互換性を備えていたが、Microsoftは2001年にリリースしたIE 6.0において、初めてLevel 1 DOMとの完全な互換性を実現した。


 INDEX
  Insider's Eye
  マイクロソフトWebアプリケーション最新動向(1)
  コラム:ブラウザ間に残る非互換性の課題
  マイクロソフトWebアプリケーション最新動向(2)
 
 「Insider's Eye」


Windows Server Insider フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Windows Server Insider 記事ランキング

本日 月間