未分類

miseのセットアップから基本的な運用方法まで

なぜmiseなのか?

少し前まで「開発環境はすべてDockerの中に閉じ込め、ローカルを汚さない」のが最適解とされてきました。
しかし、AIを利用した開発が主流になっている今、リンターやフォーマッター、それらを動かすアプリケーションをローカル環境でもAIが柔軟に利用でき、高速に実行できることが重要になってきています。

mise(ミーズ)は従来のasdfと互換性を持ちつつ、Rust製で非常に高速に動作し、さらに環境変数管理やタスクランナー機能も内包しているため、モダンな開発環境のデファクトスタンダードになりつつあります。

miseのセットアップ

miseをインストールします。
ここではMacのzshを前提としてコマンドなどを記載しています。

# 1. miseのセットアップ
brew install mise
echo 'eval "$(mise activate zsh)"' >> ~/.zshrc
# 2. 新しいタブを開くか、以下のコマンドを実行して反映
exec $SHELL -l

Homebrew経由でインストールし、miseで入れたものを使えるようにzshrcにmiseの設定を反映するようにいれます。
シェルを再起動して、現在の窓にも反映します。

セットアップが完了したら下記コマンドで確認しましょう。

mise doctor

activated: yes となっていればOKです。
基本的には先述の.zshrcへの追記ができていれば問題ないので、noとなっている場合は記載ができているかを確認し、シェルを立ち上げ直してみてください。

shims_on_path: noとなっていると思いますが、これは別形式の設定方法なのでActivate方式を使っていればnoとなっている方が正しいです。
self_update_available: noは現在使っているmise自体が最新バージョンであり、アップデートの必要がないということなので、これもnoがよいです。yesならアップデートを行いましょう。

アプリケーションのセットアップ

miseでは「グローバル(PC全体)」と「ローカル(プロジェクト毎)」の2種類のインストール方法がありますが、原則としてプロジェクト単位のローカルインストールを推奨します。
実はグローバルで動いており「他のチームメンバーは動かない」/「他のメンバーもグローバルでインストールされており違うバージョンで動いて差異が出ていた」ということを避けるためです。
生成されるmise.tomlはGitの管理対象に入れましょう。

# ローカルインストール
cd {プロジェクトルート}
mise use --pin {アプリケーション名}@latest
exec $SHELL -l

--pinオプションをつけることで、latestなどの指定でもバージョン固定ができます。--pinフラグを付けないと、常にlatestを使ってしまうのでバージョン固定ができません。固定する必要がないものはpin無しでもよいでしょう。
固定したい具体的なバージョン情報があれば直接バージョン指定をし、なければ一度lts(「LTS: 長期サポート版」の最新)があるか試し、ltsがないとエラーが出ればlatest(そのときの「最新版」)で固定するというのが調べる手間もなく楽です。

# A. 固定したいバージョンが決まっていれば指定
mise use {アプリケーション名}@x.x.x
# B. LTSがあればそちらで固定
mise use --pin {アプリケーション名}@lts
# C. 最新版で固定
mise use --pin {アプリケーション名}@latest

特定のプロジェクトに依存しないツール(例:AWS CLIや汎用的なユーティリティ)は、グローバルインストールを行います。
とはいえGitなどの最新版が一つあればよいものならHomebrewの方がおすすめです。プロジェクト内外で複数バージョンを入れる必要がある場合にmiseグローバルを使う方がよいでしょう。
グローバルインストールの場合、設定ファイルはホームディレクトリにあるグローバル設定ファイル(通常は ~/.config/mise/config.toml)に記載されます。

# グローバルインストール
mise use --global {アプリケーション名}@latest

既存プロジェクトに参加する場合

すでにmise.tomlがあるリポジトリをクローンして設定する場合、installして準備を整えます。
なお、miseはasdf用の.tool-versionsなども読み取り一括インストールを行ってくれます。

# 設定ファイルを信頼し有効化
mise trust
# 必要なツールを一括インストール
mise install

タスクランナー

miseはツールの管理だけでなくMakefilenpm scriptsの代わりとなるタスクランナーも備えています。

タスク定義

プロジェクト内のmise.tomlに下記のように記述します。

[tasks.setup]
description = "初期セットアップを行います"
# 複数のコマンドを実行する場合は """(トリプルクォート)を使います
run = """
echo "🔧 セットアップを開始します..."
mkdir -p dist
echo "✅ ディレクトリの作成が完了しました"
"""

[tasks.build]
description = "プロジェクトをビルドします"
# このタスクを実行する前に、setupタスクを強制的に実行します
depends_on = ["setup"]
run = "echo '🚀 ビルドを実行中... dist/index.html を生成しました'"

タスクの実行
定義したタスクは、以下のコマンドで一覧確認・実行が可能です。

# タスク一覧を表示
mise tasks

# 作成したtasks.buildを実行(自動的にsetupも走る)
mise run build

依存関係 (depends_on)
depends_on = ["タスク名"] を指定すると、そのタスクが動く前に指定したタスクを自動で終わらせてくれます。
上記の例で mise run build を実行すると、まず自動的に setup が走り、その後に build が実行されます。

まとめ

miseを導入することで、言語のバージョン管理、環境変数の切り替え、タスク実行を一つのツールで完結できます。開発体験を向上させるための第一歩として、ぜひ活用してください。

-未分類