クックパッドは RubyKaigi 2022 に参加&スポンサーしてきました!イベントレポート

RubyKaigi 2022 お疲れさまでした!

クックパッドは RubyKaigi 2022 の Ruby Sponsor です

クックパッド株式会社は Ruby Sponsor として RubyKaigi 2022 を応援させていただきました。

prtimes.jp

クックパッドからは総勢24名が三重は津市に向かい、現地参加しました。一社からの人数としては最大だったのではないでしょうか。白の Cookpad Tシャツを着た人がやたらと目に入ったかもしれませんが、事実大勢いたからなのでした。

また、Ruby Committers’ & Wi-Fi Sponsor として、会場の Wi-Fi ネットワークなどの設営にもメンバーが携わっていました(京大マイコンクラブ (KMC)と共同)。 こちらの舞台裏についても追って記事が公開される予定ですので、お楽しみに。

Cookpad Code Puzzle への挑戦もお待ちしています (裏ステージもあるよ)

スポンサーブースにリンクを掲示していました Cookpad Code Puzzle は挑戦していただけましたか?

ruby-puzzles-2022.cookpad.tech

ちょうど本日、表ステージ (func1 から func10 まで) の解説を公開しましたので、答え合わせチャンスです。

techlife.cookpad.com

ところでこのパズル、実は隠しステージとして func11 から func20 まであるのです。腕に自信のある Rubyist の皆様の挑戦をお待ちしています! (やりかたは上の記事を参照してください)

イベントレポート

さて本題。

Ruby を使い倒している会社として、RubyKaigi に参加することには大きな意義があります。 今回は数年ぶりの物理開催 Kaigi ということもあり、セッションはもちろんのこと、それ以外のところでもクックパッドメンバーが大いに議論・コミュニケーションをしていました。

ここでは「良かったセッション」「印象的だったできごと」「交流・懇親」などのテーマでメンバーが執筆したレポートをお届けします。

@_ko1 (Speaker, Ruby Committer)

  • スピーカー&Rubyコミッターとして参加しました(Making *MaNy* threads on Ruby (発表資料), Ruby Committers vs The World (発表資料) の2つ)。ご参加いただいた皆様に御礼申し上げます。
  • 良かったセッション 今回見ていた発表ですが、どうしても応用的な発表よりもRubyインタプリタ内部に関する発表をよく見ていました。その中でも2つ取り上げます。
    • 1つ目は Datadog でメモリプロファイリングをとるための仕組み検討するHunting Production Memory Leaks with Heap Sampling。二人とも Datadog の人かと思ったら、お一人は ZenDesk で Datadog のカスタマーなんですね。その方が情熱をもって Datadog の人と一緒にメモリプロファイリングの仕組みを作る、という話でした。発表中で出てきた Ruby のインターナル API は私の責任でデザインしたのですが、確かにこういう用途だと色々足りないなぁ、というのがわかるので、なんとかしたいところです。
    • 2つ目は MJIT のオリジナルの作者である vlad の新作 A Faster CRuby interpreter with dynamically specialized IR が興味深かったです。彼は、もともと Ruby を Register based virtual machine にした上で MJIT の手法で JIT コンパイラを作りたかったのですが、どうしてもわかりづらい部分ができてくるんで(わかりづらさを正当化する性能が出るかどうか不明だったので)採用しなかったのですが、その手法、そしてそれをさらに勧めた手法(x86 のようにオペランドの種類を色々増やしたりする)で大きな性能向上を収めた、というものでした。正直、あれであんなに速くなる、という理由がイマイチわからないので、勉強してみたいと思います。
  • 印象的なできごと ウナギと松坂牛を食べたのですが、どちらもとてもおいしくて衝撃でした。ただ、この歳になるとサーロインのステーキは無理だということがわかりました。
  • 交流
    • いつもあまりブース回れないのですが、今年はRuby biz グランプリ の営業で回りました。あんまり知られていないので、来年はご応募をご検討いただけますと幸いです。
    • いろんな発表で、「過去に実装した人」という意味で名前を呼ばれるのですが、実際に会場で声をかけられることはほぼありません。まぁ、内部実装する人に話すことはそんなないですよね...。使ってる人の話とか聞きたいんですが。

