はじめに
ペイトナー請求書のフロントエンドエンジニアの@fuqda です。
本稿は、先日開催されたRubyKaigi2024の参加レポートになります。
フロントエンドエンジニア目線でRubyKaigiの面白かった部分のレポートが出来ればと思いますので、最後までお付き合いください。
参加したセッション
- 1日目
- Writing Weird Code
- Namespace, What and Why
- Generating a custom SDK for your web service or Rails API
- 2日目
- Leveraging Falcon and Rails for Real-Time Interactivity
- Reducing Implicit Allocations During Method Calling
- Breaking the Ruby Performance Barrier
- Good first issues of TypeProf
- Squeezing Unicode Names into Ruby Regular Expressions
- Lightning Talks
- The Frontend Rubyist
- The Journey of rubocop-daemon into RuboCop
- The test code generator using static analysis and LLM
- 3日目
- Ruby Committers and the World
- Make Your Own Regex Engine!
- Matz Keynote
印象に残ったセッション
📝 Namespace, What and Why
Rubyのプログラムを動かす際に読み込んだ外部のライブラリと手元のプログラムの名前空間の衝突を避ける機能を実装しているというお話でした。
今回の発表で触れているRubyに入れたい機能の名前は Namespace on read
。
「①ライブラリを読み込む」、「②ライブラリで行われた変更を隔離する」、「③定義されたメソッドを隔離された空間の外側から呼び出せるようにする」という3つのステップでライブラリコードはそのままでネームスペースの利点を生かせるようにするみたいです。
Namespaceの活用方法として特に興味深かったのは、 1つの Rubyプロセス上で、複数アプリケーションサーバーを動かせる & コンテナレスで簡単に開発環境を構築出来るようになるという話でした。
型以外の部分でも着実にRubyによる開発体験向上が感じられて、ワクワクするセッションでしたね。
📝 Good first issues of TypeProf
定義ジャンプ、コード補完をサポートするTypeProfというRuby組み込み機能に関する現状のお話とメンテナが遠藤さん一人なのでコントリビュート待ってますというお話でした。
メンテナの遠藤さん曰く型注釈を書かずにどこまで推論でやれるかを挑戦しているとのこと。
型推論が効くことはコードを書く際に楽である一方で、型注釈を書いた方がコンパイル速度が速いケースがTypeScriptにはあるので一長一短あるなと。
コンパイルの工程がある以上は、TypeScriptと同じようなことが起こりそうな気がするので、型推論に全振りせずに使い分けれた方がシビアにパフォーマンスチューニングしたい時やりやすいんじゃないかなと思いました。
📝 Lightning Talks
ブラウザで動くプログラムがRubyで書けるjsgというライブラリのお話でした。
JSG.d.querySelectorAll("h1")
のような書き味でRubyをクライアント側で動かせるとのことでした。
現状は1つのファイルにロジックやテンプレートをベタ書きしているようでしたが、 今後どうロジックを合成関数に切り出したり、コンポーネント分割のソリューションが生まれるのでしょうか。
また、ここ最近ホットな分野であるアクセシビリティ等も含めてフロントエンドの広大な技術領域をカバーするには今しばらく時間が必要な印象でした。
来年のRubyKaigiでもこうしたフロントエンドの動向が聞けるのを楽しみに1年後を待ちたいと思います。
その他:Rubyistとの会話
セッション内容とは関係無いですが、会期中のAfterPartyで某シリアライザーgemのメンテナの方とお話するチャンスがあり、 その方から将来的にシリアライザーの定義からTypeScriptの型を生成出来るようにしたいという話を聞く事が出来ました。
それが実現するとOpenAPIスキーマを書かなくても良くなるので、ワクワクしたのを覚えています。
全体総評
今年もRubyにこれから実装されようとしている実験的な機能についていち早く知ることが出来て学びがありました。
去年に引き続きWebフロントエンドをRubyで書く!という発表は興味深かったです。
とはいえ、現時点ではコンポーネント指向のモダンなフロントエンドではなく、AngularJS以前?の時代のJSを書くような形に見えたので、 この先進化していく中でコンポーネント指向の標準的な道を辿るのか独自の進化を遂げていくのか動向が気になりますね。
型についてもTypeProfやRBSの発表内のコード例はプリミティブな型の例のみでしたが、
より実務寄りの使い方をするためのTypeScriptのユーティリティ型のようなものが今後生まれてくるのかその辺りも含めて来年のRubyKaigiが楽しみです。