待ちに待ったこの日がきました。本日26日の午後6時、いよいよLeopardが発売になります。Apple Storeでポチッとした人、店頭まで足を運ぶ人、相当数のMacユーザが本日中にはLeopardを使い始めることと思います。当コラムも当面はLeopardネタで行きますので、ご照覧のほどよろしくお願いします。

さて、今回も小さなOS X「iPod touch」について。前回はアプリケーションのインストールで終わってしまったため、今回はシステム内部を中心に調査してみよう。なお、SSHサーバの設定とBSD Subsystemパッケージのインストールを前提にしているので、今回が初アクセスという読者は、第246回第247回第248回を参照してほしい。

まずはプロセスをチェック

繰り返しになるが、iPod touchのシステムはOS Xのサブセット版的構成となっている。sshでリモートログインすればそこにはDarwinな世界が待っているが、よく調べてみるとMac OS Xとはいろいろな点で違いがあることがわかる。

ps ax」を実行し処理中の全プロセスを確認すると、PIDが1番のプロセスこそMac OS Xと同じ「/sbin/launchd」だが、それ以外のプロセスはだいぶ異なることが分かる。たとえば、Mac OS Xには仮想記憶領域を管理するプロセス(dynamic_pager)が必ず存在するが、iPod touchにはない。ディレクトリサービスを司るDirectoryServiceやnetinfod / lookupdもない。ディスクのマウント / アンマウントを自動処理するdiskarbitrationdがないことは、いうまでもないだろう。

iPod touchで実行中の全プロセスを表示したところ。Mac OS Xと比べて格段に少ない

KEXTの管理方法も異なるようで、必要なKEXTを自動的にロードするためのデーモン「kextd」が存在しない。システムコンフィグレーションを司るconfigd、キャッシュバッファに蓄えたデータをファイルシステムに書き込むupdateといった例外を除けば、Mac OS Xで動作しているデーモンの大半がiPod touchには見当たらない。逆にいえば、必要最低限のリソースで動作する省エネ指向のシステムということになる。

ディレクトリ構造とシステムフォルダを調べる

iPod touchのファイルシステムは、マルチユーザ環境は想定されていないことからUsersディレクトリがないことを除けば、基本的にはMac OS Xと同じ。「/」を基点としてツリー状に展開されたディレクトリ構造を持ち、「/」直下にはApplicationsLibrarySystemのほか、UNIX系OSらしくetcusrbinsbinが置かれている。

/System/Library以下はといえば、サブディレクトリにCoreServicesExtensionsがあるなど、基本構造はMac OS Xと同じ。ただし必要最低限のリソースしかなく、SpotlightQuickTimeといったサブディレクトリは見当たらない。

iPod touchらしさを感じるのは、Frameworksサブディレクトリだ。CoreAudioやCoreGraphicsなどの見慣れた名のフレームワークはともかくとして、MultitouchSupport(おそらくマルチタッチ関連)やIOMobileFramebuffer(おそらくフレームバッファ描画関連)といった、iPhone / iPod touchならではのものが少なくない。

名前からすると、明らかにiPhone用のフレームワークもある。大原雄介氏執筆の「【レポート】iPod touch分解レポート - 実はiPhoneと違う、完全再設計の製品」でも明らかにされているように、iPod touchはiPhoneとハードウェア設計にかなりの相違点があり、たとえば電話機能とカメラ、Bluetoothは搭載されていない。CameraやTelephonyUI、BluetoothManagerのフレームワークは、今後も確実にiPod touchでは必要とされないだろう。

この事実から推測されるのは、AppleがiPhoneとiPod touchのソフトウェアの共有化を図ろうとしていること。ハードウェア構成から必要なコンポーネント数を推定すると、iPhone > iPod touchのはずなので、iPhone用の配布物さえ用意しておけばiPod touchでも使えるだろうからだ。その意味でも、iPod touchは"第6世代のiPod"ではなく、iPhoneグループに属す初代iPod touch、と理解すべき製品なのだといえる。

必要ないはずのBluetoothデーモンもなぜか収録。当然起動に失敗する