ネットジャパンからMac上でWindowsアプリケーションを動かすための互換レイヤーソフト「CrossOver Mac 6.1」(以下、CrossOver)が発売された。MacでWindowsのソフトを使う方法としては、Boot Campや仮想PCの利用が頭に浮かぶが、このCrossOverではWindowsアプリケーションがそのままMac OS X上で動作する。まるでWindowsアプリケーションのMac版を導入したかのようなシームレスな動作が魅力だ。しかし、そのコンセプトを額面通りに受け取ってもよいものだろうか? 検証してみた。
検証のポイントは、同社が公開している正式対応アプリケーションは正常に動作するかどうか、また非対応アプリケーションはどれくらい動作するのか、そしてパフォーマンスはどうか、の3点だ。
「互換レイヤーソフト」という呼び方はあまり馴染みがないかもしれない。現在の一般的なアプリケーションはハードウェアの互換性を保つため、直接ハードウェアを操作することはない。その代わりにOSによって提供されるAPIを用い、OSは各ハードウェアベンダーから提供されるデバイスドライバを介してハードウェアを操作する。この階層的な仕組みの1つ1つをレイヤーと呼ぶ。
これらのレイヤーのどれかを互換性のあるものにすることで、アプリケーションに手を加えることなく、異なるプラットフォーム上での動作が可能になる。要はアプリケーションから見て、Macでの動作環境とWindowsに違いがなければよいということだ。
現在、Mac上でWindowsアプリケーションを動作させる方法は3つある。1つはBoot Campを利用してWindowsをインストールする方法。MacのCPUがPowerPCからIntel製CPUに変更されたことによって、WindowsマシンとMacのハードウェア的な差異はほとんどなくなった。アップルからパブリックβ版として提供されているBoot Campは、ブートローダやデバイスドライバ、パーティションツールで構成されたWindows導入パッケージであり、これを用いれば完全なWindowsマシンとして動作する。もちろん、安定性やパフォーマンスも高い。ただし、Windowsのライセンスは当然必要で、Mac OSとの切り替えには再起動しなければならないなど、デメリットもある。
2つめはParallelsやVirtualPC for Macを用いて仮想PCを構築し、その上にWindowsをインストールする方法だ。VirtualPC for Macの場合はCPUまでエミュレートする必要があったためにその分のオーバヘッドが大きかったが、Intel Mac専用のParallelsでは処理速度が向上している。ただし、こちらもWindowsのライセンスは必要。
そして3つめが互換性のあるレイヤーを用意し、APIレベルで差異を吸収する方法だ。それがCrossOverに代表される「互換レイヤーソフト」。CrossOverでは、CPUレベルにおいてはネイティブに動作し、WindowsのAPIコールに応じてCrossOverがWindowsと同様に、あるいは必要に応じて変換された操作を行い、レスポンスを返す。メリットはWindowsのライセンスが不要なことと、Mac OS上でネイティブ動作するために処理が高速であることなどだ。ただしその一方で、使用APIの種類によっては互換性が完全ではなく、安定性に問題が生じる場合がある。
CrossOverはIntelプロセッサで動作するUNIX上にWindowsAPIを実装するオープンソースプロジェクト「Wine」がベースになっている。Wineの歴史はかなり古く、1993年にWindows 3.1のAPI実装を目標として始まった。このプロジェクトのスポンサーであるCodeWeaversがインタフェースを整え、サポートを行って商用化したものがCrossOverシリーズだ。
当初、Linuxで動作するCrossOver Officeという名称で発売されたが、バージョン6.0のリリースの際に、「CrossOver Linux/CrossOver Mac」というプラットフォームを含んだ名称に変更された。Mac OS Xでのプラットフォームアーキテクチャ、Intel Macでのプロセッサの変更によって意図せずともWineのターゲットプラットフォームに近づき、結果としてUNIX上のオープンソースプロジェクトの恩恵を受ける形となったわけだ。
互換レイヤーソフトの場合、どこまで互換性が保たれているかが大きなポイントになる。これはさまざまな言語、CPUインストラクションなどでも共通することだが、プログラムで利用される命令(API)のうち、90%は10%の命令(API)に集約されると言われている。つまり、全体の10%をサポートすることでプログラムの中の90%の部分は動作する。この比率は9:1だったり、8:2だったりと差はあるものの、よく使われる命令が少数であるという図式に変わりはない。
だが、逆に残りの10%の部分をサポートするためには、残りの90%のほとんどを実装しなくてはならないということでもある。言い換えれば9割方動作するようになった状態から100%の動作をめざすには、それまでの開発にかかった労力の9倍を必要とする。これが互換レイヤーソフトが100%の互換性を謳えない理由の1つだ。
このような場合、ターゲットとなるアプリケーションを決め、そのアプリケーションが動作するために必要なAPIから実装していく、あるいはフックのような形で部分的に互換性を確保する手法が一般的だ。これは互換レイヤーソフトだけでなく、アーキテクチャに大きな変更があったOSでも同様だろう。
CrossOverにはあらかじめ動作が確認されているアプリケーション(サポートされているアプリケーション)が15種類28バージョン(関連ソフト3)ほどリストアップされている。もちろん、それ以外のアプリケーションも動作する確率は低くないが、過度の期待は禁物だ。もっとも、多くのユーザーはそこにこそ希望を見出していることも想像に難くない。いろいろと試してみよう。
Copyright © ITmedia, Inc. All Rights Reserved.