待ちに待ったこの日がきました。本日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がないことは、いうまでもないだろう。
KEXTの管理方法も異なるようで、必要なKEXTを自動的にロードするためのデーモン「kextd」が存在しない。システムコンフィグレーションを司るconfigd、キャッシュバッファに蓄えたデータをファイルシステムに書き込むupdateといった例外を除けば、Mac OS Xで動作しているデーモンの大半がiPod touchには見当たらない。逆にいえば、必要最低限のリソースで動作する省エネ指向のシステムということになる。
ディレクトリ構造とシステムフォルダを調べる
iPod touchのファイルシステムは、マルチユーザ環境は想定されていないことからUsersディレクトリがないことを除けば、基本的にはMac OS Xと同じ。「/
」を基点としてツリー状に展開されたディレクトリ構造を持ち、「/
」直下にはApplications
とLibrary
、System
のほか、UNIX系OSらしくetc
にusr
、bin
やsbin
が置かれている。
/System/Library
以下はといえば、サブディレクトリにCoreServices
やExtensions
があるなど、基本構造はMac OS Xと同じ。ただし必要最低限のリソースしかなく、Spotlight
やQuickTime
といったサブディレクトリは見当たらない。
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、と理解すべき製品なのだといえる。