わたしの名はフレイ 作家・デザイナー見習い
神々とともに生きる詩人 一等星シリウスの導きを信じて

MozillaとWebKit

Mozillaとは

Mozillaは、オープンソースで開発されるWebブラウザ、あるいはその開発母体のプロジェクト。

もともとは、NetscapeがMS-IEとのブラウザ戦争に負けて、エリック・レイモンドのオープンソースに関する文書をきっかけに、ブラウザの存続を賭けてオープンソースにしたことが始まり。

以来、Mozillaというブラウザが長い間開発されてきて、そのMozillaというブラウザをNetscapeが名前をかえてリリースする、というのが定番になっていた。

だが、最近はMozillaNetscapeというブラウザは無くなり、代わりにMozillaWebブラウザ単体に分割したMozilla Firefoxと、メールクライアントを取り出したMozilla Thunderbirdが開発されてきた。これは、Mozillaというブラウザがあまりに巨大だったため、軽量化するためであり、その結果、標準の機能を制限して、エクステンション(拡張)で機能を増やすことのできるブラウザとしてFirefoxは知られている。

Mozillaによる「日進月歩の開発」によって、Geckoと呼ばれる独自のHTMLレンダリングエンジンを開発した。昔は、IEよりも標準化の度合いが高いことで知られていた。また、Google ChromeSafariのようなブラウザがWebKitと呼ばれるKHTMLベースのレンダリングエンジンを開発している。IEによるIEコンポーネント(Trident)が広く使われていたネット世界だが、最近では動作の軽さを理由にGoogle Chromeを使うユーザーも増えている。だが、Mozilla Firefoxが普及する日は、Google Chromeによってさらに遠のいた印象がある。

Mozillaのような独自コンポーネントWebブラウザは、Geckoのように独自にHTMLレンダリングエンジンを開発していることで知られている。これに対して、SleipnirDonutのような「タブブラウザ」は、IEコンポーネントを使っている場合が多い(最近のSleipnirではWebKit系のエンジンを積んでいるようである)。Mozillaが重たい理由は、WindowsIEが密接に結び付きすぎていることや、MozillaがUIの描画に使っているXULと呼ばれるXMLベースのUI言語を搭載していることなどが理由である。最近も、軽くなったとは言うが、最初の起動はとても遅い。僕もMozillaユーザーだが、XULはそのうち廃止されるかもしれないということで、嘆いているところである。

Mozilla.orgの発足

Netscapeは、Linuxなどのフリーソフトウェア/オープンソースソフトウェアの開発を注視し、オープンソース開発とコミュニティの可能性を感じて、ブラウザの存続のためにMozilla.orgプロジェクトを開始した。これは、Netscapeという会社を主導としてはじめられた、オープンソースのコミュニティプロジェクトで、Netscapeブラウザのソースコードを開示し、Mozillaという名前の新しいブラウザを作る、というものだった。

だが、Mozillaの開発は功を奏さず、ほとんどがNetscapeの社員が開発しているだけになり、Mozilla 1.0も一向にリリースされなかった。特に、MozillaというWebブラウザは起動も遅く、操作も重く、IEに比べて操作性が悪かった。NetscapeはAOLに買収される。だが、Mozilla.orgはコミュニティによるプロジェクトとして、引き続きMozillaの開発は続いた。

日進月歩のブラウザ開発

MozillaWindowsLinuxなどで動くクロスプラットフォームなブラウザであり、LinuxユーザーやWindowsパワーユーザーなどに一定のシェアを集めた。

当時のMozillaの印象は、「日進月歩」に開発されるブラウザというイメージだった。メタリックな独特なテーマをしていたこともあり、「Mozillaを知っている奴は普通の人間じゃない」的な「ハッカーの標準ブラウザ」のような印象だった。

当時はMozillaNetscapeが連携しており、Mozillaオープンソースで開発し、リリースしながら、そのソースコードを用いてNetscapeも同時にリリースされる、というものだった。

当時はOperaというライバルも存在していた。Operaは広告をつけた無料のブラウザで、独自のレンダリングエンジンを搭載していた。IE/Mozilla/Operaのどのレンダリングエンジンが一番標準に準拠しているかを競っていた。

Firefox/Thunderbirdの誕生

Mozillaは、操作性の悪さや動作の重さを改善するために、Webブラウザだけを切り離した軽量ブラウザPhoenix(のちに名前をFirebird/Firefoxと改称)と、メールクライアントだけを切り離したThunderbirdを開発した。軽量さを保つために、多機能性をやめ、機能は拡張機能(エクステンション)を導入することで拡張されるようになった。しばらくは並行してMozillaも開発されたが、しだいにFirefoxへと開発の主体が移っていった(Mozillaの開発はされなくなる)。また、MozillaやコミュニティによってFirefoxの普及活動が行われた。

