先のリスト6に注釈を加えた図1を見てほしい。すると、見慣れないキーワードがあることに気が付くだろう。KeepAliveというのがそれだ。Leopardでは、新たに表1(6ページ目に掲載)にあるキーワードが追加、変更されている(Tigerまでに関するlaunchdの設定項目一覧は7ページ目の表2を参照してほしい)。

利用例も含めた「表1: Leopardで追加された、launchdの新しい設定項目(キーワード)一覧」を、PDFデータとして用意しています。

図1: リスト6に注釈を加えたもの。新しいキーワードKeepAliveに注目

user level starterとしてのlaunchd

また、図2図3を見てほしい。これは、TigerとLeopardのアクティビティモニタでプロセスの階層表示をしたところだ。余談だが、ここではLeopardで追加された画面共有機能を用いている。これはApple Remote Desktopのサブセットで、VNCプロトコルを用いてリモートマシンのGUIを表示できる機能だ(図4)。

図2: Tiger上で表示した、アクティビティモニタによるプロセスの階層。各アプリケーションはWindowServerの子プロセスとして活動している

図3: Leopard上で表示した、アクティビティモニタによるプロセスの階層。Leopardでは、各アプリケーションはユーザ権限で実行するlaunchdの配下として動作している

図4: Finderのメニューからファイル共有だけではなく、画面の共有も可能になった。これはApple Remote Desktopと同じVNCベースの機構で、MacだけではなくVNCの動作しているWindowsやLinuxでも接続が可能だ

閑話休題、Tigerまでは、WindowServerがユーザアプリケーションすべての親プロセスであった。Finderは単なる1アプリケーションに過ぎず、子プロセスを持たず、アプリケーションを起動するときは、LaunchServiceを通じてWindowServerに起動の依頼をしているだけの存在であった。すべてのアプリケーションは画面描画を司るWindowServerから実行されていたのだ。

一方、Leopardでは、ユーザレベルのlaunchdがその位置にある。WindowServerすらもlaunchdの子プロセスに過ぎない。アプリケーションを起動する役割は、launchdが担っているのだ。

ユーザーレベルのlaunchdはユーザーのログイン時に起動され、/System/Libary/Library、ユーザホームにあるLibraryの3つのLibraryフォルダの下にあるLaunchdAgentsフォルダをユーザのログイン時に参照し、起動時やネットワーク接続の変更時など、指定されたタイミングで適切なバックグラウンドプロセスを起動する。iCalなどスケジューラのリマインダ機能やTime Machineのバックアップエージェント、Input Methodのサーバなど、ユーザの活動に応じたバックグラウンドプロセスの存在は不可欠だ。これまではいろいろな小細工を弄してそうしたプロセスを立ち上げていたが、LaunchAgentを用いることでシステム標準かつ起動処理などと同じ統一的な手法でバックグラウンドプロセスが用意できる。この点がLeopardで強化されたのだ。

図5: sshを起動し、(パスワードではなく)秘密鍵のパスフレーズをリクエストされた場合、このようなパネルが表示される。このパネルはKeychainと統合されており、Keychainにパスフレーズを登録すれば、ssh-addを用いずにパスフレーズなしのリモートログインが可能となる

手っ取り早くこの強化を実感したい場合は、SSHを使ってみるといいだろう。Leopardは標準で、ssh-agentをバックグラウンドに起動している。Terminalから起動したsshコマンドを含むすべてのアプリが、ssh-agentの機能を利用できるのだ(図5)。

また、パスフレーズの入力はKeychainと統合されている。KeychainにSSHのパスフレーズを記憶させていたなら、ssh-addを使わずにパスフレーズの入力も自動化され、あっという間にリモートサイトへログインできる(注3)。

見えないところも進化している

まずは実質的な第1回ということで、軽めの話題であるrcの引退とlaunchdについてを取り上げた。もちろん、これは前回に述べたように300の新機能からはうかがい知れない改善だ。しかし、例えばTime Machineのバックアップを支えているのはこうした改善された起動処理、ユーザレベルでのエージェント起動処理の強化である。

派手な一覧に惑わされてはいけない。Leopardは、そしてMac OS Xはそれらを支える強力な土台をもつ、骨太なOSなのだから。

注3: パスフレーズの入力も自動化され、あっという間にリモートサイトへログインできる
パスフレーズによる認証は相手側サイトの.ssh/authorized_keysに公開鍵を登録した場合に限られる。公開鍵による認証をしないパスワード入力については、手動で入力する必要がある。