Rubyの発明者まつ(Matz)がAIの助けでネイティブ・コンパイラ開発に取り組む

The Register / 2026/5/6

📰 ニュースDeveloper Stack & InfrastructureIdeas & Deep AnalysisModels & Research

要点

  • Rubyの発明者まつ(Matz)が、AnthropicのClaudeの協力を得て、Rubyの先行コンパイル(AOT)向けの実験的コンパイラに取り組んでいると報じられています。
  • この取り組みは、Rubyコードを事前にネイティブ向けにコンパイルして動作させることを目標としています。
  • ただし、現時点では多くの制約があり、実用レベルでの完成度や対応範囲には限界があるようです。
  • AIをコンパイラ開発に活用する試みとして注目される一方、技術的な壁が残っていることも同時に示唆されています。

DevOps

Ruby発明者マツ(Matz)がAIの助けを得てネイティブ・コンパイラを開発中

MatzはAnthropicのClaudeと協力し、Ruby向けの実験的な先行(AOT)コンパイラを作成しようとしている——ただし制約が多い

Tim Anderson Tim Anderson
Published

ユキヒロ・マツモト(Yukihiro Matsumoto)――一般にマツ(Matz)として知られる――は、AnthropicのClaude Codeの助けを得て、Ruby向けのネイティブ・コンパイラ「Spinel」を構築しています。

MITライセンスの下でGitHub上 で公開されているSpinelは、RubyコードをAST(抽象構文木)ファイルとして解析し、それを標準的なCコンパイラでコンパイルするためのCコードへ変換することで動作します。マツのテストでは、Spinelでコンパイルされたコードは、開発中のRoby 4.1.0を使った縮小版Rubyビルド「MiniRuby」と比べて、約11.6倍高速に動作しています。 

出力はCコードで、gcc(GNU Compiler Collection)によって(LinuxまたはWindows上で、WindowsではMinGW――Minimalist GNU for Windows――を使って)ネイティブ実行ファイルにコンパイルできます。または、LinuxやmacOSではLLVMのClangでコンパイル可能です。BSDはreadmeによれば「たぶん動く」ものの、テストはされていません。

REG AD

Spinelの欠点は、Rubyのサブセットにしか対応していないことです。未対応の機能には、実行時にRubyコードを評価して実行するeval文、UTF-8以外のテキストエンコーディング、実行時にメソッドを定義するなどのメタプログラミング、そして深くネストされたラムダ関数、さらにスレッドがあります。

Rubyの変数は型付けされていませんが、オブジェクトは強く型付けされています。Cは強く型付けされた言語であるため、Spinelは型推論を行い、Cコード生成を可能にします。コードは、既存で成熟したRubyパーサであるPrismを利用しています。メソッドのインライン化やデッドコード除去など、数多くの最適化があり、生成されたCコードはデフォルトの警告レベルで問題なくコンパイルできます。Spinelにはガベージコレクタが含まれており、メモリを自動的に回収します。また、libcやSQLiteのようなネイティブコードライブラリと統合するためのFFI(foreign function interface)にも対応しています。

Spinelは実験的であり、Ruby on Railsを含む既存のほとんどのRubyコードでは動作しません。ただし、最適化の手段として、他のRubyコードから呼び出せるヘルパー関数などのように、Spinelを前提にコードを書くことはRuby開発者にとって可能です。

マツは、先月日本の函館で開催されたカンファレンス「RubyKaigi 2026」でスピネル(Spinel)を発表した。参加者の一人であるこちら (日本語の原文)によれば、マツはスピネルの構想は3年前に思い描かれていたが、現在はAIを使って数週間で実装されたという。

スピネルのリポジトリにあるコードの大半には、「Claude Open 4.7(1Mコンテキスト)により共同執筆:」という内容を含むコメントが付いている。 

さらに、このプロジェクトは実験の一環として、すでに3度にわたって作り直されている。

マツは、おそらくAIが生成したコードの理想的な利用者だろう。コードを理解しており、コードが何をするのかを見失うことなく、開発のスピードが上がる恩恵を受けられる。そして、既存のスキルに加えて、さらにAIにプロンプトを出すことでコードを洗練させることができる。コードは何百ものテストとベンチマークでカバーされている。®