RubyKaigi 2026 キーノートレポート

まつもとゆきひろさん「Meet Spinel」
~RubyKaigi 2026 3日目キーノート

2026年4月22日(水)から24日(金)まで、北海道函館アリーナ及び函館市民会館にてRubyKaigi 2026が開催されました。最終日の締めくくりとして、Rubyの作者である、まつもとゆきひろさんより「Meet Spinel」と題した講演が行われました。

今回の講演でまつもとさんは、RubyKaigi 2025のキーノート⁠⁠Programming Language for AI age(AI時代におけるプログラミング言語⁠)⁠」の流れを汲みつつ、この1年におけるAIとの歩み、そして自身が開発した「Spinel」という新たなコンパイラについて話しました。

Too Much To Do

「0から1にするのが好きな人、1から100にするのが好きな人。いろんなタイプの人がいますね」とまつもとさんはプログラミング言語の開発について話し始めました。

まつもとさんは、自身の開発スタイルを「0から1を生み出すことを好むタイプ」であると同時に「同じものをずっとやり続けるというのが好きな人」であると分析し、だからこそここまで開発ができたと言います。

しかし、Ruby誕生から30余年、歩んできた時間とともにやりたいことリストは増え続けています。そのやりたいことリストには、mrubyのメモリ管理(GC)や多倍長整数の改善、さらには言語デザインについての新しいアイデアの模索など、様々な挑戦が並びます。それらを実現させるには、調べ物やスキル習得などにかかる時間と、そして何より新しいことを始める精神的なエネルギーが必要です。

ここでまつもとさんは、Linuxを開発したリーナス・トーバルズ氏の名前を挙げました。LinuxとGitという後世に残る開発を行ったリーナス氏を尊敬し、同じように自らの代表となる複数のプロダクトを持つのが夢であると明かします。その夢への障壁となっているのは、挑戦への時間的・精神的な負担でした。

しかし、まつもとさんはAIの発達による風向きの変化を実感したと語ります。RubyKaigi 2025にてまつもとさんは人間が主であり、AIは従であるべきだと指針を示しましたが、今回の講演にて「パートナーとしての付き合い方になってきた」と言います。AIというパートナーを得たことで、学習コストや実装スピードの壁が崩れ、有限の時間の中で無限のアイデアを形にする新たな開発フェーズに突入したというのです。

AI時代への突入

2025年はプログラミングという活動の本質が非常に大きく変わった年だった、とまつもとさんは振り返ります。

10年前から静的型宣言はコンピューターが賢くなるから必要なくなるだろう(だからRubyには型を導入しない)と考えていたまつもとさんは、当時その未来を誰にも信じてもらえなかったそうです。しかし、AIの波が世間を席巻し始めた今、この予想が現実になりつつあると、まつもとさんは話します。

「自分でもAIを使ってみなければ、人に諭すことはできない」と感じ、コードエディタを使用しないという縛りを自身に課しながら、AIのみで開発を始めたと話します。試みの当初は、1から10まで指示をし、出てくるコードも一行一行を確認しないと使えませんでした。しかし、どんどんAIが賢くなり、また指示の伝え方も上手くなることで、次第にこれでよいと思えるようになったとのことです。

「何を作るか、どのように作るか、何の問題を解決するか」という判断、そしてAIのアウトプットに対する「これでいいのか、受け入れ可能なのか」という決断は、引き続き人間が手綱を握らなければなりませんが、コード開発自体はAIに任せられるようになりました。まつもとさんはAIとの開発を進めるなかで、元々Rubyの開発においてもアイデアを出して実装は有志に任せる役割を担っており、AIとの協働もその延長線上の考え方に近いと気づいた、と語ります。

そして、この1年でAIにコード開発を任せた結果の成果物をいくつか紹介しました。

AIとの開発の成果物

Setクラス

組み込みのパフォーマンス改善のため、Rubyで書かれたSetクラスをC言語で書き直すことをAIに任せました。AIから最初に提案された実装は頻繁に落ちてしまう出来でしたが、落ちたケースについて根気強く細かく指示を出し続けたそうです。最終的には、一行もコードを書かずに動くものが完成しました。

カラツバ法

2024年9月にAIを使ってmrubyへのカラツバ法[1]の実装を1ヶ月かけて試みましたが動きませんでした。しかし、2026年1月になりClaude Codeで再挑戦したところ、わずか15分で形になったうえ、さらにToom-3[2]の有効な実装の提案があったそうです。実装を通して感じた直近のAIの賢さの向上度合いについて、まつもとさんは「私より賢い。1.5Matzか2Matzぐらい」と例えました。

RSS Reader

RSS Readerは皆さんも使用しているかもしれません。RSS Readerは、お気に入りのブログやニュースサイトの更新情報をまとめてチェックできるツールです。しかし、人気が衰えるとサービスが終了してしまうという特徴があり、まつもとさんが愛用していた有料RSS Readerも閉鎖されてしまったと言います。

ここで、まつもとさんはアイデアを閃くと、自身でRSS ReaderをRailsで製作し始めます。そして、なんと作り始めたその日にプロトタイプは動き始め、最終的に3日から4日という短期間で製作が完了したそうです。

サービス終了から解放されたが、ついフィードを読むことに多くの時間を使ってしまうともらすと、会場は笑いに包まれました。

Regexp

mrubyには独自の正規表現ライブラリがなく、サードパーティー製のライブラリをリンクするという方法を選択することになります。しかし、今なら正規表現エンジンも含めたコンパクトな組み込み可能なものを作れるのではないかというアイデアを投げかけたところ、AIのほうから実装の提案がありました。AIは最終的に、ほとんどがDFAベース[3]で動き、カバーできない部分はNFAのエンジンが動くというReDoS対応の正規表現ライブラリを作成してきました。