@mametter (Speaker, Ruby Committer)

  • TRICK 2022 (Returns), Ruby Committers vs The World (発表資料), error_highlight: user-friendly error diagnostics (発表資料)
  • 良かったセッション
    • Ruby meets WebAssembly (発表資料): クックパッドにインターンに来てくれたkateinoigakukunさんが無事Ruby界隈に華々しくデビューできたのでよかった
    • Matz Keynote: 内容が新作だったのでよかった
  • 印象的なできごと
    • ひさびさの物理イベントがおもったより刺激的だった。はじめましての人や数年ぶりの人にいっぱい会えて単純に楽しかった。
    • ブースを回ってみて、各社の工夫に感心した。手前味噌だけどコードパズルもそれなりに好評だったようでほっとした。
  • Shopifyの人たちの多くと初めて物理で会えた。今後も仲良くしていきたい。

@asonas

asonasが参加したセッションの中で印象的だったのは @nay3 の「The Better RuboCop World to enjoy Ruby (発表資料)」でした。

チームでRubyを書いていく上で、常に自分たちが意識しなくてはならない、所謂「かたい」設定と状況によって柔軟に参考にする「やわらかい」設定に分けるという提案がささりました。 特に聞いていてよかったのは、これらの設定は私たち人間によって考える必要があり、ディジタルに2値で決めうることではなく、人間らしく柔軟にプロジェクトのスタイルガイドを決めればよい、ということでした。

熟練者がいるチームではRuboCopとすぐにうまく波に乗れることができるかもしれません。しかし、世の中の開発チームはそういったものばかりではないので、この資料を読みどのようにしてRuboCopと共にうまく開発をしていくかの指針になると思いました。 また、RuboCopの設定とうまく付き合うために必要な心構えとして、RuboCop vs 私たち(またはルールで揉める、私たち vs 私たち)ではなく、私たち(とRuboCop) vs 問題ということにちゃんと向き合うことだな、と受け止めました。

懇親方面では、今年はオフィシャルパーティがなく各位が自由に懇親する形式でした。僕も友人たちとこじんまりと懇親をしていました。GMOペパボや、SmartHR、Fusic、pixiv、マネーフォワードの友人たちを中心に若手のコミュニケーションをうまくしたいというのを初日にお話していました。2度のオンライン開催となり、新卒の方や新卒2年目の方、この3年の間で転職してきた方など、RubyKaigiを知らない方々が増えており、かつてのコミュニティの繋がりがなくなっていました。 そこで、各社の若手を募りグループをつくり津駅の周辺に放つのはどうだろうか?という話があり各社で募ってみると総勢で25名ほどの若手が集まりました。 2日目の終わりにスポンサーブースに集合させてその場で5人1グループを作って津駅の方面に放ちました。この記事でも感想がありますが、この仕組みは結構よさそうな手応えがありました。来年もオフライン開催が見込まれるようだったら同じように若手同士でグループを組んで懇親をさせてみたいと思いました。

@hfm

技術部 @hfm です。印象的だったセッションはいくつかあるのですが、特に気になったのは @peterzhu2118 さんの Automatically Find Memory Leaks in Native Gems でした。このセッションで紹介された https://github.com/Shopify/ruby_memcheck は minitest や RSpec といい感じに統合することができて、導入の簡単さも含めてとても便利そうでした。また、こういったかゆいところに手が届くツールを含めて様々なソフトウェアを世に送り出している Shopify の勢いも感じました。

また RubyKaigi に参加するのは 2019 年福岡以来で、およそ 3 年ぶりに会う Rubyist たちもたくさんいました。特に 前職の GMO ペパボの皆さんや ANDPAD の id:shiba_yu36 さんなど、懐かしい面々と会えて良かったです。お互いの近況を話だすだけであっという間に時間が過ぎてしまいました。また夜は Helpfeel の人たちにお誘いしてもらって居酒屋に繰り出し、新しい交流ができてとても楽しかったです。

