先日、OmniWebがフリーウェア化されました。レンダリングエンジンがWebKitに移行してからというもの、使う機会はめっきり減りましたが、NeXTSTEPをメインで使っていた時期には大変お世話になったブラウザです。今後アップデートされるかどうかは不明ですが、これが実質的な現役引退宣言と捉えてよさそうです。長い間ありがとうございました。

さて、今回は「Safari 4」について。先日公開されたパブリックβ版を使用し、新機能についてあれやこれや検討する、という趣旨だ。公開直後にレビュー記事「Appleの新Webブラウザ「Safari 4」β版を速攻検証!!」も掲載しているが、時間の都合で触れなかった部分も相当あるため、ここで補遺としてお伝えする次第。

まずは「150の機能」をチェック

Apple製品を紹介するWebページは基本的に日米共通だが、Safari 4の場合は米国サイトのほうが断然情報量が多い。邦訳された日本サイトのページのほうが読みやすいが、内容はサマリーといった印象が強い。より詳細な情報を入手したければ、米国サイトのページにアクセスしたほうがいい。

米国サイトのページからは、いろいろなことがわかる。W3Cが策定を進めるリッチインターネットアプリケーションのアクセシビリティに関する仕様「Web Accessibility Initiative-Accessible Rich Internet Applications」に準拠するとか、テキストやスクリプトなどのデータを事前にキャッシュしておき待ち時間を短縮する「Speculative Loading」とか。WebKitのサイトが (Safari 4リリース直前で) だんまりを決め込んでいるいま、非ADCメンバーにとって貴重な情報源といえる。ただし、Safari 4で表示するとページは激重なのでご注意を。

バンドル内部に"隠し機能"を発見?

Safariは単独のバンドル (.app) ではなく、フレームワークやコマンドなど、Finderでは不可視の領域へインストールされるファイル群により構成される。パッケージをインストールすると、WebKit / JavaScriptCore / PubSubフレームワークが/System/Library/Frameworks以下へ、JavaScriptGlue / Safari / Symbolication / SyndicationUIフレームワークが/System/Library/PrivateFrameworks以下へ、そしてlibxml2などのライブラリやpubsubなどのコマンドが/usr以下へインストールされるはず。Safari 4の機能を語る場合、これらバンドル外部の要素についても検証することが筋といえる。

バンドル内部もチェックが必要。Safariにかぎらず、そのアプリケーション単独で利用するフレームワークや (補助機能としての) 実行ファイルが収録されていることもあるからだ。というわけで調査を開始したところ、いきなり見慣れないモノに遭遇。「WebApplicationCore.bundle」と「Safari Webpage Preview Fetcher」だ。

Safari 4のバンドル内部。これまでなかった「WebApplicationCore.bundle」と「Safari Webpage Preview Fetcher」を発見

そのうち「WebApplicationCore.bundle」は、名前からしてWebアプリをオフラインで使用可能にする機能と考えられる。β版の現在、メニューやツールバーにそれらしきコマンドやボタンは見当たらないため、なんらかの事情があり無効化されているのだろう。具体的な方法は後述するが、defaultsコマンドで切り替えできるオプションが見当たらなかったため、これを有効化する方法は現在のところ不明だ。

Safari Webpage Preview Fetcherは、新機能「Top Sites」のサムネイルデータ作成と更新の有無をチェックするプログラムだ。Top Sitesを表示すると起動され、バックグラウンドで上述の処理を行う。アクティビティモニタなどで確認すればわかるが、CPUにそれなりの負荷がかかるため、表示するサイト数とサイトの内容次第ではレスポンスが低下することもある。

Top Sitesの表示を開始した直後のアクティビティモニタ。設定はサムネイル6つの「Large」だが、CPU負荷の高い状態がしばらく続く

お約束の"隠しオプション"

お約束、defaultsコマンドで発動できる"隠しオプション"探しも決行。stringsコマンドを実行し、Safariの実行ファイル (/Applications/Safari.app/Contents/MacOS/Safari) にそれらしき文字列が含まれているかどうかを探す、という作業だ。最初にヒットした「DebugSafari4TabBarIsOnTop」で試してみよう。


$ strings /Applications/Safari.app/Contents/MacOS/Safari | grep Safari4
DebugSafari4TabBarIsOnTop
……
(以下略)

文字列から推測するに、このオプションはタブバーをウインドウのタイトル部分に表示するスイッチ (デフォルトは表示) であり、真偽値を「NO」にすればタイトルバーへの表示は無効化されるはず。早速以下のとおりコマンドを実行してみたところ……ビンゴ! めでたく (?) タブはURLバー / ブックマークバーの下にSafari 3と同じデザインで表示された。賛否両論の新しいタブデザイン、お気に召さなければいちどお試しあれ。


$ defaults write com.apple.Safari DebugSafari4TabBarIsOnTop -bool NO

※:設定を戻す場合は「defaults delete com.apple.Safari DebugSafari4TabBarIsOnTop」を実行すること

このとおり、Safari 4が従来のタブデザインで起動する