RubyKaigi 2019で登壇してきました #rubykaigi

4/18 - 4/20で開催されていたRubyKaigi 2019に参加し登壇してきました。

今回の登壇内容は「Pragmatic Monadic Programming in Ruby」というタイトルです。 スライドは以下。

speakerdeck.com

実装はこちらです。READMEの整備が全然出来てないのと、APIがまだ変わる可能性があるので、gemとして正式リリースするのはまだやってないのですが、近々ちゃんとリリースします。

github.com

Ruby黒魔術師として、自分が良いなと思っているデザインパターンであるモナドを、Rubyの世界で理想的に表現するならどうなるかということを考えて発表テーマとしました。 今回、ASTがRubyレベルから簡単に触れる様になったので、それを活用してみたかったというのもあります。

内容としてはAST変換を駆使して、あるパターンの変数代入構文を乗っ取り、flat_mapのネストに置き換えた状態でProcとして再評価することで、モナド記法を実現しました。 厳密にモナド則を守る機構は用意してないですが、Scalaでも確かflatMapがあればfor式は使えたはずなので、その辺りは割り切りかなと思っています。 大体、Scalaの発想をパクった感じですね。

今回の発表の後で、ASTやその周辺技術を応用した面白いライブラリを作ってみたくなったという話も聞いたので、何か伝えられるものはあったのかなと感じています。

反省点

今回、話をしたいことを色々詰め込み過ぎた感じがあり、実装の紹介が中途半端になってしまったなと自分では思っています。

アフターパーティで松田さんと話をしましたが、RubyKaigiの登壇者は前提知識のレベルとかある程度すっ飛ばして、もう話しをしたいコアの所ばかり喋っているから面白いという話が出ました。 私もその通りだなと思いますし、予習資料だけ提供して色々振り切ってしまった方が盛り上がる発表になったかもなあと反省しました。 去年はコンビ発表で、ソロでRubyKaigiに出るのは初登壇だったので、ちょっと気負い過ぎたのかもしれない。

来年は今年みたいに4パラトラックにするのは、どうやっても無理だという話も耳にしたので、CFPの競争率は更に上がることが予想されます。そんな中で来年も上手く刺さりそうなproposalが出せるかは全く分かりませんが、今回の反省を活かせる様に何とか頑張っていきたいと思います。

体調不良について

今回、開催日前日に急に38度を越える発熱があり、関係者や友人各位に多大な心配をかけてしまい、申し訳ありませんでした。

前日まで全く異常が無く前触れも何も無かったので、正直大分焦りました。

結果的にこじらせることはなく、何とか初日の登壇もこなせましたし、2日目には平熱まで熱が下がり無事RubyKaigiを楽しむことができて、本当に良かったなと思っています。特にインフルじゃなくて本当に良かった……。

(前日に美味しいものを食べたり、ESMスポンサードのクルーズに行く予定があったのに、全てキャンセルすることになったのは、めちゃめちゃ辛かったですが……)

今回得た教訓は、やはりロキソニンとユンケルは効くということです。 後、無理のし過ぎは良くない。

しかし、俺の肉体に何があったんだろうか……。ストレスとか緊張とかかなあ……。

セッションについて

特に良いなあと思ったのは、初日のFibers Are the Right Solution - RubyKaigi 2019かな。 リアルなWebアプリケーションを高速化しようとしたら、非同期I/Oは重要になるしマイクロサービス化してくると影響も大きくなる。 現実的な高速化施策として、納得感が強かった。

後は、Pattern matching - New feature in Ruby 2.7 - RubyKaigi 2019ですね。 マジで待望の機能です。文法はまだexperimentalですが、既にtrunkで使えるってことなので、早速試して手触りを確かめているところです。 挙動をアドホックに切り替えたい時はRefinementsがちゃんと使えるということなので、これでRefinementsのユースケースも増えるし最高では!という気持ちです。

今回、LTのスピーカー勢が非常にエクストリームな人ばかりで、大体趣味の話がおかしくて面白かった。 「○○したくなると思うんですけどー」みたいな語りで言ってる内容が大体ブッ飛んでる。
(他人のこと言えないだろ、というツッコミもあるかもしれませんが……)

後、内容に割と関連性のあるトークが多くて、ストーリー性が垣間見えて良かった。 令和繋がりだったり、Auto Differential繋がりだったり、TracePoint繋がりだったり。

スポンサー業

今回、私の所属企業であるReproでRubyKaraokeスポンサーをやらせてもらいました。ランク的にはプラチナスポンサー相当になります。

f:id:joker1007:20190422201939j:plain

RubyKaraokeは非常に楽しいし、カラオケは自分の大事な趣味の一つなので、スポンサードできて非常に光栄です。 100を越える参加者が来てくれて、そして概ね楽しんでいただけた様だし、スタッフとして手伝ってくれた弊社メンバーも楽しめた様なので、良いパーティに出来たかなと思っています。

実は私はRubyKaigiのスポンサー企業の一員としてRubyKaigiに参加するのはこれが初めてだったりします。 それがRubyKaraokeスポンサーだったのは運命みたいなもんですねw

しかし、RubyKaraokeは例年非常に深夜まで続くので、3日目の午前のセッションに間に合わないことが多いんで、それが良し悪しだなあと……。
(いや自分の理性の問題もあるんですが、今回ばっかりは自分ではどうにもできない……。)

f:id:joker1007:20190422202058j:plain

Juanitoさんにいきなりマイクを渡されて、残酷な天使のテーゼを歌ったら、めっちゃ褒められたw

飲食

体調の問題もあり、食事方面では不完全燃焼感が強い。写真も余りストックが無いので割愛。 ホテルの近くにあった、長浜ナンバーワンが割と美味しい長浜ラーメンで良かったなという感じです。

魚はとても美味しくて、やっぱ海側ってのは強いなと実感できる美味さでした。 ベストシーズンでは無かったみたいですが、ゴマ鯖は美味しかった。

イカが食えなかったのが、本当に残念でならない。

まとめ

今年のRubyKaigiも最高に楽しかった。それしか言うことは無いですね。 今年も開催してくれてありがとうございました!スタッフの皆様、スピーカー、スポンサーブースの皆様お疲れ様でした。 来年は「まつもと」でお会いしましょう! See you next RubyKaigi or other Ruby Conferences.