つい最近 PC を初期化してクリーンな環境を得たので、ようやく重い腰を上げて mise を使い始めることにした。 これまでは rbenv や plenv、pyenv といった各種言語ごとのツールを使ってバージョンを切り分けていたり、すぐに使うツールは雑に brew で入れるなどをしていた。 別に困りはしなかったが、PC を初期化するタイミングで導入する。
導入と乗り換えの方針
一気にガッと変えるのは大変なので、ちょっとずつ試していける感じでやっていけると良いだろう。
まずは mise が使える環境を準備して移行手段が確立できれば、あとはやるだけになると思うし、そうなっているのが良さそう。 ひとまず今回はこれを目標にする。
mise 環境を準備する
このドキュメントに従って進める
mise のインストール
自分の好きな方法で mise をインストールする。 今回の目標は完全に脱 Homebrew ではないので、一旦 brew でインストールした。
mise を常に activate する
mise でインストールしたツールは通常 mise exec で実行する。これだとあまりにも使い勝手が悪い。
これを解決するために mise では mise activate というコマンドが提供されている。
これを使うと PATH を自動で設定してくれるため、トップレベルでインストールしたツールを実行することができる。
シェルで都度実行するのは面倒なので .zshrc に書き込んでおく。
fish ユーザーはなんと何もしなくても有効化されるらしい。
公式では以下のコマンドを実行するように案内されていたので、ここでも同じものを掲載するがそれぞれ好きな方法で好きな場所に書き込んでほしい。
$ echo 'eval "$(mise activate zsh)"' >> ~/.zshrc
Homebrew で明示的にインストールしたものを洗い出す
移行のためには自分でインストールしたものを思い出す必要があるが、Homebrew であればその必要はなくbrew leaves を叩くだけで良い。
実行すると以下のような結果が得られるので、どこかにメモしておく。
$ brew leaves ariga/tap/atlas coreutils daipeihust/tap/im-select ffmpeg gh git gnupg go-task imagemagick k1low/tap/mo mise n neovim starship zoxide zsh-autosuggestions zsh-completions zsh-syntax-highlighting
すでにちょっとずつ移行している最中に実行した結果なのでリストされているパッケージが少ないが、最初はもっと多くなると思う。
実際に使うものを見定めて mise でインストールする
mise でツールをインストールするには mise use -g [tool_name] を実行する。
今回はプロジェクト単位ではなく、ユーザー全体で利用したいツールなのでグローバルな設定としてインストールする。
さっき入手したリストを使って、現在でも必要なツールのみをインストールする。
大体同じ名前で実行すると同じパッケージが入手できるはずだと信じて実行すると、普通にコケる。
❯ mise use -g go-task mise ERROR Failed to install go-task@latest: go-task not found in mise tool registry Did you mean? go-sdk go go-jira aqua:kayac/go-katsubushi aqua:ipld/go-car
いちいち検索してやるのは面倒と思っていたら、mise ではインタラクティブなインストール機能を提供している。
ツール名を指定せずに mise use を実行すると画面いっぱいにツール名と説明がリストされる。ええやんええやん。
$ mise use -g

これを使いつつちょっとずつツールをインストールしていく。 ヒットしないものも存在するが、ヒットしない = mise で使えないではないので注意されたい。
じゃあどうするかは次に説明する。
mise backend
mise には Backend という概念があり、データソースを指す。
用意されている Backend には npm や gem、cargo といった言語ごとのパッケージ管理ツール、パッケージレジストリがあり、これらをそのまま利用できる。
バックエンドを指定するときはnpm:@google/gemini-cli のように backend 名を prefix としてつけるだけで良い。
例えば、僕の好きな git-wt というツールがあるのだが、これはインタラクティブ検索ツールには表示されない。
README ではインストールに以下のような go install を実行することが書かれている。
$ go install github.com/k1LoW/git-wt@latest
これを mise でやる場合、以下のように書き換える。
$ mise use -g go:github.com/k1LoW/git-wt@latest
とても便利。
GitHub backend
GitHub Release でリリースしているツールも先と同じようにインストールすることができる。
最近よく使っている k1LoW/mo というツールがあり、READMEでは brew のインストール方法しか案内されていない。
よくみると GitHub Release があるのでこれを利用する。この場合は以下のように実行できる。
❯ mise use -g github:k1LoW/mo github:k1LoW/mo@1.1.0 verify SLSA provenance ✔ mise ~/.config/mise/config.toml tools: github:k1LoW/mo@1.1.0
便利。
おわりに
mise を使い始めることができて、移行方法が確立できたのであとは地道にやるだけになった。
当初は Nix を使うことも検討したがラップトップの容量がそこまで大きくないのと学習コストの高さから今回は見送った。 どこかのタイミングで入門してみたいが、やるなら買い換えた時になるだろう。