マルチプロセスのCocoaアプリの構成を考える
さいきん発表されたGoogle Chromeの特長のひとつに、ブラウザのタブごとにプロセスを割り当ててアプリケーションぜんたいの安定性を向上させるというものがある。
ソースコードがなかなか落とせない(うちの回線は遅い)ので、その間にどのように複数プロセスのアプリを構成できるかを考えてみる。
実現することは
- タブひとつずつを1プロセスとする
- ユーザからは1つのアプリであるように見える
の2つかな。
コントロール用のアプリ(メニューだけ。Dock表示)とウェブブラウザ機能のアプリ(タブっぽくみえるブラウザウィンドウ。Dock非表示)に分けて実装する感じでいけそう。ウィンドウコントローラ使えないのがちょっと悲しいかな。後者だけにして協調して制御する方法もあるけど、たぶんコントロール用に別アプリを設けるほうがOSとのインターフェイスとして実装しやすいと思う。
Macではアプリケーションは通常ひとつしか起動しない。Classic Mac OSなんかではアプリケーションファイルを複製することで、複数の同一アプリを立ち上げることができた。 でも、どう考えてもタブの数だけアプリケーションファイル用意するとかアタマワルイよね。
Mac OS Xでは、NSApplicationではなくLaunch Servicesの機能によってアプリケーションがひとつだけ起動するように制御されているので、じつはContents/MacOS/YourAppを直接実行すれば複数起動できる。
(9/5 追記)答え合わせしようとコード読んでるんだけど、Mac版はまだアプリまで構成されてないっぽい。しょんぼり。
| 固定リンク
最近のコメント