📘
miseを使ってzsh環境を整えて、ついでにチートシートを仕込む
はじめに
miseというツールが面白そうだと知ったきっかけは、この記事でした:dotfiles管理、miseに全部任せてみた
これを見て、自分の環境にもmiseを入れて、ついでにzsh環境も手入れしました。その記録です。
手入れの方針
- 環境変数はzshのまま
- ディレクトリ毎に設定したくなったら、今後その部分だけ分離する
- バージョン管理
- node, deno, python はmiseに移動
- rustはまだよくわかっていないので、rustupのままにする
- タスクランナーもmiseに移動
- 今まではRakefileでやってるのを、miseに移動する
- ついでにチートシートも作成してみる
miseでバージョン管理
node(fnm)、deno(dvm)、python(pyenv)
これらはhomebrewからも削除して、miseに寄せた
# ========================================
# ツールのバージョン管理
# mise ls deno
# mise use -g deno@2.6
# mise use deno@x.x
# ========================================
[tools]
deno = "2.6"
node = "24.13"
python = "3.12"
rust(rustup, cargo)
これらはまだよくわかっていないので、現状のままとした
miseでチートシートを作る
今回追加したmiseや最近使ってるjj、よく忘れるgitなどのチートシートを仕込んでみた。
チートシートの内容はClaude Codeで生成しました。
設定方法
タスク定義を別ファイルに分離する:
~/.config/mise/config.toml
# ========================================
# グローバルタスク
# ========================================
[task_config]
includes = ["cheat/tasks.toml"]
チートシート用のタスクを定義:
~/.config/mise/cheat/tasks.toml
[cheat-mise]
description = "チートシート(mise)"
run = "cat ~/.config/mise/cheat/mise.txt"
[cheat-jj]
description = "チートシート(jj)"
run = "cat ~/.config/mise/cheat/jj.txt"
[cheat-git]
description = "チートシート(git)"
run = "cat ~/.config/mise/cheat/git.txt"
使い方
% mise task
Name Description
cheat-git チートシート(git)
cheat-jj チートシート(jj)
cheat-mise チートシート(mise)
...
%
% mise r cheat-jj
[cheat-jj] $ cat ~/.config/mise/cheat/jj.txt
=== jj (Jujutsu) チートシート ===
# リポジトリ
jj init 新規作成
jj git clone <url> Gitリポジトリをクローン
jj git init --colocate 既存Gitリポジトリでjj有効化
# 基本操作
jj status 状態確認(jj st)
jj diff 差分表示
jj log 履歴表示
...
ただ、チートシートを見るcliコマンドはすでにありそうなので、そっちに移行するかもしれません。
zsh 設定を XDG 準拠にする
miseのバイナリファイルやグローバル設定は、~/.local/や ~/.config/ に配置されています。
これらのディレクトリ指定は、XDG Base Directory という仕様で決められてるもののようです。
- XDG_CONFIG_HOME
- ユーザー個別の設定が書き込まれるディレクトリ (/etc と類似)。
- デフォルトは $HOME/.config
- XDG_CACHE_HOME
- ユーザー個別の重要でない (キャッシュ) データが書き込まれるディレクトリ (/var/cache と類似)。
- デフォルトは $HOME/.cache です。
- XDG_DATA_HOME
- ユーザー個別のデータファイルが書き込まれるディレクトリ (/usr/share と類似)。
- デフォルトは $HOME/.local/share です。
- XDG_STATE_HOME
- ユーザー個別の状態ファイルが書き込まれるディレクトリ (/var/lib と類似)。
- デフォルトは $HOME/.local/state です。
この~/.config/ディレクトリはjjやzed、raycastといった、最近のプロダクトの設定が入ってました。
~
% ls ~/.config
configstore github-copilot mise tod0
gh iterm2 raycast zed
git jj swi-prolog
~
%
せっかくなので、zshの設定ファイルもこれに合わせて~/.config/zsh/に配置しました。
% tree ~/.config/zsh
zsh
├── 00_env.zsh
├── 10_zinit.zsh
├── 20_compinit.zsh
├── 30_fzf-tab.zsh
├── 40_fzf.zsh
├── 50_date-insert.zsh
├── 50_kiro.zsh
├── 50_mise.zsh
├── 50_obsidian-mcp-server.zsh
├── 50_rust.zsh
├── 60_prompt.zsh
├── 90_secret.local.zsh
├── 90_secret.zsh
├── README.md
└── zshrc.local
1 directory, 15 files
~/.config
~/.zshrcは、~/.config/zsh/zshrc.local にシンボリックリンクしています。
% ls -la ~/.zshrc
lrwxr-xr-x@ 1 tak staff 34 1 25 15:26 /Users/tak/.zshrc -> /Users/tak/.config/zsh/zshrc.local
~
% cat ~/.config/zsh/zshrc.local
setopt extended_glob
for config_file in $HOME/.config/zsh/*.zsh(.N:on); do
source $config_file
done
~
%
おわりに
手元の環境の手入れは楽しいです。
バージョン管理がmiseだけでできれば御の字です。
思いつきでmiseの中でのチートシート管理もやってみたのですが、これはどうなるかはこれからの話です。
Discussion