RubyKaigi 2017 参加記録(1日目)

9/18 - 9/20に広島で開催中の RubyKaigi 2017 に参加しています。

1日目に聞いたセッションの感想を忘れないうちに一言二言ずつくらいで雑にメモっておきます。
すごい雑です。

Keynote

パッチモンスターこと nobu さんによる Ruby 開発についてのトーク

  • 現在の Ruby の開発体制について
  • Ruby のビルドの解説とその改善について
  • 最近あったバグとその対応
  • 2.5 の目玉機能の紹介

という感じだった。

Refinement にまつわる2つのバグについて、似たような話なのに全く逆方向の対応をしたが、これは「一貫性が無いように見えるが、『書く人がそれを意図しているかどうか』を基準にしている」とのこと。ユーザの要求を尊重する Ruby らしさっぽいと感じた。

あとしれっとその場で他のcommitterに軽く相談してからライブコミットして、さらにテスト実行・チケットクローズまで自動でやるという斬新なプレゼンでもあった。よくできてていいなー。

2.5は2.3や2.4と比べて目玉機能ないよと言っていたけど、do/end内のrescueKernel#yield_selfは十分魅力的です。あと議論中の method extraction operator も是非欲しい。

API Development in 2017

2017年においてAPIサーバの開発をどのように行えばサーバ実装側もクライアント実装側も幸せになれるか。そして GraphQL などの現在 REST 以外に提案されている仕組みの紹介。

発表で強く推奨していた Schema first な開発については、自分としてもとても納得ができた。
Schema first によって自動生成できるものの中でも、バリデータとクライアントサイド向けmockサーバはかなりありがたいと思う。クライアントのテストでAPIのstub/mockを書くのとかほぼ作業だからね……

How Close is Ruby 3x3 For Production Web Apps?

ここ数年のRubyの改善が実際のところどの程度Web Appの速度に貢献しているか、というのを実際にRailsアプリを使って測定してみた話。

結論だけ切り出すとどのバージョンアップも確実に speed up に貢献しており、こういう話があるとバージョンアップのモチベにも繋がる。

また測定のために rails_ruby_bench というツールを作っており、こちらは実装も含めて確認しておきたいところ。

Gemification for Ruby 2.5/3.0

Ruby の3種類の standard library の紹介と、最近進めている標準添付ライブラリの default gem 化について。

この話で出てきた種々の問題は、Rubyに限らずプラグイン的な機構を提供するソフトウェアでは共通だと思った。「プラグイン開発者側が苦労せずにこの辺のメンテをうまくやれないかなー」と考えたことがちょくちょくあるけど、まあ難しいですよね……

How to optimize Ruby internal.

実際に採用されたPRを元に、どうやってRubyボトルネックを探し出し、そして無理なく修正・確認するかの解説。

紹介されたツールの使い方や最適化のアプローチの説明がわかりやすく、「これなら自分でもできるかも?」と錯覚しそうになった。

Development of Data Science Ecosystem for Ruby

現在の Ruby ライブラリで不足しがちなデータサイエンス関連の機能をPythonを直接呼び出せる PyCall によって補填できるようにしたよ、というのをデモしながら紹介。

「現状だと Ruby 辛いよね」という話をしてから1年後にここまで実装しているの本当にすごい……
個人的にはプロセス内から Python を呼び出す実装も気になっているので時間を取ってじっくりコードを読んでみたいところ。

Ruby Committers vs the World

聴衆の質問に対して Ruby commiter のみなさんが思うところを答えてくれるセッション。

どれも面白かったけど、特に右代入についてはDSLを中心にニーズがありそうなので是非入ってほしい。多重代入つらそうだけど。
あと右代入の背景を説明をしている際に Matz が手振りで右代入の気持ちを表してたのが可愛かった。


2日目に続くと思います。