RubyKaigi2009 スペシャルレポート

Ruby会議2009 1日目レポート[更新完了]

この記事を読むのに必要な時間:およそ 7 分

村田賢太さん「Rubyの標準乱数生成器とその改良案」

Rubyの標準乱数生成器について,村田さんの発表です。

プログラミングで使われる乱数は,長い周期,一様性,再現性があるものがよいと言われています。 しかし,マルチスレッドで乱数を使うと偏りが発生することがあり,使い方を間違えると途端に難しい問題に直面するそうです。

Rubyの標準乱数生成機は,複数の生成器への対応や,一様分布以外の分布関数を利用することができないという点があります。これに対応するため,Math/Randomというライブラリを作成し,問題の解決を目指しているそうです。

Randomクラスの標準添付を目指していましたが,昨日の15時頃にRandomクラスがRubyのtrunkにコミットされたそうで,ある意味タイム リーな発表となりました。 しかし,まだExperimentalなので,少しずつ洗練させようと語りかけました。

コミッタの方々からの質問が多く,コミッタ同士で議論が白熱する場面も見受けられました。

画像

画像

倉井龍太郎さん「Rubyで楽しむBDD,ZDD」

「Rubyで楽しむBDD,ZDD」と題して,株式会社はてなの倉井さんの発表です。

算術論理演算という,True,Falseの真理値を使った論理演算を拡張した演算を処理するためのライブラリを紹介しています。(a and b) or not cといった計算をするものです。 この算術論理演算を行うBDD(二分決定グラフ)という理論を用いると,N-queen問題のような数学問題を解くのに有用だそうです。

BDDをRubyから扱うライブラリRDDを作成し,N-queen問題を例に,実際の利用の仕方を紹介しました。 ⁠queenの駒が並ばないこと」という命題を数学的に記述し計算させることで,解を得るプログラムを解説しました。こちらは,一般公開を目指しているそうです。

なぜRubyを選んだのかについては,もともと利用していたソフトウェアがループがなく条件分岐もできないものだったため,RubyのSymbo lや強力な文字列処理が魅力であったため採用したそうです。

また,Swigという,C++のライブラリをRubyから呼び出すツールを使い,簡単に拡張モジュールを作成する方法を紹介しました。

画像

画像

Yehuda Katz氏「From Rails to Rack: Making Rails 3 a Better Ruby Citizen」

Railsアプリケーションのホスティングサービスを提供する「Engine Yard」に所属するYehudaさんは,Rails 3の展望を語ってくれました。

以下は,これは発表概要から持ってきた一文です。

Imagine a Rails application routing to a Sinatra application, or Merb-style exception pages that catch exceptions from Rails or Cloudkit.

Merbとの統合でRailsはどのように変わるのでしょうか。発表中,Rails以降に登場したRamazeやSinatraといった新しい軽量Webアプリケーションフレームワークについて何度も言及しているのが印象的でした。それらの特長を受け,⁠じゃあRailsはどうするのか」という指針と,⁠どのようにそれを実現するのか」という実装について言及しました。

「今のRails(2.3.2)は依存関係が複雑すぎて,ひとつモジュールを呼ぶと,おまけがたくさんついてくる。Rails 3では,モジュールがきれいに切り離されて,必要なものだけを良いとこ取りで使えるようになる」と強調しています。

このように,多様な実装がお互いに刺激を与え合い,進化が加速し,その世界全体を大きく作り変えようとしていく様は,去年から今年のテーマ「多様性は善」⁠変わる/変える」を体現しているようで,今後もRailsの動向からは目が離せません。

画像

画像

橋本和典さん,木山さん「静的型付けを持ったRubyっぽい言語の設計と実装」

橋本さん,木山さんのお二人による発表です。今回,初お披露目の発表だということです。

木山さんはTRubyという言語を開発しました。 TRubyはTypable Rubyという意味で,静的型付けと型推論をもち,⁠Rubyっぽい文法」を持った言語です。型を付けるRubyとしては,DRuby(Diamondback Ruby)やtrubyなどがあり,これらはRubyへの変更をしませんが,TRubyではRubyに似た別言語として作成されました。

実行時間の短縮や,型エラーの早期発見を目標としています。

画像

橋本さんはTibyという言語について紹介しました。 TRubyで記述したプログラムを,Tiby言語へ変換し処理します。 Tibyの特徴は,変数メソッド定義には型を記述し,四則演算などはメソッド呼び出しとして記述するところです。

TibyからJasminという中間言語にコンパイルし,JasminからJavaバイトコードを生成し実行します。 Tibyから中間言語へ変換するコンパイラは,JRubyとRuby1.9と速度比較を示し,JRubyよりも50%程度,速度が向上していることに言及しました。 また,浮動小数点を扱う比較では,JRubyから60%,Ruby1.9から45%の速度向上があり,会場からは賞賛の声があがっていました。

画像

著者プロフィール

大和田純(おおわだじゅん)

ハンドルネームはjune29。RubyKaigi2009当日スタッフ(KaigiFreaks)。

ディスカバリーエンジン「デクワス」を開発・運用中のサイジニア株式会社勤務のWebクリエイタ。北海道出身。技術が人々の生活をどのように豊かにしていくかを考えるのが楽しくて,新しいものはどんどん日常に取り入れてみる。好きな言語はRuby。尊敬する漫画家は荒木飛呂彦先生,好きな擬音語は「メギャン」。

URLhttp://june29.jp/


白土慧(しらつちけい)

ハンドルネームはkei-s。RubyKaigi2009当日スタッフ(KaigiFreaks)。

ディスカバリーエンジン「デクワス」を開発・運用中のサイジニア株式会社勤務のWebエンジニア。札幌市出身。大学時代にWebと複雑ネットワークの楽しさを知る。人と情報のつながりを考えるのが好き。好きな言語はJavaScriptとRuby。好きな小説家は舞城王太郎。

URLhttp://d.hatena.ne.jp/kei-shttp://friendfeed.com/keis