RubyKaigi 2015に参加してきた感想など

# RubyKaigi 2015

[エアーズ株式会社](http://www.airs.co.jp/)の立花です。静岡県浜松市にてRuby/Railsの開発をしています。

12/11から3日間、東京汐留にて開催された[RubyKaigi 2015](http://rubykaigi.org/2015)に参加してきました（会社で費用出してもらえました。ありがとうございます！）。浜松には[Hamamatsu.rb](http://hamamatsu-rb.github.io/)というRuby開発者の集まりがあって、そちらには毎月参加しているんですが、これだけ大規模な開発者のカンファレンスに参加するのは初めてでした。自分として印象深かった（ついていけた）部分を中心に触れていきたいと思います。

## Keynote / まつもとさんによる基調講演

[MINASWAN](https://en.wikipedia.org/wiki/MINASWAN)という言葉について触れられていました。'Matz is Nice And So We Are Nice'。確か[rebuild.fm](http://rebuild.fm/)でも少し前に触れられていました。（この'Nice'のニュアンスがなかなかに難しくて、実は今でも自分の中で意味が曖昧なままです）。今回のRubyKaigiではいろんな人がちょくちょく「Niceにならなきゃ」「Niceたれ」と自戒するような言葉が聞こえてきた気がします。

ruby 2.3と3.0について。新機能の紹介などがされました。Rubistの誰にとっても影響のある話だけに、ほとんどの参加者が興味深く聞いていたものと思います。2.3での便利な新メソッド紹介などと並んで、物議を醸した3.0のfrozen string literalの経緯の説明もありました。可読性・簡潔さとパフォーマンスの両立ということで、個人的には楽しみにしています。

Ruby3x3。Ruby3.0は2.0より3倍早くするぞ、という目標が掲げられました([話自体はRubyConfが初出だそうで](http://engineering.appfolio.com/appfolio-engineering/2015/11/18/ruby-3x3))。Ruby3に向けてパフォーマンス向上に徹底して取り込んでいく、という表明だと思います。RubyKaigi全体の発表でもこれに絡めたパフォーマンス改善の話が多く聞かれました。最後のキーノートもこれに対応したものになっています。

## TRICK 2015

全く実用的ではないがものすごい技巧を凝らしたコードのコンテスト[TRICK(超絶技巧 Ruby 意味不明コンテスト) 2015](https://github.com/tric/trick2015/blob/master/README.ja.md)の結果発表です。

前回より平均レベルが上がっているということで、なんというか、凄かったです。解説してくれるから気楽に「すげー」とか言えますが、自分で解読することを考えると頭がクラクラします。自分が普段しているような富豪的なプログラミングとは、多分真逆の方向といえるのでしょうか。ローレベルなアルゴリズムの部分とか苦手なもので、こういう方達は本当に尊敬します。

ぜひ[発表資料を見たり](http://d.hatena.ne.jp/ku-ma-me/20151211/p1)、[実際に実行したり](https://github.com/tric/trick2015)してみてください。

## Turbo Rails with Rust

[スライド](https://speakerdeck.com/chancancode/turbo-rails-in-rust)

プログラミング言語Rustの紹介です。

RubyのNative Extensionを書くのならC言語より良いよという話なのですが、特にインパクトがあったのはturborubyの紹介の部分。Rubyのメソッドの中にインラインでRustのコードが書かれ、それがネイティブコードに変換されてRubyのNative Extensionとして動作するという話でした。

自分の今の仕事だと「Cで書かないとパフォーマンスが」というようなケースはそうそう無いのですが、例えばゲームなどを書こうと思ったらこれはかなり便利なのではと思えました。

## The worst Ruby codes I've seen in my life

[スライド](http://www.slideshare.net/Prodis/the-worst-ruby-codes-ive-seen-in-my-life-rubykaigi-2015)

自分が出会った人生で一番酷いコードを紹介します、という発表。

* どれが正常系か分からない、深くネストされた制御構造
* 全く別のことをする#importと#import!
* 大量の重複したif文の繰り返し（しかも最後だけちょっとパターンが違うという罠）

といった問題のある（しかしよく見る）コードが紹介されるのですが、直後にその直し方が並んでいるのがとてもありがたい。
締めは「どうすればこうしたコードを無くせるか」「良い書籍を読む」「レビューする」「ちゃんと教育する」といった話になっており、ただ笑ってるだけではない、コードの品質に対する真摯さを感じる発表でした。

あと個人的な思い入れですが、この発表に大きく共感した人は（いや、しなくても）[マーチン・ファウラーの「リファクタリング」](http://shop.ohmsha.co.jp/shopdetail/000000003881/)は必読だと思います。何が良いコードで何が悪いコードなのか、その両方を知るのは「良いコード」の本質を知るのにすごく有用だと思うのです。

## Evan Phoenix Keynote

3日目、RubyKaigiの最後を飾る[Ruby Central](https://www.ruby-lang.org/ja/news/2003/02/25/20030225/)代表EvanさんのKeynoteです。最初のまつもとさんのキーノートで触れられた"Ruby3x3"に対する具体的な提案で、「Rubyのバイトコードを[LLVM](https://ja.wikipedia.org/wiki/LLVM)のバイトコードに変換し、LLVMの最適化を活用する仕組みにしていこう」というもの。Big jumpです。

[RubyKaigi 2014でのまつもとさんの講演](http://hrnabi.com/2015/05/12/7035/)といい、3.0は性能向上のために、型情報を導入したりバックエンドを変更したりと言った、大きな変更が来るのだろうなという印象があります。実際にどの程度の変化があるはまだ見えていませんが、もし大きな変更を迎えるに当たって自分に出来ることがあるとしたら……とりあえず、テストをしっかり書こうと思います。大丈夫です、大きな変更はRailsで慣れてます。はい。

## 参加してみて

発表の内容は平均的にレベルが高く、その分それなりに難しいです。話題も人も幅広いので、畑違いの領域の知識が要求される話も多いです。興味ある発表の半分は英語です。出会ってお話できる人たちは基本自分より優秀で、色々教えてもらいながら話に付いていくだけで精一杯です。

そのあたりは参加する前から予想していたことなので、自分にとってRubyKaigiに参加するのは「ちょっと背伸びしてみる」行動でした。そして実際に参加して終わってみると、「誰かの話に『へー』って言ってるだけじゃなく、アレやコレについて自分の言葉で語れるくらいになっていないと」という危機感を抱いているのでした。次の日には以前から調べようと思っていた[React.js](https://facebook.github.io/react/)とか[redux](https://github.com/rackt/redux)とかを触っている自分が（あれ、Rubyじゃない）。背伸びはしてみるものです。

得難い経験と刺激を得る機会を与えてくれたRubyKaigiに関わった皆さん、ありがとうございました。