RubyKaigi 2016 に参加した。都合により土曜日の午前中までの参加、また二日目のお昼前後も用事があり抜けたので、聴きたかったけど聴けなかったトークもいくつかあった。
年を追うごとに、 Ruby コミュニティは成熟してきているなと感じる。つまるところ、コミュニティに参加している人たちが成熟してきているということなのだろう。 mrkn さんが SciRuby とその(まだ比較的小規模な)コミュニティを持続可能な形で発展させていくための展望を述べた話と、まつもとさんや akr さんら Ruby コミッターが「互換性を損ねてでも、言語を『正しい、あるべき姿』に変えていくことを厭わない」という話と、 tagomoris さんによる Fluentd コミュニティがユーザーの利便性に最大限配慮する(その代わり開発者に多大な負担がかかることも厭わない)という話の間にコントラストを感じ、印象的だった。 Ruby も Fluentd も、どちらのコミュニティもそれぞれある種の完成形の一つなのだろう。まだ若いコミュニティがそういう先人たちの背中を見て進むべき方向性を得ていく、現在から未来への繋がり、みたいなことを感じた。
#rubykaigi いいキーノートだった。言語を作ってる人たちが新しいアイデアを貪欲に学んでより良いものを作ってくれるのなら、言語のユーザーたる自分も新しいアイデアを学んで、突然びっくりしないようにちゃんと準備しておこう、それが礼儀というものだ、と思った。
— Kensuke Nagae (@kyanny) September 8, 2016
#rubykaigi dRuby の話。毎回聞いてるような気がする。「おもしろがってもらう」というのが印象的だった。興味はあるけど、並行処理のためのものだから、見合った難しい問題がないと使えないなと身構えてしまっていたな、と反省。ただ楽しみのために、触ってみていいんだ、と思った
— Kensuke Nagae (@kyanny) September 8, 2016
#rubykaigi Guild の話、面白かった。もっと「Actor モデルが〜」みたいな話をするのかと思ったらそうでもなかった。
— Kensuke Nagae (@kyanny) September 8, 2016
#rubykaigi Menilite 内部でどうやって動いているのか興味あるのであとでコードを読んでみよう
— Kensuke Nagae (@kyanny) September 8, 2016
#rubykaigi Fixnum と Bignum と Integer の話、これも良かった。初心者にやさしいとか、よりシンプルになるとか、利点が多い一方で互換性を損ねるのでいろいろ壊れたりもするしユーザーは苦労することもある。でもより正しくなるように直すことを厭わない姿勢。
— Kensuke Nagae (@kyanny) September 8, 2016
#rubykaigi 二日目キーノート。レガシーコードの定義と、リファクタリングに必要なステップをブレイクダウンして示しているのがよかった。あの gem そのものを使うかどうかはともかく、考え方の指針として。(プロダクションで使ってはいない?みたいな質疑応答があったような)
— Kensuke Nagae (@kyanny) September 9, 2016
#rubykaigi (書き忘れ) bindings の話。 erb とかで使う b ではなくて、 C のライブラリと Ruby を繋ぐやつのほう。 GI WebKit 動かすデモ。そもそも Ext とか FFI って??という基礎のあたりが把握できてよかった。
— Kensuke Nagae (@kyanny) September 9, 2016
#rubykaigi mruby-cli の話。隣で聞いてた同僚と、「*m*ruby で書きたいものが特に無いね..」みたいな話をした。去年試そうとしたとき docker が動き出して「何かおかしくなったとき地力で直せる気がしない」と思って挫折したのを思い出した。
— Kensuke Nagae (@kyanny) September 9, 2016
#rubykaigi fluend の話。 API デザインみたいな話かと思ったら違って、メタプログラミングをこれでもかと駆使するショーケース。 extend とか prepend とか、なるほどそこに対して働くのか、とか、理解が進んだ。本編最後の「想い」みたいな部分が良かった。
— Kensuke Nagae (@kyanny) September 9, 2016
質問を二つした。
Q: 非常に複雑なクラス・モジュールの相関だが、あれを考えるとき図を描いたのか?全て脳内?ツールなどは利用したか?
A: 最初はいけるだろうと思ったが実装していくうちにうまくいかず、図をたくさん描いた。ブギーボードを使った。
Q: Treasure Data 社の開発者が仕事で開発もしているのだから、古いプラグインを全て書き直してしまおうとは思わなかったのか?
A: Fluentd v0.11 という構想が以前あり、そのときはプラグイン数も少なく開発者も知人ばかりだったので全部書き直しちゃおうか、という話はしていた。だが時間が過ぎてプラグイン数が数百を超え、書き直しは難しくなった。また Fluentd は Ruby コミュニティとは異なる場所でユーザーが増え、インフラをみるエンジニアたちは後方互換性が失われることに対してシビアなので、 v0.14 では既存のプラグインを壊さず動くことをまず目標に置いた。
#rubykaigi sciruby の話。機械学習の話だけど、それよりもコミュニティをいかに持続可能な形で発展させていくか、みたいな意識がなるほどと思った。 fluentd の話でもあったけど、 Ruby 周辺のコミュニティは「オープンソース」だけどすごく大人でちゃんとしてるな
— Kensuke Nagae (@kyanny) September 9, 2016
#rubykaigi Web Client の話。2014年のトークの内容のおさらいですら改めて勉強になる。HTTP クライアントが状態を持つと聞くと野心的だが、既存の実装と標準仕様を研究して上手に再利用し、さまざまな面で素晴らしい仕事。最終日これだけのためでも来た甲斐あった。
— Kensuke Nagae (@kyanny) September 10, 2016
聴いたトークの中で個人的なベストトークを挙げるなら、 tagomoris さんのトークが一番良かった。いかにも Ruby らしい黒魔術を駆使したテクニカルな内容で聴いていて面白かったのと、最後に「ソフトウェア開発者として、どういう『想い』でソフトウェアを作り、ユーザーに届けるのか」という思想を述べていて、強い情熱を感じた。次点は tkawa さんの Web Client のトークで、いつもながらの緻密な研究と丁寧な仕事、そしてきちんと実装に落としこむアウトプット力まで含めて、脱帽するばかりだ。
あと、オフィシャルアプリが非常に便利だった。