MCL(104)

インデックスに戻る

前のMCLへ  次のMCLへ

▼ My Computer Life (104)

104. Webブラウザ

 「browse」という言葉は、斜め読み、拾い読みみたいな意味があるらしい。自分が興味のあるところだけササッと読むみたいな。
 それが転じて、インターネットのWebサイトを見るための、Webブラウザという用語になったのは、なんともうまい用法だなと思う。実際斜め読み、拾い読みだしね。
 ただ、ブラウザという言葉自体はWebブラウザが出回るよりも前からコンピュータ業界では使われていて、例えば「ファイルブラウザ」みたいな言い回しがあった。それでも、インターネットが一般化してきてからは、もうブラウザという用語のみでWebブラウザを指す事も多かった。

 #0070に書いた通り、インターネットの黎明期は、Eメールやニュースグループを見るためのものという印象があったが、やがてワールドワイドウェブ(WWW)が構築された。HTMLで作られたWebドキュメントに、住所であるURLがつけられ、それをHTTPで通信し、Webブラウザで表示する、という仕組みである。その仕組みが、今日のインターネットを形成している。
 そして、これも#0070に書いたが、まずX Window向けのViolaというブラウザが1992年に作られ、1993年にMosaic、そしてそのMosaicを引継ぐ1994年のNetscape Navigator、それから1995年のInternet Explorer(IE)が開発された。

 その頃までは、Webブラウザも、HTMLも、かなり単純だったように思う。文章を表示できて、途中に画像を挟む事もできる、と。可能な装飾と言えば、文字に色をつけたり、太字にしたり、イタリックにしたり…とかくらいで。今から考えると、だいぶ可愛いものだった。
 当初、世界中の学術論文を紐づけるという目的から考えると、その程度で良かったのかも知れない。ただ、やがてWWWは、企業の広告であるとか、Web上で扱えるツールだとか、ゲームであるとか、動画鑑賞であるとか、とにかくより商業的、娯楽的な目的で使われるようになってきた。そうなると、初期の素朴なHTML&ブラウザでは、全然足りない時代となってきた。

 そこでまず出てきたのが、Cascading Style Sheet(CSS)である。
 CSSは、素朴なHTMLを補強するための仕組みである。HTMLは基本的に、太字であるかないかとか、数段階のフォントサイズとか、ざっくり左/中央/右のどこかなどという画像配置など、だいぶ粗い指定しかできなくなっている。粗くしか指定しない事により、ブラウザの実装や、解像度や、PC性能や、対象言語などを、ある程度仮定せず、広い幅で許容できるようにしている。その分ざっくりなのを、もっと細かく指定できるようにするのが、CSSである。
 例えば、段落を示すPというタグに対し、それが記載された時にどう表現するか、細かく指定する。左から何ピクセル空けるとか、こんな色味にするとか、何ptのフォントサイズにするとか、従来のHTMLより詳細に指定できる。
 ただ、あくまでブラウザが表示するのはHTMLなので、それをわりと無理やり調整するCSSの仕組み、文法は、個人的にはかなり汚いと感じている。よって、人間にはかなり分かりづらい。そのかわり、CSSに対応していない、あるいは一部未対応みたいなブラウザでも、CSSは無視してただのHTMLとして表示すればいいので、互換性はある。

 もう一つ、ブラウザ側で動的な仕組みを作る仕組みとして、各種スクリプト対応が進められた。主流なのは、JavaScriptである。
 JavaScriptは、名前にJavaと入っているが、あんまり言語としてJavaに似ていない。普通のスクリプト言語である。ただ、対応しているブラウザであれば、ブラウザ側で解釈して実行できるのが特徴である。
 JavaScriptを使うと、まあCSSのように画面表示の操作もできるが、何しろプログラム言語なので、もっと動的な操作が可能になる。初期は、マウスカーソルをなんか変なスプライトが追いかけるとか、リンクを踏んだ時に画面がほわほわっとワイプするとか、背景でなんか星とか雪が動いてるとか、そんなようなのを実現していた。今ではもっと大胆に、あちこちのパーツが動いたり、ユーザーのアクションにインタラクティブに対応したりと、素のHTMLでは不可能な仕組みをバンバン提供している。
 ただ、これもHTMLをオーバーレイする仕組みで、CSSと同じく、その実装方法が無理やりなところがある。それなのにCSSより更に複雑な仕組みを提供しているため、大規模な物を書こうとすると、複雑怪奇になってしまう。それをサポートするため、またより深いコントロールをするために、世の中フレームワークというのがたくさんある。jQueryとか、Angularとか、Nodeとか色々聞いた事はあるかも知れないが、ライブラリみたいな物である。それを組み込むと、自分で作るよりはるかに簡単に複雑な操作を実現できる。そのかわり、それはそれで更に更に複雑怪奇な世界を生み出している。どのフレームワークとどのフレームワークを組み合わせ、そのそれぞれのバージョンはいくつで、対象ブラウザは何なのか、そういう事で簡単に動作不良を起こす。しかも動いているのがブラウザなので、そのデバッグも簡単ではない。
 ブラウザ上のJavaScriptをいじくるエンジニアは、フロントエンドエンジニアと呼ばれているか、正直その他のエンジニアよりもハードルが高いと思っている。プログラマとしてのスキルがどうこういうよりも、世の中の流通しているフレームワーク及びブラウザについての知識を追いかけ続けられるかどうかの根性が求められている、という部分があるからだ。

 さて、今書いたCSSとJavaScriptに関しては、ブラウザ初期からあるものの、今日まで使われ続けているので、むしろ書いた内容は新しい部類に入ると感じられるかも知れない。そこで、どちらかというと廃れた技術を2つ紹介しよう。
 まずは、Adobeの開発したFlashである。これはサーバとのやり取りも含む、かなり独自の仕組みだが、CSSやJavaScriptと異なり、HTMLを補強する仕組みではない。画像の埋め込みと同様、「このエリアにFlashを埋め込む」というような記述をHTMLに書く。この200x200ピクセルの範囲をFlashの領域とする、みたいな。そうすると、サーバからswfファイルが読み込まれ、ブラウザのプラグインなどとして実装されたFlashPlayerが、それを解釈実行する。つまり、ブラウザから見ると完全に治外法権である。
 Flashに似たような先行技術として、マクロメディアが出していたShockWaveがある。当時の、静的で飾り気もないHTMLの中で、画像や音楽、更には動画を表現できるので、良く使われていた。ただ、ShockWaveは、その読み込みや動作が重かったので、やや軽いFlashの方が主流になった。
 今書いた通り、Flashはその領域内の動作はFlashPlayerによって行われるので、ブラウザの制限を全く受けずに好き放題できる。元々は、Flashは紙芝居のようなアニメーションを作るのが目的のツールと思われる。実際、ツールのUIがそうなっている。タイムラインと呼ばれる、時間軸に沿って記述するラインを使い、画像を置いたり、タイムラインの何分何秒から何分何秒まで、こんな軌跡でこの画像を動かす、みたいなスプライトアニメを実現する。そうすると、なんか2Dの切り絵芝居のような物が作れるわけだ。で、これを操作するためのActionScriptというのがあり、これを使って、紙芝居部分を無理やりに動かすと、ゲームやらなんやら作れる。
 Flashは、埋め込み式の治外法権と書いたが、では画面の全域をFlash埋め込みエリアとすると、全てが治外法権となり、ActionScriptで全て制御できるようになる。2000年代中盤のブラウザゲームであるとか、ニコニコ動画のようなインタラクティブサービスは、このようにしてFlashで実現されていた。
 Flashは、このようなPCブラウザ向けの仕組みもあるが、仕様やスクリプトも簡易的な物にして、携帯電話でも動くようにしてある。なので、携帯電話のゲームなどもFlashで作られていた。
 だが、やはりセキュリティの問題であるとか、あるいは仕様がAdobeの一存で決まるという点から、2010年代から徐々にFlashは敬遠されていった。やはりインターネット技術は、それを攻撃する人間との戦いの繰り返しである。ブラウザ側が定期的にアップデートして、セキュリティを強化しても、治外法権であるFlash側の穴を突かれると対処できない。対処可能なのはAdobeだけである。
 それを懸念して、スティーブ・ジョブスは、iPhoneにはFlashPlayerを搭載しない事を決めた。それに追随し、あちこちでFlash非対応の環境が作られていき、ついに2020年にはFlashのサポートが終了する事が決まった。

 もう一つ、JavaScriptなどと同じく、ブラウザに動的かつ大胆な動作ができるように拡張するテクノロジーとして、マイクロソフトが独自に開発した「ActiveX」がある。独自という事は、もちろんマイクロソフト謹製のInternetExplorer&Windows環境でしか動かない。
 ActiveXは、前出のJavaScriptやFlashと異なり、もはやWindowsアプリケーションをブラウザ越しに配布、実行するように仕組みであり、ほとんど何でもできる。WindowsのAPIを叩いて、ドライブ内のファイルにアクセスしたり、システムを操作できる。その特性を生かして、例えばネット越しに直接何かをインストールする、いわゆるインストーラや、ドライブの内容をスキャンするウィルスチェックなど、システムに結び付いた処理を実現していた。
 しかし、当たり前だが、問題がいくつもある。一番の問題は、セキュリティ的にやばいという事だ。ネットワークの世界では、セキュリティの甘さをついて攻撃してくるハッカー/クラッカーと呼ばれる存在がうじゃうじゃいるわけだが、ActiveXなんて、悪意を持って作ればあっさり相手のPCを好き放題できる。こんなヤバいテクノロジーを流通させてたなんて、思いついただけで犯罪レベルである。
 もう一つは、あまりにもIE+Windowsの仕組みに直結していて、それ以外のOS、ブラウザでの動作は全くしないために、互換性という意味でも問題があった。Macユーザはお断り、なサイトがあっても困るでしょ。
 そんなわけで、もうすでにActiveXは使われていない技術であるが、マイクロソフトもその後は苦労し、できるだけ使用されないように、そしてどうしても使用したい人のみ動かせるようにあの手この手でフェードアウトさせていった。
 ただし、日本や韓国では、特に電子決済や金融の分野で、ネット越しのセキュリティ(本人認証とかそんな感じの)をActiveXに頼る事が多く、そういうところはIE必須となっている。

 さて、インターネットが一般層に広がり始めた時に、その流れに乗って普及したのが、何度か名前を出しているが、マイクロソフトのInternetExplorerである。何しろ、コンシューマでは圧倒的なシェアを誇るOSであるWindowsに標準でついているのだから、そりゃ普及するよって感じ。おかげで、当時のライバルブラウザである、NetscapeNavigator(ネスケ)の会社からは、独禁法で訴えられた。まあでも、訴えられたからと言って、OSにブラウザが付属してないってのもねえ…。
 という風に考えたのかどうか、マイクロソフトは、OSにブラウザが「必須」となる仕組みを作った。アクティブデスクトップというのがそれで、これは、OSの背景画面であるデスクトップに、HTMLコードを直接埋め込めるようにしたものである。これを使うと、デスクトップを色々装飾できる他、例えば自動更新系の仕組みを入れると、デスクトップに自動でニュースを流したり、RSSなどでWebサイトの更新情報を取得できたり…などという事ができた。
 ただ、どう考えてもクソ重いし、しかもまた例によってセキュリティ的にもアレなので、やっぱり廃れていき、やがて廃止された。

 IEは、初期はともかく、途中からはとにかく評判が悪かった。
 理由がいくつもあるが、その一つは、独自実装が多いというところである。ここまで書いてきた通り、WWWは、HTMLというマークアップ言語と、それに加えてCSSやJavaScriptなどを使って、画面を構築している。だから、こう書かれたらこう表示する、というレギュレーションが決まっており、それはW3Cという標準化団体が策定している。
 が、マイクロソフトは、その標準からだんだん逸脱するようになった。決まっているレギュレーションに従わなかったり、標準に無い独自の機能を実装したり。ただ、一応擁護しておくと、本当に初期は、どのブラウザも標準ルールに従っていなかった。インターネット初期なんて、何が正しいか分からないような状態だしね。問題は、そこから、各ブラウザが標準ルールに従うようになったのに対し、IEはそうはならなかったという事だ。
 もっとも、最盛期のIEは、あえて標準ルールに従わない事で、ユーザーに利便性を提供していた部分もある。だから、その頃は、「このサイトはIE向けに調整されています。他のブラウザでの表示は保証しません」みたいに書いてある物が多かった。
 ただ、WWWの標準ルールもだんだん進化し、高度な表現や、便利な機能も提供されてきた。そうすると、それれに従わないIEは、逆に不便になった。HTMLやCSSなどのそれぞれの機能の、各ブラウザの対応表みたいなのがあるが、いつもIEは「未対応」という状況だった。従って、2000年代の途中からは、むしろ「このサイトはIEで見る事は保証しません」というような表記が多くなった。まさに逆転現象だね。

 もう一つ、IEはとても重い、というのもあった。初期の頃はそうでもないが、後に出てきたブラウザは、「IEより高速」というのを売りにしているというのもあり、相対的にIEは遅いブラウザになっていった。
 この理由は、私は完全には知らない。大方、マイクロソフトの、IE(というより正確にはそのレンダリングエンジンであるTrident)を開発したエンジニアのスキル不足、といったところだろう。それが7割くらいの原因だと思う。また、先ほど書いた、HTMLやCSSなどの独自実装、アクティブデスクトップやActiveXを入れている事により、他のそうでないブラウザに比べて余計な処理が入っているのかも知れない。あともう一つ、IEは、IE2、IE3、4、5、6、7…などと、機能やUIが異なる複数のバージョンが存在する。その差分を吸収するために、動作自体が重くなっているのかも知れない。

 まあ結論として、他ブラウザが対応している機能に対応せず、なおかつ他ブラウザに比べて圧倒的に遅いIEは、ある程度PCに慣れた人からすると「なんで使っているの?」レベルの代物になっていた。まあそれでも、WinodwsはデフォルトでIEが開くようになっていたから、素人はIEしか使わなかったんだけど…。
 この流れって、21世紀の新しい潮流だと思う。20世紀までは、マイクロソフトのやり方で天下を取れていた。新しい技術の標準化で色々模索している段階で、体力のある大企業が独自の拡張・変更を加えたプロダクトをリリースし、それがデファクトスタンダードとなってしまう、と。特にその独自プロダクトに、更にその上で動くソフトウェア・ハードウェア・データなどを規格化すると、それを使った人が過去の資産に縛られて、他の環境に移行できなくなる。これが強いんだよね。業界全体でいきなり規格を統一するより、独自規格で制覇した方が、莫大な恩恵が受けられる。20世紀は本当にこのムーブで乗り切れた時代だった。
 しかしブラウザはそうならなかった。圧倒的シェアを誇り、独自機能をガンガン搭載したIEが、標準化を満たしたブラウザに負けたのである。時代が変わったと感じる。

 IEが出た1995年当時、ライバルブラウザは、既に何度か書いているネスケだったのだが、ここはしばらくすると決着がつき、IEが圧倒的なシェアを握った。
 その後、ゲーム機やモバイル端末への組み込みなどで勢力を伸ばしたOpera(1996)、AppleがMac用に開発したSafari(2003)、Netscapeがネスケを捨てて新たにオープンソースで開発したFirefox(2004)、そしてGoogleが開発したChrome(2008)などが、追随するブラウザとして登場した。
 これら後続のブラウザは、大体出た当初は、IEより高速である事、更にデフォルトでタブブラウザである事を売りにしていた。今はほぼ全てのブラウザがタブ形式なので、そうでないブラウザがどうなのか分からない人もいるかも知れないが、ブラウザのウィンドウが1枚につき、1つのWebサイト(ドキュメント)しか開けない。だから複数のサイトを同時に見たい時は、ブラウザ自体を何個も立ち上げる。今からすると考えられないでしょ? IEはこの機能がなかなか搭載されなかった(そのかわり、DonutやSleipnirなど、IEコンポーネントを利用して、見た目だけタブブラウザにしたものが開発された)。

 その後は先ほど書いた通り、低機能で遅いブラウザになってしまったIEが没落する中、FirefoxとGoogleChromeが勢力を伸ばしていき、2010年代になる頃には、Chromeが天下を握った。
 Firefoxにしろ、Chromeにしろ、上に書いた通り、IE以上の速度とか、タブ式である事は当然として、プラグインという形で様々な機能拡張を行っているのが特徴だ。あくまで、HTMLやCSSなどの表示は標準仕様に従い、それ以外の独自性はプラグインで補う、という戦略だった。
 Chromeが強かったのは、まず速いという事。プロセス割り当ての仕方などが他のブラウザと異なっており、その分CPUやメモリなどのリソースを大きく消費するが、動作が機敏だった。
 それから、Googleが検索その他色々抑えているのが強かった。GoogleアカウントとChromeが紐づき、GメールやGoogleMap、その他Googleの提供する多様なサービスが、Chromeで扱いやすくなっていた。また、スマホでもほぼ同様の操作で扱えるChromeが提供され、パスワードやクッキー、ブックマークを共有できるようになっており、マイクロソフトがやりたかった「囲い込み」がきちんとできていた。

 ここまで散々IEをけなしてきたが、さすがにマイクロソフトも反省したのか、Windows10には、IEとは異なるブラウザである、「Edge」を搭載した。Edgeは、基本的には、ここまで書いてきたマイクロソフト独自の実装や、ActiveXはもう切り捨て、他のChromeやFireFox同様、W3Cの「標準」に従うブラウザとして設計されている。それでもまだ、「Edgeは未対応」みたいなところはあるが、IEに比べるとだいぶ減ったと思われる。
 ここまで、CSSやJavaScript、FlashなどでHTMLの表現力不足なところを補おう、という動きを記載してきたが、「そもそもHTML自体を拡張して、Flashみたいなレガシーかつ1社独占みたいな仕組みを導入しなくて済むようにしよう」という流れになり、HTML5が策定された。従来より細かい記述が可能になり、JavaScriptとの親和性も高く、それだけでゲームが実装できるほど柔軟になった。
 IEは、例によって例のごとく、新機能への対応が遅いので、HTML5を全然表示できなかった。それを解決すべく、HTML5にも対応したEdgeを出した、という経緯もある。

 しかし、それでもまだ不足だったのか、これを書いている2019年現在、EdgeはChromiumベースのブラウザに移行しようとしている。Chromiumというのは、名前で想像つくと思うけど、GoogleChromeの元になる、オープンソースブラウザである。オープンソースとしてのChromiumプロジェクトがあって、そこでできたブラウザとしてのChromiumを、カスタマイズしてリリースしたのがGoogleChromeである。
 Chromiumは、元々そのレンダリングエンジンとしてはWebKitを採用しており、これはAppleが中心になって立ち上げたオープンソースのエンジンである。更にその源流は、UNIXのブラウザに行き着く。ただし現在Chromiumは、WebKitではなくそこから派生したBlinkをエンジンとしている。
 まあ…なんか、Chromiumを採用するなら、別にマイクロソフトじゃなくてもいいじゃん…という気がしている。EdgeはEdgeでいいところもあるんだろうけど、これならどうしてもChromeを選んでしまう。

 ダラダラ書いていたら長くなってしまったが、現在のところ、ブラウザはWWWに繋がる窓として最重要のツールであり、そしてWWWがインターネットの世界の窓である事から、ブラウザが世界に対する窓として機能している部分がある。その意味では、非常に重要な「メディア」である。
 ただ、そのメディアとしての力、うまみを享受すべく、最近は、特にスマホで顕著だが、独自アプリに誘導しようとしているケースがある。例えば、日本では良く知られるポータル/ニュースサイトのYahooも、スマホでアプリを出している。ブラウザでYahooを見ると、「アプリで見よう!」「この先はアプリで見るといいよ」「アプリの方が楽だよ」「アプリアプリ!」とめっちゃ出てくる。Yahooは昔からあったサイトだからともかく、最近はアプリじゃないと見れない情報もそれなりにある。同じように、TwitterやFacebookなど、SNS系も軒並み独自のアプリの方がアクセスしやすいようにできている。
 とは言え、やはりインターネットから情報を得るプライマリの手段がブラウザなのは、今後もしばらくは変わらないだろう。最近は、特にIT関係の業務はオンラインサービスを利用する事が多い。GoogleSpreadsheet、GoogleDocument、Gメール、SlackやChatworkなどのチャットなど、何でもかんでもブラウザから利用できる。SaaSであるとかクラウドであるとか、そういった単語を聞いた事がある人は多いと思うが、とにかくWebから利用できるサービスが増えてきた。昔なら、例えばメールなら独自のメーラーを開いたり、チャットならSkypeであるとかのチャットツールを立ち上げるのが通例だが、ブラウザで何とかなる事は何とかしよう、という趨勢になっている。そうすれば、Windows/Mac/Linuxなどプラットフォームを限定せずに使えるしね。
 そういうわけで、2020年代に向けて、Webブラウザは更に重要になってきている。その重要性に合わせ、恐らくこの後も進化を続けるだろう。楽しみは楽しみである。


前のMCLへ  次のMCLへ

戻る

TOM 2019