コンテナを使い続けるバージョン管理などからmiseを使って管理をするようになりました。
それに加えてmiseには環境変数の設定とタスクランナーの機能もある。
最近になってこれらを駆使してAIコーディングエージェントを使った開発をしているため、その使い方を紹介する。
miseとは
mise (mise-en-place)はdev toolの管理とディレクトリごとの環境変数を変更、それとtask runnerの機能を持つツールです。
要するにasdfとdirenvとmakeが1つになったものです(分かる人に伝わってほしい)。
miseがない場合
ツールのバージョン
例えばコンテナを使わない開発を採用しているチームの場合には、言語などのツールを何かのツールで共通化する必要がありました。
Node.jsならnvm、Pythonならpyenv、Rubyならrbenvなど言語毎に管理するツールや、asdfのように複数の言語を管理するツールがあります。
ディレクトリ別の環境変数
またディレクトリ(プロジェクト)ごとに環境変数を変更したいとした場合、.envファイルをsourceコマンドなどを実行して都度セットする必要があります。
これをdirenvでは.envrcファイルをプロジェクトルートにいれて direnv allow コマンドを実行するとそのプロジェクトディレクトリでは.encrcに定義した環境変数をセットし、別のプロジェクトディレクトリに移動した場合はアンセットされます。
タスクランナー
makeやnpm、最近ではTaskなど開発を進めるためのコマンドのセットを1コマンドで実行できるようにするツールがあります。
例えばGoでテストを実行してカバレッジレポートをhtmlで表示したい場合以下の3コマンドが必要になります。
$ go test -cover ./... -coverprofile=cover.out
$ go tool cover -html=cover.out -o cover.html
$ open cover.html
これをタスクランナーのターゲットに設定しておくと1つのコマンドで実行できるようになります。
go-test-cover: ## Goでテストを実行してカバレッジレポートをhtmlで表示
go test -cover ./... -coverprofile=cover.out
go tool cover -html=cover.out -o cover.html
open cover.html
$ make go-test-cover
短くて良いですね。
miseを使う場合
これらが全てmiseでできます。
miseの設定はtomlファイルで管理されます。それぞれの利用方法を見てみます。
version management with mise
[tools]
go = '1.25.1'
terraform = '1.13.3'
これをプロジェクトルートに配置してmise installを実行するだけで全てインストールされます。
environment value management with mise
[env]
NODE_ENV = "production"
この用にenvの値を設定できます。
task runner
[tasks.build]
description = "Build the CLI"
run = "cargo build"
たったのこれだけ。これを実行するときには
$ mise run build
を実行する。
私がリードしているプロジェクトには順次入れています。ぜひみなさんも使ってみてください。