Tech Racho エンジニアの「?」を「!」に。
  • IT Tips

miseは便利: タスクランナー兼ツールバージョン管理&環境変数管理ツール

きっかけ

上のポストを見て「mise、どっかで聞いたことあるな...🤔」と思ったら、何のことはない、Railsガイドの訳文をRails 8向けに更新したときにmiseを使ったRubyインストール方法が指示されていたのでした↓。

参考: Ruby on Rails インストールガイド - Railsガイド

Railsがどういう経緯でmiseをガイドで使うようになったのかよくわからなかったのですが、以下の速報記事でどうやらDHHがmiseを気に入っていることがわかりました。

速報: Rails World 2025のDHHキーノートとRails 8.1beta1リリース

なお、Rubyの公式ドキュメントにも、Rubyインストール用のマネージャとしてmiseがmise-en-placeという名前で掲載されています。

参考: Installing Ruby

miseとは

Rustで書かれたツールです。
コマンド名はmiseですが、mise-en-placeが正式名のようです。どっちで呼んだらいいのやら。

jdx/mise - GitHub


同リポジトリより

作者のJeff Dickeyさんのインタビューを見つけました↓。

miseそのものは、フランス語としての発音は「ミーズ」なんだそうです。とわかってても、私はついつい英語風に「マイズ」と発音してしまいがち😅。まあ上のYouTube動画の自動字幕でもmiseを"me is"と解釈しているぐらいなので無理もなさそう。

豆知識

mise en place〈フランス語〉(料理の)下準備、下ごしらえ

mise-en-placeは「ミザンプラス」と読むようです。フランス語なのですが、英語圏の料理人なら必ずといっていいほど知っている用語らしく、ハイフンを付けなくても通じるレベルだとか。日本で豆板醤(トウバンジャン)が中国語読みで通じるみたいなものかも。

フランス語のmiseは単体ではほとんど使われない助詞的な品詞なんだそうです。

似たようなフランス語由来の英語でmise-en-scène(ミザンセーヌ:演劇用語の「演出」に相当し、直訳は「場面の配置」)というのもあります。これもフランス語でありながら、やはり英語圏の演劇や映画方面で普通に通じるそうです。

もっとニッチなものとして、漫画のコマ割りをわざわざmise-en-page(ミザンパージュ、直訳だと「ページの配置」?)と呼んでいるのを見かけたことがあります。

フランス語何もわからない。

miseってどんなツール?

上のポスト先の記事にもあるように、miseは以下を行えるツールであるそうです。

  • タスクランナー(makeもしくはrake的)
  • パッケージ管理とツールバージョン管理(ちょっと試した)
    • asdfで扱えるものはRubyやPythonやNodeなども含め一通り扱えるようです
    • Registoryを見るとめちゃくちゃ多い
  • 環境変数管理(direnv的、まだ試してない)

上のポストでmise記事を読み、とりあえず私はmakeコマンドとMakefileの進化版のような感じで、プロジェクト固有の各種コマンドを、プロジェクトのrootディレクトリのmise.tomlファイルに仕込んで、タスクランナーとして使いました。

mise.tomlファイルに仕込んだコマンドは、mise run コマンド名で即座にコマンド実行できますし、mise runだけ実行すれば、その時点で実行可能なコマンドリストを表示して、矢印キーで選んで実行、といったことができます。

「何これ、makeよりもrakeよりも全然いいじゃない!😂」という気持ちでした。

今ならmise.toml設定ファイルはClaude Cldeに書かせればいいので楽でいいですね😋。

参考: 付録 2: make と Makefile

もちろんDockerコンテナ内やdevcontainer内でも使えます。

依存関係の少ない軽めのプロジェクトであれば、Dockerコンテナ化するよりmise run install-toolとかを整備しておく方が楽かもしれません。

特にmise upでツールやNodeパッケージなどを一括アップデートできるのは便利ですね。

miseはMakefile代わりだけじゃない

しかし、RailsガイドでRubyをインストールするのにも使われていることからもわかるように、miseはパッケージ管理にも使えるようです。しかもRubyに限らず、PythonやGoのバージョン管理や、Nodeなど多くのパッケージを管理できるようです。

