表題の通り、Rubyにおけるランタイムでのdeprecated methodの自動修正についてRubyKaigi 2025で発表してきました。スピーカーとしての参加は昨年に続いて2度目ですが、昨年とは違った経験ができました。
発表内容について
"On the Fly Rewriting Method Deprecations"という題で、Rubyのメソッド非推奨化(deprecation)の問題と、それを自動的に解決するための新しいアプローチを提案しました。主にライブラリの進化に伴う非推奨メソッドの呼び出しを、ランタイムで検出して自動的にリファクタリングする手法についての発表です。
発表内で見せたデモはすべてYouTubeにuploadしてあります。見逃した方やもう一度見たい方は以下からどうぞ。
日本語のテキストで概要を知りたい方はFindy社のみっきーさんによる記事をご参照ください。登壇後に話しかけてもらえただけでなく、講演内容をとても丁寧にわかりやすくまとめてくださってます。この場を借りて感謝いたします!*1
発表に至った経緯
ランタイムでのdeprecated methodの自動修正というアイデア自体は独創的なものではなく、発表中に触れたPharoという言語のDeprewriterに由来しています。動的型付けでオブジェクト指向という共通点を持つPharoの試みをRubyに移植した際のチャレンジやエコシステムでの受容可能性が今回の主題です。
PharoのDeprewriter論文は2024年8月ぐらいにHacker Newsあたりで流れてきたのを捕捉しており、そのあと年末年始の休暇でガッと書き上げたのを記憶しています。
最初はただの便利ツールとして書いていましたが、年始にkmizuさんのpostを見かけて「言語本体に組み込む可能性 / 提案まで含めると"RubyKaigiで話す意味"が生まれるのでは」と思いつき、その旨をプロポーザルや発表内容にも盛り込みました。
そういえば、プログラミング言語に「本当に切実に欲しい」機能の一つが「自動マイグレーション機能」です。…
— kmizu (@kmizu) 2025年1月8日
年末年始はちょうどCursorへのエディタ乗り換えを進めていたとき*2で、丁度良い題材だったのでプログラムよりも先にREADMEを書き上げつつエージェントにプロトタイプを実装させ、そこから手直しをする形でガッと進めました。
一定の動くものができたあとにレポジトリのコード全体や去年通過したプロポーザルをコンテクストとして与えて今年のプロポーザルを書くなど、過去にやったことのないAI-assistedなフローを試せたのも良い経験になりました。まぁ、効果がいかほどだったかでいうとVibe codingには程遠いですね... なんだかんだ手はだいぶ動かしました。
他言語にもあるし「(理論的には)Rubyでも出来るっしょ」ぐらいのノリで始めてもなんだかんだいろんな意思決定ポイントやトレードオフがあるんですよねぇ。そこが面白いところでもありますが。
登壇のふりかえり
今年の発表は3日目の最終でMatz Keynoteの手前という位置でした。最後の最後まで自分の発表を磨けてしまう状況や、連日Drinkupがあっても絶対に体調を崩したくないという緊張感が連綿と続いたため、Day 1に発表を終えた2024年に比べると一層疲弊したような気がします。
今年も通訳さんと打ち合わせをしましたが「発表スライドに動画を盛り込んでてすごい気合ですね」「Tシャツおしゃれですね*3」といったフィードバックをもらってちょっと嬉しかった。
毎回のことだけど本番に至るまでに10回ぐらい通し練習をやったので内容に破綻はなかったはず....。ただ、使用していたプレゼンのスポットライトポインタが外部ディスプレイに映らないトラブルがあったのは心残り、リハで確認しておけばよかったところ。
会場のについては、真珠"の間はホールと違って演台の高さがなくて聴講者と距離が近いのはやりやすかったかもしれない。
もらったフィードバックについて
実は今回もっとも悔やまれるのが、最終スロットでの発表だったこともあり自分の発表について参加者と議論する機会が昨年よりも少なかったこと。まったくゼロだったわけではなくRubyKaigi後にDMでやりとりさせてもらった方もいたり、その場で以下の意見をもらえたりもしました。
- 「compromised flowであっても全員がrewrite ruleを書く必要はなくて、DefinitelyTypedのように変換ルール集を集めてはどうか」
- 「rubocopのようにCLIで提供してはどうか」
どちらも現在検討中です。
最近友人知人同僚と登壇発表する動機や意義について語ることがあり、自分の場合は「こんなふうに考えているんだけどどう思う?」という問いかけをして広く議論・対話することが大きなモチベーションの1つにあるとわかってきた。自分が真剣に考えたテーマについて意見を述べてフィードバックをもらうのが楽しくてやっているということに改めて気づきを得られた。
愛媛のこと
滞在期間は会期に前後1日プラスした4泊5日。隣の香川には数年おきに訪れているのだが愛媛は初。
やはり瀬戸内海沿いエリアは海鮮がすごい。
肉も!! hacomonoさんご提供のDrinkupありがとうございました。
三日間の #rubykaigi 会期中連綿と続いた緊張が解けた後に食うhacomonoさん提供の焼肉が最も『美味』い。 pic.twitter.com/SFCA9jot8b
— ohbarye (@ohbarye) 2025年4月18日
良いコーヒー屋をたくさん見つけられてよかった。
道後のroro COFFEE standに行ったら「Kaigiで来られた方ですか?」と聞かれたので、そうですと言うと
— ohbarye (@ohbarye) 2025年4月19日
「休憩時間がお昼に長めにあって、15時過ぎにまた休み時間があるんですよね」と、完全に"理解"られてた
Raw Sugar Roast焙煎のルワンダたいへん美味しかった#rubykaigi pic.twitter.com/UQCwS3UuM3
和菓子もいくつか
みかんジュース。そういえば一番好きなみかんの品種は「紅まどんな」なのだけど、紅まどんなと甘平を交配して育成された「紅プリンセス」という品種があることを食べチョクの方に教えていただきました。ブースにいったときにはすでに配布終了しており今回は食べられなかったので来年のシーズンに期待。
今年は年初から1ヶ月ほどの体調不良、EM ConfやEM関連イベントの登壇、バンドの企画ライブと個人的イベントラッシュが続いており、昨年よりもさらに準備期間が短かったように感じています。
こうした時に"地力"と"基礎体力"が試されることを痛感したので今後しばらくはインプットのペースを取り戻していく所存です。
*1:記事執筆時はRubyGemsに公開していなかったにもかかわらず動かしてもらえたのもありがたい
*2:参考: 2024年に乗り換えた or 乗り換えつつある開発関連ツール - valid,invalid
*3:スマートバンクのイベントTを着ていた