console.blog(self);

技術、読んだ本、いろいろ。

RubyKaigi 2014に行ってきた #rubykaigi

RubyKaigi2014

RubyKaigi 2014に行ってきた。楽しかった。

20140918

初日に聴いたセッション。

  • Opening (Shintaro Kakutani)
  • CRuby Committers Who's Who in 2014 [JA] Tomoyuki Chikanaga
  • Building the Ruby interpreter -- What is easy and what is difficult? [JA] Koichi Sasada
  • Symbol GC [JA] Narihiro Nakamura
  • Continuous Delivery at GitHub [EN] Robert Sanheim
  • What's wrong with your app? [EN] Keiko Oda
  • Introduce Oracle enhanced adapter for ActiveRecord, another choice for your Rails database. [JA] Yasuo Honda
  • Hypermedia: the Missing Element to Building Adaptable Web APIs in Rails [JA] Toru Kawamura
  • "Gem of this Week" - building culture and making gem [JA] Takumi Miura
  • Ruby committers vs the World

気になったセッションなど。

Building the Ruby interpreter -- What is easy and what is difficult? [JA] Koichi Sasada

Rubyの開発で、なにが簡単で、何が難しいのか。そこまで突っ込んだ内容じゃなくて、VMGCをどうやって作ってきたのか、またこれからどんなものを作っていきたいのか、と言ったお話だった。わかりやすくていい感じ。

トレードオフを認識し、トレードオフに打ち勝つこと」、"over come trace off"、という言葉が印象的だった。

Symbol GC [JA] Narihiro Nakamura

このセッション、わかりやすかったし、興味のある分野だったので楽しかった。

シンボルはGCの対象じゃなかったけど、(一部の)シンボルをGCできるようにしたよってお話だった。Ruby 2.2(次のバージョン)に入ってくるみたい。

Symbole GCについてのあれこれ。

GCするにあたって、シンボルを2つの世界に分けて、対応されているそう。

  • Mortal Symbol(Rubyの世界)
  • Immortal Symbol(Cの世界)

具体的にはこんな感じ。詳細はセッション資料を。

  • "sym".to_sym はGCされる。
  • define_method("sym".to_sym){} はGCされない。

Hypermedia: the Missing Element to Building Adaptable Web APIs in Rails [JA] Toru Kawamura

すてきなセッションだった。REST、奥深い。

どちらかと言えばWebよりな僕としては、ふつうのWebサイトであまり使われていないMicrodataが、Web APIで実際に使われるのかどうかが気になった。もしかしたらWeb APIで使われるようになって、ふつうのWebサイトで使われるようになるかもしれないけど。

MicrodataをWebAPIで活用するって考え方はいいね。そんな活用方法は全然思いつかなかった。

あわせて聴きたい。まだ聴いてないので、聴かなくては。

"Gem of this Week" - building culture and making gem [JA] Takumi Miura

今週のGem。面白かったし、参考になることが多かった。

Gem化を進めたり、Gemをちゃんと管理することで、システムやチームの健全性を保つようにしていった、という感じのお話だった。こういうことを、自分もやっていかなくては、と思った。

Official Party

ごちそうさまでした!

20140919

2日目に聴いたセッション。キーノートは諦めた。鎌倉から船堀は遠すぎる…。

  • A Just in Time compiler for CRuby (CRuby言語処理系向けJITコンパイラ) [JA] Masahiro Ide
  • Archeology of Ruby: Removed Features (Ruby 考古学 機能編) [JA] Kazuhiro NISHIYAMA
  • <%= link_to "bundle", "update" %> - Make "bundle update" more fun to review [EN] Kensuke Nagae
  • RailsGirls: Not Only For Girls [EN] Haruka Iwao
  • The Twelve-factor RubyRuby を良くするための12のポイント」 [JA] Hiroshi SHIBATA
  • Scalable deployments - How we deploy Rails app to 100+ hosts in a minute [JA] Shota Fukumori (sora_h)
  • Write ruby code to change ruby code [EN] Richard Huang
  • 7 years of Ruby & Rails with the same web site [EN] Zev Blut, Kevin Griffin
  • Lightning Talks

気になったセッションなど。

The Twelve-factor RubyRuby を良くするための12のポイント」 [JA] Hiroshi SHIBATA

Rubyに効果的にコントリビュートしていくためのポイント。いろいろな方法があるので、僕も貢献していきたい。

<%= link_to "bundle", "update" %> - Make "bundle update" more fun to review [EN] Kensuke Nagae

bundle update(Gemの更新)はあれこれ大変で、それをどう改善していったのか、と言った内容。こういったこういった作業にはあまり携わってなかったので、興味深かった。

RailsGirls: Not Only For Girls [EN] Haruka Iwao

去年のRuby会議で、ジェンダーについての議論の元となったセッションを聴いていた。

その後、様々な議論があり、それを踏まえた上でこのセッションがあったのだと思う。議論があったおかげで、自分自身いろいろ考えるきっかけになったし、そして今年はこのセッションを聴くことができてよかった。

Haruka Iwao(Yuryu)さんの、このセッションについてのエントリもすてきな内容。

スライドで紹介されている動画がよかった。

もちろん、今回のセッションの内容もとてもよいものだった。セッションでは、この文章が印象的だった。

Respect everyone as individual professionals

僕も小中学生向けプログラミングイベントや、女性向け勉強会のお手伝いをしたことがある。RailsGirlsの活動から、学ぶところがたくさんある。

Scalable deployments - How we deploy Rails app to 100+ hosts in a minute [JA] Shota Fukumori (sora_h)

