MacでWindowsを起動(1)~仮想化ソフト比較~
■未来のノートパソコン
世界一美しいノートパソコンはMacBookAir!
なんて言うと、おまえはAppleフリークだろ、と白い目でみられそうだが、美しいものは美しい
それだけの話だ。
しかも、MacBookAirは、絶対品質もコストパーフォーマンスも最高・・・
1.高剛性のアルミニウム一枚岩ボディ。
2.透明感のあるヴィヴィッドな液晶。
3.打刻感のあるしっかりしたキーボード。
4.12時間の長寿命バッテリー。
5.ゲームも可能な高性能3Dチップと、HDDより5倍~10倍高速なSSD。
6.Windowsより5年は進化したOSX(Mavericks)。
ただし、Windowsが劣るのはパソコンメーカーの責任ではない。供給しているのはマイクロソフトだから。それにしても、最新の「Windows8」と「Windows8.1」はヒドすぎる・・・よくこんなものを思いついたものだ。しかも、それを作って出荷したというのだから、驚きだ。チェック体制はどうなっているのだ?
では、なぜ、そんなトンデモOSが市場の90%を支配しているのか?
事実上の世界標準パソコン「IBMPC互換機」の初代OSを、マイクロソフトが供給したから(一から開発したわけではない)。つまり、この世界は初めにやったもん勝ち。
ここで、マイクロソフトの敵だと思われては困るので、一応フォローしておくと、マイクロソフトにもいいところはある。互換を保とうとする姿勢、これは立派だ。そのおかげで、ユーザーは過去の資産を使い回すことができる。地味だが、ユーザー視点に立った良い心がけだ。ではなぜ、ユーザー視点に立って、使いやすくしないのか?
・・・・・・
話をもどそう。MacBookAirは、確かに素晴らしいマシンだが、ひとつ難点がある。いまさらだが、IBMPC互換機ではないこと。現在、パソコン市場の90%を占めるのはIBMPC互換機(OSはWindows)。そして、ビジネス現場では、Windowsアプリの「Word」と「Excel」がデファクトスタンダードとなっている。
現に、今いる会社では、取引先との契約書と議事録はWord、スケジュールと見積書はExcelと決まっている。場合によっては、「Word2010」を使ってくださいとバージョンまで指定されることもある。さらに、ホームページの作成とメンテは「Dreamweaver」。というわけで、Windowsアプリは欠かせない。
一方、Mac版のWord、Excel、Dreamweaverも一応あるにはある。ただし、作り込みに難があり、機能も速度もWndows版より劣る。早い話が、Windows版の劣化バージョン。たくさん売れるWindows版はガチで、そうでないMac版はそれなりにという経済原則によっているわけだ。それに、取引先とのやりとりはWindowsファイルなので、Mac版は論外。
だから・・・
MacBookAirに執着するなら、Windowsを走らせるしかない。
じつは・・・
それを実現する仕掛けもある。たとえば、Apple純正の「BootCamp」。
こう言うと・・・
MacでWindows?
あー、エミュレータね、遅すぎて使い物にならない、とパソコン暦の長い人は一刀両断にするだろう。
たとえば、Windows7には、WindowsXPを走らせるXPモードがあるが、正直使い物にならない。処理速度は遅いし、動作しないアプリもたくさんある。特に、DirectX(3Dグラフィックを処理するプログラム群)を使うアプリは全滅。
ところが、「MacでWindows」は速度も十分だし、DirectXも問題なし。つまり、ほとんどのアプリが動作する。だから、エミュレータを十把一絡げ(じっぱひとからげ)にしてはいけない。
そもそも・・・
BootCampは、いわゆる「エミュレータ」ではない。
■エミュレータの仕組み
では、エミュレータって何?
簡単に言えば、パソコンでファミコンのゲームを動かすようなもの。
この場合、パソコン上に、ハード(装置)ではなく、ソフト(プログラム)で構築された「仮想的なファミコン」が存在する。このソフトのことを「エミュレータ」とよんでいる。つまり、エミュレータとは、パソコン上で、ファミコンの機能を真似る(エミュレーション)プログラムのことなのである。
もちろん、エミュレータはパソコンとファミコンに限らない。たとえば、MacでWindowsを動かすとか。ただし、ハードの構造があまりに違うと真似できないし、真似する側には強力なソフトウェア機能が必要だ。たとえば、自動車のエンジンはコンピュータで真似できるが、エンジンでWindowsを真似ることはできない。
では、エミュレータは具体的にどんな動きをするのか?
たとえば、ここに英語で書かれた命令書があったとする。アメリカ人なら読んですぐに実行できるが、日本人の場合、一旦、命令書を日本語に翻訳する必要がある。つまり、翻訳しながら実行するのである(エミュレーション)。当然、そのぶん、処理が遅くなる。命令がひとつならいいが、何千、何万もあれば、翻訳の手間が増え、実行速度も激減する。
だから、エミュレータは遅いわけだ。
これを、コンピュータに当てはめてみよう。たとえば、アメリカ人をIntel系CPU、日本人をARM系CPUとする。この場合、Intel系CPU用に書かれた命令書は、ARM系CPUは理解できない。そこで、ARM系CPUがこの命令書を実行するには、ARM系の命令に翻訳しながら、実行しなければならない。
ところが・・・
現在、MacとIBMPC互換機は、同じIntel系CPUを採用している。CPUが同じなら、エミュレータは不要なのでは?
基本イエス、例外的にノー。
だんだん、話が面倒臭くなってきた。でも、もう少しの辛抱・・・そうすれば、エミュレータを完全に理解し、生半可なIT技術者相手に一席ぶつことができますよ!
まず、CPUの動作モードは、基本、「特権モード」と「ユーザーモード」がある。昔、使っていたモトローラのMC68000系では、特権モードをスーパーバイザーモードとよんでいたが意味は同じ。「特権モード」とは、読んで字のごとく、すべてのハードにアクセスできる万能モード。一方の「ユーザーモード」は制限付きのモードである。
では、なぜ、こんな面倒なことをするのか?
ワープロにしろ、メーラーにしろ、ゲームにしろ、すべてのアプリはキーボード&マウス、モニタ、HDD、メモリなどのハード資源を使用する。ところが、ハード資源は1つしかない。そこで、OSの管理の元、複数のアプリがハード資源を共有するのである。
ところが、この共有が危険なのだ。
もし、特定のアプリにバグや悪意があると、ハード資源に悪さをすることがある。その場合、そのハード資源を使用している他のアプリも動作が不安定になる(最悪フリーズ)。もし、そのハードがメモリなら一大事だ。メモリを使わないアプリは存在しないので。もちろん、OSも例外ではない。もし、全体を管理しているOSが暴走したら、どうなるか?
システム全体がダウンする。
最悪だ。
たかが、ひとつのアプリのためにシステムが全滅!?
シャレにならん。なんとかならないのか?
そこで・・・
みんなが共有しているハード資源へのアクセスを制限するのである。具体的には、ハードに直接アクセスできるのはOSだけにし、アプリは禁止する。そうすれば、バグあるいは悪意のあるアプリがあっても、ハードに悪さできないので、システム全体がダウンすることはない。
具体的には・・・
ハード資源にアクセスできる特権モードはOSだけに与え、アプリはユーザーモードで我慢してもらう。
では、アプリがハード資源、たとえば、HDDを使う場合はどうするのか?
OSを介して使用する。つまり、”間接”アクセス。
ところで、OSってそんなに信頼できるの?
たぶん。
OSを作っている会社は、どこの馬の骨ともわからないアプリ会社とは違うから、という暗黙の了解がある。だから、期待してますよ、マイクロソフトさん!?(皮肉やろ)
話がアブナイ・・・本題にもどろう。
MacBookAirでWindowsを動かす場合、MacとIBMPC互換機はCPUは同じなので、エミュレータは不要?
との問いに対し、
基本イエス、例外的にノー!
と答えた理由である。
MacBookAirで、Windowsを動かす場合、「仮想化ソフト」が必要になる。仮想化ソフトは、MacOSX上に「仮想的なパソコン」を構築し、そこで、Windowsを動作させる。このとき、主となるOSをホストOS、従属するするOSをゲストOSという。
この場合、
・ホストOS:MacOSX
・ゲストOS:Windows
つまり、WindowsはMacOSXのひとつのアプリとして、ユーザーモードで動作するわけだ。ところが、Windowsは、生まれも育ちもOSなので、特権モードで走っていると思い込んでいる。そのため、特権モードでのみ実行できる特権命令を乱発する。もちろん、ユーザーモードでは特権命令は実行できないので、Windowsは動かない。
では、どうしたらいいのか?
Windowsが発行する特権命令を横取りし、特権モードのMacOSXにやらせ、あたかも、Windowsが実行したかのように真似るのである。つまり、エミュレーション。
じゃあ、やっぱり、遅い?
ノー!
エミュレーションで実行するのは特権命令だけで、非特権命令はすべて「CPUで直接実行」する(非特権命令はユーザーモードで実行できるので)。しかも、命令の大半が非特権命令なので、ほとんど「CPUで直接実行」できる。つまり、IBMPC互換機とほぼ同等の速度で動作するわけだ。
ゆえに・・・
エミュレータは不要?かと問われれば、基本イエス、例外的にノー、なのである。
■仮想化ソフト
つぎに、MacBookAirでWindowsを動かす方法を見ていこう。
第一候補が、前述したApple純正の「BootCamp」。しかし、これはエミュレータとはいえない。WindowsはMacOSXのひとつのアプリとして動くのではなく、MacBookAirのハードを占有するから。つまり、Windowsはほとんど「CPUで直接実行」される。
つまり・・・
BootCampを実装したMacBookAirは、「MacBookAir」という名の「IBMPC互換機」と考えていいだろう。
だから、Windowsのアプリも、MacBookAir上で問題なく走る。互換性の低い3Dゲームソフトでさえ。そもそも、ゲームソフトはIBMPC互換機でも互換が取りにくいのに、エミュレータで動かすとは立派!
ところが・・・
BootCampにはひとつ問題がある。MacとWindowsを切り替えるには、再起動しなければならないのだ。これは、ちょっと面倒。Windows専用と割り切って使えばいいのだが、せっかく、Macを買ったのだから、Macのソフトも使いたいではないか。
そこで、重宝するのが「仮想化ソフト」だ(厳密にはエミュレータにあらず)。
仮想化ソフトを使えば、再起動することなく、MacOSXとWindowsを両方使うことができる。では、MacOSXとWindowsはどうやって切り替えるのか?
パッドを3本指でひとこすり!(3本指スワイプという)
これだけで、MacとWindowsが瞬時に切り替わる。初めて見たとき魔法かと思った・・・
では、なぜ、こんなことが可能なのか?
BootCampは、MacOSXが実行中はWindowsは起動せず、その逆もまた真なり。ところが、仮想化ソフトでは、MacOSXとWindowsは両方起動している。だから、一瞬で切り替わるのだ。
そこで、今回はBootCampをやめて、仮想化ソフトを使うことにした。
仮想化ソフトの候補は3つ。
1.PalarrelsDesktop(有料)
2.VMwareFusion(有料)
3.VirtualBox(無料)
ここで、仮想化ソフトの決め手になるのが、
1.Windowsアプリはちゃんと動くか?
2.処理速度は実用に堪えるか?
「1.アプリの動作」で、鬼門となるのが3Dグラフィックだ。3Dグラフィックは「グラフィックチップ」によって処理されるが、チップの種類が多く、機能もバラバラ。そのため、アプリがすべてのグラフィックチップに対応するのは不可能。
そこで、グラフィックチップの違いを吸収するために、WindowsにはDirectXというプログラムが実装されている。つまり、アプリは直接グラフィックチップにアクセスするのではなく、DirectXを介して、間接的に操作するのである。これなら、チップが違っても互換が保てる(100%ではない)。
ところが、ゲームソフトは、「速度」が命なので、グラフィックチップを直接叩く傾向がある。さらに、スペックの低いチップを捨てて、高機能チップを当て込む傾向もある。そのため、IBMPC互換機でも、機種によって動いたり動かなかったりする。さらに、同じ機種でも、動くゲームソフトもあれば、動かないものもある。裏を返せば、互換性の低いゲームが動けば、たいていのアプリは動く。
つぎに、「2.動作速度」。これも、速度がタイトなゲームソフトが鬼門になる。逆に、ゲームさえ快適に動けば、ビジネスソフトは問題はないだろう。一方、3Dといえば、3DCGソフト(3dsMax、Maya、Lightwave3D)もあるが、こちらは問題はない。3DCGソフトは、最終レンダリング(色塗り)ではグラフィックチップを使わないから(CPUで実行する)。
では、具体的にどの仮想化ソフトがが良いのか?
さすがに、仮想化ソフト3本とも試すほどヒマではないので、ネットで調べてみた(但ししらみつぶしに)。
その結果、
1.PalarrelsDesktop→DirectXが高速動作
2.VMwareFusion→DirectXが低速動作(Palarrels比べ2割~3割ダウン)
3.VirtualBox→DirectXは低速で不安定(無料だからしかたがない)
以上、考えるまでもなく、「PalarrelsDesktop(パラレルズ)」で決まり。
というわけで、「MacBookAir+Palarrels」でMacとWindowsを走らせることにした。一粒で二度美味しいノートパソコンというわけだ。
ところが・・・
初めは順調だったのに、あとで、Windowsの金儲け主義のためにひどい目にあった。まぁ、最終的に動いたから良かったのだが。
by R.B