ターミナルを使う人は、とりあえず「mise」を入れておく時代。 ・・・を夢見て。
「mise」ってすごい使いやすいんですよ。
miseとは GitHubリポジトリの説明書きに 「dev tools, env vars, task runner」 と書かれているrust製のcliツールです。
この記事ではmiseヘビーユーザーの私が推したい生産性の上がる機能を紹介するので、miseを初めて知った人も、知ってるけど使ってないって人も、ぜひ一読してみてください。
ちなみに最近話題になりやすいAIツールのcliパッケージなどもmiseで管理できたりします。
推したい機能はこれです!
① タスクランナー(私が推したい機能No.1)
私はmiseにおいてはタスクランナーが一番便利な機能だと思っているので最初に紹介します。
タスクランナーはmise.toml
によく使うスクリプトをタスクとして定義しておいて、mise run
コマンドで実行する機能です。
※設定ファイルはグローバルで有効な~/.config/mise/config.toml
や配置ディレクトリ配下でのみ有効でバージョン管に含めても良い./mise.toml
、それの上書き用の./mise.local.toml
などがありますが、この記事では前者を使う形で書き進めていきます。
便利なところ
mise run
と実行すると定義したタスクの一覧が説明付きで表示されて↑↓キーでタスクを選ぶことができるので、わざわざコマンドを覚える苦悩から解放されます。(設定ファイルの話を後回しにするほどには、まずは実行している所を見てほしい。)
mise runコマンドでタスクを実行する
また、設定ファイルにconfirm = "確認メッセージ"
を追加するだけで、実行前に確認のステップを挟むこともできるので、慎重に行う必要があるタスクの安全性も担保できたりします。
危険なタスクは実行前に確認できる
実際の設定ファイルはこのようなフォーマットです。
[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で管理することができます。
$ mise use -g npm:@google/gemini-cli
$ gemini --version
$ 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
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
はグローバルな設定ファイルとローカルな設定ファイルがあります。
-
~/.config/mise/config.toml
を作成しておくとグローバルで有効になります。 - 任意のディレクトリに
./mise.toml
として作成すると、そのディレクトリ配下で有効になります。
どのディレクトリでも使いたいスクリプトはグローバルな設定ファイルに書いておくと良いです。
また、gitのリポジトリなどにローカルな設定ファイルとして作成して、他の人と共有するような使い方もできます。
おわり
実はなかなかmiseを使っている人に出会うことが無いのですが、今月から働き始めたDressCode(会社名でもあり、開発しているサービス名でもある)のチームメンバーがmiseを使っていて嬉かったので、この記事を書こうと思いました。
私の場合は良く使うawsのスクリプトやポードフォワーディングのスクリプト、curlのコマンド、ローカル環境構築コマンドなどをタスクランナーで管理しています。
また、パッケージ管理もなるべく「mise」に寄せるようにしていて、mise list
コマンドを打てばすぐに何のパッケージが使われているかわかるので助かっています。
実際に普段使っているMacだと、このような感じになってます。
mise listコマンドでパッケージの一覧を見れる
他にも使い方はありますが、割とタスクランナー便利だよということが書きたかっただけなので、この記事はここまでにします!
Discussion