ついに新iPadが発売されました。iPhone 4/4SでRetinaディスプレイは知ったつもりでいましたが、さすがに9.7インチはインパクトが違いますね。というわけで、これからしばらく新iPad漬けになります。レビュー記事にご期待ください! さて、今回は「Safari」について。

ついに新iPadが発売されました。iPhone 4/4SでRetinaディスプレイは知ったつもりでいましたが、さすがに9.7インチはインパクトが違いますね。というわけで、これからしばらく新iPad漬けになります。レビュー記事にご期待ください!

さて、今回は「Safari」について。

先日アップデータが公開され、バージョンがv5.1.3からv5.1.4へとわずかに変わったが、その変更内容はかなりのものだ。ここでは、その内部構造とパフォーマンスの変化について解説してみよう。

マイナーバージョンアップ以上の進化を遂げた「Safari 5.1.4」

謎の領域「StagedFrameworks」

LionでSafariをv5.1.4にアップデートしたとき、これまでと違う「何か」に気付いただろうか? そう、今回のバージョンからSafariはアップデート後のシステム再起動が必要なくなった。機能拡張や設定ファイルの追加程度ならともかく、パッケージ容量は50MB近くある大規模なアップデートなのだから、従来のセオリーでいえば再起動は必要なはずだが、Safari v5.1.4はアップデート後すぐに利用できてしまう。

その謎を解く鍵が「サンドボックス」だ。Appleは、OS XとiOSにおいてアプリケーションのサンドボックス対応をサードパーティーに呼びかけているが、もちろんAppleはその先頭に立つ。実際、プレビューやテキストエディットなどLionに標準装備のアプリケーションのうちいくつかは、すでにサンドボックス対応を果たしている。

バージョン5.1以降のSafariは、コンテンツの表示など処理を「Safari Web コンテンツ」――WebKit2フレームワークに含まれる「WebProcess.app」――に担わせている。Safari.app自体はいわば"ガワ"で、Safariのサンドボックス対応はWebProcess.appにより行われているのだ。

そのWebKit2は、Safari v5.1.3までプライベートフレームワーク(/System/Library/PrivateFrameworks/WebKit2.framework)としてインストールされたものを利用してきたが、v5.1.4からは新たに設けられたステージドフレームワーク(/System/Library/StagedFrameworks/Safari/WebKit2.framework)にリンクが変更されている。

Safariを構成するフレームワークの保存場所が「StagedFrameworks」に変更された

これはWebCoreやJavaScriptCoreといったSafariを支えるフレームワークも同様で、内容の変更後はリブートを伴うプライベートフレームワーク領域から切り離された。これが、Safari v5.1.4のインストール後に再起動が必要なくなった理由だ。

Safari v5.1.3(左)とv5.1.4(右)とでは、リンクするフレームワークの位置が異なる

JavaScriptエンジンが大幅にスピードアップ

WebKit2などフレームワーク群のインストール先が変更されたことは、直接エンドユーザに大きな影響を及ぼすことはない。アップデート後の再起動が不要になる程度で、ほとんどのユーザはStagedFrameworksディレクトリの存在など意識することはないだろう。

しかし、うれしいことに、Safari v5.1.4がもたらす変化は体感できるレベルにある。Safari 5.xのJavaScriptエンジン「Nitro」の改良により、JavaScript関連のパフォーマンスが大幅に向上したのだ。

試したのは、WebKit開発チームが作成したJavaScriptベンチマーク「SunSpider 0.9.1」。暗号化/復号化処理を行う「Crypto」や、単純な数値演算を繰り返す「math」など複数のプログラムで構成されるベンチマークスイートで、WebKit/Safariのみならず多くのWebブラウザのパフォーマンス測定に利用されている。

その結果だが、全体で約23%パフォーマンスが向上という数値で表れた(Appleが発表した数値は11%)。「3d」や「bitops」など大差ない項目もあったが、文字列関係の処理を行う「string」で40%近く処理速度がアップするなど、JavaScriptエンジンの設計見直しというよりは特定の処理のアルゴリズム変更による効果がうかがえた。

表1:SunSpider 0.9.1の結果(OS X Lion 10.7.3/Mac mini(Mid 2011)でテスト)
Safari v5.1.3 Safari v5.1.4
3d 26.4 26.5
access 27.2 18.2
bitops 15.9 13.2
controlflow 2.1 2.5
crypto 21.3 13.8
date 40.6 39.4
math 17.7 18
regexp 12 8.1
string 106.5 67.3
TOTAL 269.7 207.0

Safari v5.1.4ではほかにも、多数のセキュリティ改善や不具合の解消、Webページから保存したPDF内のリンクを保持できるようになるなどの改良が施されている。まだアップデートしていない場合には、ソフトウェアアップデートを実行してみてはいかがだろう。

関連記事
アップル、「Safari 5.1.4」を公開 - JavaScriptパフォーマンス改善など(2012年3月16日)
【コラム】新・OS X ハッキング! 第24回 OS XのSafariから直接「AirPlay」する(2011年11月25日)
【コラム】新・OS X ハッキング! 第18回 Safariの「リーディングリスト」を勝手に編集(2011年10月14日)
アップル、Safari/Keynote最新版、Windows用iCloudアプレットを公開(2011年12月2日)
Apple「Safari 5」リリース、30%高速に - 拡張機能プログラム開始(2010年6月8日)