chezmoiでdotfilesを効率的に管理する方法【2025年版】


はじめに

開発者にとって、設定ファイル(dotfiles)の管理は重要な課題です。新しいマシンをセットアップするたびに、.bashrc.vimrc.gitconfigなどの設定ファイルを手動でコピーするのは手間がかかります。

この記事では、chezmoiというツールを使って、dotfilesを効率的かつ安全に管理する方法を紹介します。

dotfiles管理の課題

dotfilesの管理には、いくつかの一般的な課題があります。

  • 手動コピーの手間: 新しいマシンを設定するたびに、手動でファイルをコピーする必要がある。
  • 複数マシンでの同期: 複数のマシンで設定を同期させるのが難しい。
  • 機密情報の管理: APIキーやトークンなどの機密情報を安全に管理する必要がある。
  • 環境ごとの差異: OSや環境によって設定を切り替えたい場合がある。

これらの課題を解決するために、多くの開発者がdotfilesをGitリポジトリで管理していますが、chezmoiを使うことで、さらに高度な管理が可能になります。

chezmoiとは?

chezmoiは、複数のマシン間でdotfilesを管理するためのツールです。Goで書かれた単一のバイナリで動作し、依存関係が少ないのが特徴です。

chezmoiの主なメリット

  • テンプレート機能: Goのtext/templateを使い、マシンごとやOSごとに設定を動的に変更できる。
  • スクリプト実行: chezmoi apply時にスクリプトを実行し、パッケージのインストールなどを自動化できる。
  • 機密情報の管理: pass1PasswordBitwardenなどのパスワードマネージャーと連携し、機密情報を安全に管理できる。
  • Gitとの連携: dotfilesをGitリポジトリで管理し、変更履歴を追跡できる。
  • 宣言的な状態管理: あるべき状態を宣言的に管理し、chezmoiが差分を適用してくれる。

chezmoiのインストール

chezmoiは、さまざまな方法でインストールできます。

macOS (Homebrew)

brew install chezmoi

Linux

sh -c "$(curl -fsLS get.chezmoi.io)"

Windows (Scoop)

scoop install chezmoi

その他のインストール方法は、公式サイトを参照してください。

chezmoiの使い方

1. 初期化

まず、chezmoiを初期化します。これにより、~/.local/share/chezmoiにGitリポジトリが作成されます。

chezmoi init paveg

pavegの部分は、ご自身のGitHubユーザー名などに置き換えてください。

2. dotfilesの追加

管理したいdotfilesをchezmoiに追加します。

chezmoi add ~/.bashrc
chezmoi add ~/.gitconfig

これにより、~/.local/share/chezmoiにファイルがコピーされます。

3. 変更の適用

chezmoi source-pathでソースディレクトリのパスを確認し、ファイルを編集します。

chezmoi source-path
# /Users/paveg/.local/share/chezmoi

ファイルを編集した後、chezmoi applyで変更を適用します。

chezmoi apply

4. Gitリポジトリへのプッシュ

変更をGitHubなどのリモートリポジトリにプッシュします。

cd $(chezmoi source-path)
git add .
git commit -m "Add .bashrc and .gitconfig"
git push

5. 新しいマシンでのセットアップ

新しいマシンでは、以下のコマンドを実行するだけで、dotfilesをセットアップできます。

sh -c "$(curl -fsLS https://git.io/chezmoi)" -- init --apply paveg

テンプレート機能の活用

chezmoiの強力な機能の一つがテンプレートです。例えば、OSによって設定を切り替えたい場合、以下のように記述できます。

# ~/.local/share/chezmoi/dot_bashrc.tmpl
# 共通の設定
export EDITOR=vim

{{ if eq .chezmoi.os "darwin" -}}
# macOS用の設定
alias ls="ls -G"
{{ else if eq .chezmoi.os "linux" -}}
# Linux用の設定
alias ls="ls --color=auto"
{{ end -}}

.chezmoi.osには、darwinlinuxwindowsなどのOS名が入ります。

まとめ

chezmoiを使うことで、dotfilesの管理が非常に効率的になります。特に、複数のマシンを使い分ける開発者や、新しい環境を頻繁に構築する方には、大きなメリットがあります。

この記事を参考に、ぜひchezmoiを使ったdotfiles管理を試してみてください。

私のdotfilesリポジトリも参考にしてみてください。 paveg/dotfiles

pavegのdotfiles管理例

私のdotfilesでは、以下のようなファイルをchezmoiで管理し、その恩恵を受けています。

  • 構造化されたZsh設定: .zshrcだけでなく、~/.zsh.d/以下に機能ごとに分割した設定ファイル(エイリアス、関数、環境変数など)を管理しています。chezmoiのテンプレート機能を使えば、OSやマシンの種類に応じて特定のファイルを有効・無効にしたり、内容を動的に変更したりできます。
  • Git設定 (.gitconfig): ユーザー名やメールアドレスといった基本的な設定はもちろん、コミットテンプレートやエイリアスなども管理しています。特に、機密情報であるメールアドレスなどは、chezmoiの秘密管理機能(パスワードマネージャー連携など)と組み合わせることで、安全に管理しつつ、異なるマシン間で簡単に同期できます。
  • フォント設定: 開発環境において重要なフォント設定ファイル(例: ~/.config/fontconfig/fonts.confなど)もchezmoiで管理しています。これにより、新しい環境でも一貫したフォント環境を素早く構築できます。
  • パッケージインストールスクリプト: chezmoirun_プレフィックス機能を利用して、新しいマシンにHomebrewやnpmなどのパッケージを自動でインストールするスクリプトを管理しています。これにより、環境構築の手間を大幅に削減し、常に最新かつ必要なツールが揃った状態を保てます。

これらの具体的な管理例は、chezmoiが単なるファイル同期ツールではなく、より高度な環境構築自動化ツールとして活用できることを示しています。