miseって何?Pythonはどこから来るの?
miseというものを聞きました。知らなかったので調べました。ついでに私がよく使うPythonのインストールの流れも一応把握したかったので、調べました。調べたメモを共有します。
基本的には、Claudeを使って調査を行い、その調査結果を私が読んで私の理解を書いたものになっています。
miseって何?
miseはRust製のツールバージョン管理ツールです。複数のプログラミング言語に対応しています。asdf・nvm・pyenv・rbenvなどを置き換えるツールです。miseはasdfの影響を受けていて、asdfのプラグインを活用できる状態で、より高速かつフレンドリーなユーザー体験を提供する。
公式ドキュメント:https://mise.jdx.dev/
ちなみに、複数のプログラミング言語に対応していることを、「ポリグロット(polyglot)対応」と呼ぶらしい。
miseは2022年ごろに作られたツールとのこと。
asdfって何?
ツールバージョン管理のツール。プロジェクトに関わるツールのバージョン定義を .tool-versions に記載して、リポジトリに入れておくことでチームメンバーが利用しているバージョンを揃える。asdfは2014年ごろに作られたツールとのこと。ちなみにこの辺にたくさんのプラグインがある。
https://github.com/asdf-vm/asdf-plugins
miseの使い方
インストールして、以下のように実行すると、 .mise.toml が出来上がって、そのディレクトリではPython3.13が利用されるようになるようです。(試していません)
mise use [email protected]
主要なコマンド
mise use node@20 # バージョンを指定して使う
mise install # .mise.tomlに書かれたツールを一括インストール
mise ls # インストール済みツールの一覧
mise ls-remote node # インストール可能なバージョンの一覧
mise current # 現在使われているバージョンの確認
mise run <task> # タスクの実行
どうやって切り替わる?
miseをインストールしておくと mise.toml が設置されたディレクトリに移動すると参照先が切り替わるようです。興味として、どういう仕組みで切り替えているのか知りたかったので、調べました。
使っているシェルにactivateコマンドを書いておくとディレクトリ切り替えのタイミングで読み込まれるようです。
zshの場合は、~/.zshrc にこんな感じに書くようです。(試していません)
eval "$(mise activate zsh)"
私はfishを使っていますが、 その場合は ~/.config/fish/config.fish に以下のように書くようです。(試していません)
mise activate fish | source
miseが参照するPythonってどこでビルドされてる?
私が、よく使うのはPythonです。mise経由でPythonを呼び出すことになるということはそのPythonはどこでビルドされたものなのだろう?と思いました。
調べてみたところ、公式サイトのこの辺に記載されていました。
https://mise.jdx.dev/lang/python.html
python-build-standalone というところからコンパイル済みのPythonバイナリをダウンロードするようです。
python-build-standalone は誰が管理してるの?
次は、「これは誰が管理・運営しているの?」という疑問が湧きました。
これも調べてみたところ以下のサイト情報では、現在はAstralが管理しているようです。もともと、個人が管理していたものを uv でも同じようにビルド版をダウンロードしたい話が出てきて、それをAstralが引き取ったようです。へー。
https://michaelbommarito.com/wiki/programming/languages/python/python-build-standalone
最近、Astralの話をよく聞きますね。
こちらからは以上です。