0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

miseを使ったtool + env + task runner 管理

Posted at

コンテナを使い続けるバージョン管理などから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

を実行する。

私がリードしているプロジェクトには順次入れています。ぜひみなさんも使ってみてください。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?