Rustでrbenvよりも7秒速いRubyのバージョンマネージャーを作った

  • 11:25 - 11:50 (JST)

    • 発表言語: 日本語
    • 字幕言語: English

Rustでrbenvよりも7秒速いRubyのバージョンマネージャーを作りました。この「7秒速い」とは、特定のバージョンをインストールしてそのバージョン使用するという一連の流れ(rbenv init → rbenv install → rbenv local)が7秒速いということです。

Rubyにはランタイムのバージョンに依存したコードが多く存在します。そのため、ランタイムのバージョン管理が重要視されています。しかしながら、rbenv installの実行には環境にもよりますが、2分から3分ほどかかり、新しいバージョンをインストールするたびにこれを待つのは非効率です。主なボトルネックとなっているのは、ruby-buildと呼ばれる、シェルスクリプトで書かれた異なるバージョンのRubyを簡単にインストールするためのコマンドラインユーティリティであり、今回はこのruby-buildを含めてPure RustでRubyバージョンマネージャー「frum」を作りました。

このセッションでは、Rustでシンプルでかつ使いやすいRubyバージョンマネージャーを作るために行った工夫とfrumを作る過程で得た知見を共有します。具体的には、主に

  • ファイルのインストールを行うCLIをマクロを使って上手くE2Eテストするコツ
  • サブコマンドが複数あるCLIをRustで書く時の設計のコツ
  • コマンドラインパーサーclapを用いて作るCLIで柔軟な補完機能を実現する方法

について話します。

シェアしましょう!


プロフィール

Takayuki Maeda

Takayuki Maeda

Rustで書かれたRubyのバージョン管理ツールであるfrumとawesome-alternatives-in-rustというawesomeリストを管理しており、神戸大学で土木工学を専攻しています。最近は、RustでTUIのSQLクライアントを作っています。

Copyright © Rust.Tokyo 2021 all rights reserved.


特定商取引法に基づく表示

Twitterもぜひフォローしてください! @rustlang_tokyo

お問い合わせ: rust-tokyo-staff@googlegroups.com

過去の開催