この記事は Qiita Tech Festa 2026 の投稿記事です。
【連載】miseのTask機能再確認
- 第1回:LLM Agent 活用を前提としたモノレポで求められるツールチェーン
- 第2回:アーキテクチャから紐解くモノレポのタスク管理
- 第3回:CLIによる高度なタスク実行と活用術(本記事)
- 第4回:mise.tomlの高度なタスク定義
はじめに
前回の記事では、mise の階層的なタスク解決や、ディレクトリをまたいだタスク連携について解説しました。
今回は、Running Tasks の内容のうち、CLIを通じた高度なタスク実行機能とユースケースをご紹介します。
概要・前提条件
本記事では、mise の CLI を通じた高度なタスク実行の説明を行っていきます。
-
対象読者:
- (LLM Agentを活用する) モノレポ環境を構築・運用している方
- 言語非依存のタスクランナーを探している方
-
前提条件:
-
miseがインストールされていること
-
1. Task Grouping(タスクのグループ化)とワイルドカード実行
プロジェクトがスケールしてくると、タスクの数も膨大になります。mise ではコロン(:)を使ってタスクを名前空間(ネームスペース)でグループ化し、一括で実行させることが可能です。
TOMLでのグループ化定義
mise.toml 内でキーをクォーテーションで囲むことで、グループ化されたタスクを定義できます。
[tasks."test:unit"]
run = "npm run test:unit"
[tasks."test:e2e"]
run = "npm run test:e2e"
ワイルドカードを用いた一括実行
グループ化の最大のメリットは、パターンマッチが使える点です。
# test: から始まるすべてのタスク(unit と e2e)をまとめて実行
mise run "test:*"
mise run "test:**:local" のように、より複雑なネストにも対応しています。関連タスクを一気に実行したい場合に便利です。
命名規則を決めてタスクを追加すると、自動的にローカルの pre-commit やサーバでのCIの実行タスクに追加されるなどの挙動に利用できます。厳密に実行対象を決めたいケースもあると思うので、そのあたりは選択制だと思いますが。
モノレポで役立つ先頭コロン記法 (:)
モノレポ環境で深いディレクトリ(例: projects/frontend/src)で作業している際、親ディレクトリを遡ってプロジェクトルートのタスクを明示的に呼び出したい場合があります。
その場合、タスク名の先頭に : を付けることで「現在の設定ルート(config root)のタスク」として実行させることができます。
# どこにいても、ルートの mise.toml にある build タスクを明示的に呼び出す
mise run :build
2. ユースケース: mise watch による自動再実行とホットリロード
mise には、ファイルの変更を検知してタスクを再実行する mise watch コマンドが組み込まれています。
※この機能を有効に使うには、次回の記事で解説する sources プロパティを mise.toml で定義しておく必要があります。
# buildタスクの `sources` で指定されたファイルを監視し、変更があれば再ビルド
mise watch build
引数なしで mise watch を実行した場合は、すべてのタスクのソースを監視します。フロントエンド開発時のホットリロードの代わりや、ファイルを保存するたびにテストを自動で走らせる(mise watch test)挙動を mise だけで完結して作ることができます。
3. ユースケース: ::: を用いた引数付き複数タスクの連続実行
mise run では、複数のタスクを並べて連続実行させることができます。引数を取らないタスクであれば、以下のようにスペース区切りで記述するだけです。
# lint と test を順番に実行
mise run lint test
しかし、タスクに対して個別の引数を渡したい場合は、スペースだけでは「どこまでが最初のタスクの引数で、どこからが次のタスク名なのか」を mise が判別できなくなります。
その場合にはタスクとその引数のセットを区切る ::: デリミタを使います。
# buildタスクに "--production" を渡し、その後 testタスクに "--watch" を渡して実行
mise run build --production ::: test --watch
CIやスクリプトでの活用
引数が絡むタスクを一行のコマンドで繋ぎ合わせられるため、CI設定ファイル内での実行コマンドを簡潔に記述できます。
おわりに
今回は Running Tasks に焦点を当て、CLIからタスクを効率的に呼び出す方法を解説しました。
次回は、mise.toml 内でタスクをさらに高度に定義する「TOML Tasks」編として、依存関係の制御や外部スクリプトの埋め込みについて記載する予定です。