Cygwin(シグウィン)は、Windowsオペレーティングシステム上にUNIXライクな環境を提供する互換レイヤーで、フリーソフトウェアである。手軽にUNIXライクな環境を用意できる点で人気がある。Cygwinをインストールすることで、OSの差を吸収し、Windows上でUNIXのソフトウェア資産を活かすことが可能となる。また、ゲストOSが不要でハードウェア仮想化も一切行わないためインストール手順が簡略化されると共に、軽量に動作する[注釈 1]X Window Systemにも対応し、GUIアプリも動作する。

Cygwin
Logo of Cygwin
Cygwin X11 rootless WinXP.png
Windows XP上でのCygwin
作者 シグナスソリューションズ
開発元 シグナスソリューションズレッドハットなど
初版 1995年 (27年前) (1995)
最新版
3.2.0-1 / 2021年3月29日 (15か月前) (2021-03-29)
リポジトリ ウィキデータを編集
プログラミング
言語
C/C++
対応OS Windows
種別 互換レイヤー
ライセンス GNU GPL v3
公式サイト www.cygwin.com
テンプレートを表示

特徴編集

Cygwinは、UNIXを動かすと言うよりも、Windows環境をUNIX風に表現し直すと言った方が正確で、Cygwin内ではアプリケーションが実行するシステムコールの読み替えだけを行い、後はWindowsカーネルのAPIを利用する。分類で言えば、VMwareVirtualBoxのような仮想マシンではなく互換レイヤーである。この仕組みにより、UNIX的な実行環境を提供するが、ゲストOSは不要で、CPUメモリ周辺機器などのハードウェアの仮想化も行わないため、設定は簡単であり、インストールファイルやメモリ消費量も軽量である。但し、入出力が遅いという欠点があり、大量のデータを扱う用途には向かないため、「Windows環境だが補助的にUNIXのツールも使う」など、あくまでも本物のUNIX環境を用意するまでも無いような軽い用途に用いるべきである。

インストーラーGUIベースのパッケージ管理システムが利用でき、1万以上の豊富なオープンソースソフトウェアが利用可能である。また、Cygwinのインストール後にもインストーラーパッケージ管理システムソフトウェア構成変更が行えるため、必要に応じて手軽にソフトウェアインストールアンインストールできる。また、CUIでもパッケージ管理が行えるように、apt-cygというコマンドも用意されている。

CygwinではPOSIXに準拠したUNIXカーネルを利用する代わりに、API変換を行ってWindowsカーネルを利用する方式を採っている。その結果として、単一のインストーラーを実行するだけでUNIXライクな環境が用意でき、UNIXに依存したソフトウェアを再コンパイルのみでWindows上に移植することを可能にしている。また、Windowsファイルシステムもそのまま扱うことができるため、Windowsで作成したデータとCygwinで作成したデータを混ぜて処理することが出来る。ランタイムライブラリ「Cygwin1.dll」がAPI変換の中核を成しており、元々のUNIXアプリに対して「Cygwin1.dll」を利用するように動的リンクを行うことでWindowsで動作可能となる。この方法では、単にUNIXのアプリを起動するだけに留まらず、Windowsアプリとのコラボレーションも期待できる。

Cygwin1.dllランタイムライブラリが、POSIXシステムコールと同等の機能を提供しており、それぞれのプログラムはこれを動的にリンクすることでUNIX上とほぼ同じ動作が可能になる。また、このライブラリの存在により、Cygwin用として提供されていない他のUNIX用プログラムのソースコードも、従来の様な大幅な変更無しにWindows用にコンパイルすることが可能である。

ランタイムライブラリにて、Unix System V由来のIPCを利用するアプリケーションのために、サービス(NTサービス)を用意している。現在Cygwinに付属しているPostgreSQLは、このサービスが提供する共有バッファセマフォを利用して動作する。PostgreSQL自身は、バージョン8.0以降ではCygwin依存から脱却し、全面的にWin32ネイティブにソースの書き換えが行われている。

XサーバとしてCygwin/Xが提供されている。

マイクロソフトはWindows Server 2012よりUNIXベースアプリケーション用サブシステムを非推奨とし、代替手段の一つとしてCygwinのPOSIXエミュレーションモードを紹介している[1]

脚注編集

[脚注の使い方]

注釈編集

  1. ^ 仮想マシンを使わない分、環境全体としてはCPUもメモリもストレージも大きく消費せず軽量になるが、DLLでシステムコールの変換を行っているためか、入出力の速度に問題があるとの指摘もある。

関連項目編集

外部リンク編集