はじめに
はじめまして。Optimal Biz開発チームの石元と戸舘です。私達は業務では主にRubyを使ってWebアプリケーションの開発をしています。
9/8~10に開催されたRubyKaigi 2022に参加してきたので、今回は会場の雰囲気や新しく公開されたRuby 3.2.0の注目機能についてレポートしていきます。
RubyKaigi 2022について(石元)
RubyKaigiは毎年開催されるRubyの開発者やコミッターが集まるイベントです。昨年は昨今の情勢もありオンライン開催となりましたが、今年はオンライン、オフラインのハイブリッドでの開催となりました。 開催が三重県ということで、今年のロゴは忍者がモチーフのようです。
会場は三重県津市の三重県総合文化センターでした。駅からは少し距離がありましたが、スポンサーのSMS Co., Ltd.様提供のシャトルバスが出ていたので不便はなかったです。
メイン会場となる大ホールは2000人近く入りますが、半分程度に制限しているようでした。 一部の講演はサブ会場の中ホールに中継されていたのでそちらでも見ることができました。 スクリーンの横にはモニターが設置してあり、英語での字幕やオンライン参加の方のコメントが流れていました。
RubyKaigiは日本以外からの参加者も多く、講演の半分ほどが英語での発表でした。 参加者の割合としては7~8割が日本人でしたが、先のモニターや日→英の同時翻訳が聞けるヘッドセットの貸し出しがあったりと日本語がわからない方でも参加しやすい環境だったと思います。
スポンサーブースもあり、RubyKaigiに協賛する企業のブースが並んでいました。 ブースによってはエンジニア向けのアンケートやRubyのクイズもあり、企業からも愛されている言語であることが感じられました。
お昼ごはんには三重の名産を使ったお弁当が振る舞われました。ベジタリアン向け弁当などもあり、配慮が細かいなと感じました。スポンサーブースでは地元のフルーツや三重県らしく日本茶が振る舞われました。近くの食事処で使えるクーポン券も配られ、地域に密着したイベントと感じました。
Ruby 3.2.0の注目機能(戸舘)
RubyKaigiの最中にRuby 3.2.0 Preview 2が公開されました。 RubyKaigiでもやはりRuby 3.2.0の話題は多く、特に注目の2機能について軽く見ていきます。
WebAssembly(WASM) + WASI
WebAssembly(WASM)とは、近年多くの言語で対応が進んでいる中間言語です。WebAssemblyを処理できるように組み込むだけで、RustやC++を始めとする多くの言語が動作できるようになることから、ブラウザを始めとして様々な場所で活用が広がっています。
そしてRuby 3.2.0ではそのWASMへの対応が追加されます。会場で見ていましたが、CRubyがすんなりブラウザで動いてデモできるというのはやはり感動がありますね。
Matzさんとしては最初WASMの対応というのは新しいプラットフォームの対応というふうに捉えていたが、予想以上の反響があったと述べていました。
WASMが出た当初、JavaScriptに対しての速度改善という文脈で語られることが多かったわけですが、自分の普段使っている言語で書けるという点が近年広く認知されてきていて、RubyのWASM対応に対する反響もそういう側面もあるのではと思っています。
YJIT
そもそもJIT(just-in-time)コンパイルとは、ネイティブコードにコンパイルを行う速度的ハンデを背負った上で、生成されるネイティブコードの速さを持って結果的に実行速度を上げることを目指すものです。
RubyでJITをする試みは今回が初めてではありません。Ruby 2.6で追加されたMJITでは、Ruby VMのコードを利用しつつ、gcc/clangの恩恵を受けて最適化されたネイティブコードを得てそれを実行することができます。
YJITはRuby 3.1.0で追加されたの新しいJITで、MJITより優れた遅延コード生成を行います。Ruby 3.2.0ではARM64アーキテクチャに対応します。ARM64を捨てることはApple対応しないのと同じことであると断言しており、意欲的なARM64対応が進んでいます。
Optimal BizのサーバーサイドはRailsなのでRuby側の処理そのものが相対的にボトルネックになっていないですからあまり恩恵が受けられなさそうですが、FluentdなどのRubyレイヤーの処理がメインのプロダクトでは恩恵がありそうです。
Ruby 3x3 projectの振り返りの発表の中では、Fluentdの実例でRuby 1.9.3 vs Ruby 3.2.0 + YJITで2.5~3倍速くなっていることが示されました。
おわりに
来年のRubyKaigi 2023は5/11~13に松本市で行われると発表されました]。 元々、松本市での開催は2020年に予定されていましたが、残念ながら中止となってしまいまったので、3年越しのリベンジという形になりますね。
進化し続けて魅力を増したRuby 3.2.0を速く製品開発でも使ってみたいですね!
OPTiMでは、そんな魅力的なRubyで開発している大型プロジェクトがございます。Ruby好きなメンバーで開発していますので、興味を持たれてたらぜひ一度ご連絡ください。