
Ruby開発者なら誰もが一度は「バージョン管理と依存関係」の沼にはまったことがあるかもしれません。rvm、rbenv、bundler…などさまざまなツールが存在し、最適な組み合わせを考えるのはかなり複雑な作業となります。そんな悩みに終止符を打つべく、新しいRuby管理ツール「rv」が登場しました
開発者のAndré Arko氏は、Pythonの「uv」に感銘を受け、「Rubyにも欲しい!」と自ら開発を開始します。目指すのは、rvm + bundler + gem exec + npx のいいとこ取りで、RubyGemsのSamuel Giddins氏や、rbenvの創設者Sam Stephenson氏もチームに参加し、開発は加速中です。
rvの主な特徴は次の通りです:
-
Rubyのバージョン管理とgem依存管理を統合
複数ツールを使い分けなくてOK -
Rust製で爆速
rvm installやbundle install相当の処理をより高速に実行。 -
CLIツールの即時実行(
rvx)
npxのように、依存関係を気にせずコマンドを実行可能。 -
ツールごとの分離環境
プロジェクトと無関係なgemも安全に扱える。 -
スクリプト単体で環境構築&実行
.ruby-versionやGemfile情報を含む.rbファイルをrv runで即実行できる。
これまでのRubyツールと違いは次のようになります。
| 機能 | 従来ツール | rvのアプローチ |
|---|---|---|
| Rubyバージョン管理 | rvm / rbenv | Rust製で高速動作。コンパイル済みのRubyを爆速インストールも可能。 |
| gem依存管理 | bundler | 分離環境で衝突なし |
| CLIツール実行 | gem exec |
rvxで即時実行&依存解決 |
| スクリプト実行 | ruby + bundler |
rv runで環境込みで実行 |
まとめ
Python界隈で話題の「uv」を横目に、「Rubyにもこんな統合ツールがあれば」と願っていた方にとって、rvはまさに待望のツールとなりそうです。rvmやrbenv、bundlerを駆使していた日々から一歩踏み出し、「言語マネージャー」という新しい概念が登場したことで、Ruby開発の体験そのものが変わるかもしれません。
