Cygwin が遅いことや、ソースコード互換性等を理由に
VirtualBox や VMWare で Linux や *BSD 動かしたほうがマシって意見を散見するんだけど
そういう人はそもそも cygwin を必要としていたのかどうかが疑わしい。
Cygwin の存在意義は Windows とシームレスに連携可能な POSIX 環境って点に尽きる。
具体的には以下のような点。
- Change directory した状態で terminal を開くことが可能。
- Win32 api を叩くことが可能。延いては OLE/COM を叩くことが可能。
- レジストリを叩くことが可能。
逆に言えばこれらを必要としないなら無理して cygwin を使う意義はない。
速度や互換性と上記のメリットを天秤にかけてどちらを選ぶかという選択である。
もちろん無理しない範囲であれば cygwin を使う意義は大いにある。
少なくとも C 言語で hello world するとかその程度の段階であれば問題が生じる余地すらないだろう。
次に、サイズ及びインストールにかかる時間をやり玉に挙げる人がいるが、これも根本的に的外れである。
現在 Cygwin が提供しているパッケージがどれほどあるか調べた結果は以下の通りである。
$ apt-cyg update; date "+%F %T"
Cache directory is ***********************************************
Mirror is http://ftp.jaist.ac.jp/pub/cygwin
Updating setup.ini
signature verified: setup.bz2.sig
signature verified: setup.ini.sig
Updated setup.ini
2016-02-05 21:29:58
$ # number of packages
$ apt-cyg packages-total-count
7599
$ # size of archives
$ apt-cyg packages-total-size
14025501274
以上より 2016-02-05 21:29:58 現在、
http://ftp.jaist.ac.jp/pub/cygwin にミラーされているアーカイブのうち
prev や test 扱いされていない標準的なパッケージは
7,599 パッケージ、14,025,501,274B ≒ 13.1GiB に達していることが分かる。
これは小規模な Linux ディストリビューションに匹敵しており、
仮にフルインストールでもしようものなら終わるわけがないのである。
一方で、拙作の
cygwin_autoinstall.bat を用いて
私家版 apt-cyg を利用可能な最小構成でインストールした直後の状況は以下のようになる。
$ # files except tar file under the mirror dir
$ { cd "$(apt-cyg pathof cache/mirrordir)"; find . -type f; } | grep -v tar
./x86_64/setup.bz2
./x86_64/setup.bz2.sig
./x86_64/setup.ini
./x86_64/setup.ini.sig
$ # number of archives which was installed
$ apt-cyg packages-cached-count
107
$ # size of archives which was installed
$ apt-cyg packages-cached-size
53768498
$ # size of minimum cygwin environment that is required by apt-cyg of my own version
$ du -sb /cygdrive/c/cygwin64
270639925 /cygdrive/c/cygwin64
ご覧のようにインストールされたアーカイブは 107 パッケージ、53,768,498B ≒ 51.3MiB に過ぎず、
インストール後のサイズもたかだか 270,639,925B ≒ 258.1MiB に過ぎない。
そこそこ高速なブロードバンド環境と SSD がありさえすれば 3 分とはかからない大きさである。
さて、一般的な Linux ディストリビューションを盲目的にフルインストールして、
あまつさえその大きさに文句を言う人がどれだけいるだろうか?
普通はそんな人はいないし、仮にいたとしても情弱認定されるのが関の山だろう。
フルインストールとか酔狂な真似をしておいて、サイズに文句を言っている人は、
そもそもフルインストールが必要のない人なのである。
別の言い方をすれば、使い方を根本から間違っているのであり、
大き過ぎるというのは批判としては極めて的外れと言える。
ひょっとすると cygwin のサイズに文句を言っている人は
Windows で POSIX 環境を使うための簡易ツール的な認識なのかもしれない。
しかし cygwin を見くびってはいけない。
現実は上記の通り、
パッケージの充実度は小規模な Linux ディストリビューションに比肩している。
つまり批判の対象になっている馬鹿でかいサイズは、馬鹿でかければ馬鹿でかいほど、
それは逆にパッケージの充実度と言う意味で褒られて然るべき点なのである。
Linux を使う場合、必要最小限度の環境をインストールした後、
必要に応じてパッケージを追加して行くのがセオリーであるのと同じように、
Cygwin もインストール時は必要最小限の環境に留め、
必要に応じてパッケージを追加して行くのが正しい使い方と言えるだろう。
まとめると以下の2点になる。
- Windows との親和性よりも速度と互換性を重視するなら仮想環境へ。
- フルインストールは時間がかかって当り前。インストールは最小構成に。