はじめまして。半田、片岡、吉村、原です。
私たちは主にRubyを使ってWebアプリケーションの開発をしています。
5/11~13に開催されたRubyKaigi 2023に参加してきたので、会場の雰囲気や印象に残った講演の感想についてレポートしていきたいと思います。
RubyKaigi 2023について
RubyKaigiは毎年開催されるRubyの開発者やコミッターが集まるイベントです。前年に引き続き今年もオンライン、オフラインのハイブリッドでの開催となりました。
元々、松本市での開催は2020年に予定されていましたが、残念ながら中止となってしまったので、3年越しのリベンジという形で今年はまつもと市民芸術館で開催という形になりました。
会場から歩いて15分くらいに松本城があり、城下町の風情を感じられました。 また雄大な山脈が松本市を取り囲んでおり、大自然と歴史に囲まれた中でRubyKaigiを楽しむことができました。
松本市での開催ということで、松本城とRubyがデザインされたTシャツがノベルティとして配布されました。
他にも七味やお箸、ステッカーなどが配布されました。
たくさんのノベルティが貰えるのもRubyKaigiの魅力ですね。
RubyKaigiは海外からの参加者も多く、半分以上が英語での講演でした。日本語の講演であっても、英訳が表示されてるモニターや日→英の同時翻訳が聞けるヘッドセットの貸し出しがあり、日本語がわからない方でも参加しやすい環境だったと思います。
ちなみに日本人の参加者は体感6~7割ほどでしたが、英語から日本語の翻訳が聞けるヘッドセットの貸し出しはありませんでした。
また会場では日本人エンジニアと海外のエンジニアの交流もたくさん見られました。
今年はお弁当の配布はなく、近辺の飲食店で使えるクーポンが3000円分配布されました。 その他にも、観光地の無料招待券や当日収穫した新鮮なりんごなど長野県のこだわり食材が会場で配布されており、地域密着型のイベントだと感じました。
印象に残った講演の感想
"Ractor" reconsidered
Koichi Sasada による講演: https://rubykaigi.org/2023/presentations/ko1.html#day1
RactorはRuby3.0で導入されたThread、Fiber、Processとは別の並列処理の仕組みです。
安全かつ効率よく並列処理を行う仕組みですが、あまり使用されることはありませんでした。
Ractor自体が並列処理を扱う難しい概念であり、エコシステムが育たなかったり、フィードバックが少なかったりしたためです。
根本的な原因として、Ractorのコード品質が低いため、CIが落ちるなどの問題があったこと、ネイティブスレッドを利用して動作していたため、パフォーマンスが遅いケースがあることが挙げられていました。
それに対して、実用段階に向けてたくさんの挑戦がなされているようです!
Learn Ractor
Masatoshi SEKI による講演: https://rubykaigi.org/2023/presentations/m_seki.html#day2
こちらでは、Ractorを実際に使ってみた例が述べられていました。
Ractorは、Threadと比較しCPU負荷が高い処理を行う上で有利であるため、そのようなケースで実際に効果を発揮したとのことでした。
しかし、Ractorは共有可能なオブジェクトに制限があるため、既存の実装をRactorにリファクタリングするのはコストが高いようです。
まだ課題はありそうですが、並列処理を手軽に書けるようになるのは何より楽しい!!ため、今後に期待ですね。
Generating RBIs for dynamic mixins with Sorbet and Tapioca
Emily Samp による講演: https://rubykaigi.org/2023/presentations/egiurleo.html#day1
Rubyの型情報を生成するにあたって、動的mixin (Objectのinclude, prepend, extend) をうまく扱うにはどうすればよいか?という話でした。
日頃フロントエンドの開発をしている私は、タイトルに含まれているツールを (少し強引ですが) TypeScriptに当てはめて、以下のように理解しました。
- RBI (Ruby Interface) はTypeScriptでいうところの
.d.ts
みたいなもの - Sorbet が
tsc
- Tapioca が
tsconfig.json
の“declaration”: true
で.d.ts
を生成してくれる機能を実現するもの
動的mixinを行なっている部分を探索し、ObjectとmixinするModuleを吸い上げて、その情報をTapiocaのキューに渡すようです。
まだ理解しきれていない部分も多いので、実際に手を動かして触ってみながら、TypeScriptとどういった違いがあるのかあるのか見てみたいです。
Implementing "++" operator, stepping into parse.y
Misaki Shioi による講演: https://rubykaigi.org/2023/presentations/coe401_.html#day2
Rubyは標準の時点で非常に多くのメソッドが用意されていますが、大抵のプログラミング言語にあるはずの++(インクリメント)演算子がありません。今後も『インクリメントの操作に対して、オブジェクト指向のセマンティクスを定義することができない』というMatzの方針を踏襲して++が実装される予定はありません。
ですが今回はあえて、もしこの演算子を実装するにはRubyをどのように改造するかという切り口で、実際にコード改変・コンパイルを繰り返すことを通して、パーサに触れてゆく内容の講演でした。実装の度に問題点が見つかりそれをクリアしてゆくという楽しい形式の話でした。
ちなみに、立ち見が生まれるほどの大人気講演で、私も氏のファンになり声をかけてしまいました!
スポンサーブース
RubyKaigiはたくさんのスポンサーブースがあり、参加者を楽しませてくれます。
お菓子類、モバイルバッテリーなどのノベルティの配布やRubyに関するクイズ等などのイベントがありました。
WED, Inc.様ではレシートを提供、撮影したらガチャを回して景品が貰えるといったような企業のサービスに関連した企画を楽しむことができました。
クックパッド株式会社様ではその場でCTOカジュアル面談を実施されており、かなり話題になっておりました。
また、会場には意外とコンセントがそこまでなかったので、株式会社Helpfeel様が提供されていたコンセントがある休憩スペースの提供がとてもありがたかったです。
おわりに
来年のRubyKaigi 2024は5/15~17に沖縄県那覇市で行われると発表されました。
いまだに進化し続けて魅力を増してるRubyから目が離せませんね!
OPTiMでは、そんな魅力的なRubyで開発している大型プロジェクトがございます。Ruby好きなメンバーで開発していますので、ご興味のある方は、ぜひ一度ご連絡ください。