Tokyo Ruby Kaigi 11 に行きました

行ってきました。

regional.rubykaigi.org

実は前日に会社の懇親会がありまして、思いの外飲んでしまったので、完全に二日酔いな状態で午後からの参加となってしまいました。頭ガンガン。

会場は秋葉原コンベンションホールというところで、駅から近いし、すごい立派な会場です。

f:id:ngzm:20160604000040j:plain

私が拝見した講演からいくつかご紹介です。

高速Webサーバの作り方

奥一穂 (@kazuho) さん

午後一のセッション、私にとっては到着後すぐのセッションです。
のっけからレベルの高いトークに圧倒された感じです。なんせHTTP2での通信をいかに高速化するかという内容で、TCPレイヤーから最適化を検討し実装されています。TCP/IPとかソケットとか通信の仕組みを理解できていないとついていけなさそうな内容ですが、さらりと説明されています。すごいぞ 東京Ruby会議!!となりました。

Embed Ruby

須藤功平 (@ktou) さん

組み込みRubyについて、今回は C言語のアプリに Rubyを組み込む話です。組み込み系は詳しく知らない分野なので、へえーっという感じですが、C言語のfork()とRubyのfork()を混ぜるとクラッシュするとか、Groonga では mRubyのGCは使用しないとか、、いろいろ参考になりそうなところがありました。「組み込みは辛いので覚悟が必要」とおっしゃっていた通り、なかなか一筋縄ではいかないのは感じ取ることができました。

Image Recognition and code that shouldn’t exist

Aaron patterson(@tenderlove) サン

これまでに作ったすごいコードの話、まず「すごい」っていう意味を辞書で調べたら「素晴らしい」と「怖い」二つの意味があったので、今回もその2つの話をするという。。

素晴らしいコードは、Magic the gathering カードコレクションが8000枚以上あって、その価値を1枚1枚調べるシステムをRubyで書いた話。カードを写真に撮って、カード種類を認識し、人工知能を使って価値を推測するというもの。カードデータ収集が大変で、サイトから画像や人気度や価値のデータを収集してやっとデータベース作ったら、友達がそのデータは別のサイトからDLできるよと教えられて驚愕したとか、大変面白いお話しでした。

続いては、恐ろしいコードということで、RubyPHP で Phuby というライブラリを作った話。単に、やってみたかったからこのライブラリを作成したそうだが、やってみたら、いろいろな知識を得たのでOKだそうです。

最後に、笑わせたいコードを書いてみたということで、空白のコードが動くという一つのMagicが披露された。

No code is faster than no code

と言ってた。結局タネ明かしはしてくれなかった。どうなってる??

Opt carrot: A pure-ruby NES emulator

遠藤佑介 (@mametter) さん

Optcarrot というファミコンソフトをPCで遊べるエミュレータRubyで開発した話。Rubyは確かに早くないが、どれくらい速くなるのかの限界にチャレンジしたということで、そもそもは、Ruby3で、Rubyを3倍速くするためのベンチマークとして開発を始めたとのことです。

高速化に際して、そもそもNESのCPUとGPUボトルネックを調べた結果、GPUの処理時間がほぼ80%なので、GPUを高速化することが必要であると判明。ということで、CPUとGPUの処理時間を一定割合で分割したり、Catch up method にしたり、GPU で変更があったピクセルだけをレンダリングしたりして、20fpsに到達したとここと。

さらに、とにかく60fps達成を目指して、なんでもありでとにかく高速化をした話で、メソッドを展開してしまうとか、インスタンス変数をローカル変数に展開するとか、ループであらかじめわかっているだけ処理を書くとかを施した結果、ついに60fps達成したそうです。。デモを見たら無茶速くなってました。サプライズ余興も有りで大盛り上がりでした。

高速化に向けた、実に論理的なアプローチですね。すごい人です、職人技を見た気がしました。

その他

こちらから動画が見れるようです。 東京Ruby会議11 配信用 - YouTube