WWDC 2009でいろいろ新製品がリリースされ、私のスケジュールも非常にタイトなものになっています。iPhone 3G Sの手配もしなけりゃならないし、Snow Leopardリリースに向けての準備も必要だし。暑い夏になりそうです。

さて、今回は「Safari 4」について。いろいろ書くべきことはあるが、まずはプラグイン関係の話と、貴重なディスクスペースを圧迫する「プレビューのキャッシュ」回避策を取りあげてみたい。

インストール完了、最初はここをチェック

OS Xには、インプットマネージャの機構を利用したプラグインが存在する。概要は「第304回 OS標準ハック仕様? の『SIMBL』を知る」で解説しているとおりで、Safari 4ではこの辺りの実装に変更が行われたものと推定される。実際、バージョンアップしたら動作が不安定になった、何やら遅いといったトラブル報告も耳にしているので、一度以下のディレクトリをチェックし、プラグインをすべて外すことをお勧めする。継続して使いたいプラグインがあるのならば、Safari 4対応版の有無をチェックしたうえで、再インストールしたほうが確実だ。


/Library/Application Support/SIMBL/Plugins
/Library/InputManagers
~/Library/Application Support/SIMBL/Plugins
~/Library/InputManagers

ところで、Snow Leopard上で動作するSafari 4は、プラグインが別プロセスで動作するとの発表が行われている(現行のLeopardでは従来どおり)。Google ChromeとIE 8のマルチプロセス化は1タブ/1プロセスの方法で進められ、Firefoxも次々バージョンの3.6から同じ方法でマルチプロセス化される予定であることを重ねると、Safariのみプラグイン単位という点は興味深い。メモリ喰いの傾向が強いSafariのこと、意外にこの「1プラグイン/1プロセス」というアプローチが正しいのかもしれない。

まだ使える、あの「隠し機能」

このSafari 4正式版、Public Betaのときに存在した「隠し機能」の多くが利用できない。stringsコマンドでバイナリ内部をダンプしたところ、「Debug~」というエントリがだいぶ削られているため、Public Beta向けに公開されていたdefaultsコマンドで隠し機能をON/OFFするテクのほとんどは、もはや時代遅れとなってしまった。

ただし、残されているエントリもいくつかある。キャッシュ無効化やイメージ無効化などをON/OFFできる「開発」メニューを使いたい場合には、以下のコマンドを実行すればOK。操作のジャマになることもSafari 4の動作が変わることもないので、表示したままにしておいても支障はないだろう。


$ defaults write com.apple.Safari IncludeDebugMenu -bool true

※:元の状態(「開発」メニューを表示しない)へ戻す場合
$ defaults delete com.apple.Safari IncludeDebugMenu

「開発」メニューは正式版でも利用できる

増え続けるキャッシュとの闘い

Safari 4のもっともフォトジェニック(?)な機能「Top Sites」

Safari 4のTop SitesやCover Flowを支えているのは、随時作成される画面イメージ(スナップショット)のキャッシュだ。イメージとしてキャッシュされているからこそ、あれだけの速度で表示できるわけで、キャッシュ抜きには成立しない機能ともいえる。

しかし、キャッシュは確実にディスクスペースを圧迫する。「~/Library/Caches/com.apple.Safari」ディレクトリ以下を眺めればわかるが、キャッシュを削除することなく使い続けていれば、このキャッシュ領域の容量は数百MB以上(筆者の場合約720MB)を超えているはず。これでは、起動に時間がかかる/起動直後にカーソルが回転し続けるという状態になってもおかしくはない。

増えに増えたキャッシュ容量。これはデータベースファイル(Cache.db)をあわせた数値だ

そこでお勧めしたいのが、キャッシュデータベースの整理。「第236回 SQLiteが広げるこれからのアプリケーション」でMail.appのインデックスを最適化するときに紹介した方法が、ここでも利用できるのだ。データベースの容量はわずかに減る程度だが、起動しても反応がないまま、という事態は確実に減るはず。慌ててキャッシュを削除する前に、試す価値はあるだろう。


$ cd Library/Caches/com.apple.Safari
$ sqlite3 Cache.db vacuum

これでキャッシュDBは整理されるが、閲覧したサイトのプレビューがドシドシ保存される仕様は変わらない。これを禁止するには、Public Betaのときに発見された以下のオプションを設定する方法が有効だ。これでSafari 4を再起動すれば、プレビューは保存されなくなる。Cover Flowが寂しいことになるが、~/Library/Caches/com.apple.Safari/Webpage Previewsの内容を消去すれば、だいぶHDDの空きも増えることと思う。


$ defaults write com.apple.Safari DebugSnapshotsUpdatePolicy -int 2

※:元の状態(すべてのプレビューを保存する)へ戻す場合
$ defaults delete com.apple.Safari DebugSnapshotsUpdatePolicy

プレビューが作成されないので、かなり寂しくなった「Top Sites」。マウスオーバーすると、サイト名とURLは表示される