Macを買い換えたとき、データを全削除した後などは、もういちど自分の開発環境を整える必要があります。
しかし、その環境設定は、ちょっと大変な作業だったりします。
そんなとき、dotfilesというものを作っておくと、とてもかんたんに開発環境を整えることができて便利です。
今回は、zshとVimの設定を例に、Macでのdotfilesの作り方を紹介します。
ねぇ、dotfilesってなんなの?
いろんなツールの設定ファイルを、ひとつのフォルダのなかに作っておいて、かんたんに環境を作れるようにするものだべ
なんか便利そうどすなぁ
なんだかむずかしそう……
dotfilesってなぁに?
dotfilesと言われると、なんだかむずかしいツールみたいに思ってしまいがちですが、そうではありません。
まず、dotfilesは、たんなるフォルダ(ディレクトリ)です。
そのなかには、さまざまなツールの設定ファイルを入れておきます。
こういった設定ファイルは、ファイル名の最初が「.(ドット)」になっています。
「.(ドット)」ではじまるファイルをひとつにまとめるので、「dotfiles」となるわけです。
といっても、ファイルだけでなく、ドットからはじまるフォルダも、一緒に管理したりします。
このように、設定ファイルをひとつのフォルダにまとめておくことで、いろんなツールの設定を、かんたんに管理できるようになるのです。
たしかに、設定ファイルが1箇所にまとまってはると、管理が楽になりそうどすなぁ
しかも、環境の構築も一瞬でできるようになるんだべ
すごーい!
うーん、いまいちよく分からないよー
ここで悩んでても仕方ないわね。とにかく作ってみましょ!
ドットファイルをdotfilesフォルダに移動しよう!
ではまず、ドットからはじまるファイル(ドットファイル)を、「dotfiles」フォルダに移動しましょう。
いろんなツールのドットファイルの多くは、ホームディレクトリに保存されています。
ホームディレクトリは、自分のユーザ名になっているディレクトリですね。
ぼくもー
ドットからはじまるファイルやフォルダは、通常は見えないように隠れているんだべ
shift + command + .で、表示非表示を切り替えられるべよ
へぇー
※これは例です。ホームディレクトリにあるフォルダやファイルは、上記の例とは異なるかもしれません。
さらに、そのdotfilesフォルダに、管理したいものを入れるべ
.sshなどの秘密の情報が入っているものは、絶対にdotfilesで管理しないようにしましょう。
間違えてGitHubなどで公開してしまうと、大変なことになってしまいます。
dotfilesで管理するものは、ちゃんと自分で選ぶ必要があるべ
そして、そこに秘密の情報が入っていないか、しっかりと確認して、管理するんだべ
あと、コマンド履歴のファイル(.zsh_historyなど)とかも、管理しない方がいいべ
よく分からないものは、管理しない方がよさそうね
うむ。まず最初は.zshrcとか、.vimrcとか、その辺りの、自分がちゃんと分かっているファイルを管理してみるといいべ
dotfiesは、たとえば以下のようなふうにします。
dotfies/
|-- .vim/
| |-- autoload/
| | `-- xxxxx.vim
| |-- colors/
| | `-- xxxxx.vim
| `-- config/
| `-- init.vim
|-- .zsh/
| |-- init.zsh
| `-- commands.zsh
|-- .vimrc
`-- .zshrc
環境は人によって違うべけど、こんな感じで、設定ファイルをdotfilesフォルダに入れたんだべ
zshとVimだけでも、たくさん設定ファイルがあるんどすなぁ
……ほんとはもっとたくさんあるんだべ
ただ今回は、dotfilesの作り方の基本、ということで、省略させてもらったべ
あらまぁ。それは管理が大変どすなぁ
でもさ、設定ファイルの場所を変えちゃって、大丈夫なの?
もちろんこのままじゃzshもVimも、設定がなにもされていない状態になってしまうべ
どうすればいいの?
シンボリックリンクを作るんだべ!
シンボリックリンクを作ろう!
つづいて、シンボリックリンクを作っていきます。
シンボリックリンクというのは、本当のファイルやフォルダは別の場所にあるのに、いかにもそこにあるかのように見せる仕組みのことです。
どないするんどすかぁ?
コマンドを使うんだべ
あ、ターミナルを開くのね!
あらまぁ。ターミナルを開いたら、なんかむずかしいメッセージが表示されました
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 ---
うむ。.zshrcをdotfilesに移してしまったからだべ
qを押せば、ふつうにコマンドを実行できるべよ
ほんまどすなぁ。ちゃんと動いてくれはりました
% ln -s dotfiles/.vimrc ~/.vimrc
(%
は入力しなくて構いません)
ln
というコマンドに、-s
というオプションをつけることで、シンボリックリンクを作ることができるんだべ
これはdotfilesフォルダにある.vimrcのシンボリックリンクを、ホームディレクトリに.vimrcという名前で作るものだべ
ちょっとむずかしいけど、つまり、dotfilesにある.vimrcが、まるでホームディレクトリにあるように見えるようになる、ってことかな
うむ。そういうことだべ
じゃあ、これでdotfilesの中身ぜーんぶシンボリックリンクを作ればいいのね!
まぁ、そういうことなんだべけど、ひとつひとつ作っていては大変だべ
そこで、シェルスクリプトファイルを作って、それを実行することで、かんたんにシンボリックリンクを作れるようにするべ!
シンボリックリンクを作るための、シェルスクリプトファイルを作ろう!
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は、dotfilesフォルダに保存するんだべよ
link.shはどないなふうに使うんどすかぁ?
% cd dotfiles
% sh link.sh
(%
は入力しなくて構いません)
そして、dotfilesにあるデータに変更を加えても、ちゃんとシンボリックリンクの方にも反映されるんだべ!
きゃー! すてき!
すばらしいべ!
なんだそれ
まぁまぁ。とにかく、これでdotfilesの完成だべ
このdotfilesだけあれば、Macを変えたときでも、link.shを実行するだけで、すぐに自分の環境に設定することができるんだべよ
今回は解説しないべけど、このdotfilesをGitHubとかにアップしておくと、とても便利になるんだべ
ほう。せやから秘密の情報を管理したらあかん、言うてはったんどすなぁ
まとめ
今回はdotfilesの作り方を紹介しました。
dotfilesを作っておくことで、Macを変えたときなど、すぐに自分の環境を整えることができます。
アンタ〜、帰らへん日々、ウチ辛抱〜
あ、シンボ〜ぅリック、リぃンクぅぅぅ〜♪
そういえば、グッバイキティちゃんは演歌の歌い手だったんだよね
そうなんどすえ
すごい! もっといろんな曲、聞かせてよ
ぼくも聞きたい!
ひっ、は、恥ずかしいどす〜
ウチ、そんなふうに言われてもうたら……
ウチ、もうそろそろ帰ります
ほな、グッバイならどすー
とことことことこ
帰っちゃった!
ホントに恥ずかしかったのね……
実は最近、わたすも歌を練習してるんだべ
絶対に上手くなって、グッバイキティちゃんを振り向かせてみせようと思ってるべ
すてき! 先生、歌ってみてよ!
ほんとに歌えるの?
てやんでぇ、べらぼうめだべ!
聞いて驚くなだべ!
こほん……
グッバイ、グッバイ、キティちゃん〜♪
グッバイ、グッバイ、キティちゃん〜♪
なんか、お別れの歌みたい
うそだべ!
すごくいい曲作ったと思ったんだべけどなぁ