@s4ichi

  • 良かったセッション
    • Making *MaNy* threads on Ruby (発表資料)
      • MaNy の夢、これから Ruby がどういう方向でマルチコアに適合していくのかが計測ベースで紹介されていて夢が持てました。
      • Web サーバーは特にコアを使い切ることでパフォーマンスやコスト面に大きく寄与するので、社内で活用できるのが楽しみです。
    • Stories from developing YJIT
      • 処理系のコアの話が好きなので楽しみにしていたんですが、思ったよりもレイヤの低い話で付いていくのがやっとでした。
      • 要所要所で出てくるワードを掻い摘みつつ持ち帰って知的欲求が満たせたので良い発表でした。
    • Fast data processing with Ruby and Apache Arrow
      • ニッチな話だな、と思いきや、業務でよく使われているデータフォーマットの話の延長だったり、拡張して考えられるきっかけにもなったので興味が持てました。
      • 紹介されていたプロダクトを触るチャンスを伺っていきます。
  • 印象的な出来事 オフラインのカンファレンスっていいですよね。見て終わりではないし、熱量がオンラインと段違いでした。
  • 交流
    • 社内のメンバーとも、業界の人々とも、直接でないにせよ Ruby を支えるコミュニティの人とも交流できました。
    • 2年間、こうした規模のイベントも無かったので社外の方と関わる機会があって新鮮でした。世界は広い。

@terfno (Network Operations)

  • 良かったセッション Method-based JIT compilation by transpiling to Julia
    • 概要
      • Ruby でデータ処理したいけど、やっぱ早くなってほしい
      • Ruby はいつでも method の再定義ができて、その動的性(?)を守り続ける以上速度の限界がある
      • データ処理の文脈において、この動的性を守り続ける意味は薄い
      • そこで、Ruby から Ruby AST の次に静的型付けのされた中間表現に変換してその後 LLVM の中間表現、そしてようやく Native Code に…というルートをたどって動的性を捨てると早くなりそうと思ったが、「静的型付け中間表現にして…Native Code になる」が難しいので、これを Julia にしてもらう(すでにしていた)というモチベ
      • つまり、Ruby->Ruby AST->Julia-なんやかんや->Native Code とすることで、Ruby で書きつつも早いデータ処理を実現できるのでは…?という実験をしていた
      • 実際いくつかの例で早くなっていてすごかった
      • Ruby から Julia へのトランスパイルでは、言語仕様の差がある部分について、Julia で使える Ruby と同じ仕様の関数を呼べるものを作っていた
    • なんで好きか
      • トランスパイルそのものへの興味を再び持つきっかけになった
      • Ruby から Julia へのマッピングも実験に必要な範囲から手でマッピングしているらしく、そこに情熱と狂気を感じてよかった
      • はじめて社外の Ruby committer と喋った気がする。みんな優しい
  • 印象的な出来事
    • ネットワークの準備を手伝った
      • ケーブルの引いて回ったり、AP を運んだりした
      • スケールしなそうな手作業を、スケールするように工夫したりするの地味に楽しい
        • 雑なアイディアをとりあえず一緒にやってくれたおしょうゆさんや、KMC のお二人に感謝。
    • 初めての RubyKaigi に前日の準備から会場に居れたのはラッキーだった
      • 「初回参加だし必要なら抜けてセッション行ってね〜」って気を使ってもらって、日中というかセッション中はセッションを聞くことができた。
      • そんな至れり尽くせりなことある?ってぐらい楽しかった
      • ありがとうございます
    • それとは別に、熱量とか、どれくらいの人がどうやって連携しているとか、そういった感覚を素手で触れて嬉しかった(語彙力消えた)
  • 交流

