界面骇客日记(10) - Cygwin 増亚博—亚洲的中文娱乐平台之


UNIXに惯れた人间がDOSやWindowsを使おうとすると、 UNIX上では简単にできた仕事が Windowsではなかなかできないことに 当惑することがよくあります。 WindowsのGUIやアプリケーションは近年格段に进化しましたが、 コマンドベースの机能は昔からほとんど変わっていません。 UNIXだと普通に使える便利なツールがDOSやWindowsで 使えないという问题は、 なぜか长年まったく解决される见込みが无かったので、 UNIXの好きなユーザは一生悬命UNIXのツールをDOSに移植していたものです。

UNIXのツールをひとつずつWindows用に书き换えていると 大変な手间がかかってしまいますが、 UNIXのシステムコールやライブラリ関数を すべてWindows上でエミュレートするライブラリを使うという 手法を使うことによって、 UNIXのツールをWindowsに移植するのが非常に楽になってきました。 この方式のツールで现在最も広く使われているのが Cygnus Solutions(现Redhat)により开発された Cygwin[*1]というシステムです。

Cygwinとは

Cygwinというのは、 UNIXのシステムコールやライブラリを Windows95/98/ME/NT/2000上でエミュレートする 动的ライブラリ(DLL)と、 それを使って动くGNUの开発ツールやUNIXのアプリケーション群の総称です。 Cygwinを导入することにより、 Windows上のコマンドプロンプトから UNIXの数多くのツールや开発环境を使うことができるようになります。

Cygwinの开発は Windows95が発売された当初から Cygnus Solutionsにおいて开始されており、 1997年にBeta18が/ 1998年にBeta19が/ 1999年にBeta20.1が/ ...と地道に开発が进んでいました。 古いバージョンのCygwinはいまひとつ安定しておらず、 DOS窓でUNIX的なコマンドが使えないこともない、といった雰囲気でしたが、 Beta19やBeta20ではかなり安心して使えるようになり、 2000年にはVersion1.1がリリースされて 非常に快适に使えるようになっています。 现在のバージョンはネットワーク経由の段阶的インストールが可能に なっており、ツール毎にアップデートすることも可能です。

Cygwinを使う利点

Cygwinは、 UNIXのパワーユーザにとって非常に便利であるだけでなく、 普通のWindowsユーザにとっても有益なツールです。 WindowsでCygwinを使うことには以下のような利点があります。
UNIXのツールがWindowsで使える
UNIXにはファイルやテキストを操作する优れたツールが沢山あります。 なかでも、 ファイルの中身を検索するgrepコマンド、 ファイル名を阶层的に検索するfindコマンドなどは UNIX上でのファイルを検索するのになくてはならないものですが、 Windowsではこういったコマンドが标准装备されていないので ちょっとした検索がすぐにできずに困ってしまいます。 ファイル検索に限らず、 Cygwinを导入すれば UNIXの便利なツールがすべて使えるようになります。
シェルの高度な机能が使える
UNIXのコマンドインタプリタ「シェル」は、 DOS窓に比べてはるかにすぐれた各种の机能を持っています。 たとえば UNIXのシェルでは 「正规表现」というパタンマッチング手法が使えるようになっており、 复雑なファイル名のパタンを指定することができます。 またシェルでは ファイル名などを途中まで入力するだけで残りを补完する 「コンプリーション」机能や、 以前使ったコマンドを再利用できる 「ヒストリ」机能などの便利な机能が用意されており、 长いコマンドやファイル名を简単に入力することができます。 CygnusのシェルはDOS窓で动作し、 非常にすぐれたCOMMAND.COMのように使うことができます。
フリーのすぐれた开発环境
UNIXのツールは必要ないという人にとっても フリーのプログラム开発环境は魅力的かもしれません。 Cygwinには フリーのCコンパイラ「GCC」が含まれており、 Windowsのプログラム开発を行なうことができます。 またクロスコンパイラを使うことにより Palmの开発もできます。 コンパイラに限らず、 UNIXはもともとハッカーが作ったものですから、 コンパイルなどの作业を支援するMakeや バージョン管理や共働作业を支援するCVSなど 各种の便利なプログラム开発ツールが揃っています。 Windows版のこういった开発ツールも作られていますが、 Cygwinを导入すればそれらほとんどすべてを一度に导入 できることになります。
スクリプト言语が手軽に使える
Perl、Rubyといったスクリプト言语が人気を集めていますが、 CygwinにはPerlやPythonが付属していますし、 それ以外の言语も比较的简単に导入することができます。
Unix风のサーバが使える
UNIX上では、 telnet/ftp/HTTPなどのサーバが広く使われていますが、 Cygwin上でこれらのサーバを动かすことにより Windows95/98マシンをサーバとして使うことができるようになり、 别のマシンからWindows98マシンにログインしたり ファイルをftpでやりとりしたりすることができて便利です。 UNIXでは かな汉字変换サーバの「jserver」や「skkserv」などが 広く使われていますし、 私は予测型日本语入力サーバ「POBox server」 を使っていますが、 このようなサーバもすべてWindows上で动かすことができます。
WindowsアプリとUNIXアプリを并用できる
UNIXユーザにとっては、これまでにあげた点は 利点ではなく当然の机能であるわけですが、 UNIXユーザにとっては Windowsアプリケーションを使いながらUNIXツールを使うことが できるというのは大きな魅力です。 Windows上のすぐれた画像処理ソフトやブラウザを使ったり RealPlayerでストリーミング放送を聴いたりしながら UNIXの开発ツールを同时に使うことができます。
Cygwinでは、 Cygwinと无関系に作成されたDOSコマンドも シェルから普通に起动することができます。 たとえば コマンドラインから データを指定して 「start」コマンドを起动することにより、 データに関连づけられたWindowsプログラムを 起动することができます。
UNIXを気軽に体験できる
本格的にUNIXを使おうとする场合は 専用のUNIXマシンを使う方が良いのですが、 UNIXをちょっと使ってみたいという场合や 単にUNIXの使い心地を试してみるといった用途の场合は 手持ちのWindowsマシンにCygwinを导入して使ってみるのが 良いかもしれません。 Cygwinを动かすためには 新しいディスクやパーティションの用意も必要なく、 既存のディスクにファイルをインストールするたけでUNIXが动きますし アンインストールも简単です。 CygwinはWindowsの特定のファイルシステム上にインストールされ、 通常のWindowsの动作に影响を与えることがありません。 セットアップも简単で、普通のWindowsユーザなら 気楽にインストールすることができますし、 削除しても他に影响を与えることはありませんから 安全です。
共通ソースで开発できる
Cygwinを使えば、 WindowsでもUNIXでも全く同じソースで プログラム开発を行なうことができるので、 オフィスではデスクトップのUNIXマシンでプログラム开発を行ない、 Windowsのノートパソコンを持ち歩いて 开発を続行するといったことができます。

