大手通信会社のBloombergが、Jobs氏死去の準備稿を誤配信したとのこと。直後に訂正したそうですが……こういうとき、非紙媒体は便利ですよね、すぐ対処できますから。実は私も、10年ほど前に出した単行本でTeXの生みの親を紹介するとき、「故Donald Knuth博士」としてしまったことがあります (ご健在は承知していたので「故」が付いた原因は不明)。幸い増刷となり訂正の機会が与えられたものの、配本はその数カ月後。恥ずかしく、申し訳ない思い出です。
さて、今回は「WebKit」について。「WebKit Nightly Builds」からダウンロードした最新版Nightlyビルド (r35986) を利用し、近々正式リリースとの噂もある"次のSafari"を見定めてみよう。
「イットウダイ」は自信の現れか!?
"次のSafari"最大のトピックといえば、やはり新JavaScriptエンジンの「SquirrelFish」。WebKitの公式ブログ「Surfin' Safari」にあるイラストは、もはや水棲動物とは思えないほどキメラ化しているが、キンメダイ目イットウダイ科の海水魚だ。
そして、そのネーミングには他のエンジンを凌駕するという思い入れが込められているらしい。最速のJavaScriptエンジンであり、Safariのメジャーバージョンアップに相応しい、最速のJavaScriptエンジン……すなわち「一等だい!」。開発者が日本語を解するかどうかは不明だが。
与太話はさておき、定番のJavaScriptベンチマークとなりつつある「SunSpider 0.9」を利用し、Safari 3.1.2 (5525.20.1) とWebKit r35986を比較したところ (表1、図1)、その差は歴然。正規表現 (regexp) のテストは僅差だったものの、他の全項目は1.5~3.8倍も高速化されている。これは確実にSquirrelFish導入の効果であり、"次のSafari"にも搭載されるものと考えられる。
表1: 「Sun Spider 0.9」の結果
WebKit r35986 | Safari 3.1.2 | |
---|---|---|
3d | 226.8 | 406.6 |
access | 235 | 528.2 |
bitops | 158.2 | 458.6 |
controlflow | 23.6 | 90 |
crypto | 93.2 | 239 |
date | 173.4 | 285.4 |
math | 190 | 450.2 |
regexp | 202.8 | 214 |
string | 452.4 | 659.4 |
TOTAL | 1755.4 | 3331.4 |
図1:「Sun Spider 0.9」の結果 |
鯛と猿、どちらが速い?
確かに、従来のJavaScriptエンジンに比べ断然速いSquirrelFishだが、Safariは遺伝子的にごく近い、いわば近似種。本当に「一等だい!」といえるかどうかは、異なる遺伝子を持つ好敵手と比べてみなければわからない。その好敵手とは……そう、あの"猿"だ。
ただし、TraceMonkeyを組み込んだFirefoxはリリースされていないため、現在Firefox 3.1に向けて開発が進められている「Shiretoko」のNightly Buildのうち、TraceMonkeyを有効化した最新版 を入手し、「about:config」画面で「javascript.options.jit.content」の値を初期値の「false」から「true」に変更……すれば動くはずなのだが、残念ながらMac OS Xのビルドではクラッシュしてしまい試すことはできなかった。こちらの検証については、後日に期したい。
見所は「HTML 5」
動画のエンコードなど"アクセルべた踏み"を要求するタスクとは異なり、多くのWebアプリは"アイドリング状態"のほうが長い。Ajaxを用いたWebアプリがこれだけ普及すると、SquirrelFishによる高速化の恩恵は少なくないと思われるが、メリットを常に実感できるかどうかは疑問だ。
「262回 WebKitから想像する次のSafari - HTML5を先取り」でも紹介しているが、個人的に"次のSafari"の見所は「HTML 5の (限定的な) サポート向上」と考えている。262回でも触れたクライアントサイドストレージ機能のサポートのほかにも、Webアプリのアクセシビリティ仕様「WAI-ARIA」に準拠するなどの新機能が用意されている。また、WebKit r35986では確認できないが、開発者向けメーリングリストなどの情報によれば、Webアプリをオフラインで実行するために必要なW3Cの仕様 (Offline Web Applications) は実装済みであり、"次のSafari"ではWebアプリをローカルに保存する機能を標準装備すること確実だろう。
CSSプロパティの独自拡張も進められている。アルファマスクを指定する「-webkit-mask」、CSSの中でcanvas要素を指定する「-webkit-canvas」など、現行のSafariではサポートされていない機能も多い。こちらの分野も要チェックだ。
WebKit r35986でCanvas要素のデモを表示したところ。Webインスペクタがウインドウ内に表示されているところに注目 |