米マイクロソフトが発表したInternet Explorerの仕様変更により,FlashやPDFなどを利用しているWebページは修正を迫られる。IEの仕様が変更されると,プラグインでコンテンツを表示する際に,ダイアログが表示され,使い勝手が悪くなってしまうのだ。対策は2通りあるが,現実解はスクリプトを利用する方法だ。
もちろん,表示されたダイアログの「OK」ボタンを押せば,Flashなどのコンテンツは問題なく動く。しかし,頻繁にダイアログが表示されると,サイトの使い勝手は著しく落ちてしまう。
変更理由は米国での特許訴訟
マイクロソフトが使い勝手を落としてまで仕様を変更するのは,米エオラス・テクノロジーズが「ハイパーメディア文書から自動的に外部アプリケーションを起動する分散ハイパーメディア手法」(US Patent 5,838,906)という特許に,IEの仕様が抵触すると訴えたため。この特許は米カリフォルニア大学が保有し,エオラスが独占的にライセンスを受けている。8月,米イリノイ州北部連邦地方裁判所が米マイクロソフトに損害賠償の支払いを命じた。
マイクロソフトは控訴を検討しており,訴訟の行方がどうなるかは分からない。しかし,マイクロソフトはIEの仕様変更を決定し,新しいIEを2004年春に提供する。10月10日には,ベータ版を公開した。
このため,多くのWebサイト管理者が,使い勝手を落とさないための修正を迫られることになってしまった。Flashを使ったWebアプリケーションの開発を手がけるセカンドファクトリーは,「仕様変更による影響を洗い出し,HTMLを修正する際のガイドラインを作成している。すでに一部のサイトの修正に着手した」(齋藤 善寛・取締役クリエイティブディレクター)。
マイクロソフトは2つの修正案提示
現在,マイクロソフトはIEの仕様変更後,ダイアログを表示しないでプラグインなどを起動する方法を2通り提示している。ともにHTMLを修正する方法だ。(1)外部データ(ファイル)を参照しないでコンテンツを表示させる,(2)外部ファイルとして用意したスクリプトにFlashなどのコンテンツを表示する処理を肩代わりさせる――ことである。「係争中なのでコメントできない」(マイクロソフト広報部)と詳細は分からないが,こうすれば特許を侵害しないと,マイクロソフトは判断したようである。
データをすべてHTMLに入れる
(1)の方法では,IE上で表示するFlashファイルやPDFファイルをBASE64でエンコードし,そのデータをHTML内に埋め込む(図2[拡大表示])。つまり,プラグインが呼び出すコンテンツ(ファイル)をあらかじめHTML内に格納してしまうのだ。
通常,コンテンツをブラウザ上に表示するには,HTML内でその所在(URL)を記述する。これにより,HTMLファイルの外部にあるファイルをプラグインで呼び出して表示できる。
(1)の方法は,FlashやJavaアプレットなどさまざまなコンテンツを表示する場合に使う「OBJECTタグ」だけに対応する。BASE64でエンコードしたコンテンツをOBJECTタグで囲めば,IEがそれをデコードして表示するのだ。
外部コンテンツを表示するために,「APPLETタグ」や「EMBEDタグ」を使う場合もあるが,これらには対応しない。理由は不明だが,Web関連の標準化団体World Wide Web Consortium(W3C)がAPPLETタグの使用をやめ,OBJECTタグの利用を推奨していることや,EMBEDタグを必要とするのがOBJECTタグ未対応の少数のブラウザだけだからだろう。
また,この修正方法はコンテンツ作成者の作業を煩雑にしてしまう。Flashファイルなどを修正するたびに,それをエンコードしてHTMLに埋め込まなければならないからだ。
現実解は外部JavaScriptの利用
現実的には(2)の対策を利用することになる。外部JavaScriptを利用する方法だ(図3[拡大表示])。
具体的な修正作業は次のようになる。まず,HTMLファイルからOBJECTやAPPLET,EMBEDなどの外部ファイルを読み出すためのタグを削除。代わりに,OBJECTなどのタグを出力するJavaScriptを別ファイルとして作成する。つまり,これまでHTML内に<OBJECT>と記述していた個所を,外部のJavaScriptファイルを読み込んでスクリプトを実行するための記述に置き換える。
自動変換ツールも登場
この処理を自動的に行う変換ツールを提供するベンダーもある。米マクロメディアだ。同社が提供する変換ツールは,PC上で動作するコマンド・ライン形式のものとGUI版の2種類がある。変換対象のHTMLファイルを指定すると,必要なJavaScriptファイルを自動生成するとともに,HTMLファイルに必要な処理を追加してくれる。11月末にベータ版を公開する予定である。