📄

PCの環境設定はdotfilesをGitHubで一元管理するのが楽

いろいろと PC を乗り換えたり、不具合対応のために PC を初期化したりしたとき、イチから環境を作り直すのはめんどくさいものです。
dotfiles を GitHub で管理すれば環境構築のコストが一気に少なくなります。
また、これにより環境を作り直すこと自体の心理的ハードルが下がるメリットもあります。

# dotfiles とは

unix 系の不可視ファイルのことです。
ファイル名が.から始まるので dotfiles と呼ばれています。
.bashrcとか.vimrcとかです。

デフォルトの状態では非表示にされているため、平時は表示される必要がないような各種設定ファイルが dotfiles の形をとっていることが多いです。
これらは単にファイルなので、GitHub 等に専用リポジトリを作って保存するのがおすすめです。
新しい PC を導入したときや、既存の PC を初期化したときに簡単に設定をダウンロードして反映できます。

まあ新環境からアクセスできれば良いので、個人なら外付け HDD とか NAS とか、企業なら社内サーバーとか、保存先は GitHub じゃなくてもなんでも良いです。
とはいえ GitHub を始めとした Git ホスティングサービスを使うのが手っ取り早く楽だと思います。

# dotfiles の運用法

原理的には既存の.bashrcとか.vimrcとかを dotfiles のフォルダにコピーして GitHub にプッシュすれば OK です。
ただそれではいちいちコピーするのが面倒になるので、シンボリックリンクを張ってしまったほうが良いでしょう。
また、導入時の作業を減らすため、リンクを張ること自体もスクリプトで自動化してしまうのがスマートだと思います。

# kawarimidoll は何を保存しているか

こちら (opens new window)にて公開しています。
いろいろ保存しているのですが、代表的なものを紹介します。

# .bashrc / .zshrc

シェルの設定です。mac では基本的に zsh の方を使っていますが、bash 用の設定も作っておけば、bash しか使えない環境に入っても同じ dotfiles を使えます。
で、bash と zsh 両方で使いたい設定(エイリアスとか)を共通化するため、commonshrcというファイルに記述し、それを参照しています。
リポジトリ名はdotfilesで、実際各種 dotfiles が入っていますが、別に dotfiles じゃないものも入れて良いわけです。
設定の共通化に使えるのは何でも入れられるのが良いところです。

# .gitconfig / .gitignore_global

Git の設定です。基本的な設定はここに入れています。
環境によって異なる設定を反映できるよう、内部で~/.gitconfig.localを参照するようにしています。

# .vimrc

Vim の設定です。
プラグインは vim-plug を使っていますが、開いたときに自動でプラグインをインストールするようにしているので、「dotfiles のダウンロード」「vim を開く」の 2 ステップでエディタの環境構築が完了します。
vim の設定はまだまだ納得しきっていないので、もっと作り込みたいところです。

# starship.toml

プロンプト増強ツールのstarship (opens new window)の設定です。これも dot ついてませんが各環境で持ち運びたい設定ファイルです。

# karabiner.json

Mac のキーボード入力支援ツールのKarabiner-Elements (opens new window)の設定ファイルです。
現在使っているキーボードがちょっと特殊で、Karabiner なしでは Command キーが打てないため、設定の共通化と自動化は必須です。

# brew-list.log

これは完全に自作ファイルなのですが、Mac のパッケージマネージャであるHomebrew (opens new window)で導入したアプリの一覧です。
AppStore からダウンロードしたものもmas (opens new window)を使って一元管理しています。
このリストを更新するスクリプト (opens new window)と、リストのアプリを一括でインストールするスクリプト (opens new window)を作っているので、新しい Mac にしてもスクリプトを流す(そして暫く待つ)だけでアプリの導入が完了します。
…実際はインストール時にパスワードを入力する必要があるアプリがあるので、時々進捗を確認する必要がありますが。

# デメリット

そもそも GitHub などの保存場所にアクセスできない環境では使えません。
また、各種設定を dotfiles へ入れることが習慣になってくると、逆に dotfiles で管理できないものは使用優先度が下がっていきます(GUI で設定するしかないアプリ、brew でインストールできないアプリなど)。

# まとめ

dotfiles を GitHub で管理すれば環境構築が楽になります。
また、それにより環境破壊も気軽にできるようになります。
GitHub に上げていることで人の設定を見ることができるのも利点です。

いつでも同じ結果になることはコンピュータに任せて、人間はよりクリエイティブな作業に集中しましょう。