Webブラウザ非互換性の温床となったのは何か?
株式会社ピーデー 川俣晶
2008/7/3
Internet Explorer 8.0やFirefox 3.0で注目されるWebブラウザ。いまこそ、復習しよう。Webブラウザの非互換性の発生源は何だったのか? (編集部)
Webブラウザを総復習
Internet Explorer 8.0のベータ版が提供され、Firefox 3.0が正式リリースされるいま、Webブラウザをめぐる状況は再び激動しようとしています。
ここで、私たちWebブラウザのユーザーは、新しく提供されるWebブラウザのどれを使うべきか、あるいは、従来どおりのWebブラウザを使い続けるか、選択を行う必要に迫られます。
しかし、いまの私たちは、Webブラウザ選びを行うために必要な基礎知識を本当に持っていると、自信を持って断言できるでしょうか?
そんなことは分かっている、と思うかもしれません。
しかし、毎日使っていることで、つい「分かっている」と思い込んでいるだけかもしれません。事実として、例えば、「AブラウザとBブラウザはレンダリングエンジンが同じだから、互換性は高いのではないか?」といった誤解を含む意見を聞くことは珍しくありません。
ですので、この機会にWebブラウザの基本と仕組みを復習するのも悪いことではないでしょう。
なお、ここでの説明は、分かりやすさを優先し、技術的な意味で必ずしも正確ではない内容を含むことをお断りします。
WWWとWebブラウザの創生期
WWW(World Wide Web)は、ティム・バーナーズ=リーによって生み出され、1991年ころより利用可能となりました。当初は文字だけでしたが、画像も扱えるように拡張されていきました。現在のわれわれがイメージするWebブラウザとして最初に生まれたのは、おそらく1993年にマーク・アンドリーセンらによって開発されたNCSA Mosaicでしょう。
画面1 Mosaicのスクリーンショット(NCSAのサイトより) |
NCSA Mosaicは、初期の時代の標準Webブラウザといっても過言ではないほど大きな存在感と影響力を持ったソフトでした。
しかし、この当時はインターネットそのものが研究用ネットワークという位置付けであり、一般には公開されていませんでした。そのため、Mosaicの知名度や影響力は狭い範囲に限られたのも事実です。
さて、NCSA Mosaicの開発に携わったマーク・アンドリーセンらは、シリコン・グラフィックスの創立者ジム・クラークとともにネットスケープ・コミュニケーションズ(創立時はMosaic Communications)を立ち上げ、同社は1994年、商用WebブラウザであるNetscape Navigatorを開発します。これが、Mosaicに取って代わる新しい標準ブラウザとなっていきます。
そして、1995年ころにインターネットが一般に公開されたことで、WWWは一般ユーザーにも注目されるようになります。ここで、新しくインターネットというフロンティアに入り込んだ多くのユーザーにとって、Netscape Navigatorはフロンティアを探索する主要なツールとなったのです。
これとほぼ同じころ、1995年にはInternet Explorerの最初のバージョンもリリースされています。これは、この当時NCSA Mosaicのマスターライセンスを所有していたスパイグラス社よりマイクロソフトがライセンスを受けてそれを基に開発したものです。その意味で、Netscape NavigatorとInternet Explorerは、NCSA Mosaicという同一のルーツを持つ兄弟のようなWebブラウザであったといえます。
しかし、同一のルーツを持つということは、同じような機能を持つことをまったく意味していませんでした。初期のInternet Explorerは機能面で大きくNetscape Navigatorに後れを取っており、ある程度まじめにWWWを使おうとするユーザーがInternet Explorerを使う姿はあまり見られませんでした。
「ルーツが同じ」は「動作も同じ」保証にならない
ここで1つ確認しておきましょう。
1995年ころに存在したNetscape NavigatorとInternet Explorerは、NCSA Mosaicという同一のルーツを持ちます。そのため、両者には似た部分が多くあります。例えばウィンドウ上部にURL入力欄や、「進む」「戻る」という機能を持つボタンがあるデザインは、NCSA Mosaic由来のものであり、Netscape NavigatorとInternet Explorerの両者に共通するものです。
そのほか、デザインや機能面で似ている部分は多くあります。しかし、似ていない部分が多かったことも忘れることはできません。機能的にはNetscape Navigatorの方が圧倒的に豊富であり、またHTML文書の解釈にも多くの相違がありました。
つまり、「ルーツが同じ」は「動作も同じ」保証になりません。Webブラウザの問題を考えるときに、これは重要なポイントです。強い競争にさらされ、不断の改良を続ける限り、どのようなソフトも独自の異なるものに進化していくわけです。
創生期のWebブラウザの仕掛け
この時代のWebブラウザは以下のような流れで処理が行われていました。
図1 創生期のWebブラウザ |
ネットワークを経由して受信されたHTML文書は、HTMLパーサによって解析され、単なる文字列でしかない“<p>”といったタグが段落という意味に解釈されます。解釈された結果は、レンダリングエンジンに送られ、表示されるページ内容に変換されます。例えば、“<p>おはよう!</p>”は、HTMLパーサによって<p>……</p>が段落を示す要素と解釈され、レンダリングエンジンによって“おはよう!”が1つの段落としてページ上に配置されます。
以上のように、この時代の処理は基本的に直線的です。受信されたHTML文書はレンダリングエンジンに進み、処理結果が画面に表示されます。表示結果が得られた後でレンダリングエンジンに逆戻りすることはありません。つまり、Webブラウザ自身は、一度確定した表示内容を変更できません。変更するためには、変更されたHTML文書を再度サーバより受信する必要があります。
このような形式を、「静的」と呼びます。
それを前提としたHTML文書は“静的なHTML文書”と呼ばれます。
ブラウザ戦争勃発
ここで、Webブラウザの歴史をたどる作業に戻りましょう。
1996年にリリースされたNetscape Navigator 2.0には、Webブラウザ内でプログラムを実行する機能が与えられます。ここから、Webブラウザは「静的」な世界を離れ、新しい文書を再受信することなく内容を変更できる「動的」な世界に進み始めます。
実は、Netscape Navigator 2.0には2種類のプログラム言語が組み込まれていました。JavaとJavaScriptです。両者はまったく互換性のない別言語ですが、当初はJavaが本命と見なされていました。そのため、もともとLiveScriptという名前で開発されていたJavaScriptは、Java人気にあやかってJavaScriptと改名されたほどです。
しかし、Webブラウザ上で使用するJavaは、性能や非互換性等の問題から普及することはありませんでした。JavaはWebブラウザではなくWebサーバ上で使われるようになります。
JavaScriptはその後も改良を続けられていきます。
後続のInternet Explorerもバージョン3.0より対応を開始し、Netscape NavigatorとInternet Explorerは激しい機能強化競争を繰り広げます。
両者の競争は、技術のみならずマーケティング的な側面も含んで激化し、1997年ごろにピークを迎えます。このころは、ブラウザ戦争という言葉まで使われていました。
しかし、相互に互換性がない強化競争は利用者やサイト作成者に過剰な負担を強いることから、1997年にJavaScriptはECMAによりECMAScriptとして標準化され、1998年にW3CからDOM(Document Object Model)(詳しくは後述)が勧告される等の標準化の動きが生じます。
ダイナミックHTMLの仕掛け
この時代を象徴するキーワードが「ダイナミックHTML」です。
ダイナミックとは「動的」という意味であり、「静的」の対極にあるものです。
この時代のWebブラウザは、大まかにいえば以下のような流れで処理が行われていました。なお、この図は説明を簡単にするために単純化してデフォルメしています。実際にはHTMLだけでなくCSS等も処理されていたことにご注意ください。また、この図には描いていない制御の流れも存在します。
図2 ブラウザ戦争時代のWebブラウザ |
この図を見ると、静的な時代と比較して、飛躍的に構造が複雑化したことが分かると思います。しかし、ここで注目すべき点は、静的なWebブラウザでは直線的に行われていた処理が、循環し続ける流れに変わったことです。この循環は、ユーザーの操作に応じて文書の内容を変更し、表示される内容を変化させます。それによって、新しい文書をサーバから受信せずとも、表示内容を変化させていくことが可能となったわけです。
1/2 |
関連記事 |
いまさら聞けない「Webブラウザ」超入門 いまさら聞けないリッチクライアント技術(11) インターネットに接続するために、当然のように利用するWebブラウザ。Webサーバとのやりとりから、その仕組みを知っておこう 「リッチクライアント & 帳票」フ ォーラム 2008/4/14 |
INDEX | ||
AcidテストとWebブラウザの仕組み | ||
Page1 WWWとWebブラウザの創生期 「ルーツが同じ」は「動作も同じ」保証にならない 創生期のWebブラウザの仕掛け ブラウザ戦争勃発 ダイナミックHTMLの仕掛け |
||
Page2 それぞれの役割 すべてが非互換性の温床 ダイナミックHTMLの復権 Webブラウザの今 黄金時代の死 |
リッチクライアント&帳票 全記事一覧へ |
- GASで棒、円、折れ線など各種グラフを作成、変更、削除するための基本 (2017/7/12)
資料を作る際に、「グラフ」は必要不可欠な存在だ。今回は、「グラフの新規作成」「グラフの変更」「グラフの削除」について解説する - GET/POSTでフォームから送信された値をPHPで受け取る「定義済みの変数」【更新】 (2017/7/10)
HTMLのフォーム機能についておさらいし、get/postメソッドなどの内容を連想配列で格納するPHPの「定義済みの変数」の中身や、フォーム送信値の取り扱いにおける注意点について解説します【PHP 7.1含め2017年の情報に合うように更新】 - PHPのfor文&ループ脱出のbreak/スキップのcontinue【更新】 (2017/6/26)
素数判定のロジックからbreak文やcontinue文の利点と使い方を解説。for文を使ったループ処理の基本とwhile文との違い、無限ループなども併せて紹介します【PHP 7.1含め2017年の情報に合うように更新】 - Spreadsheetデータの選択、削除、挿入、コピー、移動、ソート (2017/6/12)
Spreadsheetデータの選択、挿入、削除、コピー、移動、ソートに使うメソッドの使い方などを解説する
|
|