Rust製の静的解析エンジン。ソースコードからコンパクトなプログラムグラフを構築し、19種類のUML図とコンパイラIR図を生成します。
rubys/roundhouse
Railsアプリを解析し、Rust、Go、TypeScript、Elixirなどの単体プロジェクトやSpinelネイティブバイナリを生成するコンパイラ。
- スター
- 488
- フォーク
- 43
- 未解決の Issue
- 163
- 最終コミット
- 10 時間前
これは何?
Roundhouseは、型注釈を追加したり、アプリを起動したり、データベースに接続したりせずに、変更を加えていないRailsのソースコードを全体解析して型を推論します。推論される情報には、関連付けの戻り値の型、モデルのカラム、nilになりうる結果が含まれます。同じ解析機能は、ターミナルやCIで使える`check`コマンド、エディター向けのLSPサーバー、AIエージェント向けのMCPサーバーでも利用されています。
この解析結果をもとに、トランスパイラーはRust、Go、TypeScript、Crystal、Elixir、Kotlin、Swift、Python、C#、Rubyなど、複数のターゲット言語で単体プロジェクトを生成します。生成コードには独自のテストがあり、実行時にRailsを必要としません。同じURLに対するRailsと各ターゲットの応答を比較して、出力を検証します。別の方法として、Spinelを使ってRubyコードを事前コンパイルし、単一のネイティブバイナリにすることもできます。デフォルトのデータベースはSQLiteです。
プロジェクトのドキュメントには、サンプルのブログ用フィクスチャを使って、Railsと生成コードのスループットを比較したベンチマーク結果が掲載されています。
主な機能
- 01型注釈のないRailsコードから型とnil安全性を推論します。
- 02ターミナルやCIパイプラインで使える`check`コマンドを提供します。
- 03エディターやAIエージェント向けに、LSPサーバーとMCPサーバーを提供します。
- 04Railsアプリを複数のターゲット言語で、単体プロジェクトとしてトランスパイルします。
- 05Railsに近い構造のRubyコードをSpinel経由でネイティブバイナリにコンパイルします。
ユースケース
- Rubyインタープリターなしで、Railsアプリケーションをコンパイル済みバイナリとして実行する。
- CIでRailsコードベースの型の問題やN+1クエリをチェックする。
- RailsアプリのロジックをGo、Rust、TypeScriptのサービスに移植する。
- エディターやAIエージェントを使って、Railsアプリのリクエストフローを把握する。
クイックスタート
- 1
インストーラースクリプトでビルド済みバイナリをインストールする
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/rubys/roundhouse/releases/latest/download/roundhouse-installer.sh | sh - 2
バイナリが実行できることを確認する
roundhouse --version - 3
Railsアプリケーションを解析する
roundhouse check --continue /path/to/your/rails/app
使う前に知っておきたいこと
- ビルド済みバイナリのテスト対象はApple silicon搭載MacとLinux x86-64のみです。Intel Mac向けとWindows向けのビルドはテストされていません。
- 主な入力対象はRailsアプリケーションであり、Rubyを何にでも変換する汎用ツールではありません。
トピック
よくある質問
- roundhouse とは?
- Railsアプリを解析し、Rust、Go、TypeScript、Elixirなどの単体プロジェクトやSpinelネイティブバイナリを生成するコンパイラ。 Roundhouseは、型注釈を追加したり、アプリを起動したり、データベースに接続したりせずに、変更を加えていないRailsのソースコードを全体解析して型を推論します。推論される情報には、関連付けの戻り値の型、モデルのカラム、nilになりうる結果が含まれます。同じ解析機能は、ターミナルやCIで使える`check`コマンド、エディター向けのLSPサーバー、AIエージェント向けのMCPサーバーでも利用されています。
- roundhouse は無料で使えますか?ライセンスは?
- roundhouse は Apache-2.0 ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
- roundhouse は今もメンテナンスされていますか?
- 活発にメンテナンス中。roundhouse の最終コミットは 2026年10月19日 です。
- roundhouse は何に使えますか?
- Rubyインタープリターなしで、Railsアプリケーションをコンパイル済みバイナリとして実行する。 CIでRailsコードベースの型の問題やN+1クエリをチェックする。 RailsアプリのロジックをGo、Rust、TypeScriptのサービスに移植する。 エディターやAIエージェントを使って、Railsアプリのリクエストフローを把握する。
- roundhouse のインストール方法は?
- インストーラースクリプトでビルド済みバイナリをインストールする: curl --proto '=https' --tlsv1.2 -LsSf https://github.com/rubys/roundhouse/releases/latest/download/roundhouse-installer.sh | sh バイナリが実行できることを確認する: roundhouse --version Railsアプリケーションを解析する: roundhouse check --continue /path/to/your/rails/app
- roundhouse はどこで入手できますか?
- ソースコードとインストール手順は GitHub にあります:https://github.com/rubys/roundhouse
概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。
関連プロジェクト
TypeScript 7コンパイラ(tsc)の実験的なRust移植版。CLI、言語サーバー、APIをそのまま提供し、Effectの診断機能も組み込まれています。
単一のDockerイメージでデプロイできる、ルーム、ダイレクトメッセージ、検索、ファイル添付、Bot APIを備えたセルフホスト型Webグループチャット。
tmuxなどにタブや分割を任せる、クロスプラットフォーム対応のGPUアクセラレーションOpenGL端末エミュレーター。
よく使うディレクトリを学習し、主要なシェルから数回のキー入力で移動できる、賢いcdコマンド。
メールを送信せずにアドレスの存在を確認する、Rustライブラリ・CLI・HTTPバックエンド。