RubyKaigi2008 1st day Photoレポート[随時更新]
本日(6月21日)行われている,RubyKaigi2008 1dayのPhotoレポートです。随時,更新予定です。本日は,大ホールの様子をメインにお伝えしていきます。
各セッションの模様は,角田さんにレポートしていただきました。
セッション前の受付の様子
セッション前の様子です。大ホール前で,RubyKaigi2008の受付が行われました。
開会の辞
RubyKaigi2008の1日目は,日本Rubyの会会長の高橋征義さんによる開会の辞から始まりました。昨年のRubyKaigiでのDave Thomas氏の「新参者を迎えよう」という言葉を受け,今回のテーマを「多様性」としました。また,異なる目的や習慣,文化を持つ人を抱擁すべく,Rubyの「多様性は善」というポリシーに基づき,2つの新しい試みを行っています。1つめはビジネス寄りなセッションを集めた0日目の開催,2つめは2つの会場を設けマルチトラックにてセッションを行うことです。
以下の動画は,その模様です。
現在の、そしてこれからのRubyVM開発(ささだこういちさん)
ささだこういちさんは,「現在の,そしてこれからのRuby VM開発」というテーマで,Ruby 1.9より採用されたRuby VMについての発表を行いました。
まずは現状のRuby実装とMRI(CRuby)について紹介を行いました。現在のRuby実装はJRuby,Rubinius,IronRuby,MagLev,CRubyと数多くあり,本筋であるMRIは前日の2008年6月20日にリリースされた1.9.0_2が最新です。今年のクリスマス前にはStableである1.9.1のリリースを目指しているとのことです。
次にRuby VMの話に進み,スレッドの並列実行や1つのプロセスで複数のVMが動くMulti VMなど,多くの特徴を紹介しました。
続いて,次々に立ち上がるRuby関連プロジェクトの紹介に移りました。RubyコードからCコードに変換してパフォーマンス向上を目指した「Running Project Compilation」や「High Performance Computing」,3人の学生で進められている,自由にカスタマイズできるRuby処理系「Atomic Ruby」などが紹介されました。
なお,東京大学に笹田研が設けられ,現在学生を募集しており,7/1より願書を受け付けるようです。
JRuby: Ready for Action(Charles Nutterさん)
JRubyのメンテナであり,パフォーマンスに厳しいCharles Nutter氏により(「MRI 1.8より遅かったらバグだ」と定義づけているそうです),JRubyの発表が行われました。
JRubyは2002年にプロジェクトがスタートし,現在バージョンは1.1.2までアップデートしています。間もなく1.1.3がリリースされるとのことです。
JRubyの利用実績として以下を挙げました。
- NetBeansやEclipseなどのIDE(Rubyのパーサとして)
- Swing GUI
- Graphics
- Webアプリケーション(JRuby on Rails)
SwingはJavaの複雑なAPIとRubyのクロスプラットフォームの問題を克服したと述べ,Rubyのシンプルな記述の利点を活かしirb上でSwingアプリケーションを作るデモを披露しました。また,JRubyによるSwing開発を支援する「Cheri」「Proligacy」「MonkeyBars」などを紹介しました。
Ruby-ProcessingというProcessingのJRubyラッパーを使って音声に反応するパーティクルのデモも披露しました。120行あまりのコードで実現しているのには驚きです。
そしてJRuby on Railsの紹介に移りました。「JavaのWeb開発は設定が多く複雑すぎる」とし,JRuby on Railsの有用性を示しました。また,デプロイ環境について,mongrelと最近登場したPassengerを紹介しました。
JRuby on Railsのデモとして,Glassfishを使ってRailsプロジェクトを作成しデプロイするまでを行いました。warbleコマンド(gem install warblerで利用可能)を実行するだけでWARファイルが作られ,GlassfishのasadminコマンドでWARファイルをデプロイすることができます。この仕組みはRailsだけでなくMerbでも利用できるようです。スライドではWEBrick,Mongrelとの比較をグラフにしていましたが,リクエスト頻度が高くなるについてGlassfishが優勢になっていました。
なお,現在Glashfish gemを開発中で,glassfish_rails <app_name>とするだけでプロジェクト作成からデプロイ,起動までが行えるとのことです。
最後に医療記録管理サービスやOracleユーザのコミュニケーションサイトなど多くのJRuby on Railsの事例を挙げ,JRuby on Railsはちゃんと使えるものであることをアピールしました。
質問にて,Ruby 1.9について聞かれたCharles氏は,自身のマシンに入っているjrubyに引数--1.9を付け,1.9から導入されたfiberライブラリをrequireしてみせ会場を大いに沸かせました。
「Rubiniusの魔法」(Evan Phoenixさん)
Evan氏による新しいRuby処理系「Rubinius」の発表です。Evan氏はEngine Yardという会社でRubiniusの開発を仕事にしています。
RubiniusはRuby VMとは別の新しいバイトコードベースのVMであり,コアライブラリを含むカーネルと,拡張モジュールを実行するための互換性のあるC APIで構成されています。またSmalltalkのVMのアーテクチャをベースにしており,世代別GCを備えています。
仕組みとして,コンパイラはまずRubyコードをto_sexpメソッドにてS式に変換し,そのS式を抽象構文木に変換します。そしてVisitorパターンを用いてバイトコードを生成します。
Rubiniusはプラグインをサポートしており,Evan氏はサンプルコードをベースに解説しました。そしてSmalltalkと同じように実行中のコンテキストを取得するMethodContext,ブロックで必要なデータを格納するためのBlockEnviromnent,インラインメソッドキャッシュの役割を持つSendSiteと,いくつかの重要なクラスをサンプルコードを交え解説しました。
また,Rubiniusは一つのプロセスに複数のVMを持ちVM間でコミュニケーションが可能なMulti VMの機能を持っています。
最後にスレッド実装に関する説明を行い,「ほかにも紹介することがたくさんあり過ぎる」としてひとまずのセッションは終わりました。
セッション中に一度もデモを行わなかったため何からのデモを行うことになり,観客から「JRubyセッションの質問にて挙がったBinding#of_callerを実装してほしい」というリクエストが挙がりました。Evan氏は以下のコードを書いてof_caller.rbというファイルで保存し,rbxコマンドを実行して見事「1」と出力させてみせました。
class Binding
def self.of_caller
Binding.setup MethodContext.current.sender.sender
end
end
def foo
a = 1
bar
end
def bar
b = Binding.of_caller
eval("p a", b)
end
foo()
質問では,「パフォーマンスは?」(A:よくなっている),「マクロのような機能は実現できる?」(A:Yes),「パーサをいじる仕組みはある?」(A:今RubyでRubyパーサを書いている)など,たくさんのやりとりが行われました。
ジュンク堂書店池袋店の出張販売
本日から,ジュンク堂書店池袋店の出張販売が行われています。販売を担当しているジュンク堂の長田さんは,郵送が間に合わなかった本をがんばって自宅からキャリアで運んできたそうです。
そのおかげで,たくさんのRuby本と,なぜか一部PerlやPythonの本が並んでいます。そして,『初めてのRuby』(オライリー)と『WEB+DB PRESS Vol.45』(技術評論社)は先行発売されています。『WEB+DB PRESS Vol.45』はなんと100冊もあります! 売れ残ったら悲しいので,みなさんぜひ買ってください。
追記: 昼休みの販売だけで,『WEB+DB PRESS Vol.45』は40冊以上売れました! 買って くださってみなさん,ありがとうございました。 Yuguiさんの新著『初めてのRuby』(オライリー)もバカ売れで,サイン会には長蛇の列ができていました。Yuguiさんは『WEB+DB PRESS Vol.45』でもRSpecの記事を書いていますので,tackenさんは『WEB+DB PRESS Vol.45』にもサインをゲット!
さらに追記:2日目には,100冊が完売しました。買ってくださってみなさん,ありがとうございました!!
RubyKaigi2008 スペシャル★レポート
- RubyKaigi・アンド・ナウ――日本Ruby会議2008運営委員長の個人的なふりかえり
- RubyKaigi2008 2nd day Photoレポート[随時更新]
- RubyKaigi2008 1st day Photoレポート[随時更新]
- RubyKaigi2008 0th day Photoレポート[随時更新]



