“Safari Web コンテンツ” プロセスの最大数を変更する方法

MacSoft

去年末の記事で見つけた Safari の WebKit2 のプロセスの最大数を変更する方法をまとめておく。正式に提供されている機能ではないので試すなら自己責任で。

Safari を終了したあとでターミナルで以下を入力(最後の部分が数字):

defaults write com.apple.Safari DebugMaximumNumberOfWebProcesses -integer 4

元に戻すなら:

defaults delete com.apple.Safari DebugMaximumNumberOfWebProcesses

Mavericks の Safari のタブとプロセスについて

MacSoft

[D] Mavericks Safariを以前のサクサク軽快Safariに戻す方法 - Drift Diary XV

不覚にも昨日まで気づかなかったんですが、気づいたらMavericksのSafari 7ってタブ毎にプロセスを生成するGoogle Chromeスタイルにアーキテクチャが変わってたんですね。

(中略)

いくらMarvericksで圧縮メモリー機能を搭載して、実メモリの1.5倍程度はメモリーが有効に使えるようになったとはいえ、タブ毎に軽く100MBくらいメモリー取られると10タブで1GBですよ。さすがにちょっと富豪すぎ。

(中略)

もちろん将来的にもっともっとメモリーやCPUがリッチになっていけば、タブ毎にプロセス作るなんて無視できるコストになると思うけど、現状は明らかに重くなってるもん。

(中略)

前述したようにもっとハードウェアのリソースが潤沢になってくればタブ毎にプロセスを立ち上げるモデルのほうがメリットが強くなってくるし、新しい実装のほうが進化を続けていくのは当然のことなので、将来的にこのような設定は不要になるとは思いますが、「まだデフォルトで有効にしなくても良かったんじゃない?」という気もします。

Mavericks の Safari が複数のプロセスでタブを管理するようになったのは知っていたけど、この記事を読んで「1 タブ 1 プロセスというほどたくさんのプロセス起動していたっけ」と疑問が。Activity Monitor で数えてみたところ、“Safari Web コンテンツ”の数は 20 個。そのとき開いていたタブは 77 個なので、タブの数よりずっと少ないことになる。

ということは、 Safari ではタブが 20 個を超えるまでは同じ数のプロセスでそれを負担し、さらに増えるとプロセスあたりのタブ数が増えていく仕様かもしれない。とするとその最大数を定義する隠し設定があるに違いない!

...探してみると、ありました。DebugMaximumNumberOfWebProcesses がそのキー。これに値 6 を設定して Safari を起動したところ、しっかり 6 プロセスで 77 タブを支えるようになった。

つまりこの値を調整すれば、この記事で比較している“旧 WebKit2 プロセスモデル”と“Chrome プロセスモデル”のいいとこ取りができるかも!

とは言え自分の環境ではむしろ Mavericks にして Safari が軽くなった印象があったし、この設定を使ってもタブの数が多いせいかほとんどメモリ消費は減らなかった。常にタブを大量に開いている偏った環境での話なのであまり参考にならないと思うけど、人によっては効果があるかも。

(隠し設定なので問題が発生する可能性があります。設定するなら自己責任で。)

2014.3.22 追記

設定のやり方を記事にしました

Mavericks で Apple 製テーマが生まれ変わる

MacSoft

これで OS X 日本語環境の不自由がまた一つ解消された!これまであきらめていたテーマもどんどん使いましょう。

Apple がテーマのフォント指定をこれに変えてくれるとうれしい。

Lion と Mountain Lion の Tips

MacSoft

Lion と Mountain Lion。見た目がほとんど同じ両 OS だけど、ログイン画面で見分ける方法がある。(非 Retina 環境のみ確認)

システムの起動が終わったあと、画面中央のリンゴがずるずる上に移動してログイン画面になるけど、Lion ではそのマークがかすれている。Mountain Lion ではくっきりと表示されるのだ。

ぜひ家族や友人の Mac のログイン画面を見て Mountain Lion かどうかを当てて驚かせてみてほしい。

...

未だに信じられない!

中央位置の計算 x=(W-w)/2 かどこかで小数点以下を切り捨て忘れ、1 ピクセルに満たないずれが起きてしまったのだろうか。

最初に見たときは、Apple なら当然すぐに直すだろうと思っていた。
だが製品版どころか 10.7.1、10.7.2、10.7.3、とバージョンアップしても直らなかった...
結局直ったのは 1 年ぐらい経ってリリースされた 10.8。

自分は基本的に「ジョブズがいたらこういうことはしないはずだ」なんてくだらないことを言うことはないのだけど、この件に関しては言いたい。

ジョブズがいたらこうはなってない。iPhone の画面に小さく表示される Google ロゴの黄色いグラデーションがおかしい件について日曜日にも関わらず Google の責任者に電話してすぐに直すことを伝えたようなジョブズが、こんな目立つ位置にあって、動いた後で余計に目立つ、そして Mac を起動してまず目にする存在である、それも自社のロゴがピクセルずれを起こしているのをそのまま 1 年も放置するなんて許すはずがない!
Lion はジョブズが生きているときに出たけど、もう iOS が精一杯で、OS X までチェックする時間と体力が残っていなかったのだろう。

