皆さん、RubyKaigi 2025はいかがでしたか? id:udzura です。
RubyKaigi 2025事後勉強会も無事に終わり、私にアサインされたRubyKaigi 2025のタスクもこの振り返りのブログのみとなりました。
さて、振り返りの最初ですが、松山から帰って以来俳句モードなので、俳句の紹介と鑑賞文を書きます。
凧(いかのぼり)きのふの空のありどころ
蕪村
もはや松山ゆかりの正岡子規でも高浜虚子でもなく、単に自分が好きな与謝蕪村の発句を引きました。
この句は、解釈によっては凧がきのふも今日も同じ空に昇ってるよ、みたいに取られることも多いようなのですが、私としては、昨日はあの空に凧が上がっていたのに、今日は上がっていないね、という風景だと解釈したいです。この句はそういうえも言われぬもの寂しさを詠んだものだ、と思った方がしっくりきます。
そして、松山の街の地元のRubyistは、RubyKaigiが終わって、昨日まではあんなにRubyistがいたのに、今日はいないな、って気持ちになっていたと思うのですよね。私も2019年の福岡のオーガナイザーをやった時そうでした。
そういうふうに発想が膨らんでいく一句です。

なお、「凧」なんて聞くと現代人としては新春の季語のように思えますが、本来は春(三春、春のどの時期でもOK)の季語です。だから風の強いこの春の時期にも実はピッタリきます。
改めて RubyKaigi に思うこと
まず、根本的な問いをしてしまうのですが、RubyKaigiのトークってぶっちゃけどうですか? と聞いてみたいです。
RubyKaigiの各トークについて、しばしば、面白い、勉強になる、けど自分の仕事には関係ないという評価を受けているのが見受けられます。ですが、私としては、「自分の仕事に関係させていこうぜ!」という気持ちが強くあります。少なくとも勝手に「壁」を作ってしまうのは勿体無いのかな、と思います。
理由の一つは、RubyKaigiで話されていることは、抽象度の高い問題解決のショウケースでもあるよねと考えているからです。
私たちSmartHRのプロダクトエンジニアは毎日問題と向き合い、ユーザの課題を解決しています。多くの職業プログラマをしているRubyistもそうかなと思います。なので、テーマが違ってもRubyKaigiで行われているアプローチが役に立たないことはないんじゃないかと思っています。例えば一度、どんなアプローチをしているか、どのように計測、仮説構築、実験、試行錯誤...をしているか、に絞って発表を聞いてみると、印象が違ってくるかもしれません。
もう一つの理由として、「コンピュータサイエンスの基本的な技術はそもそもいつか自分の仕事に役立つよね」という気持ちがあります。
具体的な基本的技術のユースケースとしては、例えばセキュリティについてはどうでしょうか?
テックリードであったりシニアなエンジニアであれば、自分の取り扱う技術のセキュリティ的な問題をある程度は適切に把握し、判断して対処する必要が出てくる場面もあるでしょう。セキュリティについて正しく理解するには情報学・コンピュータサイエンスの様々な分野の知識が必要になります。
例えば少し前ですが、2023年には 正規表現のDoS(ReDoS) の話があり、このトークの攻撃手法の概要を把握するにはオートマトンと計算量に関する知識が必要ではないかと思われます*1。
そのほか、基盤的な技術がわかっていないと困りそうな場面として、パフォーマンスの問題なども思いつきます。今年もちょうど、プロファイラの話がキーノート含め3つありました。いずれもコンピューターに深掘りした興味深いものではないかと思います*2。
そう考えると、RubyKaigiで(あるいはRubyKaigiのために準備して)得た知識が「自分の仕事には関係ない」と簡単に言い切ってしまうのも、なんだか成長の機会を逃すようで勿体無いように思います。Connecting the Dotsではないのですが、「この道がどこかにつながるはず」と思って参加したい気がしています。
印象に残ったトーク
ということで私は、RubyKaigiは「コンピュータサイエンスの基本の話題を浴びに行く場」ぐらいの気持ちで参加しているのですが、その意味でも初日の ima1zumi さんのキーノート「Ruby Taught Me About Encoding Under the Hood」は本当に痺れました。
ima1zumi さんのキーノートでは、のろしや腕木の話に始まり、文字コード・エンコーディングという非常に重要なトピックについて、どのような課題と面白さがあるかが語られました。Rubyistにもわかりやすい、あるいは想像しやすい話題を挟みつつ話されたので、楽しく聞けました。
これは究極、「情報とは何か」というキーノートだなと感じました。「文字化け」は象徴的な現象だと感じています。ある一定の長さのバイトコードが、人間にとってただの無意味な列になるか、情報を持った何かになるかは、危うい橋を渡っているようなものなのかもしれません。複雑さと課題があるからこそ面白いテーマだと思いますし、立ち向かっている ima1zumi さんは格好いいと思います。
なんか妄想が入っていますが、しかしそういう示唆に富むキーノートが初日の一番最初に披露されるのが、RubyKaigiの凄みですね。
読み差しで挫折している『情報理論』を読み直そうと思いました。
もう一つ、印象に残ったトーク
もう一つ、印象に残ったのが旧知の間柄でもあるhmskさんの発表「Running JavaScript within Ruby」でした。
このトークはプロダクトの価値を上げるために技術で現実歪曲にチャレンジしている話だなと受け取りました。所属企業 PersonaのワークフローエンジンにユーザカスタムのJavaScriptを埋め込みたいというところから始まり、ユーザの利益・体験と、安全性と、技術的チャレンジ、そしてRubyistとしてのやっていきのバランスを取るプロセスが見事に語られていたように思いました。プロダクトエンジニアの先輩の話としても大変参考になりました。
ライブラリとしていろいろある中でQuickJSを選球したポイントとか、高専時代からのCの知識を積み重ねつつC bindingに実装する今どきのやり方とか、大変興味深かったです。技術にもプロダクトにも向き合った話としてゆっくり改めて聞き直したいです。
自分の発表について
最後に個人の発表の話をします。
私は今年は、ここ数年研究を続けているWebAssemblyの話、具体的には東京Ruby会議12の前夜祭で頭出しをしたPure RubyなWebAssemblyランタイム「Wardite」の実装の詳細を話しました。

