rcmdnk's blog

Rust & Python Integrated: Harnessing the Power of Systems and Scripting for High-Performance Development: A Comprehensive Guide 2025

Python周りがいつの間にかRust製のツールばかりになってきた状態のまとめ。

Python環境構築ツール

  • Python管理、パッケージ管理、プロジェクト管理: uv
  • Linter, formatter: ruff
  • 型チェック: ty
  • pre-commitマネージャー: prek
  • uvの管理、仮想環境自動認識: mise

uv, ruff

uv, ruffはAstral社製のツールで既にかなり広く使われてる印象。個人的には1年ちょっと前位に全面的に poetryblack, isort などから移行していきました1

ty

tyは型チェックツールとして mypy の代替えツールですが、 これもAstral社製で、昨年末にベータ版がリリースされました2

mypyはチェックツールの中でも圧倒的に時間を食うツールでしたが、tyはかなり高速で、ruffなどの実行と比べてもそれ程気にならないレベルになります。

設定としては基本的にはデフォルトの設定のままで使ってます。 最初はmypyで通った部分もいくつかerror/warningを出して修正する必要がありました。 逆にtyで通った部分がmypyのエラーとして漏れているかどうか、はすぐに判断することは出来ないので、たまにmypyを走らせてみて特にエラーが出ない事を確認したりしていますが今のところは特に漏れはなさそうです。

型チェックツールとしては pyrefly など他にもありますが、ruffに合わせたい、程度の理由で現状はtyを使っています。

prek

prekはpre-commit の機能をRust製で実装したツールで、pre-commitの設定ファイルをそのまま使うことができます。

すでに有名なプロジェクトもpre-commitからprekに移行していて、 Astralのruff/tyもprekを使っています。

Who is using prek?

置き換えは簡単でprekを開発用パッケージとしてインストールして、 prek installを実行して.git/hooks/pre-commitprekように置き換えるだけです。 手動で時刻する際にはprek runprek run --allなど、基本的な使い方はpre-commitと同じです。

実際パッケージをインストールしたりする際はpre-commitよりも高速で、 特にpre-commitとの使い勝手などの差は無いので移行がおすすめです。

mise

miseは direnv のような仮想環境自動認識機能や、 PythonやNode.js製のツールなどを管理したり、 タスクランナーのような機能もあるツールで、これもRust製です。

レポジトリのトップに.mise.tomlというファイルを置いておくとuvで管理されてるプロジェクトであれば自動的にuvの仮想環境を認識してactivateした状態にしてくれます。 レポジトリの外に出れば自動的にdeactivateしてくれるので、仮想環境のactivate/deactivateを意識する必要がなくなります3

また、uvコマンドもmiseで管理しています。

macOSだと色々なものをHomebrewで管理してますが、 Homebrewだと少しバージョンアップデートが遅いことや、 今のHomebrewだと古いバージョンのまま留めておく、ということが難しいので、 バージョンをきちんと管理したいツールなどはmiseで行うようにしています。

uvbunなどのパッケージ管理用のCLIツール、codexなどのNode.js製のツールなど4

mise自体はHomebrewで入れたり必要であれば直接インストールしたりします。

python-template

上の環境のテンプレートです。

現在はデフォルトを主に上のRust製のツールに置き換えた状態にしてあります。

Sponsored Links
Sponsored Links

« macOSでGoogle日本語入力のアップデート時に再起動を要求されても再起動を避ける

}