Cygwin の Web ページ www.cygwin.com 冒頭にこうあります。
What is Cygwin?
Cygwin is a Linux-like environment for Windows
(私訳) 「Cygwin とは Windows のための Linux ライク *1な環境です」
構成からいえば,Cygwin は
からなります。
Virtual PC のようなエミュレータで Linux などの Unix 類を動かす場合と異なり, Cygwin の一群のプログラムはそれぞれまぎれもない Windows アプリケーションであることに注意してください。 プログラムのソースファイルをみると Linux と同じようなものなのですが, バイナリファイルの構造をみると Windows プログラムそのものというわけです。 いわゆる仮想環境と比べた場合, Windows システムの他の部分と自然に相互作用できることがその特徴です。 Windows それ自体を Unix 的に取り扱うための装置一式 と形容すれば,より正確かもしれません。
たとえば,bash で書いたシェルスクリプトを,まるで Unix のデーモンのように Windows のサービスとして動作させ,そしてそのシェルスクリプトから Windows ネイティブのコマンドを Unix コマンドと同じように実行する, 両者のコマンドの出力をともに /var/log/ 下のログファイルに記録する, といったことが手軽にできます。 Cygwin のことを仮想 Unix 環境のひとつと見ることもできますが, そうだとしてもそれはリアル環境と強く相互作用しあう, 境界線のあいまいな仮想環境です。
Cygwin はソースが公開されている自由なソフトウェアです。 名前の由来は,2000 年はじめに Red Hat に吸収合併された Cygnus Solutions ですが*2, Red Hat の Cygwin チームが主体となって,今も活発に開発が続けられています。 (X サーバの改良など,日本人のボランティアの活躍と貢献も顕著です。 頭のさがる思いです)
では,純粋に Unix 環境としてみたとき,Cygwin は二流の模造品でしょうか。 たしかに,それはいくつかの点で否定できません。*3
しかし,Windows が実現する完成度の高い GUI の上に Cygwin が構築されているという事実を見落とすべきではありません。 デスクトップ画面という概念, ファイルやアイコンのダブルクリックによる起動 (=ファイルとプログラムの間接的な関連付け),Cygwin では, これらを Unix の洗練されたキャラクタ・ユーザ・インタフェース (CUI) から利用できます。 Windows との相互作用の容易さは, GUI と CUI の統合された心地良い環境の実現につながります。
この見地からは,従来の Unix の概念を超えたところ, Linux 等が近年になってようやくたどり着いたところに Cygwin を位置づけることもできます。 *4
*1 「Unix-like」ではなく特に「Linux-like」なのは, Red Hat の資本によっているからなのかもしれませんが,事実として, 各種 Unix で仕様が異なる場合,Linux 寄りに模倣しています。
*2 Cygwin は Cygnus と Windows を合成した かばん語です。 発音は概ね「シグウィン」でしょう。
*3 Cygwin には,Unix としての実装が不完全なため, 移植できない Unix プログラムがいくつかあります (例えば,gnushogi-1.3 は標準入力に対する ioctl を利用しており, そのままでは Cygwin でコンパイルできません)。 また,非 ASCII ファイル名の扱いは国際化対応以前の水準です。 たとえば,§4.1 の設定をしても, 「mkdir '表'」のような操作は (コマンド行としては一見入力できますが) 実行できません。 ドイツ語のウムラウト文字などがフォルダ名等に使われていると, 「cp -a src dst」や「ls -R .」での トラバースに失敗します。
*4 他システムでいえば,それは数々の未完成な点を抱えながらも 2000年頃までに BeOS が達成した環境,間接的にその人的,技術的遺産を受け継いだ MacOS X が継承し,発展させている環境ということもできるでしょう。
Linux についていえば, 前世紀末ごろには Windows に比べて機能的にはともかく軽量で安定しているとの 評判を (その筋の人々の間で) 確立していました。 これは Windows 98/Me が悪すぎたといってもよいでしょう。 しかし,その後主流になった Windows 2000/XP は (少なくともデスクトップ用途での) 安定性において遜色がありません。 世紀の変わり目ごろが Linux にとって,ある意味,最悪の過渡期でした。 GNOME や KDE のような統合デスクトップ環境が Windows の機能に肩を並べようとしていましたが, 一見期待のできそうな外観に対し,実際にはパワー浪費型で, しかも完成度は高くありませんでした。 当時の Linux バブルとその崩壊の一因をここに求めることができるのかもしれません。 当時,地道に Unix を常用していた人の多くは, 依然,(一般的な観点からは) 原始的だが,軽量で安定した環境を利用していました。
それでも,ここ数年で着実に
Linux の統合デスクトップ環境が実用的になってきたのは事実です。
BeOS 等が達成した GUI と CUI の統合された環境を構成する主要な要素は, 具体的にいえば,§4 で述べるような Desktop フォルダと open コマンド (ダブルクリックと同じ効果をもつコマンド) です。 そしてそれが実効性をもつ前提条件は, 軽快な GUI と強力なコマンド・シェルの存在です。
素の Windows はたしかに二つを備えていますが, 前提条件としてのコマンド・シェルの非力さの点で問題外でした。一方, GNOME や KDE はこれらの条件を (それぞれ意識的に,あるいは一応は) 満たしています。 §4 の追記も御覧ください。