...というかジョブズの名前を出すレベルでもないと思う。自分ですら初めて見たときに気づいたし。

昔から未完成レベルの物をリリースすることはあるけれど、最低限こういう部分だけはしっかり仕上げてリリースする会社だったはず。この件は残念だった。

Sandbox とファイルアクセス

MacSoft

Mac App Store にある、“もももー”氏による Pixelmator のレビュー:

ファイル操作もまともに出来ないゴミ ★☆☆☆☆

V2.0以降全く治っていません、どこがMountain Lion対応かと。
ホームのピクチャフォルダへ外部ストレージにあるフォルダのSymbolic Linkを作成しても、フォトブラウザでは「アクセス権が無いので開けません」と表示されてアクセス出来ません。
PhotoShopでは普通に開けるので本アプリのバグと思われますが、基本的なファイル操作もまともに動作しないのであれば使い物になりません。
都合の悪いレビューは封殺したり、異常な数の不参考とは。。。
Appleはソニーと同じ悪行に陥ったのか。。。

これは Sandbox による制限なので Pixelmator Team はどうしようもないのだ。Photoshop で問題なく動くのは Sandbox 化されていないため。

Sandbox 内からアクセスできるファイル

2012 年 6 月以降、Mac App Store では Sandbox が必須になった。
Sandbox の目的は、必要なもの以外はアプリケーションに見せない/操作させないことであり、セキュリティの向上に大きな効果がある。

Sandbox を有効にすると、アプリケーションがアクセスできるファイルが次のものに制限される:

  1. アプリケーションをビルドするときに開発者が指定した絶対パス
  2. ユーザがアプリケーション内の“開く”ダイアログで選択したファイル
  3. ユーザがアプリケーション内にドラッグしたファイル

1 は開発者が指定できるが、必要以上に浅いパスにすると(“/” など)Mac App Store の審査に通してもらえない。
「写真を扱うアプリケーションなら“ピクチャ”フォルダ、音楽を扱うなら“ミュージック”フォルダを指定」ということだろうけど、ユーザが必ずホームフォルダ内の所定のフォルダにファイルを保管しているとは限らないのであまり役に立たない。

2 と 3、ユーザの操作は尊重するということだろう。
でもよく使うファイルやフォルダが決まっているなら問題がある。アプリケーションを起動するたびにユーザが“開く”ダイアログで選択しなければいけないのだ。

そこで OS X 10.7.3 では新しい API が追加され、2 と 3 でアプリケーションが得たアクセス権を環境設定やファイルの中に保持しておくことが可能になった。

ただしエイリアスやシンボリックリンクは除く

これもセキュリティ向上のためだろうけど、アプリケーションがあるフォルダに対してアクセス権を持っていても、その中のエイリアスやシンボリックリンクに対するアクセス権はないのだ。

例えば iTunes ライブラリにアクセスするアプリケーションがあるとする。“ミュージック”フォルダのアクセス権を持っていても、その中の“iTunes”フォルダがエイリアスで、実体が外付けハードディスクにあったりしたらアクセスすることができない。

前述のレビューの件もそれである。“ピクチャ”フォルダのアクセス権だけではその中のシンボリックリンクにアクセスできないのだ。

Pixelmator での対処法

では Pixelmator のフォトブラウザから外部ストレージのフォルダにアクセスするにはどうすればいいのか。ユーザが選択すればいいのだ。

Pixelmator のフォトブラウザにはデフォルトで“ピクチャ”フォルダが登録されているが、そこから中のシンボリックリンクを開けようとせず、外部ストレージにあるというフォルダを自分の手でフォトブラウザにドラッグして登録すればいい。

iTunes 11 や iPhoto '11 から想像すると

MacSoft

OS X 10.9 の UI では

  1. フォントが Helvetica Neue に変更される。
  2. サイドバーがデフォルトで表示されなくなる。
  3. サイドバーアイコンのカラーが復活。
  4. ツールバーアイコンの背景が消えてボタンっぽい見た目じゃなくなる。

1 は特に困る。お願いだから Lucida Grande のままでいてくれ...

Sketch 2

MacSoft

ということで購入。DrawIt 割引があり ¥2,000 ぐらいで済んだ。

ノイズやぼかしなど、DrawIt にしかなかった機能がいくつか取り入れられている。
さらに Cocoa 開発者には必須な @2x の画像を同時に書き出せたり、スライス機能が強化されていたり、属性を CSS としてコピーできるようになっていたり。

まだいくつか足りない機能はあるけど、DrawIt の後継として便利に使えそうだ。
新しく購入する人は Mac App Store から。公式ページでは体験版をダウンロードできる。