RubyKaigi 2026でLTをしました、つじたと申します。普段は仕事でRailsを書いています。LTではRuby製のHotwireを作っていくらを追加するgemを作った話をしました。少し時間が経ってしまいましたが、せっかくなのでブログを書きます。
モチベーション
私が初めてRubyKaigiに参加したのは2022年の津での開催の年でした。当時の私はフィヨルドブートキャンプを卒業したてで、エンジニアになって3ヶ月目でした。初めてRubyKaigiの参加者として聞いたトークは kateinoigakukunさんの Ruby meets WebAssembly で、なんかめちゃくちゃすごい人がめちゃくちゃすごいことをやってるっぽい!すごい!と思いました。
全てのトーク内容が全くわからなかったですが、当時会社の先輩だったしおいさんがトークしているのは控えめに言ってもかっこよすぎて、私もいつかああなりたいと思いました。そのときの感情は今でも覚えています。
ただ、普段の業務をしているとわかるじゃないですか、初心者の自分の技術レベルはそんなところにはないし、自分の余暇時間は業務に関連する事を勉強したくなる。器用でも優秀でもない私は、RubyKaigiのCFPのネタになるような活動をする余裕も気力も持てず、時間が経つにつれて少しずつ『かっこいいけど自分には遠い世界だな』と思うようになりました。
翌年の松本は参加しましたが、去年より知ってるワードがほんの少し増えたな、という感想だった記憶。
その次の沖縄開催、私にとって3回目のRubyKaigiの頃には、自分が仕事でできることが増え、コミュニティの知り合いも少しずつ増えていて、Rubyに出会って自分は幸せだなと思うようになり、RubyKaigiにかかわらずではありますが、コミュニティにもらったものを私も返したいなと思う気持ちが出てきた時期でした。そんなわけで当時ヘルパーに応募するか少しだけ悩みましたが、なんとなく自分がヘルパーをしている姿を想像してもしっくりこなかったので応募はせず。
コミュニティに何かを返したい気持ちはあっても、誰に何を返せたらベストなのかがわかりませんでした。ただ、私が初めてのRubyKaigiでスピーカーからもらった『すごい!私もいつかこうなりたい!』という憧れや純粋なわくわく、そしてここから頑張ろうの気持ちを、私も他の誰かに渡すことができたなら、それが自分としては一番理想的だしかっこいいなと思いました。
そこで少しだけ登壇を意識した学習を始めました。 ただ、当時の私は自分の興味よりも『これをやったらウケるんじゃないか』を軸に行動をしてしまい、結果何も生み出せないループにハマりました。RubyKaigi 2025のLTにも何か出したかったのですが前述の理由で何も出せず。
その悩みを去年のRubyKaigi 2025のオフィシャルパーティで大先輩に話してみたところ、『ウケるウケないではなく、つじたさんの好きなことをすると道が開けると思いますよ』と言っていただいたので、去年の会期中は 私は何に興味があるのかな と考えながらトークを聞きました。 結果、突然Rubyのコアに興味を持つことはできなかったのですが、『今は目の前の仕事を頑張って、そこで何か見つかったらラッキーかな』と思えたので、去年はとにかく仕事を頑張りました。実際に成果が出ましたし(社内で表彰していただきました)、登壇しなくても会社で活躍できる人材になれたならそれでいいのかも、と思うようになりました。それと同時に、エンジニアで居続けて、コミュニティに細々と参加し続けることも一つの貢献なのかな、と。
そんな調子で過ごしていたのでRubyKaigi 2026のLTに何か出すつもりはありませんでしたが、登壇への第一歩はCFPの記念受験だと思っているので、せっかくのチャンスだしと考えて今の自分のやりたいことを色々考えました。その結果、自分が初めてRubyKaigi参加者として聞いたキーノートで取り上げられていた ruby.wasm を使ってみたい気持ち、またそれを使えば自分の好きなHotwireをRubyだけで実装できるのでは?と思うに至りました。
そこからどういくらになったの…?というと
gemの題材を考えていた時にClaudeから『TurboとRubyで turby はどう?』などと提案されていたわけですが、ちょうどその時近所のスタバでいちごのフラペチーノを飲んでいて、 『turby なんて全然かわいくない、もういっそichigoとかにしたい。赤いし。あれっ赤い…?Rubyも…赤いね??でも函館要素あったらおもしろいけど、いちごは違うね…… いくら?!』みたいな感じで思いつきました。
ちなみにClaudeに『gemの名前、ikuraはどうかな?』と聞いたら、『Rubyと函館の要素が入ってて良いと思うけど、初めてのRubyKaigiのLTでウケ狙いすぎてスベったら悲しいから正統派なturby がいいよ』という旨を出力されました。が、 そんなの知らん私のやりたいことをやります と思ってikuraにしました。結果的に本番でちゃんと笑っていただけたので、今回の命名に関しては人間の私とRubyコミュニティのあたたかさがOpus4.6に勝ちました。 ちなみにこのCFPを提出したときは自分の中での最高傑作ではありましたが、まさか通るとはつゆにも思わず、せめて審査員の方が少しでも笑ってくれたらいいな…と思っていました。
話しきれなかった部分
個人的な見所としては、Turbo Streamはidで指定された特定の場所にHTML要素を表示すると言う技術なので、今回私が実装したような、CSSで指定した親要素を基準にランダムな場所に子要素を表示する、というのはなかなかトリッキーなアイデアだったのではと思っています。 実際のプロダクトでのユースケースは思いつかないですが、HotwireはCSSに詳しくなると使い道がもっと増えそうでまだまだ可能性があるんじゃないかと改めて思いました。(と言いつつ、CSSに色々と託しすぎるのはどうなんだろうか。あとHotwireはシンプルに作れる可能性に溢れているところが好きなんですが、なんでもHotwireで作ろうみたいな欲望はないです。適材適所ですよね)
一番の反省点はruby.wasmをうまく使えなかったところです。 理想はDOM操作をRubyぽく書くところまで頑張りたかったのですが、これだ!と思う実装に辿り着けず、ruby.wasmの無駄遣いになってしまいました。Rubyで require ‘js’ できるのはすごいことだなと思いましたし、「ほぼRubyで書けた」は事実ではありましたが、もっとRubyのよさを活かしたかったですし、何よりJSに魂を売った感がすごかったです。『技術を使ってみた』と『使いこなせる』の差を実感した出来事でした、次に生かします。
準備から当日について
CFPを書くところも、実装する部分も、LTが通ってからも、今の私にやれることは全部やれたと思います。
スライドは文言のチェックはLLMを使いましたが、構成については何から何まで全て自分で作りました。せっかく私が5分話す時間をいただいたので120%私の世界観でいきたいなと思い。もう少しLLMのうまい使い方もあったのではと思いますが、悔いはないです。
当日の時間配分については5分を使い切りたかったので、かなり攻めの姿勢でいきました。特にデモに関しては、残り15秒あればデモができて尚且つ間延びしない丁度良いタイミングで銅鑼を鳴らしていただけると想定していたので、その通りにトークできてよかったです。 最初から早口で話すと気持ちが焦りそうだったので導入は自分のペースでいくと決め、終盤は時間調整のために駆け足でも仕方ないと割り切りました。余裕のない感じの攻めたLTができていたなら嬉しいです。
色々書きましたが、もうトーク中の5分間ずっと楽しかったです!CFPを考え始めて、通ってからスライドを作り、当日トークした全ての時間、一分一秒が本当に幸せでした。
最後に
一つ自慢してもいいでしょうか。ずっと背中を見てきた憧れのしおいさんに「同じ場所に立って登壇しましたね」と言っていただいたのが嬉しすぎて、初めて参加したRubyKaigi 2022から、エンジニアとしてここまで一歩ずつ歩いてきてよかった…と思いました。同じTシャツが着たいですとお伝えしたので、また頑張ろうと思います。何年で着れるかな。
そして、毎年RubyKaigiに連れてきてくださる会社の上司と、いつも一緒に走り続けてくれる会社の同僚に感謝を伝えたいです。普段はあまり気持ちが揺れない自分でもLT直前はびっくりするくらい気が気じゃなかったのですが、会社のメンバーの顔を見たら『きっとなんとかなるな』と心から思えて、ここで働いていてよかったと思いました。今年もちゃんと仕事で成果を出して返します。

