Q:Flashコンテンツを掲載したWebサイトの中には,コンテンツ中の「再生ボタン」をクリックしないと動画などが再生されないものがあります。昨日まで「再生ボタン」は1回クリックすればよかったのに,今日からは2回クリックしないと再生ボタンが押せなくなりました。どうしてですか。
A:マイクロソフトが4月12日に公開したセキュリティ・パッチ「Internet Explorer用の累積的なセキュリティ更新プログラム(KB912812)」を適用することによって,Internet Explorerの仕様が変更されたためです。Webサイト側での対応(JavaScriptの追加)が必要です。
【解説】マイクロソフトは米Eolas TechnologiesとのWebブラウザ特許侵害訴訟への対応のために,2006年4月の月例セキュリティ・パッチ配布にあわせて,Internet Explorerの仕様を変更した。
Eolasの特許とは「ハイパーメディア・ドキュメント内で,外部コンテンツを自動的に呼び出し,埋め込みオブジェクトとして表示し,(ハイパーメディア・ドキュメントとの)相互作用を提供する方法」というものであった。Eolasの主張によれば,Flash PlayerやWindows Media PlayerのActive Xコントロールのように,Webブラウザ内で自動的に呼び出され,さらに「再生ボタン」や「停止ボタン」のような「相互作用」を提供するような機能が,特許に抵触するという。
今回のInternet Explorerの仕様変更は,Eolasの特許を回避するためのものである。マイクロソフトは今のところ,「2006年6月30日まで仕様変更を無効化する」というパッチを配布している(配布サイト)が,2006年7月以降はこの仕様変更を完全に固定化する。
今回の仕様変更を具体的にみてみよう。
対話的なインターフェースは「アクティブ化」が必要に
今回のパッチを適用すると,Internet Explorerを使ってHTML文の「APPLET」「EMBED」「OBJECT」要素でActiveXコントロールを呼び出すWebページにアクセスすると,3種類の確認画面が表示されるようになる。ユーザーが確認画面をクリックして,Active Xコントロールを「アクティブ化」しないと,Active Xコントロールの機能を使えない場合がある。
Flash PlayerやWindows Media Playerのような,IE上でユーザーに対話的なインターフェース(ユーザーがキーボードやマウスで操作できるインターフェース)を提供するActive Xコントロールを呼び出した場合,そのコントロールの部分にポインタを置くと「このコントロールをアクティブ化して使用するにはクリックしてください。」というポップアップが表示される(写真1)。ここで画面をクリックすると,キーボードやマウスによる操作(対話的な操作)ができるようになる。
また,マウス・ポインタでなくTabキーを使ってActive Xコントロールのある場所にフォーカスを移動させた場合,「このコントロールをアクティブ化して使用するにはSpaceキーまたはEnterキーを押してください。」というポップアップが表示される(写真2)。ここでSpaceキーやEnterキーを押すと,対話的な操作ができるようになる。
QuickTime PlayerやShockwave Playerのような,「GetKeyState」「GetCursorPos」といったWindows API(アプリケーション・プログラミング・インターフェース)を使うActive Xコントロールを呼び出した場合は,独立した確認画面が表示される(写真3)。マイクロソフトの資料によれば,QuickTimeのベンダーである米Apple Computerや「Macromedia Shockwave Player」を提供する米Adobe Systems,「Virtools Web Player」を提供するフランスVirtoolsなどが,この問題に対応するためにアプリケーションを修正中だという。
確認画面はJavaScriptで回避可能
このような警告画面を出ないようにするためには,Webサイトの側でJavaScriptを使ってActive Xコントロールをアクティブ化する必要がある。Internet Explorerの機能によって自動でActive Xコントロールがアクティブ化されるのは特許に抵触するが,第三者によるスクリプトがアクティブ化するのは問題がない,ということなのかもしれない。
このようなJavaScriptの記述法は,マイクロソフトが公開する技術資料「ActiveX コントロールのアクティブ化」に記載されている。警告画面を出したくないWeb開発者は,参考にしていただきたい。