はじめに
.vimrc
や .zshrc
など、設定ファイル、いわゆる dotfiles を git で管理している方は多いと思います。ですが、それらのファイルは簡単にインストールできるでしょうか。マシンが変わると、手動でコピーするのは面倒だと感じませんか? この記事では、簡単にインストールできる dotfiles の書き方について説明します
やるべきこと
dotfiles は github で管理する
言うまでもありませんね。これにより、ネットワークにアクセスできる PC であれば同じファイルにいつでもアクセスできます。
ファイルはシンボリックリンクで配置する
不便だなと感じたとき、こうすればよいのではと思いついたとき、新しい言語を初めてシンタックスハイライトを入れたいときなど、dotfiles は頻繁に変更しますし、生産性を上げるためにも頻繁に変更するべきです。しかし、いちいちコピーしていると、面倒に感じてしまい、あるいは変更をやらなくなってしまいます。
シンボリックリンクにすることで、変更しやすくなり、また git へのコミットが簡単になります。手動でコピーしていると、実際のファイルと github のファイルが乖離することも多く、せっかく github に置いた意味がなくなってしまいます。
コマンド一つでインストールできるようにする
dotfiles も数が多くなってくると、シンボリックリンクを手動で設定するのは大変です。大抵のファイルは $HOME
に置くことになるので、専用ディレクトリをつくり、その中のファイルすべてのシンボリックリンクを作成するスクリプトを書きましょう。
短く覚えやすい URL でダウンロードできるようにする。
まず、自分用のドメインを取りましょう。多少のお金はかかりますが、ドメインを持っていると何かと便利です。
そして、そのドメインにスクリプトを置き、ダウンロードして実行するだけでセットアップできるようにしましょう。
私の dotfiles 構成
そうは言っても具体的にどうすればいいのか分かりづらいと思うので、私の dotfiles について解説します。
リポジトリは https://github.com/zakuro9715/dotfiles です。
home ディレクトリにあるファイルとサブディレクトリは、自動的にホームディレクトリにシンボリックリンクが張られます。xdg_home は ~/.config 内です。
インストールスクリプトには bootstrap.ts と install.zsh があります。bootstrap.ts ではシンボリックリンクを貼ったり、go のパッケージをインストールしたりし、install.zsh では deno のインストールなどを行ったあと bootstrap.ts を呼び出します。
https://za.kuro.red/install.zsh | zsh
というコマンド一つで、私の使っている環境のほぼすべてがインストールできます。もちろん、私以外の人でも使えます(もっとも、環境がかなり特殊なので、私以外に便利に感じる人はいないでしょうが)。
5 年間継ぎ足してきたこの dotfiles にはかなり限界が来ており、現在リファクタリング中です。もともとは bootstrap も zsh だったのですが、あまりにカオスだったので deno と ts で書き直しました。
また、それほど支障はないものの、微妙に壊れている箇所がいくつかありますし、zsh と git だけは手動でインストールする必要がありますし、未だにあとから apt 等からインストールすることも多いので、それを自動化するのが課題です。
また、仕組み自体は構築したのですが、.vimrc
や .zshrc
など、設定ファイル自体は非常にカオスになっています。これもいつかはリファクタリングしたいところです。
さいごに
自分の環境をいつでも再現できると、OS を簡単に壊せるという安心感があり、とても便利です。ある日突然 PC が壊れても、ハードウェアさえ調達できれば環境構築は一瞬で終わります。
みなさんも、コマンド一つでインストールできる dotfiles を作ってみてはどうでしょうか。