Cygwin(シグウィン)は、Windows OS上で
UNIXのような環境を提供する互換レイヤーであり、自由な
ソフトウェアとして利用できます。これにより、Windows環境にいながら
UNIXの
ソフトウェア資産を有効活用することが可能になります。
Cygwinの特徴
Cygwinは、
UNIX OS自体を動作させるのではなく、Windowsを
UNIXのように見せる
ソフトウェアです。具体的には、アプリケーションが実行するシステムコールをWindowsのAPIに変換する役割を担っています。
VMwareやVirtualBoxのような仮想マシンとは異なり、
ハードウェアの
仮想化は行いません。このため、軽量で動作し、
インストールや設定も簡単です。ただし、仮想マシンと比較すると入出力が遅く、大量のデータを扱う用途には不向きな面もあります。
Cygwinには、GNU Core Utilitiesをはじめとする
UNIXの基本的なコマンドや
Bashが付属しています。また、CygwinのターミナルからWindowsの実行ファイル(.exe)を直接呼び出すことも可能です。さらに、パイプを併用することで、
UNIXアプリケーションとWindowsアプリケーションを連携させることもできます。
パッケージ管理
CygwinのインストーラーはGUIベースで、パッケージ管理システムとしても機能します。1万を超える豊富な
オープンソース[[ソフトウェア]]が利用可能で、
インストール後でも
ソフトウェアの構成変更やアップデートが容易に行えます。CUI(コマンドラインインターフェース)でのパッケージ管理には、`apt-cyg`というコマンドが用意されています。
ランタイムライブラリ
Cygwinの中核を成すのが、ランタイムライブラリである`cygwin1.dll`です。このライブラリはPOSIXのシステムコールと同等の機能を提供し、プログラムはこれを動的にリンクすることで、
UNIX上とほぼ同じ動作をWindows上で実現できます。Cygwin用に作られたものではない
UNIX用のプログラムのソースコードも、大幅な変更なしにWindows用に再コンパイルできます。
また、CygwinはWindowsの
ファイルシステムをそのまま扱うことができるため、Windowsで作成したデータとCygwinで作成したデータをシームレスに処理することが可能です。例えば、Windowsで割り当てられたネットワークドライブにもCygwinからアクセスできます。
その他の特徴
Unix System V由来のIPC(プロセス間通信)を利用するアプリケーションのために、サービス(NTサービス)を提供しています。Cygwinに付属している
PostgreSQLは、このサービスが提供する共有
バッファやセマフォを利用して動作します。ただし、
PostgreSQL自身はバージョン8.0以降、Cygwinへの依存をなくし、Win32ネイティブに書き換えられています。
Xサーバとして、Cygwin/Xが提供されており、GUIアプリケーションも利用可能です。
マイクロソフトはWindows Server 2012以降、
UNIXベースアプリケーション用サブシステムを非推奨としており、CygwinのPOSIXエミュレーションモードを代替手段の一つとして紹介しています。
標準Cライブラリとして、GNU CライブラリではなくNewlibを使用しており、`cygwin1.dll`がこれを提供しています。CygwinでコンパイルしたC/
C++言語のプログラムを、Cygwinが
インストールされていない環境で実行するには、`cygwin1.dll`を同梱する必要があります。
`/dev/mem`の機能は、バージョン1.7.22で打ち切られました。現在、この機能を利用するプログラムは動作しません。
注釈
Cygwinは、Windows環境で
UNIXのツールや開発環境を利用したいユーザーにとって、非常に便利なツールです。仮想マシンよりも軽量で手軽に利用できるため、
UNIX環境での開発経験がある方や、
UNIXのツールをWindowsで活用したい方におすすめです。
関連項目
MinGW
Mingw-w64
MSYS
Windows Subsystem for Linux - Windows純正のLinuxサブシステム
Interix (Services for UNIX)
coLinux - Linux
カーネルをWindowsアプリケーションとして動作させる
シグナスソリューションズ
Wine - Cygwinとは逆に、
Unix系OSでWindowsアプリケーションを動作させる
仮想化
外部リンク
公式ウェブサイト (英語)