【コラム】
OS X ハッキング!
138 Mac on Intelへの道のり - Mach-Oから探る
2005/06/13
6月といえば紫陽花の季節。酸性の土壌では青色が、アルカリ性の土壌では赤色が強く出るようですが、咲き始めは薄い緑色が多いらしい。雨が続くと出不精になりがちですが、折を見てデスクトップピクチャ用に紫陽花の写真を撮りに行こうと思います。
さて今回は、Mac OS X標準のバイナリフォーマットである「Mach-O」について。先日のWWDC 2005で発表されたIntelアーキテクチャへの移行に関連するトピックなだけに、いろいろ気になる読者にはぜひともお目通しいただきたい。
Mach-Oへのシフトを進めた"意図"
基調講演でSteve Jobs CEOは、これまでMac OS Xの全バージョンをIntelマシンで稼働させていた事実を明らかにしたが、それはさほど驚くべきことではないと思う。実際、Mac OS X 10.0のベースとなったDarwin 1.2.1はIntelマシンで動作確認されていたし、次のDarwin 1.3.1からは継続的にIntelマシン用のバイナリパッケージも提供された。当時このような記事を書いた経験から言わせていただくと、"Intel版Mac OS X"はドライバを開発する労力を除けばPowerPC版と同等、GUIなどプロプライエタリな部分にPowerPCに大きく依存したコードがあるかもしれないが、Appleさえその気になればいつでも製品化できる状況にあったはずだ。
それを何故見送り続けたか? 利益の大半をハードウェアの製造/販売に依拠するというAppleの収益構造上、アーキテクチャの変更は大冒険であったことは想像に難くないが、旧Mac OSの資産を簡単には放棄できないという難題も影響していたに違いない。それは、バイナリフォーマットの変遷から読み取れるはずだ。
Mac OS Xでは、旧Mac OSとMac OS Xどちらでも動作する「CFM」と、Mac OS Xのみ動作可能な「Mach-O」という2種類のバイナリフォーマットをサポートしているが、マルチスレッドなどBSDレイヤの機能までフルに活用できるのはMach-Oのみであり、AppleもMach-Oの利用を時間をかけて開発者に訴えてきた。最近公開されたアプリケーションの多くがMach-Oベースであることからすると、開発者側のMach-Oへのシフトはほぼ完了したと判断して差し支えないだろう。
MABというカラクリ
Mach-Oへのシフトは、Intelアーキテクチャへの移行において重要な意味を持つ。というのも、複数の区画を設けることが可能というMach-Oの特徴を利用すれば、複数の異なるアーキテクチャの実行コードを収めた単一のバイナリ(MAB : Multi Architecture Binary)を生成できるからだ。MABの利用を前提に考えると、CFMおよびClassic環境を過去の技術にするというAppleの方針は、アーキテクチャ変更への布石だったのかとも受け取れる。
このMABは目新しい技術ではなく、NEXTSTEPがx86アーキテクチャに移植された頃に実用化されたものだ。実際、NEXTSTEP 3.3J for Intelが稼働している筆者のノートPC(現役!)には、4種類のCPU(68k/x86/HPPA/SPARC)に対応したパッケージがいくつもインストールされている。
参考までに、NEXTSTEP 3.3JにおいてMABがどのように"見える"かを説明しておこう。
まず、コンパイル済のアプリケーション。NEXTSTEP/OPENSTEPのアプリケーションは、Mac OS Xにも採用されているバンドル構造を持ち、バイナリは*.appディレクトリ直下に置かれているため、それをfileコマンドで調べれば対応するアーキテクチャが判明する。たとえば、Mac OS Xにも移植されている画像表示ソフト「ToyViewer.app」の実行例は図のとおりとなる。
アプリケーションを書庫化したパッケージ(*.pkg)には、面白い仕掛けが用意されている。複数のアーキテクチャに対応したパッケージの場合、利用しているアーキテクチャ以外のバイナリはインストール時に削られ、ファイルシステム上には"痩せた"バイナリがコピーされることになる。
この2点を踏まえたうえで、先日公開されたIntelアーキテクチャ対応の開発環境で生成したバイナリを確認すると、基本的にはNEXTSTEP/OPENSTEPの技術を踏襲していることがわかる。アプリケーション(バンドル)の内部では、アーキテクチャ非依存のリソースファイルは共有、プログラム本体も同一のファイルを使用する。バンドル内部の構造こそNEXTSTEP/OPENSTEPの時代から変化したが、Mach-Oの特徴であるMABをうまく生かしている点は同じだ。
紙幅が尽きたので、今回はここまで。次回も、確実に到来する"Intel時代"を現在のリソースから読み取る作業を続けてみたい。
ヘッドライン
- デル、15.6型ノート「Studio 15」にOPIのネイルカラーオプションを追加[15:37 2/10]デル
- NVIDIA、ノートPC向けに新世代の内蔵/外部GPU切り替え技術「Optimus」[14:45 2/10]自作
- 「ATI Radeon HD 5570」搭載グラフィックスカードが各社より発売に[13:56 2/10]自作
- バッファロー、約5mmしかでっぱらないmicroSDを利用したUSBメモリ[13:37 2/10]周辺機器
- 【レビュー】手袋したままでもOK!? タッチ操作対応の全部入りボードPC - ソニー「VAIO L VPCL129FJ/S」[12:00 2/10]VAIO
- 【レビュー】ゲーム機もPCもコレ1台でOKの27型フルHD液晶 - ベンキュージャパン「M2700HD」[09:00 2/10]周辺機器
- アップル「Aperture 3」発表、プロ向けの性能にiPhotoの容易さを融合[02:28 2/10]アップル
- Appleの「A4」プロセッサとは何か? - エンジニアらの意見[01:54 2/10]アップル
- 医療ソリューション企業Epocrates、iPadは医療現場で人気と報告 - 臨床医2割が購入意向[21:00 2/9]アップル
- 米Apple CEOジョブズ氏がNYで秘密の会合 - 大手新聞社幹部らを訪問[21:00 2/9]アップル