私の場合、今使っているのはanyenv経由でのrbenvやらpyenvやらですが、これらをmiseのパッケージ管理下に移行するのがよいのか...?という気持ちに一瞬なりましたが、以下の記事の冒頭に追記したように、macOS 15 SequoiaではRuby 3.0.6をビルドできなくなっています(それ以前のRubyバージョンもSequoiaではビルド不可能になったはず)。

M1/M3 MacでRuby 2.4〜3.4をrbenvでビルドする最小限のセットアップを全部調べた

rbenvでこれまでビルドしていたRubyバージョンをmiseに移行しようがないので、rbenvは当面使い続けることにしようと思います。

$ rbenv versions
  system
  2.4.10
  2.5.9
  2.6.8
  2.7.8
  3.0.6
  3.1.4
  3.2.6
  3.2.7
  3.2.9
  3.3.6
  3.3.7
  3.3.8
  3.3.9
  3.4.0
  3.4-dev
  3.4.1
  3.4.2
  3.4.3
  3.4.4
* 3.4.5 (set by /Users/hachi8833/deve/rails/enno/enno_docker/.ruby-version)
  3.5.0-preview1
  ruby-dev

Rubyバージョンを追加して利用可能にする

miseをインストール後、プロジェクトでmise use ruby@バージョン名を実行すれば、そのプロジェクト内でそのバージョンのRubyが使われるようになります。rbenv用に設定したRUBY_CONFIGURE_OPTSLD_PRELOADといった環境変数もそのまま使われました。

内部的にはrbenvと同様にruby-buildを参照しているそうです。

$ mise use ruby@3.4.5
mise ruby@3.4.5                                                                                   ⠁  0s
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 22.1M  100 22.1M    0     0  7206k      0  0:00:03  0:00:03 --:--:-- 7208k
mise ruby@3.4.5 ✓ installed                                                                            mise ~/deve/rails/enno/enno_jp/mise.toml tools: ruby@3.4.5

プロジェクトにmise.tomlがなければ作ってくれます。rbenv install バージョン名より表示がシンプルな印象です。

which ruby
確認すると、~/.local/share/mise/installs/ruby/3.4.5/bin/ruby にインストールされていました。

ruby -v
ruby 3.4.5 (2025-07-16 revision 20cda200d3) +YJIT +PRISM [arm64-darwin24]
$ which ruby
/Users/hachi8833/.local/share/mise/installs/ruby/3.4.5/bin/ruby

ただし、.ruby-versionファイルとの同期までは取ってくれないので、.ruby-versionの内容は自分で更新する必要があります。

Claudeはlegacy_version_fileを使うと.ruby-versionとも共存できると教えてくれましたが、調べてみると廃止が決まっていたので、以下のようにidiomatic_version_file_enable_tools[]を指定することで.ruby-versionを参照できるようです。

# .config/mise/config.toml
[settings]
idiomatic_version_file_enable_tools = []

いずれにしろ、miseでRubyをインストールするのであれば、miseのRubyパスとrbenvのRubyパスのどちらが優先されているかは把握しておく必要があります。

参考: mise で deprecated [idiomatic_version_file_enable_tools]: となったら #mise - Qiita

なお、miseでインストールしたRubyをアンインストールするにはmise uninstall ruby@3.4.5のようにします。

まとめ

miseは、ひとまずタスクランナーとして即便利に使えると感じられました。
バージョン管理や環境変数管理は、既存の環境の都合もあるので、手に馴染んでからでもよいかなと思っています。

追記

miseが入っていないRailsプロジェクトをghで取ってきたら、なぜか既に入っているRuby 3.4.5をインストールし始めました 🫠

これを止めるには、以下のいずれかを行います。

  • ~/.config/mise/config.tomlに以下を書く
[settings.status]  
missing_tools = "never"
  • 以下を実行する
# 警告を完全に無効化  
mise settings set status.missing_tools never  

# または特定の条件でのみ表示  
mise settings set status.missing_tools if_other_versions_installed

関連記事

Espansoツールで定形テキストを爆速で入力する

Mac: Coherence XでChromeブラウザを用途ごとにアプリ化する


関連記事

該当する記事がありません。

CONTACT

TechRachoでは、パートナーシップをご検討いただける方からの
ご連絡をお待ちしております。ぜひお気軽にご意見・ご相談ください。