いにしえの Safari 4 beta の UI を懐かしむ

# かつて Safari 4 beta という血迷ったバージョンがあった

Safari 4 beta（2009年2月リリース）を覚えておられる方はこの日本には一体どれだけいらっしゃるのでしょうか。ググると Safari 4 beta の痕跡はまだまだ出てくるので、忘れていた方でもすぐに思い出せるかと思います。Safari 4 beta は Safari の歴史の中でも特に印象に残るバージョンの一つでした。なんといってもタブバーが挑戦的だったのです。

# 不可侵領域であるはずのタイトルバーがタブの侵攻を許した

![](https://qiita-image-store.s3.amazonaws.com/0/3603/e483c1f3-5d8f-3570-38aa-a1e73c72d59e.png)
![](https://qiita-image-store.s3.amazonaws.com/0/3603/cff575ab-7e3c-5677-30cd-93297eafa953.png)

それまでの Mac OS において、ウインドウのタイトルバーというものは一種の聖域でした。標準スタイルを採用するウインドウならタイトルバーには独自の要素を置いてはならないというのが暗黙的なルールでした。ウインドウはタイトルバーをつかんで移動するものだったから、そこにボタンなんて置いたらドラッグした時にウインドウを移動できなくなってしまいます。ウインドウのどこでもつかむことのできる Metal スタイルというものもありますが、ほぼ何かしらのビューで覆われるウインドウにおいてその効力は限定的です。そもそも NSWindow が提供する API ではタイトルバー領域のカスタマイズは（当時は）難しく、半ばハック的な手法でビューを配置しなければ実現できなかったのです。それをやってのけたのが、Safari 4 beta だったのでした。

# 下向きタブか、上向きタブか

当時これを初めて見た時にまず抱いた印象は、『Chrome っぽい』というものでした。下向きタブが好きだった私はとても残念な気持ちになりました。

Safari は1.0 Public Beta の頃からタブが他のブラウザとは一線を画す下向きのデザインになっていたので、この上向きタブは初代からの伝統を破るものでもありました。Safari 4 beta を担当した UI デザイナーがどのような意図でこれをデザインしたのか本当のところはわかりませんが、おそらくは Chrome などのライバルが採用している上向きタブに寄せようとしたのではないかということや、タイトルバー領域をうまく利用すればツールバーを圧縮できる分コンテンツ領域を縦方向にわずかに広げることができる、などと考えたのではないかと思います。

![](https://qiita-image-store.s3.amazonaws.com/0/3603/52b8e7db-baa0-453b-5e47-1b7e68cb3c1a.png)
*Safari のタブが元々下向きなのは、アドレスバーやツールバーとタブが表すドキュメントが対応付くことを表現する意図があったように思う。*

Mac OS のドキュメントベースアプリケーションでは通常ドキュメントとウインドウの関係が1対1になりますが、そこにタブを採用することでひとつのウインドウの中に複数のドキュメントをまとめて表現することができるようになります。この構造下ではドキュメントに対してウインドウの代わりにタブとの関係が1対1になります。この構造で一つ厄介なのは、ウインドウが持つタイトルラベルとタブが持つタイトルラベルが全く同じ意味で重複して存在することになってしまいます。Safari 4 beta ではそこを省略したかったのかもしれません。

![](https://qiita-image-store.s3.amazonaws.com/0/3603/17e078cd-e028-74e8-c07c-2942fdd30604.png)
*タイトルバーとタブにそれぞれ同じ意味のタイトル『名称未設定』が配置されるため、情報が散乱することになる。*

---

Why are Safari's tabs upside-down?
http://leancrew.com/all-this/2009/06/why-are-safaris-tabs-upside-down/

# 猛反発を浴びた『上向きタブ』

当時 の 2ch の Safari スレや Mac 系ブログを色々眺めていていましたが、やはりこの斬新なタブバーに対しては否定的な意見が多く見られました。ウインドウのタイトルバーが狭まってしまったことで『ウインドウをつかみにくく不便』だという声や、『見た目がダサい』『さっさと元に戻せ』という感情的な意見も多かった記憶があります。Apple としてもこれは実験的な試みであったのか、タブバーを以前のスタイルに戻す隠し機能をあらかじめ用意していました。

> `defaults write com.apple.Safari DebugSafari4TabBarIsOnTop -bool NO`
*http://macfan.jp/macfan/2009/02/27/post_534.html*

com.apple.Safari.plist の `DebugSafari4TabBarIsOnTop` という Boolean 型のフィールドに `NO` とすると元に戻すことができました。今となっては懐かしいハックですね。

あまりにも苦情が多かったのか、それともUI的によろしくないと判断されたのか、後に登場したバージョンではこの上向きタブは廃止され、本来の下向きタブに戻りました。そして今ではすっかり忘れ去られた幻の UI となったのでした。しかし今思うと実験的かつ貴重な UI のサンプルであったため、今頃になってとても恋しくなってしまいました。ということで私は Safari 4 beta を復活させるべく、『Safari 4 beta 復活の儀』を執り行うことにしました。

# Safari 4 beta 復活の儀

我が家には 10.7 が現役稼働している Mac があるため、それでなんとかならないかと試行錯誤することにしました。肝心の Safari 4 beta ですが、データ保存用 HDD にインストーラー（Safari4.0BetaLeo.dmg）を几帳面に保存しておいたのを発掘できたので、それを利用することにしました。

なお、この Mac では Safari 6 が稼働している状況なので、次のブログ記事を参考にそれぞれを切り分けて起動できるように設定しました。

> Safari 4 Betaをなんとかして共存させたい
> http://d.hatena.ne.jp/gct/20090310/1236709640

目的も手段もほぼ同じだったので大変参考になりました。
unpkg で .pkg を展開したら、本来システムフォルダにインストールされるはずのフレームワーク類、ライブラリを Safari.app パッケージ内に収めるように改造します。Safari の実行ファイルの代わりに同名のシェルスクリプトを配置し、それを経由して強制的に環境変数を設定するという手法をとるようにします。このシェルスクリプトには実行権限を付与しておきます。（rwxrwxr-x）

```
#!/bin/sh
APPROOT=${0}/../..
export DYLD_LIBRARY_PATH="$APPROOT/Contents/lib"
export DYLD_FRAMEWORK_PATH="$APPROOT/Contents/Frameworks"
exec "$APPROOT/MacOS/Safari4beta" "$@"
```
`$ chmod 775 Safari`

ちなみに記事通りのスクリプトだとうまくいかなかったので、パスの表記を一部変更しています。

今回は利用しませんでしたが、アプリの Info.plist に `LSEnvironment` というキー名で環境変数を直接記述することもできるようです。

またこれ以外にも、OS が備えるバージョンチェック機構が Safari 4 beta を拒絶してしまうため、Info.plist の `CFBundleVersion` を `7537.78.2` に書き換えました。

以上で復活の儀は終了です。これにより Safari 4 beta が無事起動するようになりました。
ただ、新規タブを実行すると100%クラッシュしてしまうようでしたので、これは Top Sites 機能を無効化することで対処しました。当時の Top Sites を見られなくて残念です。

![Safari 4 beta](https://qiita-image-store.s3.amazonaws.com/0/3603/ee6c8fae-9f72-6d8b-3d9a-3ac47c40b89f.png)
*Safari 4 beta 復活。ビルド番号は復活の儀の際に 6.1.6 のものに書き換えた*

当時はまだアドレスバーと Goole 検索フィールドが分離していました。検索フィールドには `NSTextFieldRoundedBezel` が設定されていて丸い形状をしています。このような丸形状のものは一般のテキストフィールドと検索フィールドを区別するためのスタイルとして用意されていました。
![](https://qiita-image-store.s3.amazonaws.com/0/3603/baf8e028-96af-2a74-c1b7-cb0a96df4a4a.png)


# タブの振る舞い

## タブ一つの場合

Safari 4 beta ではまずタブが一つだけのウインドウが起動します。この状態でタブが閉じられる意味はないのでそこにクローズボタンは無く、タブを閉じる代わりにウインドウを直接閉じます。`Hide Tab Bar` 機能は無効化されていて実行できません。
![](https://qiita-image-store.s3.amazonaws.com/0/3603/33da54fd-2d48-d2e1-7d0f-95c81f6acb45.png)

## タブ複数の場合

タブを追加していくとウインドウ幅内に均等に並ぶようにタブ幅が縮んでいきます。これは現在の Safari の挙動に似ていますが、当時としてはこれも画期的な表現であったと記憶しています。元々 Safari 3 までのタブは固定幅で左詰め表示されていました。記憶違いでなければ、当時登場したばかりの iPad 版 Safari が先に取り入れていたこの表現に合わせたのではないかと思います。

タブ数が二つ以上になるとアクティブタブにクローズボタンが表示されるようになります。Chrome と違ってクローズボタンが左側配置なのは Mac OS のウインドウに由来しますが、1番目のタブのクローズボタンはウインドウコントロールにとても近い位置にあるので、一瞬戸惑ってしまうかもしれません。
![](https://qiita-image-store.s3.amazonaws.com/0/3603/c84cd74f-806b-cd6a-0871-57c94ead6112.png)

![Safari3 tab](http://www.leancrew.com/all-this/images/safari3-tabs.png)
*Safari3: http://leancrew.com/all-this/2009/06/why-are-safaris-tabs-upside-down/*

2番目以降のタブがアクティブになると、ウインドウコントロールの背景も含め1番目のタブがグレーアウト状態になります。これだとウインドウコントロールまでが1番目のタブの一部であるかのように見えてしまいますが、かといって見た目が凸凹しすぎるとかえってよくないので、これはこれで分かるような気がします。
![](https://qiita-image-store.s3.amazonaws.com/0/3603/a9d913b5-28d9-b4cf-cd8b-fb979cf926c4.png)


インアクティブなタブにマウスカーソルを乗せると隠れていたクローズボタンが浮かび上がります。Safari 3まではすべてのタブにクローズボタンが常時見えるように配置されていましたが、Safari 4 beta ではアクティブなタブのみ常時見える形に変更されています。
![](https://qiita-image-store.s3.amazonaws.com/0/3603/0bc76749-ac01-56de-3194-b9452c579edd.png)
*インアクティブな1番目のタブでマウスオーバーすると、クローズボタン、タブを掴めることを示すアイコンが浮かび上がる*

Safari 9 ではタブのクローズボタンは基本隠れていて、マウスオーバーで表示されるようになっています。

## タブの移動・ウインドウ化

タブの右上にあるアイコンをつかんでタブを並び変えることができます。そのまま下方向に持っていくとタブから別ウインドウに分離することもできます。この辺りは現在では当たり前の機能ですね。当時はタブを直接掴んで並び替えるという仕組みはほとんど見られないものだったので、このようにして「掴めること」を示すインジケータを配置していたのだと思われます。実際、タブそのものは掴めず、インジケータ部分のみしかドラッグすることができません。現在ではほとんどのユーザーがタブとはドラッグして並び替えられる、ウインドウ化できると認識しているので、もはやそれを示すアイコン自体が消え去っています。
![](https://qiita-image-store.s3.amazonaws.com/0/3603/e6a1c8c6-41ef-1f8b-bfe3-37dffffdb11f.png)
*タブの並べ替え*

![](https://qiita-image-store.s3.amazonaws.com/0/3603/89e21b05-87bc-f9b5-334e-766540c97abd.png)
*タブのウインドウ化*

## ツールバー・ブックマークバー

基本的なバーを隠すと一見標準的なウインドウのようになりますが、タイトルバーはタブバーが同居しているのでよく見ると割とインパクトのある構造であることがわかります。
![](https://qiita-image-store.s3.amazonaws.com/0/3603/d83a3cc0-eee2-85d7-1af0-8870231218f1.png)
*すべてのバーを隠した状態*

![](https://qiita-image-store.s3.amazonaws.com/0/3603/44a054b5-4d79-1e89-2498-c0740ed4b179.png)
*ブックマークバーのみ表示した状態*

![](https://qiita-image-store.s3.amazonaws.com/0/3603/a8d958fa-229a-4d7c-e30c-4f4f3d919bce.png)
*すべてのバーを隠して、複数タブを並べた状態*

![](https://qiita-image-store.s3.amazonaws.com/0/3603/593409a3-421f-f2b5-c867-0efb1c3887b5.png)
*ブックマークバーのみ表示して、複数タブを並べた状態*

## ディレクトリー階層の遡上

Cocoa のドキュメントベースアプリケーションでは、ウインドウのタイトルバーを `⌘`+`クリック`または`右クリック`することで階層を遡ることができます。Finder などに実装されているものですが、Safari ではサイトのディレクトリー階層を遡るための機能として提供されていました。Safari 4 beta では本来のウインドウタイトルバーがなくなってしまったため、この機能が利用できなくなっています。

![](https://qiita-image-store.s3.amazonaws.com/0/3603/f47b08c7-73da-2392-dcd5-84fa78361172.png)
*Safari 4 beta: タイトルを右クリックしても、タブのコンテクストメニューが表示される*

![](https://qiita-image-store.s3.amazonaws.com/0/3603/720b8c67-e95f-5ef6-2df4-69c4d30fc4f4.png)
*Safari 6: タイトルを右クリックすると、Finder のようにディレクトリーを遡ることができる*

現在の Safari 9 ではもうこの機能は利用できません。そもそも今の時代では web サイトのアドレスがそのままディレクトリーを表しているとも限らなく、うまく機能しないことの方が多いために削除されたのでしょう。


## タブを限界まで並べた場合

タブをウインドウ幅限界まで並べるとタブだらけになります。タブは伸縮するので横幅がとても短くなります。アクティブなタブだけはある程度の幅を保ちます。
![](https://qiita-image-store.s3.amazonaws.com/0/3603/da206752-4eef-4e96-a61e-9f5913ba6d8e.png)
![](https://qiita-image-store.s3.amazonaws.com/0/3603/1a19a3f2-d39f-efb2-2b39-b31f62ababc5.png)

![](https://qiita-image-store.s3.amazonaws.com/0/3603/f3d479b3-bb9a-fb6a-8940-eb18694210e6.png)
*マウスオーバーでクローズボタンを表示した様子*

限界を超えると右端に『…』ボタンが追加され、ここをクリックするとはみ出たタブをメニューから選ぶことができます。
![](https://qiita-image-store.s3.amazonaws.com/0/3603/88571b1f-cb92-b263-d877-55d34e53d9eb.png)
*Safari 4 beta: はみ出たタブを表示するメニュー*

![](https://qiita-image-store.s3.amazonaws.com/0/3603/1e090b71-58b9-1c6b-3ba1-9d2cbe76e2b1.png)
*Safari 6: はみ出たタブを表示するメニュー*

<img width=1281 src="https://qiita-image-store.s3.amazonaws.com/0/3603/13fe3694-c5b2-04a7-7b4b-f3f4912deacd.png">
*Safari 9: スクロール可能なタブバー*


# その他見た目の違い

## タブのフォント

タブのフォントには当時の Mac OS X のシステムフォントである Lucida Grande が使われていますが、Safari 4 beta では Bold でさらに少し小さいサイズとなっています。タブの根元がカーブしてくっついているような見た目なのでタブの高さは実際の見た目よりも短くなっており、その分クローズボタンやラベルが少しだけ上に移動しているようです。それに合わせてフォントにも調整が加えられているように思えます。

![](https://qiita-image-store.s3.amazonaws.com/0/3603/b63646d0-6591-a573-6519-868618a51fe6.png)
*Safari 4 beta: タブ*

![](https://qiita-image-store.s3.amazonaws.com/0/3603/7c82da60-225e-0b05-28df-2e9ea8e7a42f.png)
*Safari 6: 標準のウインドウタイトルバー*


## 読み込み中の様子

読み込み中にはリロードボタンがプログレスインジケーターに変化します。
![](https://qiita-image-store.s3.amazonaws.com/0/3603/1c35d40a-1452-ab74-fe30-663aad03c615.png)
*アドレスバー右端にプログレスインジケーターがある*

![](https://qiita-image-store.s3.amazonaws.com/0/3603/c6fcfff1-baf3-e423-3fd1-cecf9e9b2a61.png)
*Safari 6 ではアドレスバーそのものにプログレスバーの役割がある*

<img width=530 src="https://qiita-image-store.s3.amazonaws.com/0/3603/30082875-821b-f8aa-f95b-eacdbe1b0451.png">
*Safari 9 では iOS 風の細いプログレスバーがアドレスバーの下端に敷かれている*