コードへの型注釈なしで型を推論するRuby静的解析ツール。未定義メソッドやnilレシーバーなど、確実なバグのみを報告することを目指します。
roundhouse-rb/roundhouse
Railsアプリを解析し、Rust、Go、TypeScript、Elixirなどの単体プロジェクトやSpinelネイティブバイナリを生成するコンパイラ。
- スター
- 527
- フォーク
- 50
- 未解決の Issue
- 163
- 最終コミット
- 15 時間前
これは何?
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
インストーラースクリプトでビルド済みバイナリをインストールする
README の公式手順に従ってインストール - 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年11月6日 です。
- roundhouse は何に使えますか?
- Rubyインタープリターなしで、Railsアプリケーションをコンパイル済みバイナリとして実行する。 CIでRailsコードベースの型の問題やN+1クエリをチェックする。 RailsアプリのロジックをGo、Rust、TypeScriptのサービスに移植する。 エディターやAIエージェントを使って、Railsアプリのリクエストフローを把握する。
- roundhouse のインストール方法は?
- インストーラースクリプトでビルド済みバイナリをインストールする バイナリが実行できることを確認する: roundhouse --version Railsアプリケーションを解析する: roundhouse check --continue /path/to/your/rails/app
- roundhouse はどこで入手できますか?
- ソースコードとインストール手順は GitHub にあります:https://github.com/roundhouse-rb/roundhouse
概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。
関連プロジェクト
主にエディタープラグインで使われる、補完、定義へのジャンプ、リファクタリング、コード検索向けのPython静的解析ライブラリです。
Rust製の超高速なTypeScript/JavaScriptコンパイラ兼パーサー。RustとJavaScriptの両方から利用できます。
Rustで書かれた高性能なJavaScript・TypeScriptツール群。パーサー、リンター、フォーマッター、トランスフォーマー、ミニファイアー、リゾルバーを備える。
対象環境で動作するよう、次世代のJavaScript構文を変換するJavaScriptコンパイラー。
Zen Cは、高水準の書きやすさとC並みの実行速度を備え、読みやすいGNU C11へコンパイルされるシステム言語です。