New York Timesに大型広告を載せるなど、当時のMozillaの熱気はとても強かった。それは、IEの開発が停滞していたこともある。IEは今でこそタブブラウザだが、昔はタブをつけておらず、日本ではIEコンポーネントを使ったたくさんのタブブラウザが開発されていた。シンプルなIE6はシェアも大きく一定の人気があったが、SleipnirDonutなどの使いやすく高機能なタブブラウザをインストールする人も多かった。そして、IE/Mozillaだけではなく、当時のインターネットやWebはとても栄えていた。PHPによるブログなどのインタラクティブWebサービスを「Web 2.0」と呼び、オープンソースもその中に含まれることもあった。

現在

だが、一向にIEに競争で勝てる気配はなく、Google Chromeなどの登場もあり、現在は日蔭ブラウザに戻ってしまった気配がある。

またMozillaXML/JavaScriptによるインターフェース技術であるXULも廃止されつつある。

Firefox Quantumという高速化・軽量化したバージョンもリリースされているが、Chromeなどに比べて起動速度などは遅いままである。

けっこう使える、WindowsでもLinuxでも動く賢いブラウザ

Mozilla Firefoxは、けっこう使えるブラウザだ。拡張機能で機能を増やすことができ、またオープンソースで、どこかの会社の利益のために作っていない。

僕のメインブラウザも、2018.07.06現在ではFirefoxだ。とても快適だが、エクステンションのようなものはあまり導入していない。初期状態のまま使っている。

Linuxでも動くのはとても良い特徴で、僕はDebianFirefoxと一緒に使っている。また、Google Chromeの同期機能とよく似た機能として、各Firefox間でブックマークなどをSyncする機能もある。

ラッキングのブロック

最近のWeb業界では、Webサイト運営者からの「トラッキング」や「追跡」が問題になっている。

ラッキングとは、Webサイトの管理者が、Webページを見た閲覧者の情報を収集すること。

昔から、アクセス解析のようなツールをWebサイトに導入することでWebページの管理者は訪問者の情報を収集することができたが、最近は個人情報の保護や、YouTubeなどのGoogleFacebookなどGAFAのサービスにおける「過剰なまでの情報収集」が問題となっており、「個人情報と匿名性を守る」という意味で、トラッキングを防止する技術が盛ん。

僕のこのホームページも、昔はGoogleや忍者ツールズのアクセス解析ツールを導入していたが、そうした問題があることを知ってからトラッキングを行う全てのツールを取り外した。(はてなブログの方には、はてなアクセス解析機能が残っている)。

こうしたこともあって、Mozilla Firefoxではトラッキングを防止する「ブロック機能」が搭載されている。僕もMozilla Firefoxを使う上でこのトラッキング防止機能を使っている。また、トラッキング防止機能を使っていても、Google検索を使っている場合、Googleに検索履歴などの情報がわたってしまう。僕はインターネットユーザーとしての立場を表明するために、DuckDuckGoというトラッキングや追跡を行わない新しい検索エンジンを、Firefoxで使っている。

また、僕はFacebookを使わない。Facebookで行った全てのいいねやコメントなどの情報は削除し(そのための専用の管理ページがあるため、削除したい方はネットで調べてほしい)、Facebookにおける友達や個人情報は非公開にし、自分のタイムラインの投稿情報も全て消した。もう、Facebookは絶対に使わない。また、GoogleのサービスはGmailだけを使っているほか、Yahoo!のメールも使っているが、それらは二段階認証をONにしている。ただし僕はYouTubeの動画だけは視聴する。バランスが肝心である。

後日注記:今ではDuckDuckGoは使っていない。FirefoxDuckDuckGoを入れると不安定になるような気がするからである。

Webサービス連携

FirefoxGoogle Chromeでは、拡張機能を導入することで、さまざまな追加的な機能を「自分の使いたいものだけ」を導入することができる。

Webブラウザとして使う場合、使えるのははてななどのWebサービスとの連携機能である。

たとえば、はてなブックマークはてなブログ通知機能のような拡張を入れることで、今見ているページをブラウザのブックマークだけではなくはてなソーシャルブックマークにワンクリックで登録したり、はてなブログ読者の通知機能(たとえばスターやコメントをつけたとか、読者が増えたとか)をリアルタイムで知ることができる。