このように様々な積み上げられてきたアイデアが一気に片付き始めた、とまつもとさんは振り返ります。小さいアイデアが片付くと、何年も作りたいと思いつつ着手できなかった大きいアイデアに手をつけられるようになります。

そして、今回の講演の目玉である「Spinel」についての話が始まりました。

Spinel

「Spinelは、RubyのAOTコンパイラです」
その一言から、まつもとさんはSpinelを発表しました。

Spinelは講演が始まる直前にまつもとさんが自身のGitHubに公開した新たなプロダクトです。内容は、RubyのAOTコンパイラという説明のとおり、Rubyをよりポータブルで軽量にするための仕組みです。AOTとは、Ahead-of-Time(事前に)コンパイルを行う方式のことを指します。具体的には、Rubyのプログラムを入力し、バイナリを出力します。

Spinelの実際の動作は以下のようになっています。

  1. RubyのパーサーであるPrismを使用して、Rubyコードを抽象構文木(AST)に変換
  2. ASTをもとに型推論・C言語のソースコードを書き出し
  3. Cコンパイラがバイナリを生成

生成されたバイナリはRubyインタープリタ(実行環境)なしで動作します。これにより、ほぼ依存ライブラリなしのポータブルな実行ファイルとして動作するのです。

Rubyがすでに持っているJIT(Just-in-Time)コンパイラと比較し、AOTコンパイラには次のような特徴があります。

  • Rubyのソースコードやランタイムを全部まとめて1つの実行ファイルに固めてから動作するため、配布が容易であること。
  • コンパイル済みバイナリのため起動が速いこと。
  • メモリ消費量が少ないこと。

一方、JITコンパイラは実行時情報を活用する分、長時間処理ではAOTよりも優れた速度を発揮します。SpinelはJIT実装の代替ではなく、CIツールやサーバーレス案件、組み込み用途などの場面での活躍が想定されています。また、Spinel自体がRubyで書かれているため、Spinel自身をSpinelでコンパイルするセルフホスティングが可能な点もユニークです。

Spinelは多くの機能をサポートしています。クラス、継承、mixin、ブロック、yield、ラムダ、例外、パターンマッチング、ファイバー、正規表現、多倍長整数などです。さらに、まつもとさんは自身を「パフォーマンスにうるさいマスター」と称し、プログラム全体の型推論を土台とした様々な最適化をSpinelに施しています。

一例として、小さいクラスはスタック上にC構造体として配置することで、GCオーバーヘッドを回避するValue-type promotionを紹介しました。その結果、100万個のオブジェクトを割り当てるような処理にかかる時間が85msから2msに短縮されています。また、あまりオブジェクトを使わないような小さなプログラムでは、そもそもGCを使わないといった判断もおこなわれています。

Spinelの性能はライフゲーム、アッカーマン関数、マンデルブロ集合などの多数のベンチマークにて計測されており、minirubyより約11.6倍高速です。まつもとさんがSpinelのパフォーマンスを実際に披露すると、会場内では感嘆のどよめきと拍手が巻き起こりました。

詳しいベンチマーク結果は、Spinelのリポジトリにて紹介されています

一方、AOTコンパイラとしての性能を得るために切り捨てたものもある、とまつもとさんは言います。evaldefine_methodといったメタプログラミングで活躍する機能や、スレッド、requireなどがSpinelでは使えません。これらの制限のため、既存の大きなRubyアプリケーションを動かすことはできません。しかし、Spinelは原理的に難しい機能をあえてサポートしないことで、バイナリの小ささと速さを手に入れました。

Claude CodeでSpinelを作り始めてから、全体の書き直しが3回あったというエピソードも披露しました。書き直しの度、成果物が出てくるまでの待ち日数もどんどん短縮されたそうです。また、セルフホスティングの機能を入れたい、ベンチマークの速さを改善したい、メモリ消費量の無駄を解消したいなどのまつもとさんからの大量かつ細かい改善要望にも、生成AIは文句を言うことなく実現してくれます。元々アイデアはあったものの、RubyのAOTコンパイラは実装難易度がとても高いとわかっていたと言う、まつもとさん。今回のSpinelの実現には、パートナーとしての生成AIが重要な役割を担っていたことを繰り返し強調していました。

Spinelの由来

最後に、まつもとさんはSpinelという名前の由来について話しました。

「カードキャプターさくら」という漫画には「ルビー・ムーン」というキャラクターがいて、その相棒として猫をモチーフとした「スピネル・サン」が登場します。そこからまつもとさんは自身の飼っている猫に「スピネル」と名付けており、さらにルビーと似ているけどちょっと違うというコンセプトのAOTコンパイラにも「Spinel」という名前を与えたことを明かしました。

スピネルは古くからルビーと間違えられることの多い宝石として知られていますが、独立した美しさを宿しています。Rubyではないけれど、Rubyに負けない強さを持つ。そんな素敵な想いの込められた名前です。

そして、会場の人々に向け「まだSpinelは赤ちゃんですが、ぜひ可愛がってください」との言葉で話を締めくくると、会場からは大きな拍手が送られました。

大きな感謝を

まつもとさんは講演の終わりに、RubyGems.orgのサプライチェーンアタック対策について「今後、みんなでRubyGems.orgを支えようという発表があったら、ぜひ少しでも話を聞いていただければと思います」と伝えました。

また、スポンサー企業やRubyコミュニティへの感謝と、これまでの30余年に触れ、⁠これからも一緒に歩いていくつもりです」という決意表明をもって、RubyKaigi 2026最後の発表は閉幕しました。

おすすめ記事

記事・ニュース一覧