体調が悪くて土曜はRubyKaigi行けなかったけどUstで見れたのでいいか。
土日は家でおとなしくしてたかいがあって体調はだいたいよくなったかな?
平日二日休むのはちょっと仕事の都合で無理だったので、木曜と土曜だけ行こうと考えてたんだが、体調がよくなかったので土曜は家でUst配信を見てた。
特に感想があるものだけ挙げてくか。
SymbolGC。 Rails民はなんでそんなSymbol使うんだ、というかユーザの入力に対してかたっぱしからto_symしていくとか頭おかしいんじゃなかろうか。 じゃあ:hogeとかto_symで得られるのはSymbolじゃなくてSymbolのような何かにすればいいんじゃねぇのとか思ったが、SymbolGCの方向性はそんな感じでもっと現実的にした感じのようだ。どっちもSymbolだけど実装が違う的な、Ruby側で作ったSymbolはGCされちゃうSymbolというものだった。 よく出来てるけど、以前俺が作ってた拡張ライブラリみたいにC側のstatic変数でSymbol保持してたりすると大丈夫かなーというあたりが気になった。だいたいの場合は大丈夫ぽいけど、拡張ライブラリだと変なことやりがちだからなぁ。
Eliminating Giant VM Lock in Ruby through Hardware Transactional Memory。ハードウェアトランザクショナルメモリ(HTM)でGVLを消した……じゃなくて減らしたって話。トランザクショナルメモリって最近のIntel CPUで使えるようになったからたまに聞くけどよくわからなかったのが、この話聞いてなんとなくわかった。すごい。 トランザクションの単位を決めるのが大変なんじゃないかと思ったけど、適当な範囲でトランザクション開始しちゃって、溢れたり競合して失敗したらGVLに落としてやり直す感じぽい。なるほどこれでいいんだー。失敗したらちょっと遅くなるけど、成功してる間は速いから大丈夫てな話なのね。気軽に使えるもんなんだなぁ。すごい期待できそうな話だった。
Non-Linear Pattern Matching against Unfree Data Types in Ruby (Egison Pattern Matching in Ruby)。Egisonていうすごいパターンマッチができる言語を作ったのと、そのサブセットをRubyに組み込めるようにした話。ポーカーや麻雀の役判定が簡単にできる!ていう話で、これがまさに欲しかったので興味深い。以前イベント用のカードゲーム作った時に役判定がパターンマッチでできるんだろうとF#を使ってみたが、そこまで高度なパターンマッチはできなくてがっかりしたので本当にこういうのあると助かる。Ruby版はPure Rubyというのも使いやすくていいね。プログラム言語なんかの構文解析にも使えるんじゃないかと思ったけどどうだろう。
Inside RubyMotion for Android。Android版RubyMotionの話。RubyMotionてMacRubyのLLVMコンパイル部分とランタイムを分離した物と理解してたからObjCべったりだろうしAndroidはどうやったんだろうと思ったが、Javaべったりなように書き換えたようだ。しゅごい。クラスを静的に作るだのデバッグできるようにDWARFでデバッグ情報吐き出すような話をしてたような気がする。うろ覚えだから間違ってるかも。だとすると元のRubyMotionもMacRubyとはだいぶ違ってたのかな?これでRubyMotionのライセンス一本で両方対応できるのは安いなー。iOSもAndroidも持ってないからいらんけど。
二日目は午前中だけ会社でUst配信見てた。基調講演は見れなかったけど。とくにこれといって感想を書くような物はなし。
三日目は起きたら10時だったし、体調も微妙なのでおとなしく家から作業しながら配信を見てた。
ROM Hacking with Rubyは、ファミコンのナイトガンダム物語3をハックして英語化したい話。あうあう。特にRubyだからどうという話でもないし、コードいじる話でもなくデータをいじる話なのであんまりおもしろくはなかったなー。バイナリいじるのにRubyが便利というだけ。
Streaming Processing in Camera Remote API。SonyのカメラにはRemote Camera APIてのがあって、オープンになってるのでいろいろとアクセスできるんだそうな。それをRubyでいじってラッパライブラリを作ってみたよという話だった。俺のカメラもSonyだわーと調べたけど、最近のモデルじゃないとついてないようなんで、去年買った当時既に型落ちだった俺のやつじゃだめなようだ。残念。ほとんどRuby関係ないけど、一部のヘッダを切り出すのにRubyだとバイナリいじれて便利という話だった。
Everything is Broken: A Story of Hope。ブラウザでSSL通信する時にどんなことが起きているかという一般的なそして簡単な話。とくに新しい話題は全くないが、わかりやすいのでとても参考になった。上手いことやってるんだなー。
8bit Game Development With Ruby。Rubyでファミコンのアプリを作ったりTelnetでゲームを提供できるburnて物の話。そもそもファミコンのアプリを作るまではいいがTelnetサーバになってそれを動かせるとか意味わからんのだが本当にそうだったのでそうとしか言えない。 ビルドした物がブラウザ上で動いてるのすごいと思ったんだけど、あれはJavaScriptのファミコンエミュレータを動かしてるということでいいんだろうか。JavaScriptでブラウザ上で動くものを直接吐けるわけではないのかな。 ファミコンのROMを作るのはファミコン用のCツールチェインをバックエンドにしてCのコードを吐くことでやってるようだ。俺だったらRubyから直接バイナリ吐きたくなって途中で飽きるのを、ちゃんと既存のツールにぶん投げて完成させるのがえらい。 あとDSLはメインループが文字列になってて何事かと思ったんだけど、そういやあれは仕方ないんだった。DSL自体はコンパイル時に実行されるものだけど、メインループはランタイムに実行しないといけないからコンパイル時に文が実行されても意味ない。別途解析してコンンパイルしないといけないけど、他の部分はコンパイル時に実行したいから、別にコンパイルするメインループは文字列でってことなんだろう。ブロック内のソース文字列を取るとかできれば、ユーザが書くコードは文字列にしなくていいんだけど、matzがマクロとか入れないわーって言ってたんでこれは今後もどうしようもないだろうな。頑張って式を作るオブジェクトを渡すとかもできなくはないけど制御構文はどうしようもないしね。 しかしコード上で文字列だとエディタの補助が受けられなくなるんだよなー。まあそこに目をつぶって完成させるのがえらい。俺だったらなんとか解決しようとして途中で(以下略。 Telnetの方は真面目に聞いてなかったんでよくわからんかった。なんでそんなものを入れたのか謎だが作りたかったから入れたんだろう。
Make your own synchronization mechanism.はGoのチャネルみたいなのをRubyで作ってみた話。RubyのQueueが便利という話でもあったが全くその通りだと思う。あとTupleSpaceが便利らしい。昔から便利そうかもとは思っているがあんまりつかいどころがピンと来てない。Goのチャネルがわからないのでその辺に関してはあまりわからなかったが。selectがいろいろ大変ということであったがそうだよなぁ。WindowsAPI使ってると同期機構がいっぱいあってWaitForMultipleObjectとかも使えてすごい便利だなーと思う。そんな感じでどのプラットフォームでもなんでも上手く待てるといいのに、ね。WinAPIだとI/O待ちがちょっとめんどくさいが。
特におもうところがあったのはこんなもんかなー。
あと会自体とかについて。 木曜は11時前くらいに会場に着いたんだけど、既にノベルティシャツのLとXLは無くなっていた。でかい人達ばっかりだお。 受け付けは何の支障もなかったんだけど、その後の案内が全くないのがちょっと困ったな。 無線LANとか無いのかなーと思ったけどどこにも書いてないので無いようだ……と思ったが、dena_rubyなんちゃら的なSSIDがいくつかあったので勝手に使ってた。たぶんこれでよかったんだと思うんだけどどこかに書いてあったのかなー? 会場マップとかもなくてどこでやってるのかわからなかったんだが、飲み物置いてあるあたりにAというのが立っていたのでHall Aの場所はすぐわかった。Hall Bはどこにあるかわからなかったんだが、あとでトイレ探して行ったときに遠くに見つけた。ちょっと遠いのでどっかに案内必要じゃないですかね。どっかにあったのを見落としただけかもしれんが。 午前中終わった時にBentoは2階です、たぶん足りると思いますとかいう案内があったが、そもそもBentoとは一体なんなのかがわからない。スピーカーとかコミッターが貰えるやつなのか俺(一般参加者)も貰えるものなのか。よくわからんが見てたらみんなぞろぞろと2階に行くし、しばらくして行ってみたら誰でも貰えるようで、俺も問題なくもらえた。参加者はだれでも弁当が貰えるよってアナウンスは欲しかったですね。 全体的に案内が無いなーと思ったことは開会時に言ったりしたのかもしれないけど、みんな開会時に居るとも限らないしね。まあどっかに書いてあったのを俺が見落としたのかもしれないが、案内っぽいのはどこにも貼ってあった覚えがないんだよなぁ。 あと休憩時間中にかかってる音楽がちょっとうるさい気がした。音量でかめじゃないですかね。コード書いてたらちょっと邪魔だった。
Ust見てて気になったのは、Ustって広告うぜーな!ってあたりか。普段使ってないから知らんかったけどこんなに広告出るんだな。ただ下部に広告出まくって必死に消してたけど、下部の広告は幸いプロジェクタの画面にかかってないのでスクロールアウトしてしまえば気にならないことが途中で判明した。違うホールのを見ようとした時に30秒もCM見せられる方がしんどかったね。IEの調子が悪くて途中でつながらなくなってリロードする度に見せられるからなおさら。まあこれはべつにRubyKaigiの話では全然ない。単にUstを普段使ってないから広告のあまりのうざさにびっくりしただけだ。視聴開始時の30秒CMは1回だからまだしも、ひっきりなしに下からにょきにょき出てくる広告はセンス悪すぎでしょ。なるほどUst流行らんわけだ。