ABCABC Tech Catalog

バージョン管理ツールをasdfからmiseに切り替えた感想

数年ぶりにバージョン管理ツールを mise に変えてみた

セットアップとバージョン管理ツール

最近、新しいMacBook Proをセットアップする機会がありました。

M4 世代の MacBook Pro いいですね。何より Nano-texture のディスプレイが本当にいいです。

慣れたら昔のテッカテカ画面のMacBook Proが使えなくなりそうです。

新しい端末を買ったときのセットアップも、ただ今まで通りのものをいれているだけというのもどうなんだ、というところで今回はバージョン管理ツールを切り替えることにしました。

バージョン管理ツールはセットアップには欠かせないですからね。

今までは asdf を使っていましたが、そろそろ新進気鋭のバージョン管理ツールがあるやろ、と思っていたところ mise というものがあって、それがとてもよさげだったので試しました。

mise について

mise は「開発環境セットアップツール」です。意味はフランス語の「setup」で発音は meez とのことです。

特徴としては

  • mise.toml を元にプロジェクト毎の環境を管理出来る
  • Python や Node.js のバージョン管理が可能
  • 環境変数の管理も可能
  • ビルドやテストのタスク管理機能も付いている

といったところになります。

特に環境変数の管理については、 asdf にはなかった機能で、必要であれば direnv を使う必要がありました。

ディレクトリ毎に環境変数を設定してくれると、主にAWSのCredentials等で Shellベースで操作をするときなどで便利に使えます。

まあ、とはいえ、個人的にはこういったものは結局本丸のバージョン管理がどれくらい使いやすいねん、というところが全てだと思っていますのでそこまで刺さらなかったのですが

公式ドキュメントの Comparison to asdf のページが面白くて、

UXのところにある画像で

asdf has a lot of strange UX papercuts commands should be verbs never an adjective

など意図強め(だけど確かに…)な表現が多く見られたので、使い勝手を確認すべく移行を決心しました。

asdf からの移行手順も上記ページにあるので、もし興味が出て移行したくなった場合は参照してください。

使い方

インストール

インストール方法は 公式ドキュメント Getting Started を参照してください

2024/12時点では

curl https://mise.run | sh

~/.local/bin/mise としてインストールされますので、各ShellにあわせてPATHを通します。

Python の環境構築例

早速Pythonの環境構築での例です。

まず、インストール出来そうなバージョンを確認します。

ls-remote コマンドを使えばOKです。これは覚えやすい。

mise ls-remote python@3.12

のように、末尾にバージョンを指定すれば、それに合った形のものを一覧で返してくれます。

上記の例だと

3.12.0
3.12-dev
3.12.1
3.12.2
3.12.3
3.12.4
3.12.5
3.12.6
3.12.7
3.12.8

みたいな感じです。 mise use python@3 のようにすれば、バージョン3系が全て候補として出てきます。

そしたら、あとはいれるだけです。

mise use python@3.12.8

これだけで入ります!

global なバージョンを指定する場合は

mise use -g python@3.12.8

のように指定すればOKです。

mise ls python

のようにすればインストール済みのPythonのバージョンおよびglobalに指定されているバージョンの確認が出来ます。

年々覚えられるコマンドが減ってきたので、コマンドが覚えやすいのは非常に助かります。

もっとも、 asdf という文字列のほうが打ちやすいのは打ちやすいのですが…

環境変数を設定してみる

先ほど記述したように、フォルダ毎の環境変数設定にも対応します。

mise set FOO=bar

としておけば、環境変数 FOObar という値が入ります。

管理ファイルの mise.toml

[env]
Foo = "bar"

[tools]
python = "3.13.1"

のように入り、それで管理されます。

解除は

mise unset FOO

でOKです。

シークレットなどのローカルに置いておくべき環境変数の場合は、 mise.local.toml を作成して、gitignoreしておくと良いかと思います。

ちなみに、mise.local.toml のあるフォルダにいくと、信頼するか?と聞かれるので、 mise trust すればOKです。

まとめ

今回はバージョン管理ツール mise についてでした。

コマンドそのものが非常に覚えやすいですし、確かに asdf に比べて plugin add などのコマンドを打つ必要がないのでとても快適に感じました。

やっぱり定期的に使用ツールの見直しが必要ですね。

最大の課題は、 mise という単語を覚えられるかどうか…ですね。。

どうしても手癖で misc と打ってしまうたびに、もう若くないんやなあ…と思わされてしまいます 🫠

AUTHOR

伴 拓也

朝日放送グループホールディングス株式会社 デジタル・アーキテック局 データ戦略チーム

アプリケーションからインフラ、ネットワーク、データエンジニアリングまで幅広い守備範囲が売り。最近はデータ基盤の構築まわりに力を入れて取り組む。 主な実績として、M-1グランプリ敗者復活戦投票システムのマルチクラウド化等。

WORK@ABC

技術力を培うための
環境と文化

ABCに昔から根付く「自分たちで開発する」文化を支える環境や取り組みをご紹介します
ABCについてもっと知る