スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
Prev.    Category    Next 

ブラウザとレンダリングエンジン

最近のブラウザは html ファイルを描画する部分(レンダリングエンジン) がライブラリなどで分けられているものが一般的です。
よく使われているブラウザとレンダリングエンジンをまとめてみました。

使用、サイト制作

まずはレンダリングエンジンをブラウザの使用やサイト制作に関係するところでまとめてみます。

Trident - Internet Explore
IE のレンダリングエンジンは Trident と呼ばれています。
ブラウザとしてよく使われているのは IE ぐらいですが、 Windows アプリ開発で HTML 表示用のコンポーネントとしても提供されているので、 Windows では意外といろいろなアプリで使用されています。
Gecko - Firefox
Gecko は Mozilla Foundation で開発されているオープンソースなレンダリングエンジンです。
こちらも Trident のように他のアプリからも利用できるのですが、 少し使い方が特異なせいか、使用されているのは Firefox や Thunderbird といった Mozilla 製品ぐらいです。
WebKit - Google Chrome, Safari
Google Chrome, Safari のどちらもレンダリングエンジンは WebKit を使用しています。 これは Apple, Nokia, Adobe といった企業が中心となっている WebKit Foundation でオープンソースとして開発されています。 また、WebKit は iOS, Android の標準エンジンですので、モバイル用ブラウザではほとんど WebKit が採用されています。
さらに Linux の統合ディスクトップ環境である gnome の標準ブラウザ Epiphany も WebKit がレンダリングエンジンに使われています。 Linux には gnome のほかにもう一つ有名な KDE という統合ディスクトップ環境があります。 こちらのファイルマネージャ、ブラウザである KonquerorKHTML というレンダリングエンジンが使用されています。 WebKit はもともとこの KHTML から派生して作られています。
Presto - Opera
Opera のレンダリングエンジンは Presto という名前です。
任天堂 DS などにも使われているらしいですが、 モジュールとして公開されていないため、 ほぼ Opera だけで使われているレンダリングエンジンです。
追記 2013-02-14
Opera もレンダリングエンジンを WebKit に移行することになりました。
追記 2013-04-04
Chrome が WebKit から分岐した Blink になりそうです。 (ついでに Opera も) また、 Firefox もモバイル版だけかも知れませんが、 Survo 変わる可能性があります。

なぜ、ブラウザとレンダリングが分けられているのか

ブラウザとレンダリングが分けられている理由は HTML でどんどん高機能なものが求められるようになり、 HTML の表示機能を作るのが大変になっているというところにあります。

例えば、 ブラウザとメーラーを作っていて、 ブラウザだけでなく、メーラーにも HTML の表示機能を付けたいという時、 個々のアプリで実装するよりもブラウザからレンダリングエンジンを分けられるようにして、 それを共有した方が開発はやりやすくなります。
コンピューターを買うとき、どのくらい魅力的なアプリがあるかということが重要です。 Microsoft や Apple はレンダリングエンジンをモジュールとして提供することによって、 アプリ開発を促すことが出来ます。

また、 WebKit などは大変なところはみんなで作って、 それをみんなで使おうという発想から生まれています。

プラットホーム

IE の Trident 以外のレンダリングエンジンはすべてクロスプラットホーム対応です。
Windows, Mac, Linux といったディスクトップ用 OS だけでなく、 iOS, Android といったモバイル用の OS にも対応しています。 WebKit だけでなく、 Opera, Firefox でもそれぞれのエンジンを使ったブラウザのモバイル用が出ています。

標準対応と速度

使う点で考えた場合、気になるのは HTML5, CSS3 といった標準対応や表示速度ではないかと思います。
これらはバージョンや使っているブラウザによって変わってくるので、比較は難しいところです。 特に速度はブラウザに抜きにはできないのですが、ブラウザの比較であれば、 オンライン上の速度の測定(ベンチマーク)や比較結果を載せたサイトがあります。

HTML5, CSS3 についてもブラウザごとの対応状況を一覧にしてあるサイトがあります。

個人的なイメージだと Firefox が他のものに比べて頭一つ標準への対応が早い気がします。 ただ、 Firefox はフリガナの <ruby> のように対応しないものはいつまでもしないなというところもあります。
遅い方はというと、こちらは IE がかなり遅れてから対応している感じです。 しかし、 IE も自動アップデートするということなので、 Firefox のようなショートスパンでのリリースが期待できるようになるかも知れません。

CSS のベンダープレフィックス

まだ仕様が確定していない CSS の機能が実装される場合、レンダリングエンジンごとの ベンダープレフィックスが必要なことがあります。

レンダリングエンジン プレフィックス
Trident -ms-
Gecko -moz-
WebKit -webkit-
Presto -o-

例えばこのブログの記事のタイトルに使っているグラデーションの機能は CSS では次のように記述しています。

background: -moz-linear-gradient(top, white, silver);
background: -o-gradient(top, white, silver);
background: -webkit-gradient(linear, left top, left bottom, from(white), to(silver));

このプレフィックスは仕様が確定してくると付ける必要がなくなってくるので、 バージョンによってプレフィックスが外れたりします。 そのまま付けておいても問題はないのですが、いっぱい付けるのも面倒ですし、 どの機能にベンダープレフィックスをつけなければいけないのかというのが、 わかっていると便利です。
これをまとめてくれている非常に助かるサイトがあります。

Firefox で Trident を使う

昔は IE でないとちゃんと表示できないようなサイトが結構あったのですが、 最近では標準にあわせることの方が重視されて、そういうサイトは減ってきました。
しかし、 MSDN のような Microsoft のサイトを Firefox でみれないということがありました。 しかも、たちの悪いことに 最近の Visual Studio ではリファレンスなどのヘルプはネット上の MSDN をみるようになっていて、結構不便です。

