🃏

ターミナルを使う人は、とりあえず「mise」を入れておく時代。  ・・・を夢見て。

に公開

「mise」ってすごい使いやすいんですよ。

miseとは GitHubリポジトリの説明書きに 「dev tools, env vars, task runner」 と書かれているrust製のcliツールです。

この記事ではmiseヘビーユーザーの私が推したい生産性の上がる機能を紹介するので、miseを初めて知った人も、知ってるけど使ってないって人も、ぜひ一読してみてください。

ちなみに最近話題になりやすいAIツールのcliパッケージなどもmiseで管理できたりします。

https://github.com/jdx/mise
https://mise.jdx.dev/

推したい機能はこれです!

① タスクランナー(私が推したい機能No.1)

私はmiseにおいてはタスクランナーが一番便利な機能だと思っているので最初に紹介します。

タスクランナーはmise.tomlによく使うスクリプトをタスクとして定義しておいて、mise runコマンドで実行する機能です。

※設定ファイルはグローバルで有効な~/.config/mise/config.tomlや配置ディレクトリ配下でのみ有効でバージョン管に含めても良い./mise.toml、それの上書き用の./mise.local.tomlなどがありますが、この記事では前者を使う形で書き進めていきます。

便利なところ

mise runと実行すると定義したタスクの一覧が説明付きで表示されて↑↓キーでタスクを選ぶことができるので、わざわざコマンドを覚える苦悩から解放されます。(設定ファイルの話を後回しにするほどには、まずは実行している所を見てほしい。)

mise run
mise runコマンドでタスクを実行する

また、設定ファイルにconfirm = "確認メッセージ"を追加するだけで、実行前に確認のステップを挟むこともできるので、慎重に行う必要があるタスクの安全性も担保できたりします。


危険なタスクは実行前に確認できる

実際の設定ファイルはこのようなフォーマットです。

~/.config/mise/config.tomlの例
[tasks.random-member]
description = "メンバーをランダムに選ぶ"
run = "shuf -n 1 -e Alice Bob Charlie Dave"

[tasks.aws-sso-login]
alias = "al"
description = "SSOでログインして、現在のセッションに認証情報を設定する"
run = "aws sso login"

[tasks.gh-list-deploy]
description = "デプロイの実行履歴を表示する"
run = """
gh run list \
    --repo firstcontributions/first-contributions \
    --limit 10
"""

[tasks.dangerous-task]
confirm = "全部消えます。本当に実行するんですか?"
description = "危ないやつ。"
run = "rm -rf /*"

個人で使うのはもちろんですが、バージョン管理に含めて開発チームで共有して使えば、開発効率の向上を感じることができるかと思います。

② パッケージ管理(私が推したい機能No.2)

nodenvとかpyenvとかrbenvとかasdfとか使ってても良いけどね。
でも、miseは.node-versionとかもちゃんと解釈してくれるので、miseに乗り換えても差し支えなさそうだと思っています。

mise.tomlでランタイム等の管理ができます。mise useコマンドを使っても良いし、設定ファイルを直接書いちゃっても良いです。

基本的なパッケージの追加の例
$ mise use -g node@24
設定ファイル
$ cat ~/.config/mise/config.toml
[tools]
node = "24"

便利なところ

nodeパッケージやpythonパッケージなども一緒に管理できます。
なので、gemini-cliやclaude-codeもmiseで管理することができます。

gemini-cliをmiseで入れてみる
$ mise use -g npm:@google/gemini-cli
$ gemini --version
claude-codeをmiseで入れてみる
$ mise use -g npm:@anthropic-ai/claude-code

$ claude --version
1.0.35 (Claude Code)
設定ファイルはこんな感じ
$ cat ~/.config/mise/config.toml
[tools]
node = "24"
"npm:@anthropic-ai/claude-code" = "latest"
"npm:@google/gemini-cli" = "latest"
mise list の結果はこんな感じ
$ mise list
Tool                           Version           Source                      Requested
node                           24.2.0            ~/.config/mise/config.toml  24
npm:@anthropic-ai/claude-code  1.0.35            ~/.config/mise/config.toml  latest
npm:@google/gemini-cli         0.1.4             ~/.config/mise/config.toml  latest

npm install -gとかpip installでグローバルが散らかることを回避できます。

③ 環境変数管理(別に推してる訳ではない機能)

dotenvとかdirenvとかを使ってても良いけどね。

miseの機能としてはこれで全部なので、書くだけ書いてます。

環境変数をmise.tomlに定義しておけば、mise.toml ファイルがあるディレクトリ配下にいる間は勝手に定義した環境変数が反映された状態になります。

環境変数も定義できる
[env]
AWS_REGION = "ap-northeast-1"
NODE_AUTH_TOKEN = "gho_abcdefghijklmnopqrstuvwxyz1234567890"
_.file = "./.env"

.envを読み込む設定もあるので、既存の環境を壊さずに徐々にmiseに乗り換えることもできそうです。

簡単すぎるインストール方法!

公式の最初に書かれている方法だけ載せておきます。

インストールからコマンド実行まで
$ curl https://mise.run | sh
$ echo 'eval "$(mise activate bash)"' >> ~/.bashrc

$ mise version

他にもapt、yum、brewなどでのインストール方法も記載されており、大抵の環境には対応しているように見えます。

mise.tomlはグローバルな設定ファイルとローカルな設定ファイルがあります。

  1. ~/.config/mise/config.toml を作成しておくとグローバルで有効になります。
  2. 任意のディレクトリに./mise.toml として作成すると、そのディレクトリ配下で有効になります。

どのディレクトリでも使いたいスクリプトはグローバルな設定ファイルに書いておくと良いです。

また、gitのリポジトリなどにローカルな設定ファイルとして作成して、他の人と共有するような使い方もできます。

おわり

実はなかなかmiseを使っている人に出会うことが無いのですが、今月から働き始めたDressCode(会社名でもあり、開発しているサービス名でもある)のチームメンバーがmiseを使っていて嬉かったので、この記事を書こうと思いました。

私の場合は良く使うawsのスクリプトやポードフォワーディングのスクリプト、curlのコマンド、ローカル環境構築コマンドなどをタスクランナーで管理しています。
また、パッケージ管理もなるべく「mise」に寄せるようにしていて、mise listコマンドを打てばすぐに何のパッケージが使われているかわかるので助かっています。

実際に普段使っているMacだと、このような感じになってます。
mise list
mise listコマンドでパッケージの一覧を見れる

他にも使い方はありますが、割とタスクランナー便利だよということが書きたかっただけなので、この記事はここまでにします!

DRESS CODE TECH BLOG

Discussion