こんにちは。RubyKaigi1日目お疲れ様でした。年に一度のRubyistたちの祭典、RubyKaigiは皆様楽しんでいますか?初日の今日、私は多くのセッションを聴講したり、Rubyistの皆様と会話したりすることで、とても開発にモチベーションが高まってしまいました。早く帰ってコードを書きたい、仕事に戻ったらこういうことをやりたい、しかしもっと講演を聞きたい!というような複雑な気持ちでとても楽しんでいます。初日の盛り上がりと熱気でとても良い刺激を受けた一日となりました。 ※ 弊社エンジニアが1日目で気になったセッションのレポートも公開しておりますので、合わせてご覧ください。
さて、そのRubyKaigiの初日の中でも特に目玉となったのはRubyのパパ、Matzことまつもとゆきひろ氏の基調講演でした。最初の講演ということもあり、会場は立ち見が出るほどの満席となりました。

まつもとゆきひろ氏本人から語られるRuby 3の話

多くのRubyistの間でのトピックといえば、Ruby 3は果たしてどうなるのか?ということです。そのRuby 3の展望について、Matz氏本人から語られました。

Rubyのpros, cons

Matz氏によると、Rubyには3つの良い点(Productive, Flexible, Fun)と悪い点(Performance, Multi-Core, Not for Bigger Team/Project)があり、Ruby 3についてはこれらの悪い点を改善した機能を提供する方針となると述べました。

Performanceの改善

RubyのパフォーマンスについてはRuby 1.9から徐々に性能は改善していっており、現在の最新バージョンであるRuby 2.6系からはJITコンパイラが搭載されました。

Optcarrot(Ruby製NESエミュレータ)のベンチマークではJITオプションをつけるだけで1.6倍の性能向上が確認されています。しかしながらRailsのようなメソッドが多いアプリケーションをMJITコンパイルすると逆に遅くなってしまうという欠点があります。この欠点をどのようなアプローチで解決するかという内容は、k0kuben氏による別セッションで詳しくお話されておりました。
さらにRubyでも型を使えるようになります。ただし、他の静的型付け言語で使われているようなコード中で型宣言をするものではなく、型定義ファイル(.rbiファイル)、型定義ライブラリ、タイププロファイラ、静的型チェックのようなコンポーネントを組み合わせて使うことになります。
アプローチとしては型定義ファイル(.rbiファイル)に型シグネチャを定義し、タイププロファイラを使うことで.rbiファイルで定義された型の情報から矛盾している型を見つけられます。
また別のアプローチの静的型チェックについては SorbetとSteepがすでに開発されています。Sorbetは高速でNominal、DSLとして型情報を追加することができ、SteepはRubyで書かれていて柔軟という特徴があります。

Concurrency

RubyのUnicorn, Falconなどはコアを活用したプロダクトでそのようなアプローチが重要になってきています。Thread/Fiberという機能がすでにありますが、ボトルネックの解消には向いていません。 そこでRuby 3ではGuild(Isolates)とAutoFiber(AsyncWhatever)という新しい機能を提供することを検討しています。Guildではオブジェクトスペースを分離し、チャンネルを使ってImmutableなオブジェクトまたはDeep Frozen Objectを送ることができます。さらに、I/Oブロッキングによって自動でコンテキストスイッチするAutoFiberも導入予定だそうです。
ちなみに、()で別の名前となっているのはまだ名前が正式に決まっていないからとのこと。(Guildという名前はゲーム業界のプロダクトなどではすでにクラス名として使われていたりするという反発もあるそう)これらの名前を募集中です!

Ruby 3で変更されない点

これまではRuby 3の新機能についての紹介でしたが、逆に変更を諦めた点もいくつか紹介されました。
  • Frozen String Literal
  • Obsolate “?” Literal
  • Obsolate backquotes
  • Deperecate autoload
などについてはRuby 3では変更は諦めたとのことでした。

まとめ

Rubyの弱点と言われた部分について改善されたRuby 3がますます楽しみになりました。Ruby 3については、その後の懇親会などで他のRubyistたちとも会話をしていても頻繁に話題となり、注目度の高さが伺えました。 まだまだRubyKaigiは続きますので引き続き、その模様をお伝えします!