RailsアプリケーションをBDDで開発する際の標準となった感のあるCucumberとRSpecですが、フィーチャやスペックを日本語で記述することになります。XやLinuxでは全く問題にならないのですが、Windowsの場合、UTF-8の出力をコンソールに表示する事が問題となります。NetBeansを使えば、出力ウィンドウでUTF-8を表示可能ですが、特定のフィーチャを指定して実行する機能などがないため、実用てきではありません。コードページ変更による方法コマンドプロンプトのコードページを65001(UTF-8)にする方法もあるようですが、日本語表示フォントの設定がうまく行かなかったり、コマンド入力が正しく実行されなかったりして、手元の環境では使用できませんでした。何度か試しているうちに気がついたのが、設定の順序です。次の方法だとうまく行くようです。日本語フォントを明示的に設定するコードページを変更する1は、コマンドプロンプトのウィンドウの左上をクリックして、「プロパティ」を選択し、「フォント」の設定を「MSゴシック」に変更します。65001と入力して、65001(UTF-8)に変更します。Cucumberのカラー出力をしようとするとwin32consoleをインストールするようにアドバイスされます。このモジュール自体は、日本語に対応している訳ではなさそうですが、Win32::Console::ANSI::IO#_convをハックする事で、出力文字をShift-JISに強制変更させます。endendただし、この方法はコンソールに出力する場合のみコード変換を行うため、リダイレクトを行う場合にはうまく行きません。ZenTestのautotest(RSpecの場合のautospec)は内部でリダイレクトを行っているため、うまく行きませんでした。Yardに移るとのニュースが出ていました。YardOracleがSunの吸収を決めてから、JRubyについてどうするのかのはっきりした態度を示さないので、しびれを切らして見切ったようです。Rubyに対して攻撃的だったので、これは何かあるなと思っていたところでした。1.4のリリースに専念するそうですが、今のテーマは、Java市民としてのJRubyだそうで、なんとHibernateがJRubyで使えるなど、JavaのフレームワークとJRubyの融合を主眼においているようです。ところで、こうなると気になるのがMicrosoftのIronRubyチームの動向です。不景気のリストラで、ほかのDLRを使う言語とチームが合体したというニュースはだいぶ前に目にしましたが、予定されていたOSCONが終わっても当初アナウンスの1.0はおろかセッションタイトルの0.9もリリースされていません。最終日は日曜にも関わらず9時半からのセッションでしたが、午前中は元気に中会議室のセッションに参加。田中さんのSocketの改良の話は、私にはちょっとテクニカルすぎましたが、おかげでNFSをマルチホームで使った際に発生した障害の原因らしきものに気がつきました。ありがとうございます。artonさんのセッションは、なかなかためになる小技が聞けて収穫でした。けんさんの、いつものシリーズも、肩に力が入らないセッションで、ちょっとした作業をRubyで自動化する姿勢は見習いたいものです。あと出力をcvsではなくタブ区切りにする工夫もなるほどと思いました。西山さんのrubygemsの落とし穴については、知っている事も多かったのですが、行儀の悪いgemをsudoでインストールすると怖いという話は正直びっくりでした。Debian系に関しては、私はrubygemsのdpkgは使わず、手動でインストールするのがよいと思っていますが。PattersonさんのXMLの話を聞きました。必要なアプリをなかなかRubyで書こうとは思わないものですが、プロセス監視を別の軽量なプロセスで行うという発想は面白いですね。「ひげの山男」ことAaronさんのセッションは、現場にいた人でないと解らないかもしれませんが、爆笑の連続でした。その中でも、ちゃんと技術的なメッセージが伝わっていたのはすごいです。最後の技術セッションは桑田さんのErubisのセッションを聞きました。Erubisも使った事がないので、使ってみようと思ったのですが、最後にどんでん返しで、これからはTenjinですと言われたのはびっくり。Sinatraの人からも名前が出ていたし、調べてみなければ。締めのキーノートは、高橋会長でした。いつも通り?の和服で登場し、ちょっと緊張気味にRubyと日本Rubyの会の課題について語ってくれました。時間がなかったのでReject会議は昨年に続いてパスしましたが、聞きたかったな。2009の2日目は大変面白い一日でした。Ramazeの3つの「軽量」ライブラリの話を聞きました。確かに、用途を既存のあるいはシンプルに考えたRubyコードに「HTTPを喋らせる」という発想は面白いですね。配布も簡単なVegasはとても面白く思いました。インストールしてみました。あと、Sequelについては、まさにSQL使いのためのORMですね。1日目に高井さんの「エンタープライズRails」の話を聞いていたので、説得力倍増です。午後からは、コミュニティアピールに続いてまつもとさんのキーノートです。いつもながらのトークは楽しかったです。昨日のLTもなかなかでしたが、今日のLTも力作ぞろいで、LTこそRubyコミュニティのパワーですね。最後の駒は、1階の特別会議室でのテクニカルな?セッションシリーズに出席しました。「Rubyのゴッドファーザー(名付け親)」である石塚さんが、楽天の増田さんと一緒にやっているFairyと分散オブジェクトのDeepConnectの話をした後、「分散オブジェクトと言えばこの人」の咳さんの登場です。咳さん、ほとんど冗談でプレゼンをしているようでいて、技術的には核心を突いた見識がすばらしいところですね。その後、Rubyのテストメンテナの遠藤さんが、プロジェクトのカバレージの変動をモニタリングするツールの説明をしてくれました。カバレージを落とすMさんの話も。これも大変面白かったのですが、時間が余ったからと行って披露してくれたハッキングの数々にはみんなあっけにとられていましたね。これが一番RubyKaigiらしいと思ったのが、NariさんのGCの話と、その後の質疑応答でした。質問にたった、RHGの青木さんやYARVの笹田さんが、「GCは良くわからないのですが」と前置きをつけて質問したのにはみんな爆笑。—時を超えた創造の原則」の著者の江渡さんのサイン会があり、しっかりサインをもらってきましたが、これから読むので感想はまた後日。2009に出席します。ところで、会議用に個人の名刺を印刷しようと思ったら、プリンタが故障していました。RubyWindowsでruby-pgをコンパイルするPostgreSQL用のRubyアダプタは、Rubyで書かれたpostgres-prと、Cで書かれたライブラリがありますが、Cで書かれた方は、名前がpostgres、ruby-postgres、ruby-pg、pgところころかわった上、Windows用のバイナリが提供されなくなったため、Windowsでは使いにくくRailsではMySQLが好まれる一因になっているような気がします。一時はpgのメンテナがWindowsでコンパイルできる人を募集するなどしていたようですが、最近ではバイナリパッケージは出ていないものの、Windowsでのコンパイル方法がフォーラムで紹介されるなど、状況が改善されてきています。http://www.microsoft.com/japan/msdn/vstudio/express/私もいろいろ試してみたところ、最新版では通常のgemでもコンパイル導入ができるようなので、紹介しておきます。PostgreSQLのインストール最新版の8.3.5-1をインストールします。インストールオプションで開発用のモジュール(インクルードファイルとライブラリ)を追加しておきます。Editionをダウンロードし、インストールします。C++のバージョンを6.0に限定する下記のディレクティブが含まれているため、これをコメントアウトします。プロンプトを起動します。このコマンドプロンプトからgemをインストールします。pg-0.7.9.2008.10.13...のようにインストールできればOKです。VisualIronRuby初のバイナリリリースMicrosoftがオープンソースプロジェクトとして開発しているIronRubyが初のバイナリをリリースしました。http://rubyforge.org/projects/ironrubyまだ、アルファ版ということですし、C版のRubyや、JRubyなどに比較しても「何倍も遅い」状態ですが、標準ライブラリを添付したバイナリリリースの登場は、大きなマイルストーンだったと思います。)で紹介していますが、OSCONで発表された中には、オープンソースのリポジトリサービスとして急速に普及しているGithubで、Microsoft以外の開発者がコントリビュートするためのプロジェクトを立ち上げていくということです。第1弾は、SilverlightをRailsアプリケーションに組み込むためのPluginだそうです。Microsoftにとって画期的なのは、IronRubyの開発中に行った、RubySpecのコードの修正版を、RubySpecプロジェクトにコントリビュートするということです。Microsoftが自社以外のオープンソースプロジェクトにコードを提供するということは、「Microsoft的には」大変な事だったようです。Kaneさんの事例紹介。etcへの)ビジネスなのだそうです。1日に100のアルバムをリリースしているそうです。フロント(アーティスト側)は通常のアカウンティングサイト。大きなファイルのアップロードは、mongrelではなくてmerbを使っているとのこと。配布エンジンはほとんどRuby。エンコード変換は外部、XMLのValidateはJavaだそうです。メッセージキューをYAML形式で実装しAmazonのサービスを利用。EC2を使って配信サーバーを動的に管理している。700のサーバーを起動するのに5分。