CygwinでのGUI开発

UNIXではウィンドウシステムとしてX Window Systemがよく使われていますが、 最近はCygwin上のフリーのXサーバやライブラリが存在し、 商用のサーバも有るので、 既存のXのアプリケーションをCygwin上でコンパイルしなおして Windowsで动かすことが可能です。 OpenGL/GLUTのような3次元処理ライブラリは Windows用のものもX用のものもあるので、 全く同じソースを异なる环境で使うことができます。 CygwinはWindowsのAPIを呼ぶこともできるので、 Windowsアプリケーションを作ることもできます。 UNIX互换のAPIとWindowsのAPIが混在することになりますが、 ウィンドウ処理にはWindowsのAPIを使って ファイル処理はUNIXのAPIを使う、といったこともできます。

おわりに

CygwinはWindowsで无理矢理UNIX互换环境を実现しようとしているため、 完全互换でないところや効率が悪いところなどもいくつかあります。 たとえば UNIXのプロセスの挙动をWindows上でエミュレーションしているので、 プロセスを大量に作成するような仕事は効率が悪いようですし、 ファイルの名前やアクセス権などの処理も完全互换ではありません。 しかし、通常の利用においてはほぼ完全にUNIX互换の环境が得られると 考えて良いでしょう。 Cygwinの动作については、 开発者のひとりである藤枝さんが Unix Magazineの2000年11月号からの 连载で详しく解説しています。 また、藤枝さんのページ[*2]には新しい情报が载っているので 参考にするとよいでしょう。

最近はJava, OpenGLなど多くの有用なツールが UNIX, Windows, Macintoshなどで共通に动くようになり、 异なるプラットフォームでの资源共有がやりやすくなってきたのは 憙ばしいことです。 一方、 Macintosh OS XはBSD系のUnixの上に构筑されていますし、 WindowsではCygwinを使うことができるので、 ほとんどどのような环境でもUNIXツールを使うことが できる时代になってきました。 このためUNIXが共通プラットフォームとして有用に なってきたように思えます。 计算机によってキーボードの配列や 操作のバインディングが违ったりするととても気持ちが悪いものです。 UNIXとWindowsを一绪に使っていると、 dirのかわりにlsと打ち込んでしまうなど、 コマンド体系が异なるとミスが多くなりイライラします。 単に名前やマッピングを変えるだけなら単纯な解决方法もありますが、 DOSの基本コマンドはほとんど UNIXのコマンドで代用することができますから、 どこでもUNIXのコマンド体系を使うことにすれば 困ることはありません。 これまでUNIXに縁がなかった人も、CygwinでUNIXの便利な点を理解し、 共通プラットフォームとして活用していくとよいのではないでしょうか。

  1. http://cygwin.com/
  2. http://www.jaist.ac.jp/~fujieda/cygwin/

Toshiyuki Masui