日記を書くまでが RubyKaigi ということで、久しぶりに日記を書いてみる。
一日目
謎の全身のむくみと関節の痛みに苦しんで病院で検査していたら各科たらい回しにされ、一日が終わってしまった……特に @tkawa さんの講演を聴きたかったので無念でならない。
RubyKaigi が始まるというのに俺は病院にいる……orz
— Takuto Wada (@t_wada) 2014, 9月 18
tkawa さんの RubyKaigi 講演資料。 Web API 設計の現状の問題提起と、『RESTful Web APIs』で示された世界を実現するために JSON に足りないセマンティクスを補う試み。素晴らしい資料だ。 http://t.co/7JoBDEb1nl
— Takuto Wada (@t_wada) 2014, 9月 18
二日目
二日目は以下の講演を聴いた。
- Keynote: Coming soon... Yukihiro "Matz" Matsumoto
- Deep down fixtures Prathamesh Sonpatki
- <%= link_to "bundle", "update" %> - Make "bundle update" more fun to review Kensuke Nagae
- RailsGirls: Not Only For Girls Haruka Iwao
- Scalable deployments - How we deploy Rails app to 100+ hosts in a minute Shota Fukumori (sora_h)
- Write ruby code to change ruby code Richard Huang
- 7 years of Ruby & Rails with the same web site Zev Blut, Kevin Griffin
- Power Assert in Ruby Kazuki Tsujimoto
- Lightning Talks
感想を、講演を聴いていたときの Tweet でまとめてみる。
Keynote: Coming soon...
Matz が Ruby 3.0 で考えていること: Concurrency, JIT(LLVM?), Static Typing #rubykaigiA #rubykaigi
— Takuto Wada (@t_wada) 2014, 9月 19
Ruby 3.0 の Static Typing の構想: "2 Languages in 1" Soft Typing が有効になる言語のサブセットを提供し、それが有効にならない書き方の部分は Dynamic Typing にする #rubykaigiA #rubykaigi
— Takuto Wada (@t_wada) 2014, 9月 19
<%= link_to "bundle", "update" %> - Make "bundle update" more fun to review
最後の方に出てくる、アイデアを出すことよりも継続的な改善を行うことの方が難しい、という話がとてもいい / “<%= link_to "bundle", "update" %> - Make "bundle update" more…” http://t.co/MZHqVKIfDf
— Takuto Wada (@t_wada) 2014, 9月 20
RailsGirls: Not Only For Girls
ジェンダーについて。この講演はとても良かった。 / “Rails Girls: Not Only for Girls - RubyKaigi 2014” http://t.co/ZQwdtLCgGJ
— Takuto Wada (@t_wada) 2014, 9月 20
Scalable deployments - How we deploy Rails app to 100+ hosts in a minute
ssh を使わずにデプロイ対象の tarball を S3 などのストレージに置いて Serf で配布/配備することで大量のサーバに対して高速にデプロイを行うためのツール。クックパッド社内でデプロイに使われている。 / “sora…” http://t.co/gTiKjOpVGM
— Takuto Wada (@t_wada) 2014, 9月 19
Write ruby code to change ruby code
AST のリライトルールを DSL で記述することで Ruby コードの改変を行うツール。様々なルールが既にあり、 Rails3 -> Rails4 や RSpec2 -> RSpec3 の移行もできる。これはすごい。 / “xi…” http://t.co/xCVBmAhWDm
— Takuto Wada (@t_wada) 2014, 9月 19
Rubocop, Transpec, synvert など、 Ruby にも AST 解析/改変系のライブラリが増えてきたな
— Takuto Wada (@t_wada) 2014, 9月 19
Power Assert in Ruby
Ruby 版 Power Assert の設計、内部実装や難しかった点などを詳しく説明している資料。とてもいい。 / “Power Assert in Ruby // Speaker Deck” http://t.co/3KX9onkHtV
— Takuto Wada (@t_wada) 2014, 9月 20
"Power Assert を実装するときに取り組まなければならないものは 1. 各所の値の取得。 2. 値の位置情報(行/列)の取得。 値を取得するためには TracePoint を使った。これからはひたすら TracePoint 凄いという話をします" #rubykaigiB
— Takuto Wada (@t_wada) 2014, 9月 19
黒魔術の使いこなし方がまた少し違っていてとても面白かった #rubykaigiB
— Takuto Wada (@t_wada) 2014, 9月 19
Lightning Talks
バージョニングについて。特に 1.0.0 を宣言することの大事さについて。 9,10 ページ目のメッセージがとても熱い。 / “Invitation for v1.0.0” http://t.co/iogTYgxAz6
— Takuto Wada (@t_wada) 2014, 9月 22
バージョニングにはロマンがある! (スクリーンに大写しされて焦った) https://t.co/Msbcv1ITkk
— Takuto Wada (@t_wada) 2014, 9月 19
二日目雑感
やはりMatz のキーノートは印象的だった。ここ数年は GC やメモリ効率など処理系内部の改良が多かったけど、そろそろ将来を見すえて大口を叩こう(?)ということで、今回の Matz の話は Ruby 3.0 で導入したいことが語られる夢のあるキーノートだった。Ruby にも静的型付き言語の要素を取り入れるべく、かつ既存の Ruby の良さ、 Duck Typing の強みを殺さないために考えられた「2 Languages in 1 (Soft Typing の言語サブセットとその補集合となる Dynamic Typing の部分)」構想はとても興味深いし、そうなったら面白いなと思う。
Write ruby code to change ruby code も印象に残ったセッション。このセッションで紹介された synvert というツールは、 Ruby の AST のリライトルールを Ruby DSL で記述できる。つまり、 Ruby コードで Ruby コードを編集できる。これは強い。最近 JavaScript の世界では AST を扱うツールが非常に増えてきているけど(私が開発している power-assert もそう)、それが Ruby の世界にもやってきていることを感じた。これから synvert は流行ると思う。 また、ブラウザ上で Ruby の AST 変換をインタラクティブに行えるデモサイトも洗練されていて、迫力のあるデモだった。(ので、 power-assert にもこんなデモサイトがあるといいなぁ、などと考えていたら同じ講演を聴いていた azu さんが一晩でデモサイトを作ってくれたのだった。速い!!)
そしてもちろん、 Power Assert in Ruby のセッション。私が JavaScript 版を作ったこともあって、 Ruby は同じ問題にどのように立ち向かうのか非常に興味があった。講演を聴いた結果 TracePoint という機能が非常に強力なことがわかる。 Ruby 版 power_assert は TracePoint を使うことで AST 変換を行わずに Power Assert 機能付加を行っていて、とても洗練された実装だと感じた。講演後の @k_tsj さんとたっぷり話せたのも嬉しかった。
.@k_tsj さんと Power Assert 実装者 Kaigi した (とてもよかった) #rubykaigi
— Takuto Wada (@t_wada) 2014, 9月 19
三日目
三日目は以下のセッションに(午前は ust から)参加。
- Ohayō Rails (おはよう Rails)
- Speeding up Rails 4.2 Aaron Patterson
- Practical meta-programming in Application Kyosuke MOROHASHI
- The role of ruby in the single page app. Matthew Werner
- Scaling is hard, let's go server shopping! Or, How we scaled Travis CI, and helped Open Source at the same time. Josh Kalderimis
- Make your own synchronization mechanism. Masatoshi SEKI
- Three Ruby usages - High-level interface, Glue and Embedding - Inside Droonga Kouhei Sutou
- Keynote: Ruby 2.1 in Production Aman Gupta
三日目も感想を Tweet でまとめてみる(咳さんと須藤さんの講演のときは面白さに大笑いしながらスクリーンに釘付けだったので Tweet 無し…)。
Ohayō Rails (おはよう Rails)
Rails の世界で ActiveRecord 一強、 ActiveRecord の完成度が飛び抜けていて、対抗が霞んでしまっているのは、あまり健全じゃないんじゃないかな、と思ったりもする (多様性、多様性) #rubykaigi
— Takuto Wada (@t_wada) 2014, 9月 20
「多様性は善」を掲げる Ruby の世界でも、アプリケーションのレイヤに行くと利用者の偏りが生じて一強構造 (Rails, RSpec, AR) が出来上がりやすいのは何故なんだろうな #rubykaigi
— Takuto Wada (@t_wada) 2014, 9月 20
Turbolinks はなぁ……真っ先に外すなぁ #rubykaigi #rubykaigiA
— Takuto Wada (@t_wada) 2014, 9月 20
Speeding up Rails 4.2
測定、測定、とにかく測定してから最適化する。鉄則中の鉄則だけど、常に軸をぶらさず取り組んでいるのが aaron の凄いところだなぁ #rubykaigiA
— Takuto Wada (@t_wada) 2014, 9月 20
Practical meta-programming in Application
実践的なメタプログラミングに関する講演資料 / “Practical Metaprogramming in Application // Speaker Deck” http://t.co/pZBjAU3wTE
— Takuto Wada (@t_wada) 2014, 9月 20
複雑な対象に全てメタプログラミングで立ち向かうのではなく、対象概念をふつうの Ruby オブジェクトとしてモデリングし、最後に使い易い界面をメタプログラミングで構築する。王道を征く設計でとてもいい。 moro++ #rubykaigiA
— Takuto Wada (@t_wada) 2014, 9月 20
The role of ruby in the single page app.
サーバサイドに API Aggregation のレイヤを配置して SPA との通信頻度を下げるところ、定番のテクニックだな #rubykaigiB
— Takuto Wada (@t_wada) 2014, 9月 20
Scaling is hard, let's go server shopping! Or, How we scaled Travis CI, and helped Open Source at the same time.
#rubykaigiA 会場全員で Travis 体操 #違う pic.twitter.com/3xHq34pMvE
— Takuto Wada (@t_wada) 2014, 9月 20
Keynote: Ruby 2.1 in Production
うおお生 tmm1 だ!!! #rubykaigiA
— Takuto Wada (@t_wada) 2014, 9月 20
"github/github #5989 Ruby 1.9 compatibility" 2 years ago, 78 commits. github が 1.9 対応を行い始めたときの (private) PR. 史跡感あった。 #rubykaigiA
— Takuto Wada (@t_wada) 2014, 9月 20
tmm1 氏のやってきたこと凄すぎる。ちょっと感動した。会場からも溜息が漏れていた。
— Takuto Wada (@t_wada) 2014, 9月 20
三日目雑感
三日目で強く印象に残っているのは tmm1 の Keynote: Ruby 2.1 in Production と tenderlove の Speeding up Rails 4.2 だった。その二つの講演に共通するのは、想像や思い込みを排し、とにかく計測、計測、計測して事実を明らかにしながらシステムのパフォーマンスを上げていく姿勢を徹底している点。測ってから言え、というのはパフォーマンスチューニングの基本中の基本だけど、彼らくらい卓越したプログラマであればあるほど基本を徹底している様を見せられ、背筋が伸びる思いだった。
tmm1's Keynote was really, really outstanding. #rubykaigi
— Takuto Wada (@t_wada) 2014, 9月 20
そして、やはりカンファレンスは人と会えるのがいい。世界から、日本全国から Rubyist が来る機会はなかなか無い。
やはり会場に来ると沢山の顔なじみの Rubyist 達に会えるので嬉しいなぁ #rubykaigi
— Takuto Wada (@t_wada) 2014, 9月 19
ロビーで何人かと議論してたら Keynote の次のコマを逃してしまったけど、そのような議論が #rubykaigi 参加の醍醐味でもある。
— Takuto Wada (@t_wada) 2014, 9月 19
大きい技術カンファレンスに参加すると刺激を受けて新しいプロダクトを作りたくなるし、幅広い話を聞くので様々な着想を得られる。
— Takuto Wada (@t_wada) 2014, 9月 19
2014 年も、良い RubyKaigi だった。
今年もいい Kaigi だった #rubykaigi
— Takuto Wada (@t_wada) 2014, 9月 20