僕は、現在、FirefoxでそうしたWebサービス系の拡張は使っていないが、昔はGoogle Chromeはてな拡張機能を導入していた。Google Chromeをタスクトレイに常駐起動させることで、いつ何をしていても、はてなで何かイベントがあった時はタスクトレイから通知を表示してくれる。Linuxでも使うことができ、とても便利であるが、最近は逆に通知機能が鬱陶しくなってしまったので、今使っているFirefoxにははてなの拡張は導入していない。今でははてなブログにブラウザから手動でアクセスするなどして、通知を確認している。はてなブックマークの拡張を入れると、Google検索にはてなブックマークの登録人数が表示されたりもするが、これも逆に鬱陶しい。

Chromeの話だが、ChromeにはChromeアプリという拡張機能の一種があり、僕はGoogle Keepというクラウドのメモアプリケーションを使っていたことがある。これはLinuxでも使うことができる。

拡張・プラグイン指向はミニマム化の理想とは逆

一般的に、システムはミニマム化、つまり使うものだけを最低限入れることが推奨されます。

たとえば、HTTPサーバーなんか使わないのにApacheがインストールされて、なおかつサービスを起動させ、ポート80番を開いている、という状態では、いつポート80番のApacheから侵入されて情報が流出するか分かりません。

よって、使わないサービスは削除し、ポートも開けずサービスも停止させ、アプリケーションについても必要なソフトウェアだけを入れる、ということが推奨されます。

ですが、Mozilla FirefoxやGNOME3のような「拡張指向」のソフトウェアは、僕はミニマム化の理想とは矛盾するのではないかと思います。

好きな拡張やプラグインをこれでもかというぐらい入れて、結果いつも使っている拡張は数えるほどしかない、という状況になりかねません。これはバグの問題からいっても、あるいはスパイウェアなどの危険性からセキュリティの問題から言っても、良いことではありません。

この拡張指向に火をつけたのは、iPhoneAndroidの「アプリ」ではないかと思います。これでもかというぐらい、無料アプリやクーポンなどのアプリを入れて、結果いつも使っているアプリは数個しかないのです。

ですから、僕はミニマム化の理想をとります。たとえば、Linuxディストリビューションをインストールする場合でも、たくさんのアプリケーションが標準的にインストールされているディストリビューションを僕は使いたいと思いません。Gentooのように、全てのアプリケーションを自分で導入し、設定する項目を自分でどう設定したか把握できるようなシステムを使います。LibreOfficeを最初からインストールするのすら、僕は良いことだと思いません。後からLibreOfficeをインストールして、使わない人のためにシステムをできるだけクリーンにした方がはるかに良いと思います。

ただし、こういう拡張指向をはじめて、唯一成功したありえないソフトウェアがあります。それはEmacsです。Emacsだけは、Lispで拡張できる拡張性を売りにして、「最強のテキストエディタ」として覇権をviなどと争っています。Atomなどもそこに加わっています。そうした実例があるので、一概に「全てをデフォルトのままで使え」とは言えないでしょう。ですが、Emacsは言わば言語処理系のようなもので、Lispでプログラミングを行うための良い環境として、昔のBASICと同じように「文化を築いた」ことで成功したのだと思います。

ブラウザに機能を追加出来るだけではなく、Webサイトの表示も書き換えられる

Mozillaの拡張は、ブラウザに機能を追加させることもできますが、フィルターのようにWebサイトの表示を書き換えることもできます。

ブラウザに機能を追加させる拡張としては、たとえばマウスジェスチャーのようなものがありますが、フィルターの拡張としては、広告ブロックのような機能があります。

これは、以前WindowsProxomitronがやっていたのと同じです。ブラウザが表示するWebサイトの情報を仲介して、間に拡張が入ることで、Webページの見た目を変えられるのです。

変な拡張を入れるとすぐに不安定になる

Mozilla Firefoxを使っていて残念な点として、変な拡張を入れるとすぐに不安定になったり、おかしな挙動になる、ということ。

僕は極力拡張を入れていないつもりだが、DuckDuckGoの拡張などを入れていると、たまに突然停止したり、あるいは広告のトラッキングDuckDuckGoがカットするため、はてなブログの編集機能が上手く使えないことがあった。

Mozillaは良いブラウザだが、拡張は使えない。僕はYouTubeの広告カットも消した。

XULとは何か

XULは、Mozillaを作るために作られた、XMLによるGUI記述言語。XULでは、XMLの技術とJavaScriptを使うことで、クロスプラットフォームなアプリケーションを開発することができる。また、Mozillaのための拡張機能XULで記述される。

