2010年3月24日水曜日

インターネットエクスプローラとファイヤーフォックスとクロームとグーグルの関係

重い重い、と言われているFirefoxですが、
理由はハッキリしています。
「Windows向けの裏技を使ってないから」です。

InternetExplorerは当然使っています。
裏技って何か?
Internetが付かない、エクスプローラは、
実はInternetが付く方のプログラムの殆どを包含してるのです。
#この表現は厳密ではありません。説明用です。

InternetExplorerの3まではそうでもなかったのですが、
InternetExplorerの4からそうなりました。
Windows98辺りから、アクティブデスクトップとか言い出したでしょう?
デスクトップにHTMLを貼り付けられる。
それはそういう事です。

http://msdn.microsoft.com/en-us/library/aa741312(v=vs.85).aspx


一昔前のモバイルノートPCは、WindowsXPでメモリ512MB、とかなので、
「Firefoxは重いからIE使ってる」となるのも無理からぬ事です。

しかし、起動しちゃった後の方が問題です。

IE7未満は、他のブラウザに比べて、javascriptエンジンが遅いのです。
具体的には、文字列連結処理が遅い、らしい。
文字列連結って何か?

webの殆どはHTMLで書きますね。
HTMLの一部をjavascriptで切ったり貼ったりできます。
サーバに一括でHTMLを作るんじゃなくて、ブラウザ側で自分で作り直すんですね。
ブラウザに処理させる、って言ったら、現状はjavascriptしか選択肢が無い。

サーバとPCとの、データの行ったり来たりがゴッソリ減るので
レスポンスが良くなる、
だけじゃなくて、インタラクティブな操作が出来る。それがajaxです。
もう何年も前ですが、グーグルマップの登場は衝撃だったでしょう?
ajaxの真骨頂です。
javascriptの株が、大幅に上がりました。あれで。

javascriptは結構おもしろい言語です。
画面をフェードしたり、ポップアップボカボカ出したり、だけが脳じゃないんです。
グーグルマップの様な、高度な実装もちゃんと書ける。
この辺りは話すと長いので。

HTMLは文字列です。切ったり貼ったりは文字列処理です。
それが遅い、と言ったら、イマドキのajaxのサイトが遅い、のと同義です。

まあ普通の、日本国内のwebサイトを見ている分にはIE7でも平気ですが、
Gmail等、グーグルのajaxサイトは、
javascriptの限界に挑戦しちゃってますので、
Gmailが遅い、から使いたくない、という話になっちゃいます。
実際に、そういう人は多いです。

「IE7でGmailが遅いから、メモリを買ってきた、2GBにしてるのにまだ遅い」
知人がそんなコントをやってました。

#話の流れてきには、「ここでFirefox」と言いたかったのですが

面白くないのグーグル。
Gmailが重いのはオレらのせいじゃねえよ、と思ったかどうかは知りませんが。
Chromeを作りました。

試してみてください。馬鹿っ早いです。
512MBでも実用になるはずです。

一方、Chromeは「webサービスの利用」に特化しているので、
ブラウザとしてはかなり機能アッサリです。

InternetExplorer8では、文字列処理の速度が大幅に改善してます。
アップグレード出来る人は、アップグレードするべきでしょう。
マイクロソフトもアップグレードさせたがってるでしょ?

ただそれでもFirefox3とかChromeには追いついてないらしいですが。

Firefoxが重いのはまた理由が違います。
Firefoxがマルチプラットフォーム対応なのに関係があります。

マルチプラットフォームブラウザを実装するにあたり、
マルチプラットフォームフレームワークを開発した、らしいんですね。
XULナントカって奴、らしい。
http://ja.wikipedia.org/wiki/XULRunner
https://developer.mozilla.org/ja/docs/XULRunner/What_XULRunner_Provides

Firefox内部は、結構javascriptで動いてます。
エクステンションがドッサリありますが、これらはすべてjavascriptで出来ています。
https://addons.mozilla.org/ja/firefox/

ただwebを見るためのブラウザとしては、考えすぎとも言えます。
この「考えすぎ」部分は、当然、ある程度はメモリを食います。だから重い。



故に、エクステンションを使わない人は、
FirefoxのHTMLエンジンだけを抜き出したブラウザが幾つかあります。
HTMLエンジン単体は、mozillaプロジェクトの中の、geckoという単体製品なので、
スキルがあれば、他の製品に組み込めるわけです。
http://ja.wikipedia.org/wiki/Gecko
https://developer.mozilla.org/ja/docs/Gecko

むろん、mozillaプロジェクトとして、そうして欲しいわけです。
https://developer.mozilla.org/ja/docs/Embedding_Mozilla

例えば、K-meleon http://kmeleon.sourceforge.net/
InternetExplorer並の軽さ、しかもGmailも快適。
ただしWindows版しかないけど。

と言うわけで、IE7未満以外を使えば、Gmailが快適に使えます。