Rust で書かれた高速な Python 型チェッカー 3 選¶
はじめに¶
本記事では、pylyzer、Red Knot、Pyrefly の 3 つを取り上げます。いずれも Rust で開発が進む Python 型チェッカーで、それぞれの特徴と執筆時点の開発状況を整理します。
執筆時点の Python 開発では、Ruffやuvといった Rust 製ツールの利用が広がっています。README によると、Ruff は既存の linter やフォーマッタより、uv はpipより 10〜100 倍高速です。フォーマットや lint、パッケージの依存管理に続く高速化の対象として、私は型チェッカーに注目しています。
型検査を速くする意義¶
Meta は 2024 年に Python コミュニティを対象として型付き Python の調査を行いました。型を "Always" または "Often" 使うと答えた回答者は 88% です。記事自身も、調査に偏りがある可能性や、結果がコミュニティ全体を代表する意見ではないことに触れています。それでも、コミュニティの一定数の人が型を使っていることは間違いありません。型を使う人が多いぶん、コードベースの大規模化に伴って伸びる型検査の時間を短くできれば、恩恵を受ける開発者も多いはずです。
pylyzer¶
最初に紹介する型チェッカーはpylyzerです。静的型付き言語 Erg を開発する中で生まれたもので、誕生の経緯は作者がZenn の解説記事で紹介しています。
pylyzer は PyPI からpipでインストールでき、すぐに動かせます。
GitHub の README にあるベンチマーク結果を引用します。pylyzer は、比較対象の pyright や pytype より 100 倍以上速く型検査を終えています。

Red Knot¶
次に紹介する型チェッカーはRed Knotです。Ruff や uv の開発元である Astral が、Ruff と同じ GitHub リポジトリで開発しています。
Red Knot を動かすには、Ruff リポジトリのベンチマーク手順ドキュメントに従ってcargoでビルドします。ビルドしたバイナリのcheckサブコマンドに、検査したいファイルやディレクトリを渡して実行します。
実行速度の参考として、Ruff リポジトリのPull Request #13227にあるベンチマーク結果を引用します。Red Knot は、mypy より約 94 倍、pyright より約 7 倍速く検査を終えています。
Pyrefly (pyre2)¶
最後に紹介する型チェッカーはPyreflyです。Meta が自社の Python 製型チェッカー Pyre の後継として開発しており、執筆時点の README によると、2025 年末までに Pyre を全面的に置き換えることが目標です。
Pyrefly も PyPI からpipでインストールできます。インストール手順にあるとおり、checkサブコマンドへ検査したいパスを渡して実行します。
開発に使われている Buck2¶
ほかの 2 つと違う点として私が興味を持ったのは、Pyrefly の開発で Buck2 を使っている点です。執筆時点の README は、開発者ごとに使うコマンドを次のように分けていました。
- GitHub 上の開発者:
cargoコマンド(cargo buildやcargo test) - Meta 社内の開発者:
buck2コマンド(buck2 runやbuck2 test)
Buck2は、Meta が Buck の後継として Rust で書き直したビルドツールです。大規模なプロジェクトでも高速にビルドでき、多言語に対応しているので、Python と Rust のように複数の言語を扱うプロジェクトでも活用できます。私自身、類似のビルドツールである Bazel や Pants を業務で使っている(使っていた)ので、Buck2 の利用事例として興味を持ちました。
pyreflyリポジトリとpyre2ディレクトリ¶
執筆時点では、Pyrefly のコードが GitHub 上の 2 か所にありました。1 つはpyreflyリポジトリ、もう 1 つは Pyre のpyre-checkリポジトリ内にあるpyre2ディレクトリです。pyre2の README を読むと、中身は Pyrefly であることが分かります。直近のコミット履歴を見るとpyreflyリポジトリのほうが活発に更新されていたので、今後はpyreflyリポジトリを追うのがよさそうです。
各ツールの比較¶
3 つのツールの開発元、導入方法、公開されている速度を次の表にまとめました。
| 項目 | pylyzer | Red Knot | Pyrefly |
|---|---|---|---|
| 開発元 | 個人開発(Erg 開発者) | Astral(Ruff / uv 開発元) | Meta |
| 導入方法 | pip install pylyzer | cargo build | pip install pyrefly |
| 公開ベンチマーク | pyright・pytype 比 100 倍以上 | mypy 比 約 94 倍 | 未確認 |
| 成熟度 | 開発中 | 開発中 | 開発中 |
| 成り立ち | Erg の開発から派生 | Ruff と同じリポジトリで開発 | Pyre の後継 |
※ベンチマークの値は、各プロジェクトが公開した測定値の引用です。マシンスペックや対象コード、オプションを統一したツール間の比較ではないため、既存のツールより速くなっているかを示す参考値として見てください。執筆時点では Pyrefly の公開ベンチマーク結果を見つけられなかったため、表では「未確認」としています。
まとめ¶
本記事で紹介したのは、Rust で書かれた Python 型チェッカー 3 つです。このうち pylyzer と Red Knot の公開ベンチマークでは、どちらも既存の Python 製型チェッカーより速く検査を終えています。Ruff や uv に続いて、型検査の待ち時間も短くなる可能性を示す結果です。ただし、どのツールも執筆時点で開発段階にあるため、正式版(GA)のリリースに向けて今後の開発を追っていく価値があります。
引用した数値は条件をそろえた比較ではありません。手元のコードベースで比べたい場合は、Red Knot のベンチマーク手順ドキュメントなどを参考に、同じ条件で計測してください。