MENU

Ryeとは|Armin Ronacher氏が2023年に発表したPython統合ツール

Rye アイキャッチ
Rye

RyeはFlaskやJinja2の作者として知られるArmin Ronacher氏が2023年4月に公開した、Python開発の包括的なツールチェーンである。Python本体のインストール、仮想環境の作成、依存解決、ロックファイル管理、プロジェクトのビルドまでを単一バイナリで提供し、rustupcargoのような統一体験をPythonにもたらすことを目指している。内部ではindygreg氏のpython-build-standalone配布とuvの解決機構を採用し、従来分かれていたツール群を一本化した点が画期的だった。

目次

この記事の目次

  1. 従来のPython環境構築の断片化
  2. uvとpython-build-standaloneを束ねる構成
  3. プロジェクトファイルとロックの扱い
  4. uvへの統合と今後の位置づけ
  5. まとめ

従来のPython環境構築の断片化

従来のPython環境構築の断片化

Python開発者は長らく、Python本体はpyenvやasdf、仮想環境はvenvやvirtualenv、依存はpipとrequirements.txt、もしくはpoetry/pipenv、ビルドはsetuptoolsかhatchling、と複数ツールを組み合わせるのが当たり前だった。新メンバーのオンボーディングではこれらの関係を説明する必要があり、pip installが壊れた、pyenv installが依存欠如で失敗するといった事故も日常的だった。Armin Ronacher氏自身がブログでこの状況の不満を表明していた。

2023年4月のRyeの最初の公開は半ば「個人の不満から生まれた実験」という位置づけで紹介されたが、CargoライクなUXへの渇望は強く、わずか数か月でGitHubスター数1万を突破した。rye initでプロジェクトひな形を作り、rye add requestsで依存を加え、rye run pythonで実行する一連の流れが新鮮に映ったのである。

uvとpython-build-standaloneを束ねる構成

uvとpython-build-standaloneを束ねる構成

Ryeの内部構造は外注に近い設計で、Python処理系はGregory Szorc氏のpython-build-standaloneプロジェクトが配布する事前ビルド済みバイナリを利用する。これによりmacOSやLinuxでopensslやreadlineといった依存に悩まされる必要がなく、rye fetch 3.12.1一発で導入が完了する。Windowsでも同様にビルド済みPythonが提供される。

依存解決は2024年以降、Astral社が公開したRust製の超高速ツールuvに置き換えられ、pip-toolspoetryのlock処理を桁違いに高速化した。Ryeは独自に解決器を持たず、上流のuvを呼ぶことで本体を薄く保つ方針を採っている。Ronacher氏は2024年にAstralと協業しRyeをuvへ統合する方向性を発表しており、PythonツールチェーンがRustベースに集約される流れの中心にRyeが立っていた。

プロジェクトファイルとロックの扱い

プロジェクトファイルとロックの扱い

プロジェクト設定はPEP 621準拠のpyproject.tomlを中心に据え、独自セクションを最小限に抑える。依存は[project] dependencies[tool.rye] dev-dependenciesに分かれ、rye syncでロックファイルrequirements.lock/requirements-dev.lockを更新する。ロックファイル形式が独自TOMLではなくpip互換のrequirements形式である点が、他ツールとの相互運用を容易にしている。

Poetryと比較すると、Poetryがpyproject.toml[tool.poetry]にあらゆる情報を集めるのに対し、Ryeは標準セクションを優先する。これによりhatch・flit・setuptoolsなど他のビルドバックエンドにそのまま乗り換えやすく、ロックインを避ける思想が見て取れる。rye buildで配布物を作り、rye publishでPyPIへアップロードする一連の流れもCargo風に整っている。

uvへの統合と今後の位置づけ

uvへの統合と今後の位置づけ

2024年2月にAstral社がuvを公開した時点でRyeとuvの機能重複が問題として浮上し、同年中にRonacher氏は「Ryeの今後はuvへ統合する」とブログで表明した。Astral社は段階的にRyeのプロジェクト管理機能をuvに取り込み、2024年8月のuv 0.4系ではuv inituv addによってRyeとほぼ同等の体験が提供されるようになった。

とはいえRyeは引き続き使え、既存ユーザーは急いで移行する必要はない。Pythonツールチェーンの統一を推進した功績は大きく、Cargo風のUXがPythonコミュニティで現実的に成立することを示したという意味で、後続ツールの設計に多大な影響を与えた。新規プロジェクトではuvを選ぶ判断が増えているが、Ryeのドキュメントや教訓はそのまま参照価値を持ち続けている。

まとめ

Ryeは2023年にArmin Ronacher氏が個人プロジェクトとして公開し、Pythonの分散していたツール群を一本化する道筋を示した。後にuvへ統合される方向となったものの、Cargo風の統一体験がPythonでも成立することを実証した点で歴史的価値は大きく、現在のuv中心のエコシステムを準備した存在として記憶されるべきツールである。

※本記事はIT用語辞典の手書きドラフトです。公開前に最新情報・出典を確認のうえ加筆修正してください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

目次