Cookpadでのデプロイについてのセッション。Capistranoで頑張っていたけど、あれこれ問題があったのでmamiyaというツールを作って、それでデプロイしている、という内容。

重たい処理は事前にCIで行っておいて、リリースはシンボリックリンクを切り替えるだけにして、高速化したとのこと。シンプルで効果的で、いいね。

Write ruby code to change ruby code [EN] Richard Huang

AST(抽象構文木)からコードを分析して、コードの書き換えを行ってくれるツールのお話。これ、すごかった。

ツールはこちら。

RSpec2からRSpec3、Rails 3.2からRails 4.0へ、コードを変換したりできる。もちろん全部うまく変換できるとは思わないけど、それでもRailsRubyのバージョンがかなり楽になりそう。

7 years of Ruby & Rails with the same web site [EN] Zev Blut, Kevin Griffin

iknowが7年間Ruby/Railsアプリを運用してきたお話。たくさんの辛いことを乗り越えてきた歴史を聴くことができた。

楽しい未来のために、よいコードを書き続けなくてはと強く思った。

LT

万葉の大場さん(nay3)のLTに共感した。

  • Keep Freedom on Ruby - A magical world, 'Diversity'
    • Rubyが与えてくれたものを、プログラマが禁止してはいけないのではないか
    • 自由を手放すことには慎重であるべき。
    • Ruby多様性を壊すのはいけないと思います!

RSpecのバージョンアップに関するLTも面白かった。

  • How the RSpec team and I built the smooth upgrade process for RSpec 3
    • RSpec 2.9.9とtranspec
    • Warningが出るようにして、変換する箇所をわかりやすくした

20140920

3日目に聴いたセッション。

  • Ohayō Rails (おはよう Rails)
  • Speeding up Rails 4.2 [JA] Aaron Patterson
  • Practical meta-programming in Application [JA] Kyosuke MOROHASHI
  • Everything is Broken: A Story of Hope [JA] Jonan Scheffler
  • The role of ruby in the single page app. [EN] Matthew Werner
  • Scaling is hard, let's go server shopping! Or, How we scaled Travis CI, and helped Open Source at the same time. [EN] Josh Kalderimis
  • Make your own synchronization mechanism. [JA] Masatoshi SEKI
  • Ruby 2.1 in Production [EN] Aman Gupta

気になったセッションなど。

Ohayō Rails (おはよう Rails)

会社の先輩が登壇していたので、頑張って早起きした。いろいろな企業での、Railsの楽しさや大変さを知ることができてよかった。

Speeding up Rails 4.2 [JA] Aaron Patterson

すてきな日本語でのセッション。何度も笑いをとっていた。すごい。

セッションの主な内容は、こちらのエントリに書いてあると思う。

計測するツールとしてallocation_tracerが紹介されていた。

パフォーマンスを向上させるために、しっかりと計測し、細かいところを直していく過程を知ることができた。小さなリファクタリングと、計測を繰り返し、それが積もって大きな改善につながっていく。

Practical meta-programming in Application [JA] Kyosuke MOROHASHI

実際のプロジェクトでメタプログラミングを使った話とか、参考になった。使いどころをちゃんと考えながら、楽しくRubyを書いていきたい。

The role of ruby in the single page app. [EN] Matthew Werner

SPA(Single Page Application)のお話。いろいろ参考になった。

サーバにキャッシュがあれば、それをView(ERBとかHTMLとか)で読み込んでおく。あとからJSでキャッシュを更新する。キャッシュがなければAjaxでGETする。

確かに、初期データを表示するなら、Rails側で作っちゃったほうが、リクエスト数も減るし速そうだし、いいこと多そう。Railsのいいところをうまく使いながら、SPAを作っていけばいいのかな。RailsとJSの適材適所を考える。設計がとても難しそうだけど。

Ruby 2.1 in Production [EN] Aman Gupta

クロージングキーノートセッション。GitHubで、Ruby 2.1にバージョンアップしたときのお話。最後には拍手の鳴り止まない、すてきなセッションだった。

tmm1さんは2011年にGitHubにJoin。2012年にProduction環境をRuby 1.8.7からRuby Enterprise Edtionに変更して、そこからRuby 1.9へのバージョンアップの挑戦が始まった。

非推奨となったGemの入れ替えや、シンタックスの変更への対応、コードの修正、marshalの互換性、エンコーディングの対応、これらを経て、Ruby 1.9.3にバージョンアップした。そしてRuby 2.1へバージョンアップしたら、GCにかかる時間が100msから15msになった!すごい。

またセッションではパフォーマンス計測のためのGemやツールがいくつか紹介されていた。使ってみたい。

計測を繰り返しながら、少しずつ改善し、Rubyをバージョンアップしていく話に共感した。

参考URLなど

Ustream、まとまってはいなかったけど、録画も見れる。

大量のtweetをきれいにまとめてくださってる方がいた。感謝。

すてきなエントリがたくさんある。たくさんblogが書かれるカンファレンスって、いいカンファレンスだよね。

まとめ

RubyKaigi2014、楽しかった!自分もカンファレンスを運営したりするけど、この規模のイベントを実施するのは、本当に大変なことだと思う。ありがとうございます。

普段はRailsしか触ってないから、それ以外のRubyの話を聞けて楽しい。GCの話とか、なかなか聞く機会ないし。

RubyKaigiでSPAやHTTP2.0というキーワードを聞いたりして、これからさらにいろいろなことが繋がりそう。いい感じ。あと、Cookpadクイズ解けた!遊び行きたい!

やっぱりRubyが好きだなと、あらためて思った3日間だった。