まずは、なんとか当日までに目標としている機能までは実装できたので、ほっとしています。開発していて、ruby.wasmが普通に立ち上がった瞬間は、なんというか力が抜けました。
また、発表にはちゃんと正直に定量的評価を入れたいと考えていて、計測結果と、パフォーマンスの課題感についての記述、若干の改善の取り組みをスライドに含めました。Warditeはこっからっすというフェーズですが、今後のロードマップも見えてきたかなと思うので、引き続き計測と開発をしていきたいと思っています。
余談ではありますが、トークが終わってから、kateinoigakukunさんに感想をいただけたのが一番ありがたかったです。曰く、「もっと高速にできますよ!」とのことで、いくつか実装のヒントを教えてもらえました。そして、「CやRust実装の ~ x3 ぐらいの実行時間まではいけるんじゃないですか?(要約)」とのことでした。そうかー...。できるとこから頑張ろうと思いました...*3。
もう一点、私が実感したこととして、去年発表した mruby/edge 含めWebAssembly関連のOSSを作りまくることで、WebAssembly自体の仕様や、各種実装、ブラウザでのAPIなども徐々に詳しくなってきたという点があります。「作る」というのが一番勉強になるんだなと思いました。仮に業務でWebAssemblyを実践投入するぞとなっても、この技術の運用やデバッグを主導できるような自信が生まれてきました。少しだけですが。できるとは言ってない。
発表でも触れましたがWebAssemblyの可能性にときめいており、AI関連の技術と同様に、どこかで必ずお仕事の役に立ち、ユーザに価値を届けるにあたり差別化ポイントにできると信じています。
最後に、登壇資料へのリンクを掲載します。
謝辞
今回の登壇資料はkateinoigakukunさんにレビューをいただいています。直前のお願いにも関わらずありがとうございました! また、壁打ちに付き合っていただいた同僚やFukuoka.rbの皆様にも感謝します。
そして、今回の登壇はもちろんSmartHRの支援により実現しました。RubyKaigi周辺のイベント・ノベルティ・社内事務等に尽力してくれた同僚にも感謝します。
We Are Hiring!
SmartHRは引き続き、Rubyや技術コミュニティの支援と、エンジニアの成長機会の提供に力を入れていきます。RubyKaigiで熱くなってしまった皆様、ご気軽にカジュアル面談をご依頼ください!