○Windows環境におけるRubyについて 報告者: 小松克行 2つ目のセッションでは、Windows(mswin32)版Rubyを作成された木村浩一さんが burgundy(赤ワイン色)のFSFのTシャツで登場され、過去の移植作業のきっかけ と苦労した点、Windows環境におけるRubyの現状、将来に向けての方向性に ついて発表されました。 o 移植作業 VC++(Microsoft Visual C++)によるWindows版作成のきっかけは、Niftyで 話題に上がったので、コンパイルしてみたら通らなかったからということ でした。コンパイルできない件で、まつもとさんたちとメールのやり取りした ところ、まだ移植途中だったらしいということが分かり、それではということで 移植をはじめられたそうです。 移植作業で苦労した点としては、 ・popen()の実装 ・拡張子の違い(.aと.lib、.oと.obj、.soと.dll) ・コンパイラのオプションの違い ・構築スクリプト(ext/extmk.rb)の対応 ・使用できるツールの制限 をあげられていました。 popen()は、実装してみたもののドキュメント化されていない仕様を使わないと 動作させられないことがわかり、コンパイラ付属のライブラリをそのまま使用 するようにしたそうです。 VC++での拡張子やコンパイラのオプションの体系はUNIXの一般的な環境とは かなり異なります。このため、Makefileや構築スクリプトの対応が必要に なりますが、このあたりを、Rubyが良くわかっていない状態でいじったので 苦労して時間がかかったそうです。そのおかげでRubyを覚えたそうですが。 WindowsではUNIX環境で一般的に使用できるツールを用意するにはそれなりの 努力が必要です。mswin32版はバイナリ配布をしていないので、実行ファイルを 作成する手間を軽減するためにコンパイラ以外のツールはできるだけ使用 しないようにしているそうです。 o Windows環境におけるRubyの現状 現状、Windows版には、現状cygwin版とmswin32版がありますが、ユーザー数や 記事の数からいってもcygwin版がWindows用Rubyとして標準的なものです。 木村さん自身もじつはRubyを使うときにはcygwin版を使うことが多く、Rubyを 「いじる」時にはmswin32版をというように使い分けていらっしゃるそうです。 cygwinはUNIXとWindowsの違いをDLL(cygwin1.dll)が吸収してくれるため、 UNIXと互換性が高く、forkやexecも動くようになります。また、cygwinの 開発環境をインストールすると必要なツールが一通りそろい、UNIXと同じ 感覚でconfigure + makeでソフトウェアをインストールできるようになる 点でも苦労が少なくて済みます。 WindowsでRubyを使う場面は、木村さんのみたところではテキスト処理言語と しての使用と、win32ole拡張ライブラリを使った「糊」言語としての使用が 代表的だということでした。 o 将来に向けて mswin32版は、tcltklibのサンプルがうまく動かないという問題があり、 バイナリ配布するところまでいっていないので、問題を解決したいとの ことでした。 そのほか、 ・VC++以外のコンパイラの対応 ・Python for Windowsのような環境の構築 ・Windows CE対応 ・Windows Scripting Host対応 ・Internet Explorerとの連携 といった目標が述べられました。 o 質疑応答 質疑応答では、おもにバイナリ配布やWindows版のRubyのパフォーマンスに ついての質問があがりました。インストーラー付きのバイナリ配布を望む 声が多かったです。 なお、ワークショップを契機として、以下のようなWindows環境向けの プロジェクトが立ち上がっており、今後の発展が期待されます。 Ruby Entry Package for Win32 (cygwin版Ruby + 日本語ドキュメントセット) RubyWin (Python for Windowsのような環境)