既に最近のMozilla.orgではXULは廃止への方向へ向かっているが、最近WindowsFLASHJavaなどでもXMLによるインターフェースの記述が流行している以前の、XMLによるGUI記述の「先駆者」であったと言える。まさにMozillaはインターネットで、オリジナルの技術であるXULを持っている。XULとHTMLレンダリングエンジンのGeckoは、Mozillaのブラウザアプリケーションを執り行う中で、基盤となる技術である。

ちなみに、最近のMozillaはRustという大人気のシステム用プログラミング言語を作っているほか、ServoというRustによる並列ブラウザエンジンを作っている。XUL亡きあとも、MozillaはRustを中心に独自の、どの企業にも中立な、日進月歩のオープンソースWebブラウザを作り続ける。最近はGoogle Chromeなど、WebKitやBlinkなどの新しいオープンソースHTMLレンダリング技術が流行っているが、今でも、オープンソースLinux KernelとMozilla.orgを中心に回っている。多くのLinuxディストリビューションMozilla Firefoxは標準であり、WindowsでもMozilla Firefoxは人気である。

ブラウザのインターフェースをWebコンテンツと同様に扱う

XULの本質とは、「WebブラウザのインターフェースをWebコンテンツと同様に扱う」というところにあると思います。

Mozillaは、ブラウザが表示するHTMLだけではなく、ブラウザのUIすら、Webコンテンツと同様に、さまざまな機能をネットから入手して操作できるようにしたかったのです。

たとえば、XULにはJavaScript/CSS/RDFのようなWebの標準技術が使われています。ブラウザのボタンをクリックする、ということは、Webページのボタンやリンクをクリックすることと全く変わりません。JavaScriptXMLベースのUI記述言語であるXULを使います。

Mozillaでは、XULによって開発された拡張機能を導入することで、Emacs Lispのように際限なくブラウザの機能を「強化」することができます。自分の使いたい機能だけを搭載することができます。

また、昔のSeaMonkey時代のMozillaはそのメタリックな外観で有名でしたが、XULの技術を使うことで、テーマを導入し、どこまでもブラウザの見た目をゴージャスにすることができます。

こうした技術は、最近ではMSがXAMLを作ったほかに、GitHubによるElectronがあります。Electronでは、Web技術を使うことでGUIアプリケーションを開発できます。GitHubテキストエディタであるAtomや、GitHubを買収したMicrosoftによるテキストエディタVisual Studio Code(VS-Code)がElectronによるアプリケーションとして有名です。

Mozillaにはいろいろと先見の明があったと僕は思っていて、スマホにおけるアプリストアや、HTML5によるWebアプリケーションは、Mozillaのやりたかったことをそのままやっている。FLASHなどについても同じで、まさにMozillaは「Webページが単なるページではなく、インターフェースも含めた上でのアプリケーションサービスとして扱われる」ようにしたかった。僕はMozillaのやりたいことが本当に良く分かる。Mozillaは正しかった。

XULがもし成功すれば、Webページで複雑なAjaxを使わなければいけなかったことも、ReactのようなWebパーツのJavaScriptフレームワークも存在しなかったかもしれない。また、WebアプリケーションがGUIになる、すなわち、「URLへアクセスするだけでそのアプリケーションがすぐに使える」ようになっていたかもしれない。最近はWeb上で動く画像加工サービスのようなものもあるが、そうしたWebサービスがもっと身近だったかもしれない。スマホのアプリなどそもそも必要がない。

ゴジラのパクリではない(はず)

Mozillaという名前は「ゴジラのパクリではないか」と言われることが多いが、たぶん違う。Netscapeの愛称がMozillaであり、Mozilla.orgの発足の時にブラウザ名として名づけられた。

むしろ、ブラウザ史的に言えば、一番オリジナルに近いブラウザだと言えるかもしれない。

GTK+には対応しているが、Qtに対応していない

Linux版のMozilla FirefoxGTK+には対応しているが、Qtには対応していない。よって、KDEアプリケーションと見た目が違ってしまう。LibreOfficeなどはGTK+/GNOMEKDEも両方のルック・フィールに対応しているが、KDEでブラウザを使いたい時はKDEの有名なWebブラウザであるKonquerorを使うことがおすすめである。KonquerorKHTMLという独自のHTMLレンダリングエンジンを持っており、これからAppleなどがWebKitを派生させた。よって、KHTMLもある意味オリジナル的である。

Mozillaとターミナルが使えれば、大抵は何とかなる

GNOME 3は使えないなどと酷評されていますが、それでも、ターミナルとMozillaが動けば、大抵のことは何とかなります。

ターミナルとMozilla、これがLinuxデスクトップで使う主なアプリケーションです。まさに、ショボいものです。

