valid,invalid

関心を持てる事柄について

形式仕様からproperty based testsを自動生成する試みについてRubyKaigi 2026で発表しました

表題の通り、形式仕様からproperty based testsを自動生成する試みについてRubyKaigi 2026で発表してきました。

発表内容について

"From Formal Specification to Property Based Test"という題で、2024年のRubyKaigiで発表したpbt gemを発展させ、形式仕様から決定論的にproperty based testsを生成するアプローチについて語りました。

発表内で見せたデモはYouTubeにuploadしてあります。見逃した方やもう一度見たい方は以下からどうぞ。

www.youtube.com

www.youtube.com

発表に至った経緯

アイデア自体は長らく ~放置していた~ 暖めていたものです。AI時代の開発ではコーディングエージェントに明確なゴールを与え、達成を検証できるような環境づくりが重要だというのは誰もが知るところとなりました。

しかしながら、仕様や実装の"正しさ"をどう検証するのか?その手段として形式手法とプロパティベースドテストに期待を寄せています。

特に、長年積み重ねられた形式手法の資産と、自身で開発したプロパティベースドテストのgemをうまく統合するブリッジのようなツールを作りたいというのが今回の主眼です。

このモチベーションについては発表の前半部分で時間を割いて説明していますのでスライドや(公開されたら)動画も参照ください。


...と、ここまでは時代背景を踏まえたキレイなストーリーとモチベーションです。個人的な課題としては別にあり、それは2024年に開発したpbt gemをほとんど活用できていないということでした。

当時の発表でも言及しましたがプロパティベースドテストの使いどころがなかなか難しい。何度かトライしてみたのですが、ステートレスPBTだと現実世界のWebアプリケーションに活かすには物足りなかったり、counter-exampleが見つかったらexample based testsに落とし込めばよいだけなのでgemを導入するほどではなかったり。

なので「pbt gemを活かせる場を作りたい」というのが裏の狙いでもありました。1つのテーマや軸を違った角度で見せていくスピーカーや発表を尊敬しており、自分もそこに近づきたいという思いもありました。

登壇のふりかえり

実は今回は諸事情によりDay 2のみ参加、しかもほぼ自分の出番手前に到着して終わったら帰るというスケジュールでした。

また、いつにも増して準備時間が取れず、声出しありの練習は2,3回のみ。加えて行きの飛行機でなんとかスライドを頭に叩き込んで本番の30分で絞り出すという感じでした。

振り返ると前提の説明が長く、本題のツールの解説が物足りなく感じたかもな〜という反省があります。


何より作成したspec-to-pbtというツールがPoCレベルで実用に耐えるレベルまで仕上がらなかったのが惜しい。完成なんてないのでどこで線を引くかでしかないのですが、現実のプロジェクトにチェックインできるような品質のテストを出力できるところまではいきたい。

ただ、今回の開発を通じてpbtにステートフルPBTの機能を荒削りながら追加していけたのはよかったこと。自分が自作ツールのユーザーになることでユースケースやあるべきインタフェースが定まるのは良い体験。

RubyKaigiの感想

先述の通り実質2~3時間程度の滞在時間なのでイベント自体への感想はほぼ書けず...。もっとフィードバックをもらったり知人と会話する機会が持てると良かった。


所属会社のスマートバンクのワークショップはすごく好評だったようすが社内SlackだけでなくSNSからも聞こえてきて幸いです。自分は完全にノータッチでしたが誇らしい気持ちです。

blog.smartbank.co.jp

セッションレポートも骨太でみんなすごい、ライブで聞きたかったものばかり

blog.smartbank.co.jp


そんなわけでほとんど写真がないのだけど #rubykaigiお前しか撮ってないやろ選手権 には"函館空港付近の夕焼け on Day 2"でエントリーいたします