🐡

ゆるりとはじめる dotfiles 入門

に公開

この記事は TimeTree Advent Calendar 2025 の 25 日目の記事です 🎅🎄

はじめに

こんにちは!TimeTree 公開カレンダーの Web 開発に関わっている Potch です!
https://timetreeapp.com/intl/ja/public-calendar

半年前に産休・育休から復職したのですが、復職前に不安を感じ何かできることはないか...と探していた時に こちらの記事 に出会いました。

大変感銘を受け dotfiles を作ったのですが、せっかく学んだので記事の内容を自分なりに噛み砕きつつ、私が実際に作っている構成や考え方を紹介していきます。

dotfiles とは?

dotfiles とは、ファイル名が . から始まる設定ファイルのことです。

たとえば $HOME 配下には、こんなファイルやディレクトリがあります。

  • .config
  • .local
  • .ssh
  • .zprofile

こうした設定ファイルをまとめて dotfiles と呼びます。

なぜ dotfiles を管理するの?

  • 毎回ゼロから設定したくない
  • 自分に最適な設定を再利用したい
  • 設定をなくさないようにしたい

PC 買替え時や環境を作り直す時に、「前の設定どこいったっけ…?」となった経験がある人には特に刺さると思います。

まずは始めてみよう!

dotfiles は完璧を目指さなくて大丈夫です。
まずは以下の 3 ステップだけ ☝️

1. リポジトリを作る

GitHub などに dotfiles リポジトリを作ります。

2. 何か 1 つ設定を追加する

  • シェル設定
  • Git の設定
  • エディタの設定... etc

本当に 1 ファイルで OK です。

3. シンボリックリンクを貼る

dotfiles リポジトリ内の設定ファイルを、$HOME 配下にシンボリックリンクとして配置します。

最後に push すれば... 完成!! 🎉

作った後はどうするの?

慣れてきたら、少しずつ育てていきましょう 🌱

  • 他の設定ファイルも追加してみる
  • 開発環境をちょっと良くしてみる
  • セットアップ用スクリプトを書いてみる

dotfiles は「完成形」を目指すものではなく、 育て続けるもの ですね!

Q&A

どんな設定ファイルがあるの?

  • シェル系:bash / zsh / fish
  • エディタ系:VSCode / Vim / Emacs
  • ターミナル系:Alacritty / ghostty / hyper
  • その他:Git / Docker / Node.js

管理しない方がいいものは?

以下のようなものは、基本的に管理しない方が安全 です。

  • 🔐 認証情報系
    • アカウントの乗っ取りやサーバー侵入などのリスクあり( ssh, aws... )
  • 📦 サイズ・差分が大きい系
    • 追跡に向かない、メリットがそこまでない( cache, logs... )
  • 🏗 ビルド生成物系
    • 毎回生成されるので、上記同様に向かな( node_modules, .next... )

便利なツールを知りたい!

dotfiles 管理を助けてくれるツールもあります。

  • chezmoi
    • 秘密情報の自動検知・除外
    • マルチプラットフォーム対応しやすい
  • dotbot
    • YAML 形式で構成しやすい
    • CI/CD に向いた構成
  • xdg-ninja
    • 各設定ファイルの置き場所を教えてくれる
    • 名前がなんかかっこいい 🥷

「全部使わなきゃ」ではなく、必要になったら検討する くらいで ☝️

私の dotfiles 構成

私の dotfiles は、こんな構成になっています。
https://github.com/a-ide/dotfiles

├── .config
│  ├── fish
│  │  ├── completions
│  │  │  └── fisher.fish
│  │  ├── conf.d
│  │  │  ├── 10-path.fish
│  │  │  ├── 20-functions.fish
│  │  │  ├── 30-abbreviations.fish
│  │  │  ├── 40-env-xdg.fish
│  │  │  └── 50-env-tools.fish
│  │  ├── config.fish
│  │  ├── fish_plugins
│  │  └── functions
│  │    ├── eza.fish
│  │    └── fisher.fish
│  ├── git
│  │  ├── config
│  │  └── gitignore
│  └── vscode
│    └── settings.json
├── .github
│  └── PULL_REQUEST_TEMPLATE.md
├── bootstrap.sh
├── Brewfile
├── README.md
└── scripts
  ├── config.sh
  ├── install_brew.sh
  ├── setup.sh
  ├── setup_fish.sh
  └── symlink.sh

xdg-ninja を使って、設定ファイルの配置も少しずつ整えています。

参考にできる dotfiles はいっぱい!

GitHub には、参考になる dotfiles がたくさん公開されています。
https://github.com/search?q=dotfiles&type=repositories

  • ディレクトリ構成
  • スクリプトの書き方
  • 設定の分割方法

もちろん「全部真似する」必要はなく 気になったところを少しずつ取り入れる のが良さそうです。

まとめ

dotfiles を管理すると、こんな嬉しいことが!

  • 新しい環境でもすぐに開発が始められる
  • バックアップになる(気軽に破壊できる)
  • 気持ちが整う 😌

最初は本当に ゆるっと で大丈夫です。
皆さんもゆるっと dotfiles を始めて見ましょう〜〜🚪❗

おまけ

社内で公開している人の dotfiles と、工夫などのコメントをご紹介👇

@fujikky

https://github.com/fujikky/macos-provisioning

自分は毎年、年末年始にmacOSのメジャーバージョンアップを兼ねてシステムを完全に初期化して開発環境を作り直しています(その方が気持ちよく年明けから仕事ができるためです!)
初期化するたびに開発環境を一からセットアップするのは大変なので、シェルスクリプトで可能な限り一気に整えるようにしています。
リポジトリを公開しておくとGitHubのログインも不要でスクリプトが実行できるので楽なのですが、業務に関連する設定などが入らないように気をつける必要もあります。

@Rody

https://github.com/upinetree/dotfiles

環境の作り直しは頻繁に発生するものではありませんが、その作業が大変なので、心理的なハードルを下げる意味でも dotfiles を運用していて良かったと思います。
あと、macOS と Linux 環境両方で動くようにしているので、メインの macOS の設定を他の環境に同期するためにも使えていて便利です。
公開していることで他の人にこんな設定で使ってるよと説明しやすかったりするのがよいですね。

@Scott

https://github.com/bonty/dotfiles

基本的に年末年始休みに見直していますが、ほとんどの設定を忘れていて毎回スクラップ&ビルドみたいになっています。
ここ数年はほとんどmacOSしか触っていないということもあり、GitHubで管理するのではなく mackup というツールを使ってiCloudで同期するような形で設定していることが多いです。
他のOSでも環境同期したくなったらまた戻ってくるかもしれません。

Andy

https://github.com/wada811/dotfiles

マシンを切り替える際に再設定が面倒なので dotfiles を用意しました。導入直後は色々整理していましたが、今では変更があるときだけ更新して、マシンを切り替えるタイミングなどでたまに見直す程度の運用となっています。

Louis

https://github.com/lciel/dotfiles

もともと Linux と macOS の両方を使っていて、新しい環境に入植するたびに設定するのが面倒で dotfiles を用意していました。
今ではエンジニア職からかなり離れてしまったこともあり、数年単位で Mac 本体のリプレースをするときのみに最新の情報にメンテしなおしています。

@Ronnie

https://github.com/ruchikawa/dotfiles

TimeTree Tech Blog

Discussion