@osyoyu (Helper Staff, Network Operations)

  • 良かったセッション Making *MaNy* threads on Ruby (発表資料)
    • ISUCONに参戦するたび、Goroutineの圧倒的なコア使い切り力をうらやましく思っていたのですが、Rubyでも近い性能を出せる可能性に胸が躍りました。Rubyの圧倒的に柔軟なデータ構造操作力とMaNyの力が組み合わさる世界を早く見たい。
  • 印象的なできごと
    • 今回は当日Helperスタッフ (https://twitter.com/rubykaigi/status/1554059852963807232) およびネットワークチームの一員としても参加していました。イーサネットケーブルや光ファイバーを抱えて広大な会場を駆け回ったり、舞台裏(物理)に入って活動したり、多くのスタッフでKaigiを作り上げていくシーンの一員になれて(たらいいな)、忘れられない思い出になりました。
    • 今までに参加したことがあるカンファレンスの中で最も知り合いが多かったこともあり、「交流の場」としての機能をしっかり堪能できました。クックパッドの同僚にコミュニティの人を紹介してもらう、ということもたくさん起きたのも良かったかも。エッジが多い知り合いがいると世界が広がりやすい。
  • Rubyに熱い気持ちをもっている人が世界にたくさんいることを肌で感じることができました。いい世界。
  • どこのお店に入ってもRubyistがいる街、という非日常空間も刺激的でした。お店でたまたま隣にいたグループと「RubyKaigi参加者ですよね」から話が弾んだりする、なんてこともありましたが、これも(東京ではなく)地方で開催されるRubyKaigiの良さなのかな、とも思ったりです。

@funwarioisii

  • 良かったセッション Method-based JIT compilation by transpiling to Julia
    • Ruby の動的なメソッド呼び出しのコストを抑制するために、Julia に変換して実行させるのとその仕組みを整えていたのがよかった
    • 一見この手の仕事?は大掛かりな作業をしていそうなのに、そういったコストの低い検証をして進めていたのが良かった
  • あそなすさんが企画してくれた若者交流会で別の会社のRubyistと話すことができてよかった

@SpicyCoffee66

  • 良かったセッション
    • error_highlight: user-friendly error diagnostics
      • 入った変更自体の便利さに加えて、その対応に必要だったポイントを知ることができてとてもおもしろかったです。エコシステムも含めると結構いろんなユースケースがあって、網羅するのが大変という現実の話がとてもよかった。
    • Create my own search engine.
      • 好きなものをつくるっていいなぁという気持ちになれるセッションでした。個人的にカードゲームが好きなのもあってとても楽しかった。
  • 印象的な出来事
    • 久々の物理カンファレンスはやっぱり “空気” がよかったです。昔やっていた勉強会の知り合いにばったり再会したりして、懐かしい気持ちなれた。
    • あと、スポンサーブースに各社の工夫が感じられてとても楽しかったです。ノベルティもいいやつがたくさんあってホクホクした。ブース起点で会話がたくさん生まれましたが、うちが出していたスクラムとかマイクロサービスな話は結構興味持ってもらえてたようでよかった。各社工夫とか苦労してる点が結構あることがわかって安心しました。
  • 初日の夜に他社のエンジニアと飲みながらマイクロサービスの話とかしたのが新鮮でした。もともとあんまりそういうのやらないんですけど、場のパワーってすごい。そういう場でちゃんと自分の意見として話せるようにもっと勉強が必要だなぁとも思いまして、いい刺激をもらいました。

@miquito

  • 良かったセッション
    • スポンサーブース担当なのでセッションへの参加なし
  • 印象的な出来事
    • オフラインカンファレンスの良さを再認識
      • あまりにも普通な感想なんだけど、オンラインカンファレンスでは味わえないであろう時間や空気が確かにあって、それがとてもよかった。物理カンファレンスでよかった!
    • Ruby Quiz が大好評
      • 英語が得意というわけでもないどちらかというと寡黙な方が海外の Rubyist と Ruby Quiz を楽しそうに一緒に解いている姿や、Twitter でたくさんの方が Ruby Quiz に時間を使って取り組んでいた様子
    • 三重ごはん
      • 用意していただいたお弁当が美味しかった!毎日、松阪牛が食べるなんてことは、この後の人生でなさそう
      • あと、ラーメン屋で食べた津ぎょうざが大きかった、美味しかった
  • 交流
    • クックパッドの仲間といっしょに旅行してる気分になって楽しかった
    • OB もたくさんいて、同窓会だった。たくさんの Rubyist たちがクックパッドのコードを書いてきたんだなと改めて思った
    • ブース出展企業の方ともたくさん話した。その後の iOSDC にも同じくでている方がいて、各社のやっていきを感じた
    • 町を歩いていて声をかけられた初めて話す海外の方と呑みに行く、みたいなあまり普段はない(しないであろう)体験も楽しめた

@uasi

  • 良かったセッション
    • Ruby meets WebAssembly
      • button.addEventListener 'click' do … end が書けるのは自然でよい
      • Ruby のソースファイルも含めて1バイナリに収めるために仮想ファイルシステムまで作るのがすごいね
    • Types teaches success, what will we do?
      • gem_rbs_collection には意外と気軽にコントリビュートしていいということが分かって良かった。最初から網羅的に書く必要はなく、(自分が)よく使う箇所に型をつけるだけでいいとのこと
  • 印象的な出来事 ANDPAD ブースの2進数足し算タイムアタックで matz が2位に食い込んでいた
  • 夜に飯屋を探していたら TableCheck の CTO とエンジニアに声を掛けられて一緒に呑んだ。2人とも英語メインだったから軽い世間話くらいになった。技術的な話も英語でできるようになりて〜

@ukstudio

  • 良かったセッション
    • RBS generation framework using Rack architecture
    • Let's collect type info during Ruby running and automaticall
      • 開発してるアプリケーションへのRBSの導入は自分の中でも興味のある話題なので、自動生成の取り組みやその手段についてとても興味深かった
    • The Better RuboCop World to enjoy Ruby
      • 自分の中でもRuboCopはなかなかしっくりこないことがあったけど、それをうまく言語化されていてとても良かった
      • 問題についての向き合い方についても色々と考えさせられるセッションだった
    • 言語処理系や低レイヤの話は大体「わからん〜〜〜」ってなるけど、これこそRubyKaigiという感じがしてどのセッションも良かった
  • 印象的なできごと
    • Promvizのダッシュボードに人がとても集まってきてくれて、そこから色々と話することができた。みんなマイクロサービスに興味があるんだなと思った
    • スポンサーブースでgRPCの導入について聞かれて、gRPCを採用してる企業として認識してくれてる人もいるんだなと思った。もっと情報発信していきたい
    • ランチのローストビーフ弁当がめちゃくちゃおいしかった
  • 交流
    • 夜に他社のエンジニアとご飯に行ったけど、お互いの技術スタックなどについて話ができて自分の知らない技術スタックの話も聞けてとてもよかった
    • 参加してないけど、弊社と他社との若者の集まりが開催されてたのがよかった
      • 最近は横のつながりというかコミュニティの参加機会が減ってきているとおもうので、きっかけができてたのはとても素晴しい

@9toon

  • 良かったセッション
    • error_highlight: user-friendly error diagnostics
      • いかに互換性を保ちながら新しい便利機能を導入するかという工夫が見て取れたのがとてもよかったです。また、「言語側で便利機能を用意しましたよ」に留まらず、Ruby on Rails 等にも改善を取り込んで Ruby のエコシステム全体に価値を波及させようとしているのもとても印象的でした
    • Towards Ruby 4 JIT
    • Making *MaNy* threads on Ruby
  • 印象的なできごと
    • 低レイヤーの話になると「全くわからん...」になってしまったのですが、その「分からん」にも前向きな気持ちで向き合えるのがオフラインイベントならではだったかもなと思いました。
    • オンラインだったらきっと途中で気持ちが切れてしまっただろうし、みんなで分からん分からん言いながら「こういうこと?」って話せたのがよかったです。
  • 元クックパッドな人たちとたくさんお話できてよかったです。各位それぞれの場所で活躍しているようで頼もしかったです。

ということで、クックパッドからの Kaigi 参加者(の一部)によるイベントレポートでした! 現場の熱気、伝わりましたでしょうか。 来年は松本でお会いしましょう!