Pythonプロジェクトが大規模になるにつれ、型チェックの速度や精度は開発体験を左右する重要な要素になります。mypyは長年のデファクトスタンダードとして広く使われていますが、コードベースが数万行を超えると、チェックに数十秒以上かかることも珍しくありません。
そのような課題に対して、Rust製の新世代型チェッカーが注目を集めています。その中でも、2025年にMeta(Facebook)がオープンソース化した「Pyrefly」は、mypyやPyrightを大幅に上回る処理速度と、IDEとの緊密な統合を特徴とする型チェッカーです。
2026年5月にv1.0.0として安定版がリリースされ、Instagramの2,000万行Pythonコードベースでの本番運用実績やPyTorch・JAXでの採用実績を持つPyreflyは、大規模Pythonプロジェクトの型チェック環境を変える可能性を持っています。
本記事では、Pyrefly(facebook/pyrefly)の仕組みと特徴、mypy・Pyright・tyとの比較、インストールと基本的な使い方を解説します。
Pyreflyとは:Metaが開発したRust製のPython型チェッカー
Pyreflyは、MetaがPython向けに開発した型チェッカーおよび言語サーバーです。公式サイトでは「A fast type checker and language server for Python」と説明されており、コマンドラインツールとしての型チェック機能と、IDEとのリアルタイム統合機能の両方を提供します。
Pyreから始まった経緯
MetaはInstagramのPythonコードベースの品質向上を目的に、2017年からOCaml製の型チェッカー「Pyre」を開発・運用してきました。しかし、コードベースが拡大するにつれ、IDEでのリアルタイム応答性に限界が生じました。
この課題を解決するため、MetaはPyreをRustで再設計することを決断しました。Rustの低水準なメモリ管理と並列処理の効率性を活かすことで、Pyreの後継にあたるPyreflyが誕生しました。
(出典: Introducing Pyrefly: A new type checker and IDE experience for Python - Engineering at Meta)
v1.0.0 の安定版リリース
2025年5月のオープンソース化を経て、2026年5月にPyrefly v1.0.0が安定版としてリリースされました。本番環境での採用実績も着実に増えています。
- Instagramのコードベース: Meta社内でInstagramの2,000万行Pythonコードベースのデフォルト型チェッカーとして採用
- OSS採用: PyTorch、JAXなどの主要Pythonプロジェクトで利用
ライセンスはMITで、商用・非商用を問わず自由に利用できます。
Pyreflyの主な特徴
毎秒185万行:圧倒的なチェック速度
Pyreflyの最大の特徴は処理速度です。公式のベンチマークによると、毎秒185万行以上のコードを型チェックできます。
大規模なパッケージでの比較では、その差が顕著に表れます。Pandasのコードベースをチェックした場合、Pyrightが144秒かかるのに対し、Pyreflyは1.9秒で完了します。NumPyでも、Pyrightが70.9秒に対してPyreflyは4.8秒です。
(出典: Python Type Checker Comparison: Speed and Memory Usage | Pyrefly)
この速度差の技術的な背景はRust実装にあります。mypyはPython、PyrightはTypeScriptで実装されているため、低水準のシステム言語であるRustで書かれたPyreflyとは実行効率に根本的な違いがあります。
v1.0ではエディタ内の増分更新もさらに最適化され、編集後の診断更新時間が2.4秒から19ミリ秒に短縮されています。
型注釈なしでも動く:積極的な型推論
Pyreflyは型注釈が付いていないコードに対しても、積極的に型を推論します。たとえば、return str(value) という関数があれば、型注釈がなくても戻り値の型を str と自動的に推論します。
これにより、既存の型注釈が少ないコードベースでも、多くの型エラーを検出できます。また、pyrefly infer コマンドを使うことで、推論された型注釈をソースコードに自動的に挿入することも可能です。
IDE統合:リアルタイムの型チェック
Pyreflyは言語サーバー機能を内蔵しており、対応するエディタでリアルタイムの型チェックが利用できます。
対応エディタ:
- VSCode: Marketplace からインストール可能
- Neovim: 設定済み言語サーバーとして利用可能
- Zed: 対応済み
- PyCharm、Vim、Emacs: 言語サーバーとして接続可能
提供される機能:
- コード補完: 型情報に基づいたインテリジェントな補完
- ホバー情報: 変数や関数にカーソルを合わせると型情報を表示
- セマンティックハイライト: 型の種類に応じた構文ハイライト
- コードナビゲーション: 定義元へのジャンプ
Pydantic・Django対応:フレームワーク統合
Pyreflyは、PydanticとDjangoに対する組み込みサポートを持っています。Pydanticのモデル定義やDjangoのモデルフィールドを正しく解析し、型チェックやコード補完が適切に機能します。既存のフレームワーク固有のスタブファイルに頼らなくても、精度の高い型解析が行えます。
mypy・Pyright・tyとの違い:どれを選ぶべきか
2026年現在、Pythonの主要な型チェッカーには4種類があります。それぞれの特性を理解した上で、プロジェクトに合ったツールを選ぶことが重要です。
4ツールの比較
ツール | 実装言語 | 型仕様適合性 | フルチェック速度 | 増分更新速度 | 設計思想 |
|---|---|---|---|---|---|
Pyrefly | Rust | 87.8% | 速い | 中 | 積極的推論・段階的移行支援 |
Pyright | TypeScript | 97.8% | 遅い | 遅い | 仕様最重視・VSCodeネイティブ |
ty(Astral製) | Rust | 53.2% | 速い | 最速 | 保守的推論・既存コード統合重視 |
mypy | Python | 58.3% | 最遅 | 最遅 | デファクト標準・互換性最重視 |
型仕様適合性はPython Typing Spec適合テストの合格率です(2026年3月時点)。
(出典: Python Type Checker Comparison: Typing Spec Conformance | Pyrefly)
Pyreflyが向いているケース
- 大規模コードベース: mypyやPyrightでチェックが遅すぎる場合
- 積極的なエラー検出: 型注釈が少ないコードでも多くの問題を検出したい場合
- 段階的な型付け: 既存プロジェクトにcheckコマンドと suppress/infer を使って少しずつ型を追加したい場合
- IDE体験の改善: コード補完や型情報の表示をリアルタイムで利用したい場合
Pyrightが向いているケース
- 型仕様への高い適合性を重視する場合(97.8%)
- VSCodeとのネイティブ統合(Pylance経由)が必須の場合
- 型エラーの判断精度を最優先にする場合
tyが向いているケース
- エディタ内での超高速な増分更新を求める場合(4.7ms)
- 既存コードベースへの統合で新たなエラーが増えることを避けたい場合
- Astralのツール群(uv、ruff)との統一を検討している場合
mypyが向いているケース
- 既存プロジェクトでmypyを使用中で、移行コストをかけたくない場合
- サードパーティプラグインのエコシステム(pytest-mypy等)に依存している場合
- 枯れた安定性を最優先にする場合
Pyreflyのインストールと基本的な使い方
インストール
Pyreflyは主要なPythonパッケージマネージャーから利用できます。
# pip
pip install pyrefly
# uv(試用時に便利)
uvx pyrefly init
# conda
conda install -c conda-forge pyrefly
# Poetry
poetry add --group dev pyrefly
(出典: Installation | Pyrefly)
初期化
プロジェクトディレクトリで pyrefly init を実行すると、既存のmypyやpyrightの設定を読み込みながら設定ファイルを生成します。
pyrefly init
このコマンドは pyproject.toml または pyrefly.toml に設定を書き込み、既存の型チェッカーからの移行を自動的にサポートします。
(出典: https://github.com/facebook/pyrefly/blob/main/README.md)
型チェックの実行
設定が完了したら、次のコマンドで型チェックを実行できます。
pyrefly check --summarize-errors
エラーが検出された場合、行番号と型エラーの内容が出力されます。--summarize-errors フラグを付けることで、エラーの概要を集計して表示します。
(出典: https://github.com/facebook/pyrefly/blob/main/README.md)
エラーの抑制と段階的移行
既存のコードベースにPyreflyを導入すると、初回は多くのエラーが検出されることがあります。pyrefly suppress コマンドは、既存のエラーをコメントで抑制しながら、新規コードから段階的に型チェックを適用できるようにします。
# 既存エラーをコメントで抑制
pyrefly suppress
(出典: https://github.com/facebook/pyrefly/blob/main/README.md)
これにより、「今あるエラーはいったん目をつぶり、これ以上新しいエラーを増やさない」という段階的な移行戦略が取れます。
既存プロジェクトへの段階的な導入
Pyreflyは、既存のPythonプロジェクトへの段階的な導入を支援するツールセットを提供しています。
init → suppress → infer の3ステップ移行が基本的なアプローチです。
- init: 既存のmypy/pyright設定を読み込みながらPyrefly設定を生成
- suppress: 既存エラーをコメントで一時抑制(新規コードのみチェック対象化)
- infer: 型推論の結果を元に型注釈を自動生成(段階的に型付けを充実)
Meta社内でもInstagramの20,000,000行のコードベースをこのアプローチで移行しており、すべてのエラーを一度に解決する必要はありません。大規模コードベースほど段階的移行の恩恵が大きいといえます。
まとめ:Pyreflyが目指す高速・実用的な型チェック体験
PyreflyはRust実装による圧倒的な処理速度と、IDEとのリアルタイム統合を両立した型チェッカーです。v1.0.0の安定版リリースにより、本番環境での実用性も証明されています。
型仕様適合性ではPyrightに劣る部分もありますが、大規模コードベースでの速度やIDE体験、そして段階的移行支援ツールという点では独自の強みを持っています。
採用の判断軸は「速度とエラー検出の積極性を重視するか、型仕様への適合性を重視するか」になります。Instagramのような大規模なPythonコードベースを持つプロジェクトや、mypyの遅さに課題を感じているチームにとって、Pyreflyは有力な選択肢です。
詳細は公式ドキュメント(pyrefly.org)およびGitHubリポジトリから確認できます。