Firefox では、 Gecko だけでなく、アドオンでレンダリングエンジンに Trident を利用することも出来ます。 これを使って私は MSDN のページは IE のコンポーネントで表示するように設定しています。

Lunascape - トリプルエンジン

そんなにシェアがあるわけではないですが、レンダリングエンジンに関してちょっと変わり種の Lunascape も紹介しておきます。
この Lunascape では Trident, Gecko, WebKit の 3 つのエンジンを切り替えて使えるようになっています。
こちらも前節のように状況によってエンジンを切り替えるという発想で生まれたブラウザです。

ただ、 3 つ使うという複雑なことをやっているせいか、重くてあまり評判はよくないみたいです。 しかし、ブログなどのサイトや Web アプリケーションなどを作っているときには 簡単に切り替えられるので、見え方を確認するときに重宝します。

また、 User Agent の設定を切り替えて、擬似的に携帯用のページを表示できるようにもなっています。 User Agent の設定は若干わかりづらいですが、 Trident の個別設定ページで設定し、 使う場合も Trident エンジンを選択して表示します。

アプリ開発に利用

html が高機能化していって、個人で標準に対応したブラウザを 1 から作ろうと思うと無理に近いです。 しかし、このレンダリングエンジンを使えば、ブラウザを作ることもそこまで難しくなくなります。
まぁ、あまりブラウザを作ろうと思うことは少ないかも知れませんが、 アプリケーション中で html ファイルを表示したいということは結構あると思います。
今度はこのレンダリングエンジンをアプリ開発に利用する方法について書いてみたいと思います。

ただし、 Opera の Presto に関しては、オープンソースでもないですし、バイナリ(dll) として利用することもできません。

レンダリングエンジン ソース ライブラリ利用 dll
Trident クローズド Mshtml.dll
Gecko オープン mozctl.dll
WebKit オープン webkit.dll
Presto クローズド × ×

IE コンポーネント、 Trident

Trident はコンポーネントとしてみた場合、 IE コンポーネントや WebBrowser コンポーネントと呼ばれています。 これを使う場合には、 MFC であれば、 CHtmlView クラス、 .NET であれば、 WebBrowser クラス として利用することが出来ます。
Windows で開発するのであれば、これを使うのが一番簡単ではないかと思います。

Gecko

Firefox や Thunderbird といった Mozilla アプリケーションは以下のような構成になっています。

  • GUI のレイアウトを XML ファイル (XUL)
  • 全体を JavaScript
  • スピードネックとなるような箇所を C++ コンポーネント (XPCOM)
こういったにかわ(glue)言語XML での GUI レイアウトの記述は .NET(WPF) の XAML や Qt の QML など 最近の はやり みたいです。 これらについてはまたの機会に書いてみたいと思います。

レンダリングエンジンの話に戻ると、 Gecko も XPCOM として提供されています。
XPCOM は Windows の COM の クロスプラットホーム版のようなもので、 JavaScript などから C++ コンポーネントが利用できるようになっています。

このため、 Gecko を利用しようとした場合、XULRunner を使って、 XUL+XPCOM アプリケーションとして作成するか、 libxul を使って XPCOM を使えるようにする必要があります。

ちょっと HTML ページを表示したいだけなのに、 Gecko を使おうとすると、いろいろややこしく、 私は途中でやめてしまいました。
ただ、最近では Mozilla ActiveX Control (mozctl.dll) というのができて、 Windows では通常のライブラリのように利用できるようになったようです。

WebKit

WebKit は webkit.dll というライブラリとなっているので、 通常のライブラリのように利用することも出来ます。

しかし、 Qt では QtWebKit モジュールとして組み込まれて、 QWebView クラスで IE コンポーネントの CHtmlView のようにすぐ使えるようになっています。
クロスプラットホームで動作させたい場合には、こちらを利用すると簡単に使うことができます。 Qt のサンプルには、 QtWebKit を使った ブラウザの例 もあります。

また、 Qt では簡単な Html であれば、 ラベルやテキストエリアといった ウィジェットでも表示することは可能です。

結局、どれを使う

エンジンを使ったアプリを作る視点から考えると Windows 版のみなら Tridentクロスプラットホームや Mac 用ならば WebKit がお勧めです。
Gecko を使うのは少しハードルが高い気がします。 Presto は残念ながら使えません。

2012-02-27
使用、サイト制作向けの情報を追加して、かなり書き直してみました。
関連記事
スポンサーサイト
Prev.    Category    Next 

Facebook コメント


コメント

コメントの投稿

Font & Icon
非公開コメント

このページをシェア
アクセスカウンター
アクセスランキング
[ジャンルランキング]
コンピュータ
28位
アクセスランキングを見る>>

[サブジャンルランキング]
プログラミング
4位
アクセスランキングを見る>>
カレンダー(アーカイブ)
プルダウン 降順 昇順 年別

07月 | 2017年08月 | 09月
- - 1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31 - -


はてな新着記事
はてな人気記事
ブロとも申請フォーム
プロフィール

yohshiy

Author:yohshiy
職業プログラマー。
仕事は主に C++ ですが、軽い言語マニアなので、色々使っています。

はてブ:yohshiy のブックマーク
Twitter:@yohshiy

サイト紹介
プログラミング好きのブログです。プログラミング関連の話題や公開ソフトの開発記などを雑多に書いてます。ただ、たまに英語やネット系の話になることも。
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。