# chezmoi(シェモア)で始めるdotfiles管理 URL: https://webrandum.net/chezmoi/ 公開日: 2026-05-07 更新日: 2026-05-07 カテゴリー: 作業環境整備 タグ: chezmoi, dotfiles 出典: Webrandum(著者: サイトウ マサカズ) Macの環境構築をするとき、シェルやエディタの設定を一からやり直すのは面倒です。 `.zshrc`や`.gitconfig`といった設定ファイルをバックアップしておらず、Macが故障したり、新しいMacを手に入れるたびに同じ作業を繰り返している人もいるのではないでしょうか。 今回は「dotfiles(ドットファイルズ)」と呼ばれる設定ファイルを管理する考え方と、それらを管理するツールの「chezmoi(シェモア)」について紹介します。 ## dotfilesとは `.zshrc`や`.gitconfig`、`.vimrc`など、シェル・Git・エディタの設定ファイルなど、ドットから始まるファイルは「隠しファイル」や「不可視ファイル」と呼ばれ、Finderではデフォルトで表示されません。 しかし、macOSの場合はshift + command + .(ドット)で表示・非表示を切り替えられます。 特にホームディレクトリ(自分のmacOSユーザー名のフォルダ)で隠しファイルを表示してみると、大量のファイルがあると思います。 そして、これらの設定ファイルをGitリポジトリでまとめて管理する仕組み、およびそのリポジトリ自体を「dotfiles(ドットファイルズ)」と呼びます。 GitHubで「dotfiles」というリポジトリ名で公開している人も多いです。 ### dotfilesを管理するメリット dotfilesを管理する最大のメリットはマシン間の同期です。 新しいMacをセットアップするときに、GitHubなどに置いておいたリポジトリをクローンするだけで自分の設定を一通り戻せます。 また、Gitで管理しているのでバージョン管理もできます。 「ちょっと設定を変えてみたけど馴染まなかった」というときに前の状態に戻すのも簡単ですし、変更履歴を見返せばどんな試行錯誤をしてきたかも分かります。 ## dotfilesで管理するもの なんでもかんでも隠しファイルを管理するのではなく、あくまで同期したい設定ファイルだけを選んで管理します。 具体的に管理する代表的なファイルは下記の通りです。 | ファイル | 用途 | | --- | --- | | .zshrc / .bashrc | シェルの設定(エイリアス、PATH、プロンプト、関数など) | | .gitconfig | Gitの設定(ユーザー名、メール、エイリアス、デフォルトブランチなど) | | .vimrc / init.lua | エディタの設定(Vim / Neovim) | | .config | さまざまなアプリ・ツールの設定が入ったフォルダ | | .config/karabiner/ | Karabiner-Elementsのキーリマッピング設定 | | .editorconfig | エディタ横断のフォーマット設定 | | Brewfile | Homebrewのパッケージリスト | `.config/`ディレクトリ以下のファイルもdotfilesの管理対象になります。 最近のツールは`.config/`配下に設定を置くものが増えているので、このフォルダを管理対象にするとさまざまなツールの設定を一気に同期できます。 ターミナルアプリの[Ghostty](https://webrandum.net/ghostty/)の設定ファイル(`~/.config/ghostty/config`)もこれにあたります。 さらに最近は`.claude`や`.agents`など、AIエージェントのスキルやルール設定をdotfilesで管理している人も見かけます。 しかし、`.claude`フォルダをまるごと管理しようとするとファイル数が膨大になりますし、ログ的なものまで入ってしまうため、`.claude/skills`だけ管理するなど、ある程度絞った方が良さそうです。 ### dotfilesで管理してはいけないもの セキュリティの観点から、認証情報を含むファイルはdotfilesに入れてはいけません。 - SSH秘密鍵(`~/.ssh/id_ed25519`、`~/.ssh/id_rsa`) - APIトークンやシークレット(GitHub PAT、AWSクレデンシャルなど) - `.env`ファイル(パスワードやデータベース接続情報を含むもの) 秘密鍵は一度漏洩すると取り返しがつかないため、`.gitignore`で確実に除外するようにしましょう。 個人的には何かあると怖いので、プライベートリポジトリにして外部公開はしないようにしています。 仮に公開することがあっても、別で「dotfiles-public」のような公開用のリポジトリを別で作って、チェックしたものを公開していくと思います。 ## 管理ツールの比較 dotfilesの管理方法は、手動で管理する方法から専用ツールを使う方法まで幅があります。 代表的な選択肢を比較すると下記の通りです。 | 項目 | 手動シンボリックリンク | GNU Stow | yadm | chezmoi | | --- | --- | --- | --- | --- | | 方式 | 手動でシンボリックリンクを作成 | シンボリックリンクを自動管理 | bareリポジトリ(Gitラッパー) | 管理コピー | | インストール | 不要 | brew install stow | brew install yadm | brew install chezmoi | | 料金 | 無料 | 無料 | 無料 | 無料 | | 学習コスト | 低い | 低い | 中程度 | やや高い | | テンプレート | なし | なし | Jinja2系(j2)など | Goテンプレート | | シークレット管理 | なし | なし | GPG等で暗号化 | 1Password / Keychain等と連携 | | OS別の切り替え | 手動で対応 | ディレクトリで分離 | Alternateファイル | テンプレートの条件分岐 | 私の場合はchezmoiを使っています。 最近はAIに「このファイルをchezmoiでこう管理したい」と聞けばテンプレートの書き方をすぐ教えてくれますし、シークレット管理や条件分岐まで含めて1つのツールでまとまっているのがラクなので、これに落ち着きました。 ### Dropboxではダメなのか? dotfilesをDropboxで同期し、そこからシンボリックリンクを貼れば良いのではと思う人もいるかもしれません。 私もmacOSアプリケーションの設定の多くはDropboxで同期しています。 しかし、dotfilesはファイル数が多くなりがちで、複数マシンで同時に編集すると同期が衝突しやすくなります。 うっかり古い方の内容で上書きされて、せっかくのターミナル設定が動かなくなる、なんてことも起こりがちです。 Dropboxにもバージョン履歴の機能はありますが、コミット単位で意味のあるまとまりを残せるGitに比べると差分の見やすさで劣ります(動かなくなっても差分を戻せば動くようになる)。 リアルタイム同期が必須な場面でもないですし、dotfilesに関してはGit管理の方が合っているかなと思っています。 ### 手動シンボリックリンクの方法 専用ツールを使わない一番シンプルな方法が手動でのシンボリックリンクです。 `~/dotfiles/`のようなディレクトリを用意してそこにファイルを集めて、ホームディレクトリからシンボリックリンクを貼ります。 ``` # dotfilesリポジトリを作成 mkdir ~/dotfiles cp ~/.zshrc ~/dotfiles/.zshrc cp ~/.gitconfig ~/dotfiles/.gitconfig # 元のファイルを退避してシンボリックリンクを作成 mv ~/.zshrc ~/.zshrc.backup ln -s ~/dotfiles/.zshrc ~/.zshrc ``` 仕組みが分かりやすく、コードを見るだけで何をしているか把握できます。 しかし、ファイルが増えるたびにリンクの管理スクリプトを書き足したり、マシンごとの差分を自分で吸収したりする必要が出てきて、結局は何かしらのツールに乗り換えたくなるパターンが多いです。 ## chezmoi ![](https://webrandum.net/mskz/wp-content/uploads/2026/05/image_1.png) [![](https://www.google.com/s2/favicons?domain=www.chezmoi.io)www.chezmoi.io![](https://s.wordpress.com/mshots/v1/https%3A%2F%2Fwww.chezmoi.io%2F?w=160)chezmoi - chezmoihttps://www.chezmoi.ioManage your dotfiles across multiple machines, securely.](https://www.chezmoi.io/) chezmoi(シェモア)は、テンプレートやシークレット管理まで含めて1つのツールでまかなえる、高機能なdotfiles管理ツールです。 読み方が全然覚えられないですが、「chez moi」がフランス語で「私の家」「私のところ」を意味するそうです。 MITライセンスのオープンソースで、macOS / Linux / Windows に対応しています。 ### インストール方法 Homebrewを使っている場合は、下記のコマンドでインストールできます。 ``` brew install chezmoi ``` さまざまなOS・方法が用意されているので、他のダウンロード方法は[公式サイト](https://www.chezmoi.io/install/#one-line-binary-install)のインストール方法を参照ください。 ### 管理コピー方式 chezmoiの特徴的な点は、ソースディレクトリ(デフォルトは`~/.local/share/chezmoi`)にファイルを集めておき、`chezmoi apply`で実際のホームディレクトリに反映する仕組みになっているところです。 公式ドキュメントでは、ソースディレクトリの内容を「ソースステート」、ホーム側の最終状態を「ターゲットステート」と呼んでいます。 `chezmoi apply`を実行すると、ソースステートからターゲットステートが計算されてホームディレクトリに展開されます。 ### 基本コマンド よく使うコマンドだけ抜粋すると下記の通りです。 ``` chezmoi init # 初期化(GitHubユーザー名を渡せばリポジトリのクローンも兼ねる) chezmoi add ~/.zshrc # ファイルを管理対象に追加 chezmoi edit ~/.zshrc # ソースディレクトリ側のファイルを編集 chezmoi apply # ソースディレクトリの内容をホームディレクトリに反映 chezmoi cd # ソースディレクトリでサブシェルを起動(git操作用) ``` `chezmoi init https://github.com/username/dotfiles.git --apply`のように書くと、新しいマシンでも1コマンドでクローンから反映までいけるので、初期セットアップがかなりラクです。 ### テンプレートでマシンごとに設定を切り替える chezmoiはGoの`text/template`構文を拡張したテンプレートエンジンを内蔵しています。 ファイル名末尾に`.tmpl`を付けると、その中で条件分岐や変数展開ができます。 例えば`.gitconfig.tmpl`の中身を下記のように書けば、ホスト名で仕事用と個人用のメールアドレスを切り替えられます。 ``` [user] name = Your Name {{- if eq .chezmoi.hostname "work-mac" }} email = you@example-work.com {{- else }} email = you@example.com {{- end }} ``` 「マシンごとにファイルをコピーし分ける」のではなく、「1つのソースから複数のターゲットを生成する」という発想なので、設定の重複が減ります。 ### シークレットを安全に管理する chezmoiは1Password、macOSのKeychain、Bitwardenなどのパスワードマネージャーと連携できます。 テンプレート内からパスワードマネージャーの値を呼び出して、生成されたファイルにだけ秘密情報を埋め込む形になります。 リポジトリ自体には平文の秘密情報を一切置かずに済むので、Gitで履歴を残しても安心です。 私の場合は1Passwordを併用しているので、APIトークンなどはchezmoiから1Passwordを参照する形にしています。 ### 学習コストは高め 機能が豊富な反面、学習コストはやや高めです。 ソースステート・ターゲットステートの概念や、テンプレートを書くために最低限のGoテンプレート構文を覚える必要があります。 しかし、最近はAIに具体的にやりたいことを伝えればテンプレートを書いてくれます。 そこまで気合を入れて学ばなくても、必要なときに必要な分だけ調べたり、AIに書いて貰えば十分使えます。 ## Brewfileも一緒に管理する dotfilesと一緒に管理しておきたいのが、Homebrewでインストールしているパッケージの一覧です。 Homebrew公式の`brew bundle`コマンドを使うと、`Brewfile`という1つのファイルでインストール済みパッケージをまとめて管理できます。 現在インストールされているパッケージからBrewfileを書き出すコマンドは下記です。 ``` brew bundle dump --describe --file=~/dotfiles/Brewfile ``` `--describe`を付けると各行に説明コメントが付くので、後から見返したときに「これは何のためのツールだっけ」とならずに済みます。 Brewfileの中身は下記のようになります。 ``` # CLIツール brew "git" brew "starship" brew "stow" # GUIアプリ cask "firefox" cask "visual-studio-code" cask "keyboard-maestro" # Mac App Storeのアプリ(masコマンドが必要) mas "Xcode", id: 497799835 ``` Mac App Storeのアプリも書けるのが地味に嬉しいポイントです。 書き出し・インストールには別途`mas`コマンド(`brew install mas`でインストール)が必要になります。 新しいMacをセットアップするときは、下記のコマンドでBrewfileに記載されたパッケージをまとめてインストールできます。 ``` brew bundle install --file=~/dotfiles/Brewfile ``` このBrewfileをdotfilesリポジトリに含めておけば、アプリのインストールも含めて環境構築の大半を自動化できます。 しかし、何も気にせず使っていると、試しに入れただけのツールがそのまま買い換え先の新しいMacにもインストールされてしまいます。 定期的に使っていないものは削除するようにしましょう。 ## まとめ dotfilesの管理は、最初に仕組みを作るところまでが大変ですが、一度やり始めてしまえばあとはほとんど手間がかかりません。 新しいMacや検証用マシンのセットアップが格段にラクになりますし、設定の変更履歴がGitに残っていくので、後から「なぜこの設定にしたんだっけ」と振り返るときの安心感もあります。 chezmoiは学習コストが少し高めですが、テンプレートとシークレット管理まで含めて1ツールにまとまっているので、長く使うほど元が取れると思います。 少なくとも、1から全部セットアップするよりは遙かにラクなので、まだ管理していない人は試してみてはいかがでしょうか。