日本のユーザーは、日本語入力環境ぐらいを整備すれば、あとはデフォルトのFirefoxとターミナルで何とかなります。

ただ、僕が使った感触では、LinuxMozilla Firefoxは日本語のサイトを英語で表示してしまうなど、馬鹿みたいな点があります。

僕はWindowsでもMozillaを使いますが、ブックマークが同期できるなどの特徴は良いと思います。

昔のMozillaが良かった。そんな人はどうすれば?

Firefoxが分岐する前、昔の古代人ハッカーたちはNetscapeによるメタリックインターフェースのMozillaを使っていた。

現在では、Mozillaというブラウザは無くなったものの、SeaMonkeyというMozillaを引き継いだプロジェクトが存在する。だが、どこまで最新の内容に追従しているかは定かではない。

昔のMozillaを知らない方は、Google検索で「Mozilla 1.8」などと検索すれば画像が見れる。昔は劣ったインターフェースだったが、あのころの方がオープンソースも面白かったし、今のFirefoxのインターフェースはChromeなどを模倣した結果つまらないものになっている。ここらで一発「昔のMozillaに戻します」的な動きが起きれば良いのになと思う。

最近の僕はMozilla使い

僕は最近、Mozilla Firefoxをメインブラウザにしました。Windowsでも、AndroidでもFirefoxを使っています。

二段階認証もして、セキュリティも万全です。また、検索エンジンにはDuckDuckGoを使っています。

僕の多くの時間は、Mozilla Firefoxサクラエディタを使ってホームページを更新しています。また、WinSCPとRealSyncと7-zipFTP更新とバックアップに使っています。

他には、音楽を聴いているだけです。前はYouTubeから聴いていましたが、最近は家入レオのCDを買ったため、AndroidiPodから聴いています。

快適で現代的なIT生活を送っています。

2019.11.18追記:DuckDuckGoを使うのはやめました。DuckDuckGoを使っていると、Firefoxがたまに不正停止することがあり、はてなブログの編集機能もおかしくなることがあります。

Googleとは仲間でありながら敵

Mozillaは、Googleとは仲間であると同時に敵です。

Googleは独自のWebブラウザGoogle Chromeを開発していて、Mozillaとは競合関係にありますが、以前はFirefox向けのGoogle公式ページを用意するなど、Mozillaに対して友好的でした。

ですが、最近では、Firefoxユーザーに対して、Googleサービスの速度や性能を不当に制限するなど、Mozillaとは仲が悪くなっています。

同時に、Mozillaの方も、Googleによるトラッキングやユーザーの追跡をブロックするなど、両者の中は次第に険悪になってきています。

Googleはトラッキングと広告で莫大な利益を上げていますが、YouTubeには広告を見たくないという方もたくさんいます。Mozillaでは、拡張機能を導入することで、YouTubeの広告を完全にカットできます。

両者は仲の良い盟友であると同時に、敵対的な関係を持っています。最近はMicrosoftのEgdeがChromiumベースになってLinuxで動くようになるらしいなど、情勢は常に変わっています。

WebKitとは

そもそも、オープンソースなブラウザのレンダリングエンジンとしてはMozillaGeckoがあった。

ただ、MozillaXULという技術を元にして作られていたり、「重くてもっさりしている」など、課題があった。

KDEには、古くからKHTMLという独自のレンダリングエンジンがあった。これはKDEのブラウザ兼ファイルマネージャであるKonquerorなどで使われていた。

Appleは、このKHTMLに目をつけ、自社のSafariというブラウザのベースとするために、KHTMLWebKitとしてforkした。

このforkは成功した。WebKitは「高機能ながら軽量」であることを売りにして、Safariだけではなく、GoogleのブラウザChromeなどにも採用された。

その後、Apple中心のWebKitに対して、GoogleはBlinkという新しいエンジンをforkした。Blinkではマルチプロセスに対応し、WebKit側とBlink側では双方の技術を排除した。

BlinkはGoogle Chromeのほか次世代のOperaなどにも採用され、ChromeChromiumというオープンソースなコア・ブラウザを元に作られるようになった。これは、Mozillaに対するNetscapeに近い。

最近では、Microsoftの次世代WebブラウザEdgeでも、Chromuimをベースとして採用することが決まっている。また、Windows界で有名なブラウザであるSleipnirWebKit/Blink系のエンジンを積んでいる。

エンジンとしての特徴は、簡単に自分のブラウザに組み込めるようなC++/Qt/GTK+用のインターフェースを持っているほか、MozillaGeckoに比べて軽量で起動も早い。Linux界ではGTK+/QtのWebKit対応ブラウザが開発されるほど、一時期はとても波に乗ったプロジェクトだった。