WebKit?

かなり遅れているような気がするが、ちょっともとい、どっぷりChromeにはまった。
日常的に使うブラウザだからこそ、細かい機能もいらない。別にブラウザ自体で遊ぶわけじゃないからてんこもりのプラグインもいらない。
高速起動。高速終了。高速レンダリング。これが求めてるもの。

というわけでv8のソースファイルをsvn経由で取得してWindows環境でBuildしてみた。
もう、カスタムでNativeい組み込むObjectやらFunctionやらProperty(Getter/Setter)等、みんなやっていますが、
自分の備忘録のために、そのうちこのBlogにも書こうと思う。

さて、ChromeWebKitの関係について考えてみた。
もともと、Chromeがリリースされたときは、「WebKitを利用」と記事で読んだので、
GoogleSafariの違いは、「ガワ」だけなのかー。と思ってたが、とんでもない。
色々調べてるうちにブラウザ界隈もえらいことになってることに気づく。
以下、間違ってるものがたくさんあると思うので、じゃんじゃんご指摘ください。(Windows畑の人間なので、Windows版で.)

個人的な理解では、

Browser = [HTML Parser] + [HTML Rendering(描画)] + [JavaScript実行] + [HTTP Stack] ? (もちろん、こんな単純な図式ではないんでしょうが。)

(e.g)

Internet Explorer = Trident + GDI(or GDI+?) + JScript + WinSock ?

WebKitという名前は上記の式でいうところの[Browser] or [HTML Parser]のDouble Meaningであると勝手に思ってます。

またWebKitの中にはWebCore, JavaScriptCoreがあり、WebCoreはHTML Parse, JavaScriptCoreはその名の通り、JavaScript実行。

で、[WebKit]を使っているブラウザの代表格2つ、SafariChromeを比べてみる。

Safari = [WebCore] + [CoreGraphics] + [JavaScriptCore] + [????](コード読みます。。)
Chrome = [WebCore] + [Skia] + [v8] + [Original]

と、
もはや、全然違うもののような気がします。そしてまた混乱の種。WebKit(だけじゃないんでしょうが)Portという概念があります。

WebKit/GTK+ = [WebCore] + [GTK+(Cairo)] + [JavaScriptCore] + [????]
QtWebKit = [WebCore] + [Qt(GDI?)] + [JavaScriptCore] + [????]

で、ちょくちょく日記にしているAndroidWebKit

AndroidWebKit = [WebCore] + [Skia] + [JavaScriptCore] + [????]

ということで、個人的には、WebKit === WebCoreなだけじゃないのか?という気がします。

なんでこんなこと調べてるのかというと、
発端はGoogleの記事を読んだからです。http://googlejapan.blogspot.com/2009/01/google-chrome-dev-201561-beta-1015443.html

ブラウザがどこまで高速化するのか、という問いに対して、Googleは着実に前進(というか、そこまですんの?といった感じ)しています。

ChromeV1 = [WebCore] + [Skia] + [JavaScriptCore] + [WinHttp]
ChromeV2 = [WebCore] + [Skia] + [v8] + [独自実装]

忘れないように、本題とは違いますが、FireFoxの構成

FireFox = [Gecko] + [cairo] + [TraceMonkey] + [????]

個人的に今気になっているのは、
QtWebKitとWebKit/Gtk+.というのも、WebKitsvnからソースコードごとダウンロードしてきてBuildすると、それはWebKitというより、Safariが出来上がってしまうのです。http://webkit.org/
上記Safari[CoreGraphics]
これが曲者でして、再配布禁止なわけです。
なので、WebKitを利用して「俺ブラウザー」を作るのがちょっと難しい。
しかし、Qt,Gtkを用いたRenderingだと、CoreGraphicsを使わない描画になるので、「俺ブラウザー」を作るのが簡単になるわけです(理論的には)
Gtk+のこのあたりの話はhttp://www.atoker.com/blog/2008/02/10/webkit-for-windows-gets-cairo-support/ここにあります。
また、Qt/WebKitを用いたブラウザはすでに、「Arora」http://code.google.com/p/arora/
というものがあります。

話が飛びまくりですが、cairoやらSkiaを聞いたことがない人のために。
cairo: http://cairographics.org/ Gnome, Gimp等多数
Skia: http://code.google.com/p/skia/ Android, Chromeで利用

このあたりも勉強してみようと思って、【SkiaではじめるHello!World】みたいなEntryを書こうと思ったのですが、
上記のSVNから落としたソースがWindows環境でBuildできませんでした。
同じ人がいたようですが、結局解決できずじまいのようです。http://www.mail-archive.com/chromium-discuss@googlegroups.com/msg04497.html
ここhttp://www.atoker.com/blog/にエントリー自体はあるので、今度Linux環境で試してみます。

これを読んだ人に何の得があるかというと、おそらくよくある会話(なのかな?)の
Safariで動作確認したから、Chromeで確認しなくても大丈夫だよね、WebKitだし」という愚かな質問に喝を入れることができます。
。。。これくらいしか思いつきませんね。

また上記色分けしている特徴の中に、
HTML5の時代がやってくると、LocalDBへのアクセス、CanvasをはじめとするRichGrapchicsで差が出るんでしょうね。

今のところ、[LocalDB] -> SQLite, [RichGraphics] -> OpenGLという流れのようですが。

webcore, v8, skia, cairo, sqlite, openGL, gacko,..etc ...
ものすごくOpen Sourceの集合体になっています。

そこで気になるのが、IEです。かなり「浮いて」いるような気がします。
誤解のないように断わっておくと、私は「アンチMS」ではなく、どちらかというと「MS Love」なわけですので、
頑張ってほしいです。PC、Internetをここまで広めた功績は大きいですし、これからも担うべき役割は多くあると思います。

上記の勝手な方程式に従って、
Super IEとして、

IE改造 = [Trident] + [WPF] + [JScript] + [WinHttp] + (LocalDB)[Sql Server Express Edition] + (RichGrapchis)[DirectX]

のようなものをやけくそで作ってくれることに期待w
ものすごいScalabilityのような気もしますがどうでしょうか。(特にSQLのあたり)