はじめに
今更ながら、dotfiles を使いはじめた。
きっかけは、今後 Mac と WSL2 の両方で開発する機会が増えそうで、シェル設定やツールのバージョン管理を都度やり直すのが面倒になってきたためである。
今回は、自分用に作った dotfiles リポジトリを見ながら、どういう方針で構成したのか、何を管理対象にしているのかを整理して紹介する。
なお、現時点では主に WSL2 で使っており、Mac 側はまだ本格運用前である。
そのため、この記事は WSL2 寄りの内容になっている。
※ちなみに、Macでは構築を試していないので、この記事の内容はWSL2での内容が中心となる。
環境
Windows 11 Pro
WSL2 Ubuntu 24.04 LTSdotfilesリポジトリ
リポジトリはこちら。
- dotfiles / katsuobushiFPGA
https://github.com/katsuobushiFPGA/dotfiles
このリポジトリは、WSL と Mac の両方で使うことを前提にしていて、設定管理には chezmoi、ツールのバージョン管理には mise を使っている。
なぜ dotfiles を使うことにしたのか
今回やりたかったことは、ざっくり言うと以下の 3 つである。
- 新しい環境でも、なるべく短い手順でいつもの開発環境を再現したい
- WSL2 と Mac で共通化できる部分は共通化しつつ、OS ごとの差分だけは素直に分けたい
- Neovim や tmux のように、少しずつ育てる設定を Git 管理したい
これまでは、その場しのぎで .zshrc を直接編集したり、必要になったツールを都度インストールしたりしていた。
また、zshとかtmuxとかをそこまで使っておらず、VSCodeのターミナルで完結させることが多かったため、そこまで環境構築にこだわる必要も感じていなかった。
ただ、今後は Mac と WSL2 の両方で開発する機会が増えそうで、シェル設定やツールのバージョン管理を都度やり直すのが面倒になってきたため、dotfiles を使うことにした。
構築する上で、以下のように役割を分けた。
bootstrap.shで初回セットアップを自動化するchezmoiでホームディレクトリ配下の設定ファイルを反映するmiseで CLI ツールや言語ランタイムのバージョンを揃える
せっかくなので、できる限りモダンなツールを使ってみようかということで、chezmoi と mise を選んでみた。
リポジトリの構成
bootstrap.sh で初回セットアップをまとめる
まずは bootstrap.sh を実行すれば、zsh や chezmoi、mise、oh-my-zsh、Neovim、Powerlevel10k などの導入を一通り自動化できるようになっている。
WSL では apt を使い、Mac では Homebrew を使う前提で処理が分かれているため、環境構築の手数をかなり減らせる。
README によると、主に以下のツールが自動インストール対象になっている。
| ツール | 役割 |
|---|---|
| zsh | デフォルトシェル |
| chezmoi | dotfiles の反映 |
| mise | ツールバージョン管理 |
| oh-my-zsh | zsh のベース設定 |
| Neovim | エディタ |
| Powerlevel10k | プロンプトテーマ |
| difit | 補助ツール |
Mac のみ cmux を入れるようになっているが、cmuxはまだ試していないため、今後tmuxに統一する可能性もある。
chezmoi でホーム配下の設定を管理する
設定ファイルの管理対象は以下の通り。
| dotfiles 側 | 展開先 |
|---|---|
dot_zshrc.tmpl | ~/.zshrc |
dot_zprofile | ~/.zprofile |
dot_config/mise/config.toml | ~/.config/mise/config.toml |
dot_config/nvim/ | ~/.config/nvim/ |
dot_config/tmux/tmux.conf | ~/.config/tmux/tmux.conf |
dot_claude/settings.json | ~/.claude/settings.json |
このくらいの範囲に留めているのはちょうど良くて、全部を無理に管理しないぶん見通しがよい。
特に、日常的に触る zsh、Neovim、tmux だけでも Git 管理に乗ると再現性が上がる。
mise でツールバージョンを固定する
mise では、Node.js や Go に加えて、日常的に使う CLI もまとめて管理している。
- Node.js
- Go
- ripgrep
- fd
- fzf
- bat
- eza
- zoxide
- gh
ツールについて
tmux
tmux の設定は、dot_config/tmux/tmux.conf で管理している。
今のところ、tmux は WSL2 でしか使っていないため、Mac 側でどうするかはまだ決めていない。
ちなみに、Windows Terminalだとこんな感じ。
※ショートカットを覚えていないのでチートシートを表示するようにしている。

実際のセットアップ手順
導入手順は以下の通り。
git clone https://github.com/katsuobushiFPGA/dotfiles ~/dotfiles
cd ~/dotfiles
bash bootstrap.sh
chezmoi init --source ~/dotfiles
chezmoi apply
chsh -s $(which zsh)最後に Powerlevel10k の見た目を調整するなら、以下も実行する。
p10k configureここまでで、シェル、エディタ、tmux、各種 CLI の土台が一通り揃う構成になっている。
これから追加したいこと
今の時点でも実用的だが、まだまだ育てたいと思っている。
- Git のグローバル設定や
gitignoreをどう管理するか整理する - 端末フォントやターミナル設定も再現できるようにする
- Mac 実機でも一度セットアップして差分を洗い出す
chezmoi diffやchezmoi doctorを使ったメンテナンス手順も固める- Neovim のプラグイン管理も入れてみる(今は
lazy.nvimを手動で入れている) tmuxの設定ももう少し充実させるclaudeの設定についても、まだ使いはじめなので充実させたい。
dotfiles は一度作って終わりではなく、普段の作業に合わせて育てていくものだと改めて感じた。
その意味では、現時点でちょうどよいサイズ感になっている。
余談
Windows Terminalはこの設定が良いなと思ったのでメモ。
| 項目 | 設定値 |
|---|---|
| 配色 | One Half Dark |
| フォント フェイス | JetBrainsMono Nerd Font Mono |
| フォントサイズ | 11 |

参考
dotfiles / katsuobushiFPGA
https://github.com/katsuobushiFPGA/dotfileschezmoi
https://www.chezmoi.io/
おわりに
今までdotfilesを使っていなかったことを少し後悔するくらいには、環境構築が楽になった。dotfiles を使い始める前は、まあそのうちやろうかな、くらいの気持ちだったが、実際にやってみると、環境構築の手間が大幅に減り、設定の再現性も上がった。
これも、claudeや ChatGPT などの AI ツールを活用して、リポジトリの構成やスクリプトの内容を整理しながら進められたおかげだと思う。
環境構築の設定について、実際に整理してみると、複数環境をまたぐ開発ではかなり相性がよいと感じた。
特に、chezmoi で設定ファイルを管理し、mise でツールバージョンを揃える形は分かりやすく、今後も育てやすい。
しばらくはこの構成で WSL2 側を使い込みつつ、Mac 側でも同じ手順でどこまで素直に再現できるかを試していきたい。
ただ、使いはじめてzshが重かったりするので、設定を見直したりもしていきたい…!