いろいろと 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 に上げていることで人の設定を見ることができるのも利点です。
いつでも同じ結果になることはコンピュータに任せて、人間はよりクリエイティブな作業に集中しましょう。