RubyConf2008 3日目
いよいよ最終日。
明日の飛行機は早朝なので忘れないうちに、シャトルの手配と Express-Checkout の手配をしておきました。
- Matz Q&A
今年はじめて RubyConf に参加してるひともけっこういるからか、去年やその前などとさほど変わらない質問も。質疑の詳細は、いずれ公開される irc ログを参照してください。
卜部さん、レオさん++。
JavaScript でいい言語なんだけど、duplicate なコードが悲しいよね、ということでクライアント(ブラウザ)で Ruby を動かせるようにしてみましたというお話。
-
- 最初に試したのは JRuby (アプレットで使うのはセキュリティとかめんどい)
- Silverlight (当時はまだ使えないレベルだった)
- HotRuby (興味深い)
- 最終的に rubyjs を採用 (JS を生成する Ruby のコンパイラ、ObjectSpace からコードを取得し、ParseTree で JS に変換みたいな)
発表者の以前のエントリ。
MysteryCoder: Write your javascript in ruby with rubyjs
http://mysterycoder.blogspot.com/2008/06/write-your-javascript-in-ruby-with.html
上記エントリのなかでも使っていますが、Kernel#` を書き換えて JavaScript のリテラル表記にしていますね。
その他、ふつーに UnitTest が動いたりします。ブラウザ上で実行してました。
Yet another Ruby to JS compiler として Red というものも紹介。出力の JS が rubyjs よりも読みやすく、コミュニティが活発だそうです。でもメタプログラミングには弱いとか?
Sam Ruby の代打で Dave Thomas と David Balack が講演してました。Dave が話して、David がコメントするといった、なんとも豪華なセッションです。
スクリーンには、左右にシェルをふたつ表示して、Ruby1.8 と 1.9 の irb を表示しつつ、1.9 の特徴を淡々と紹介していきました。
01:36 ko1_: まつもとさん以外が紹介すると説得力が高い
www
-
- シンボルキーハッシュリテラルの簡易記法
{sort: "desc", limit: 10} #=> {:sort => "desc", :limit =>10}
-
- ブロックスコープ
a = 1 b = "cat" proc = lambda do |a| a *= 99 end puts proc.call(2) puts a puts b # 1.8 198 2 198 # 1.9 198 1 198
-
- ブロックパラメータ
proc = lambda {|x, y=1, z| p x, y, z} # 1.9 proc.call(10, 20) => [10, 1, 20] proc.call(10, 20, 30) => [10, 20, 30]
-
- Fiber の話
(snip)
-
- Enumerator の話
a = [1, 2, 3, 4, 5] enum = a.to_enum enum.each{|x| p x * 10} enum.select{|x| x > 3} enum = a.enum_for(:each_cons, 2) enum.find{|x,y| x == 3} =>[3,4] enum.to_a [[1,2],[2,3],[3,4],[4,5]] animals = %w{and bee cat dog} counts = [4, 2, 8, 1] e1=animals.to_enum e2=counts.to_enum loop do puts "#{e1.next} #{e2.next}" end enum = Enumerator.new do |y| y << ... y << ... y << ... end enum.each{...} enum.sort{...} string ="ant" string.each_char.with_index do |char, index| ... end
-
- to_proc
map{|a| a.hoge} # = map(&:hoge) [1,2,3].inject(&:+) [1,2,3].inject(:+) [1,2,3].inject(100, :+) # => 106
-
- 鬼車
(snip)
-
- Character Encodings
"cat"[1] # 1.8 97 # 1.9 "a" String#size String#bytesize
Jim Weirich と Joe O'Brien? の寸劇。
まずいコードを Jim が指摘していくという展開ですが、コミカルすぎて説明不能...。あとで動画みてください。 (^^;
お馴染みの Seattle.rb の面々が順番に最近やったことを披露。デバイスを制御してみたり、scheme を実装して RESTful な F/W にしてみたり、XPathやCSSセレクタが使えるxml/htmlパーサーをつくってみたり、とか。
最後に The History of Seattle.rb ということで、Ryan Davis をはじめとした面々の昔の写真が暴露されてましたww
今年は、並列実行の話が多いですね...
そして、発表のかなりの時間 (半分ないし半分以上) をかけて、背景、というか問題意識を話す傾向が強いです。このセッションではアクターの話を前半ずっとしてました。
あまりよくわからなかったので (かなり早口で意識も朦朧としてたので...)、Dramatis 自体の内容はこちらを見てください。 <(_ _)>
dramatis - Dramatis - Dramatis
http://dramatis.mischance.net/
興味深かったのか、質疑はかなり活発でした。
- そして...
以上をもって RubyConf2008 終了です。
とくに最後に全体セッションもなく、3トラックばらばらに gdgd な終了です。そのまま帰路につくひと、PC に向かうひと、集って話してるひとなど、いろいろです。1つの会場では、延々と交代しながら発表をしているようでした。アナウンスはなかったけど、隠れ RejectConf があったのでしょうか!?
夕食はまつもとさんと David Black、Jim Weirich らの集りに便乗 (ぎゅうぎゅうに...) させてもらい、ホテルからちょっと離れたレストランへ。シーフードと巨大なステーキを堪能しました。時差とカンファレンス疲れのせいもあり、次第に日本人組はひとりまたひとりとツブれていましたww
自分も明日ちゃんと起きて空港に向かえるか心配でしたが...なんとか。 (^^;