元麻布春男の週刊PCホットライン

Snow Leopardに見るMacとPCの文化の違い



 前回触れたように、Snow Leopardはカーネルレベルでの多くの改良を含むメジャーアップデートであるにもかかわらず、これに関して出てくる情報が極めて少ない。Webページ上で公開される情報を後追いすることで、ようやく分かることも多い。OpenCLをサポートするGPUに関する情報も、ようやく後追いで確認できた(指摘してくださった方に感謝する)。個々の機能、64bitカーネル、Grand Central Dispatch (GCD)、OpenCLについてさえ分からないことが多いくらいだから、これらがどう連携しているのか、していないのかも良く分からない。

Snow Leopardは64bitに対応。ただし32bitの扱いはまだ不明

 Snow Leopardには64bitカーネルだけでなく、32bitカーネルも存在する(そうでなければCore Duoベースの初期Intel MacでSnow Leopardが動かなくなる)ハズだが、32bitカーネルの上でGCDやOpenCLが利用できるのか、できないのかもよく分からない。64bitカーネルの上ですべての機能が使えるのは想像に難くないが、32bitカーネルで動作している場合も、GCDやOpenCLは利用できるのだろうか、利用できる場合になんらかの制約はないのだろうか。

 これがもしPC(Windows)の世界なら、32bitカーネル上でもGCDやOpenCLが問題なく動作するハズ、と断言してしまうところだ。実際、Vistaも7も、32bit版と64bit版の間に大きな機能差はない。ありとあらゆるハードウェアの組み合わせが想定されるPCの世界では、むしろそれが当然であるからだ。

 しかしMacの場合、ハードウェア構成は限られている。上述したCore Duo世代のIntel Macが備えていたGPUで、OpenCLに対応できそうなものはない。GCDにしても、Core Duoプロセッサならとりあえずデュアルコアだが、初期のIntel Mac miniに搭載されていたCore Soloプロセッサはシングルコアだ。GCDを導入してもオーバーヘッドが増えるだけではないかと心配になる。

 常識的に考えれば、アプリケーション互換性を考えても、すべての環境で同じAPIを使えるようにするだろうと思う。が、何も制約やペナルティがないのかと考えると、それはどうなんだろう、というのが正直なところだ。

 PCに比べれば、Macにおけるハードウェアの選択肢は極めて限られており、PCのように可能性のあるすべてのパーツの組み合わせをソフトウェアがサポートする必要はない。その分、ハードウェアとソフトウェアの関係が密接で、より最適化の度合いを高めたり、特定のハードウェアに絞り込んだ機能をソフトウェアに組み込める。

 逆に最大限のハードウェアの組み合わせをサポートしなければならないWindowsでは、そのプロダクトマネージャーだけで全世界に300人という世界になってしまう。ハードウェアとソフトウェアの密な関係性より、どのような組み合わせでも等しく動作することが優先される。どちらが良いというより、この2つは似て非なる文化を持った存在と捉えるべきなのだと思っている。

 おそらくAppleは、ユーザーが32bitカーネルとか64bitカーネルとか、そうした技術的な詳細を極力意識させない形にしたいのだと思う。新しいMacを買う、あるいは既存のMacにSnow Leopardをアップグレードインストールした場合も、ユーザーは自分がどちらを使っているのか、知る必要はないというアプローチだ。ここまでリリースが近づいているのに、とんと情報が出てこないというのは、知らせる必要がないと考えているからに違いない。

 よく考えれば、これまでもAppleは同様のアプローチをとってきた。現在、主要なアプリケーションは、PowerPC MacとIntel Macのどちらでも利用できるユニバーサル・バイナリとなっている。最大でPowerPCの32bitと64bit、Intelの32bitと64bitの4種類を含む超ファット・バイナリフォーマットである。Intel Macには、従来のPowerPC Mac用のアプリケーションを動かすRosettaまで用意して、極力プラットフォームの違いを意識させないよう努めているのがAppleだ。今回の64bitカーネルへの移行に際しても、同様のアプローチをとる可能性は高い。

 そのためには、デバイスドライバを含むカーネルモードのソフトウェアについて、32bit用と64bit用の両方を内包するファット・バイナリ(ファット・ドライバ?)にする必要がある。これは確かに負担だが、ドライバのフレームワークをうまく用意すれば、2つのドライバはコンパイルオプションの違いで生成できる(PPCのサポートは必要ないので、4種類は要らない)。同様のアプローチをMicrosoftもWindows Vista~7で採用している。もちろん動作検証の手間は2倍になるが、上述したようにMacのハードウェア構成はPCに比べれば限られる。検証せねばならないドライバの数も、その分限られるし、オールインワンが主流のMacの世界では、大半の作業を行なうのはApple自身、というわけだ。

 おそらく、こうしたAppleのアプローチを気持ち悪いと感じるPCユーザーも少なくないことだろう。自分が使っているPCの基本的な部分は把握しておきたい、できれば理解したいと考えるユーザーが、それを極力隠そう、意識させないようにしようというAppleのアプローチに違和感を感じるのは無理もないことだ。こうした真逆とも言えるアプローチの違いが、しばしば宗教論争にも似た議論を生み、場合によってはMacアレルギーを作り出すのだろう。MacにはMacの、PCにはPCの良さがあると思うのだが、相互理解を図るのは、思ったより難しいようだ。