たごもりすメモ

コードとかその他の話とか。

RubyKaigi 2018 で仙台に行ってきた&しゃべってきた

今年もRubyKaigiでしたねー。実によいカンファレンスでした。

rubykaigi.org

f:id:tagomoris:20180531102321j:plainf:id:tagomoris:20180602180507j:plain

仙台は東京からも新幹線で1.5〜2時間で着けるというアクセスの良さ、加えてちょうど新緑の時期で街中も郊外も美しいし、日本酒も酒に合う魚もおいしい場所だし、地方開催のカンファレンスは本当にすばらしいなって話をずっとしてた。そういうところに隔離されてずっとソフトウェアの話ができるの、本当に良いと思う。

しゃべってきた

今年は去年のRubyKaigiから間が短いこともあってトークの応募どうしようかなと思ってたんだけど、最近Asakusa.rbで @joker1007 さんとよく盛り上がる技術ネタがあって、それを共同で応募してみたら通ったから話してきた。(jokerさんのエントリ)

Hijacking Ruby Syntax in Ruby - RubyKaigi 2018

スライドはこちら。

内容はBindingとかTracePointとかRefinementsとかmethod hookとかを使いまくってやりたい放題やる、みたいな話だけど、実際の狙いは「有用なアイデアRubyの機能だけを使って実現してみる」に近い。ちゃんと実装しようと思うとMRIにCでパッチを書くことになるんだけど、まず実装してみて有用性を確かめる(あるいはRuby的にこれで良いかと見てみる)、というステップは重要だと思っていて、このためにやれることを全部やったのだ、と思ってもらえれば嬉しい。

実のところトーク後にMatz含めたRubyコミッタの人々とも話してて defer みたいなのはあってもいいかもねえ、という話になった*1ので、Proof of Concept は重要だと思うし、それをRubyでやるためには今回のトークに含まれる技術要素は学んでおいて損は無いと思う。デバッグ大変だけどね!

また今回たまたま時間がなかったのでこういう内容だったが、今までproduction systemの話ばっかりしてた自分としてはRubyKaigiで非常によく行われる言語機能や言語実装に深く入っていく類のトークをしたことがなく、ちょっとコンプレックスに思っていたところだった。今回は思いっきりRubyの機能や面白ライブラリの話をしまくって、そういう部分で実績解除できて嬉しかったなと思ってる。こういうネタを普段からいろいろ議論できる Asakusa.rb はホンマええところやで。みんなもおいで。*2

f:id:tagomoris:20180531134945j:plain

会場の聴衆の入りはめちゃくちゃよかった。今回サブ会場もだいぶ席数があったのにあんなにぎっしりになるとは。楽しめてもらえてたら良かったなあ。
@joker1007 さん、いっしょにできて楽しかったです! ありがとう!!

ところでRubyKaigiに向かう共同登壇者の息の合いっぷりをごらんください。


参加してきた

今年のRubyKaigiもJITと型の話がアツかったですね! あとGuildの動くブランチ公開はまだですか!?!?

f:id:tagomoris:20180531212002j:plainf:id:tagomoris:20180531212745j:plainf:id:tagomoris:20180531215721j:plain

RubyにOptionalな型を入れる件については自分の意見はここに書いてあるようにコードにrespond_to?(:name)が通る集合を書く、みたいなやつですね。これがRubyのduck typingといちばん相性がいいと思うんだけどなあ。外部に型宣言ファイルを持つっていっても、クラスベースの型 + ジェネリクス的なやつで次の2行を共に安全にするのは無理じゃない?

obj = [1, "two", 3, "four"]
obj.select{|v| v.respond_to?(:upcase) }.map(&:upcase).join
obj.reject{|v| v.respond_to?(:upcase) }.sum

まあこれはともかく、JITとかはMRIの実装もどんどん進んでるし、他の実装の詳細が紹介されるトークからMRIが取り込めそうなのもあれこれあったりで議論が楽しいし、実にすばらしい。他のトークも聞いたものはみんなそれぞれの書いたコードについてしゃべりまくってて超面白かった。

f:id:tagomoris:20180601215016j:plainf:id:tagomoris:20180531223549j:plainf:id:tagomoris:20180601220104j:plain

RubyKaigiは明確に「自分が書いたコードの話をするトークがacceptされる」カンファレンスなので、こうやって超面白い話ばっかりになるのはすばらしい。
んだけど、次のRubyKaigiでまたトークをしなければまた話のネタになるコードを書かないといけないわけで、いやー、どうしよっかなーと今から思いますね。

f:id:tagomoris:20180531213102j:plainf:id:tagomoris:20180601214322j:plainf:id:tagomoris:20180601231026j:plain

あと3日目に恒例の(?)サイン会があったけど、技術評論社WEB+DB PRESS総集編、記事を書いたことがある人が集められて巨大サインパイプラインみたいになってた。なかなか愉快な体験でした。ちゃんと買ってサインをもらいに来てくれる人がいて売り上げに貢献したぞ!!!


Partyなど

f:id:tagomoris:20180602194812j:plain

今回はTreasure Dataが After Party のスポンサーをやらせてもらったので、そのあたりはちょっとあれこれやったり。人が大勢来てくれて、でもぎゅうぎゅう詰めという感じでもなくて、ちょうどよかったかなと思います。ちょっと食べ物が少なかったのはみなさんにその後に仙台のおいしいものを食べてほしかったから!!!!*3


なんか面白ネタがあるならAfter Partyでどうすか、みたいに雑に振ってみたら出てきたのがこれで、まじやばかった。みんな超楽しんでたRubyKaigiの最終トークでしたね。正確にはその後にnobuのライブコミットがあったけど、なんかもう本人が酔っ払ってて何言ってるのかもよくわからず、超カオスであれはあれで面白かったw *4

f:id:tagomoris:20180601231605j:plainf:id:tagomoris:20180602220516j:plainf:id:tagomoris:20180602222041j:plain

Pre Partyから1日目、2日目は自分もあれこれのパーティーにお世話になっていた。あれやこれやの人と話したり、そこから別の店に流れたり。特に仙台行く前に会った @maciejmensfeld ‏と何度も話してポーランドの Kraków Ruby meetup について聞いたりとか。いいなあポーランド、行ってみたい。Tech Talk やりに行きたい。

f:id:tagomoris:20180602220908j:plainf:id:tagomoris:20180603020205j:plainf:id:tagomoris:20180602232927j:plain

After Partyのあとの川は……しばらく経ってから見にいってみたらだいぶ人数少なくなってて、その後に日が変わるあたり? であっさり解散していた。仙台の川は平和だった。

まとめ

超楽しかった! 上に書き忘れてたけどWi-Fiまじ快適で @sora_h 先生ありがとう! オーガーナイザーのみなさん(特に @a_matsuda さん)ありがとう!

f:id:tagomoris:20180602232536j:plainf:id:tagomoris:20180602222527j:plainf:id:tagomoris:20180603020345j:plain

来年の福岡も楽しみですね! またしても、日本酒も魚もうまい街だぞ!!!!

*1:いっぽう defer というキーワードをぶちこむのは難易度が高いのでどうしようかねえ、といういつもの話にもなった。きびしい。うーん……。

*2:いっぽう便利な人に「モリスさんともあろう人がproductionで使えない話なんかをするなんて!」とか煽られた、ぜったいにゆるさない

*3:いま考えた

*4:該当のcommitはこれかな? ruby-trunk-changesでも「うーん謎だ。」などと評されており大変面白い。