セキュリティ上の問題が相次ぎ指摘されるInternet Explorer(IE)に代わる選択肢として,Mozilla[用語解説]やOpera[用語解説]などが注目されている。そこで,日経オープンシステムの最新号で「MozillaとOperaでIEを置き換える」という記事を企画し,執筆した。

 記事は,主に企業システムの開発者や企業の運用管理者向けの内容だが,執筆にあたっていろいろなサイトを複数種類のWWWブラウザでアクセスしてみて,「“もったいない”サイト」が予想以上に多いと感じた。

 “もったいない”と思ったのは,大きく3つある。せっかく良いコンテンツを用意しているのに,(1)単純なHTMLの記述ミスで無意識のうちに対応ブラウザを制限してしまっている,(2)ブラウザの設定による挙動の違いを把握していないため,想定外の挙動になってしまう,(3)対応ブラウザを明記していないことが使い勝手を落としている――である。

ブラウザ間の非互換は少ないが・・・

 ActiveXコントロールやDynamicHTML[用語解説] のようなベンダー独自の技術に関しては,当然ブラウザ間の非互換が存在する。しかし,HTMLやJavaScriptの標準的なものについて調べた結果,IE,Mozilla,Opera間の非互換は,当初の予想に比べてかなり少なかった。表示や挙動が多少違っても,数年前にIEとNetscape Navigatorの違いを調べたときに比べ,ほとんど問題にならない程度だった。

 しかし,HTMLやJavaScriptしか利用していないのに,MozillaやOperaで何も表示されないサイトがいくつかあった。原因は,HTMLやスタイルシートの記述ミスである。例えば <frameset> タグで,「<frameset cols="0" rows="50%, 50%">」と記述してあるとMozillaで何も表示されなくなる。Operaでも同様の問題が起こることがある。

 このようなサイトは,筆者が見つけたもの以外でも少なからずあるようだ。実際,2001年にもじら組が人気サイトを対象にMozillaで問題なく閲覧できるかどうかを調査した結果でも,問題が出る原因として,HTMLやスタイルシート,JavaScriptの記述などを間違えているサイトが多いことを指摘している(詳細は「ウェブテスト・プロジェクト」を参照)。

 「IEしか相手にしない」というポリシーのサイトがあってもいいだろう。しかし,個人的には「できるだけ多くのブラウザに対応する方が良い」と思っているし,単にHTMLの記述を間違えただけで無意識のうちにアクセスできるブラウザを制限してしまっているのは,もったいないと思う。

 前述したタグの記述ミスは,MozillaとOperaの特定バージョン,ビルドに依存する現象なのかもしれない(筆者が使ったのはMozilla 1.0 Build ID:2002053012,Opera 6.03 for Windows 日本語版 Build 1107)。1つめの記述はIEとOperaで,2つめはIEとMozillaで正常に表示されるだけに,すべてのブラウザで確認しないと間違いに気付かない恐れがある。

 すべてのブラウザで確認することは物理的,時間的に大変かもしれないが,せっかくのコンテンツをより多くの人に見てもらうために,是非励行したい。

 複数ブラウザへの対応を実現するには,W3C(World Wide Web Consortium)の標準に準拠した記述を心掛けたい。W3C準拠といっても,ブラウザごとに対応レベルや実装は微妙に異なり,見栄えや動作を完全に統一するのは難しい。しかし,MozillaやOperaを含め,ほとんどのブラウザはW3Cに準拠した形で開発が進んでおり,W3Cの標準に従うことが,多くのブラウザに対応する近道になるはずだ。もじら組でもWeb標準普及プロジェクトというWebページでW3Cに準拠したコンテンツの作成を呼びかけている。

MozillaやOperaの独自機能を把握しておかなければ・・・

 もったいないと思った2つめは,MozillaやOperaはユーザーの設定次第で挙動が変わることに気付いていないだろうと思われるケースがいくつかあったことだ。筆者も,いろいろと設定を変えながらアクセスして気付いた。

 例えば,Operaでアクセスするとどうしても先に進めないサイトがあった。リンク元のURLに関する情報を提供する環境変数HTTP_REFERERを「無効」に設定しているのが原因だった。IE,Opera,MozillaともデフォルトではHTTP_REFERERは有効だが,Opera,Mozillaは設定で無効にできる。しかもOperaの設定は非常に簡単だ。そして,特定のリンク元以外からのアクセスを拒否しているサイトでは,無効にすると先に進めなくなる。

 なお,JavaScriptのdocument.referrerは,Operaでは設定に関係なく常に有効である。MozillaはHTTP_REFERERと同じ設定で無効にできるが,設定方法は複雑だ。

 ブラウザの判別に使う環境変数HTTP_USER_AGENTやJavaScriptのnavigator.userAgentも,ユーザーの設定で挙動が変わってしまう。例えばOperaではIEやMozillaに偽装することが可能である。このため,せっかく複数のブラウザに対応しようとして,これらの値を参照してブラウザごとに処理を変えていても,想定した動作をしないことがありえる。ただ,偽装しても値の一部には必ずOperaの文字列が入る。まずはそこを確認すれば,この問題は回避できる。

 Mozillaでも,Operaよりも設定は複雑だが,HTTP_USER_AGENTやnavigator.userAgentを変更できる。しかも任意の値に設定できるので,Operaに比べて対応は難しい。これらは本来ユーザーの使い勝手やセキュリティを高めるために実装された機能だろうが,「アクセスできない」「うまく表示されない」といったユーザーの問い合わせがあった場合,こうした機能を知っていると知らないとでは問題の切り分け時間に大きな差が出てくるだろう。

未対応のWWWブラウザは明記してほしい

 3つめに感じたのは,特定のWWWブラウザでしかアクセスできない旨を記述していないサイトが,非常に多いということだ。特定ブラウザにしか対応しないのがポリシーであっても,明記してほしい。顧客満足度を上げるだけではない。明記していないと,ユーザーは不信に思って問い合わせをしたり,アクセスを何度も試みたりする。結果,問い合わせ件数やサーバーの負荷が増えて悪循環になる。

 これはWWWブラウザに限らず,JavaScriptやActiveXコントロール,Javaアプレットなどに対しても同じである。これらの機能はセキュリティ上の問題になりやすいこともあり,無効にしているユーザーは多い。セッション管理に使うCookieも含め,有効にしていないとサイトを閲覧できないような場合はその旨を説明しておくのが丁寧である。

 ただ,その場合は説明方法に注意したい。なかにはユーザーがアクセスしやすいように設定変更を促しているサイトもあるが,説明を間違えると,ユーザーのセキュリティの設定を甘くしてしまう。例えば「IEのインターネット ゾーンのXXXXの設定を'有効にする'に設定して下さい」といった指示をすると,ユーザーが設定を戻さずに他のサイトにアクセスしてしまうと危険だ。セキュリティに関する設定変更をユーザーに指示する場合は設定を変更する危険性やアクセス後に元の設定に戻すなどの説明が不可欠である。

(榊原 康=日経オープンシステム)