Macを買い換えたとき、データを全削除した後などは、もういちど自分の開発環境を整える必要があります。
しかし、その環境設定は、ちょっと大変な作業だったりします。
そんなとき、dotfilesというものを作っておくと、とてもかんたんに開発環境を整えることができて便利です。
今回は、zshとVimの設定を例に、Macでのdotfilesの作り方を紹介します。

ねぇ、dotfilesってなんなの?

なんか便利そうどすなぁ

なんだかむずかしそう……
dotfilesってなぁに?
dotfilesと言われると、なんだかむずかしいツールみたいに思ってしまいがちですが、そうではありません。
まず、dotfilesは、たんなるフォルダ(ディレクトリ)です。
そのなかには、さまざまなツールの設定ファイルを入れておきます。
こういった設定ファイルは、ファイル名の最初が「.(ドット)」になっています。
「.(ドット)」ではじまるファイルをひとつにまとめるので、「dotfiles」となるわけです。
といっても、ファイルだけでなく、ドットからはじまるフォルダも、一緒に管理したりします。
このように、設定ファイルをひとつのフォルダにまとめておくことで、いろんなツールの設定を、かんたんに管理できるようになるのです。


しかも、環境の構築も一瞬でできるようになるんだべ

すごーい!

うーん、いまいちよく分からないよー

ここで悩んでても仕方ないわね。とにかく作ってみましょ!
ドットファイルをdotfilesフォルダに移動しよう!
ではまず、ドットからはじまるファイル(ドットファイル)を、「dotfiles」フォルダに移動しましょう。
いろんなツールのドットファイルの多くは、ホームディレクトリに保存されています。
ホームディレクトリは、自分のユーザ名になっているディレクトリですね。

ぼくもー

へぇー

※これは例です。ホームディレクトリにあるフォルダやファイルは、上記の例とは異なるかもしれません。

.sshなどの秘密の情報が入っているものは、絶対にdotfilesで管理しないようにしましょう。
間違えてGitHubなどで公開してしまうと、大変なことになってしまいます。

dotfilesで管理するものは、ちゃんと自分で選ぶ必要があるべ
そして、そこに秘密の情報が入っていないか、しっかりと確認して、管理するんだべ
あと、コマンド履歴のファイル(.zsh_historyなど)とかも、管理しない方がいいべ

よく分からないものは、管理しない方がよさそうね
dotfiesは、たとえば以下のようなふうにします。
dotfies/
|-- .vim/
| |-- autoload/
| | `-- xxxxx.vim
| |-- colors/
| | `-- xxxxx.vim
| `-- config/
| `-- init.vim
|-- .zsh/
| |-- init.zsh
| `-- commands.zsh
|-- .vimrc
`-- .zshrc

……ほんとはもっとたくさんあるんだべ
ただ今回は、dotfilesの作り方の基本、ということで、省略させてもらったべ

あらまぁ。それは管理が大変どすなぁ

どうすればいいの?
シンボリックリンクを作ろう!
つづいて、シンボリックリンクを作っていきます。
シンボリックリンクというのは、本当のファイルやフォルダは別の場所にあるのに、いかにもそこにあるかのように見せる仕組みのことです。

どないするんどすかぁ?

あ、ターミナルを開くのね!

あらまぁ。ターミナルを開いたら、なんかむずかしいメッセージが表示されました
This is the Z Shell configuration function for new users,
zsh-newuser-install.
You are seeing this message because you have no zsh startup files
(the files .zshenv, .zprofile, .zshrc, .zlogin in the directory
~). This function can help you with a few settings that should
make your use of the shell easier.
You can:
(q) Quit and do nothing. The function will be run again next time.
(0) Exit, creating the file ~/.zshrc containing just a comment.
That will prevent this function being run again.
(1) Continue to the main menu.
--- Type one of the keys in parentheses ---

ほんまどすなぁ。ちゃんと動いてくれはりました
% ln -s dotfiles/.vimrc ~/.vimrc
(%
は入力しなくて構いません)

ln
というコマンドに、-s
というオプションをつけることで、シンボリックリンクを作ることができるんだべ
これはdotfilesフォルダにある.vimrcのシンボリックリンクを、ホームディレクトリに.vimrcという名前で作るものだべ

うむ。そういうことだべ
シンボリックリンクを作るための、シェルスクリプトファイルを作ろう!
dotfilesの中のもののシンボリックリンクをホームディレクトリに作ることで、それぞれのツールがその設定ファイルを読み込むことができるようになります。
しかし、ひとつづつシンボリックリンクを作っていては大変なので、シェルスクリプトファイルを作って、一発でできるようにします。
link.sh
#!/bin/sh
# エラーや未定義の変数に備える
set -eu
# dotfilesディレクトリの場所を、変数DOTFILES_DIRに教える
DOTFILES_DIR=$(cd $(dirname $0); pwd)
# dotfilesディレクトリに移動する
cd $DOTFILES_DIR
# .から始まるファイルやフォルダに対して繰り返す
for f in .??*; do
# シンボリックリンクを作りたくないファイルやフォルダを除外
[[ "$f" == ".git" ]] && continue
[[ "$f" == ".gitconfig" ]] && continue
[[ "$f" == ".gitignore" ]] && continue
[[ "$f" == ".DS_Store" ]] && continue
[[ "$f" =~ .swp$ ]] && continue
# シンボリックリンクを作成
ln -snfv ${DOTFILES_DIR}/$f ~
done

link.shはどないなふうに使うんどすかぁ?
% cd dotfiles
% sh link.sh
(%
は入力しなくて構いません)


きゃー! すてき!

すばらしいべ!

なんだそれ

まぁまぁ。とにかく、これでdotfilesの完成だべ
このdotfilesだけあれば、Macを変えたときでも、link.shを実行するだけで、すぐに自分の環境に設定することができるんだべよ
今回は解説しないべけど、このdotfilesをGitHubとかにアップしておくと、とても便利になるんだべ

ほう。せやから秘密の情報を管理したらあかん、言うてはったんどすなぁ
まとめ
今回はdotfilesの作り方を紹介しました。
dotfilesを作っておくことで、Macを変えたときなど、すぐに自分の環境を整えることができます。

アンタ〜、帰らへん日々、ウチ辛抱〜
あ、シンボ〜ぅリック、リぃンクぅぅぅ〜♪

そういえば、グッバイキティちゃんは演歌の歌い手だったんだよね

そうなんどすえ

すごい! もっといろんな曲、聞かせてよ

ぼくも聞きたい!

ひっ、は、恥ずかしいどす〜
ウチ、そんなふうに言われてもうたら……
ウチ、もうそろそろ帰ります
ほな、グッバイならどすー

とことことことこ

帰っちゃった!

ホントに恥ずかしかったのね……

実は最近、わたすも歌を練習してるんだべ
絶対に上手くなって、グッバイキティちゃんを振り向かせてみせようと思ってるべ

すてき! 先生、歌ってみてよ!

ほんとに歌えるの?

てやんでぇ、べらぼうめだべ!
聞いて驚くなだべ!
こほん……
グッバイ、グッバイ、キティちゃん〜♪
グッバイ、グッバイ、キティちゃん〜♪

なんか、お別れの歌みたい

うそだべ!
すごくいい曲作ったと思ったんだべけどなぁ