職場ではWindowsとLinuxを使っている。通常はWindowsを手元マシン、Linuxを計算サーバであり、Linux用に独自の計算プログラムを開発している。このプログラムを外部に供給することがあるが、中には別途Linuxマシンを用意できない人も居る(企業の場合は予算とか製品保証などの問題で)。
1台のマシンでWindowsもLinuxもとなると、古くはデュアルブートしかなかったが、今では同時に使える様々な方法がある。たとえばWindows上で動く仮想マシンだが、これは完全なLinuxを実装できる代わりに、動作速度に難がある。マシンを性能の限界まで使いたい計算用としては厳しい状況だ。むしろLinux上に仮想マシンでWindowsを実装するほうが良いかもしれない。ただし、たとえば企業などで自分に割り当てられたマシンを使う場合は、OSの入れ替えは難しいだろう(そのパソコンメーカーのサポートが受けられなくなるなどで)。また仮想マシン用にメモリを一括して大量に割り当てる必要があるので、メモリ容量が少ないマシンでは実用性に乏しい。
仮想マシン以外にも、Windows上でLinux用プログラムを稼動させる方法はいくつかある。たとえば coLinux は、Linux OS本体を Windowsプログラムとすることで、Linux用のプログラムをそのまま稼動させることができる、いわゆる「Linuxエミュレータ」である(コンパイルされたプログラム=バイナリ形式のファイルが使える)。一方で、動作速度的には、やはりエミュレータであるので、ハードウェアのエミュレータである仮想マシンよりは速いものの、本来のLinuxマシンで動作させたときよりはだいぶ遅くなる。なお、coLinux はフリーソフトとして公開されているが、X-Window System ( Linuxで標準的なグラフィック環境)は付属しないので、グラフィックを扱うLinuxプログラムを動作させるには、別途 Windows 用の Xサーバが必要になる(VNCでも可)。まあ、テキスト入出力のみの計算プログラム本体を稼動させるだけなら、Xは必要ないかもしれないが。
Windows上でLinuxプログラムを、より高速に動作させるとなると、究極的にはWindowsプログラムへの書き換えが必要だが、さすがに大規模なアプリケーションでは大変である。そこで注目されるのが、ソースコードレベルでの互換環境である。すなわち、Linux用プログラムのソースコードをWindows上でそのままコンパイルできるようにするのだ。
その代表例が cygwin である。もちろんフリーソフト。X環境も付属するので、グラフィカルなソフトウェアもそのまま利用できる。ただし、上述のとおりソースコードでの互換環境なので、Linuxでコンパイルしたバイナリファイルは動かない。その意味でこれは「エミュレータ」ではない。Linux用の開発ライブラリを Windows に移植したものだ。よってごく一部、Linuxと完全に互換でない部分もあるが、修正は最小限で済むだろう。なによりコンパイルしたプログラムの動作速度がすばらしい。さすがにLinuxマシンと同等までは行かないが、当方が試した範囲では80〜90%の速度が出るようだ。かなり有望な手段と言える。企業さんで「フリーソフトは保証問題がある」とか、有償でもサポートがほしいとか、cygwinは英語ベースなので難しいとか言う人には、XonWindowsという製品もある。ただしこれはちょっと古く、Windows Vista に対応していない。そもそも cygwin も X環境は Vistaでの動作が不安定という。これは cyngwin の X環境を開発していた人が、別のフリーのXサーバソフトである「Xming」に移ってしまったためらしい(XmingはVista対応とか)。
同様にWindows上でソースコードレベルでのUNIX互換環境を実現するものとして、もうひとつ上げるとすると「Windows Service for UNIX」、通称 SFU がある。なんと泣く子も黙るマイクロソフト謹製である。Ver.3.0 までは市販の製品だったが、Ver.3.5 は無料で公開されている(VirtualPC といい、最近のマイクロソフトはオープンソースへの対抗心からか、かつて製品だったものを無料で公開することが増えているような気がする)。この SFU の動作環境は、Windows 2000 Pro SP3以上、Windows Server 2003 (R2を除く)、Windows XP (Homeを除く)となっている。XP Home で動作しないのは、個人で利用したい人にはネックになるかも。企業さんなら XP でも Professional だと思うので大丈夫だろうが。なお、Vista に対応していないことが気になる人も居るかもしれないが、大丈夫。なんと Vista は標準でこの機能を実装しているらしい。ただし Ultimate と Business のみ。Home系は置き去りである。やはり仕事用なのか・・・。なお、SFU に X環境は付属していないので、別途 Xサーバを用意する必要がある。当方では、上述の Xmingを使って試してみた。結果、問題なく動作する。SFUの開発環境にはX環境のライブラリも含まれているので、Linux(UNIX)用のグラフィカルなプログラムも問題なくコンパイル・動作した。ただし正確には「UNIX互換」なので、Linuxとは所々違う。標準で「bash」が入っていないことや、C言語ライブラリもnanosleepなど一部が実装されていないことは注意を要する。
たとえば企業ユースで、保証とサポートのある環境となると、SFUと市販Xサーバが最適と思われる。Vista Business なら、Xサーバを用意するだけでよい(はず)。ただし通常のLinux環境とは微妙に異なるので、Linuxと同じ操作性を求めるならXonWindowsと言う選択肢も有力だ(ただしVista非対応)。
個人ユースで、ちょっとお金を払ってでも楽をしたいなら、XonWindowsがいいだろう。ただし、Windows 2000/XP のみ対応だ。Vista Home 系では、ソースコード互換環境に最適解が無い。ただ、Vistaが動く環境なら、仮想マシンでもそう厳しくは無いかもしれない(メモリは潤沢だし、CPUの仮想環境対応機能も効果があるだろう)。