1. HOME»
  2. プログラミング・Web»
  3. ターミナル»
  4. 【初心者向け】dotfilesの作り方。開発環境を一瞬で構築しよう!

【初心者向け】dotfilesの作り方。開発環境を一瞬で構築しよう!

Macを買い換えたとき、データを全削除した後などは、もういちど自分の開発環境を整える必要があります。
しかし、その環境設定は、ちょっと大変な作業だったりします。

そんなとき、dotfilesというものを作っておくと、とてもかんたんに開発環境を整えることができて便利です。

今回は、zshとVimの設定を例に、Macでのdotfilesの作り方を紹介します。

りこ

ねぇ、dotfilesってなんなの?

山田

いろんなツールの設定ファイルを、ひとつのフォルダのなかに作っておいて、かんたんに環境を作れるようにするものだべ

グッバイキティ

なんか便利そうどすなぁ

アル

なんだかむずかしそう……

目次
  1. dotfilesってなぁに?
  2. ドットファイルをdotfilesフォルダに移動しよう!
  3. シンボリックリンクを作ろう!
  4. シンボリックリンクを作るための、シェルスクリプトファイルを作ろう!
  5. まとめ

dotfilesってなぁに?

dotfilesと言われると、なんだかむずかしいツールみたいに思ってしまいがちですが、そうではありません。
まず、dotfilesは、たんなるフォルダ(ディレクトリです。

そのなかには、さまざまなツールの設定ファイルを入れておきます。
こういった設定ファイルは、ファイル名の最初が「.(ドット)」になっています。

「.(ドット)」ではじまるファイルをひとつにまとめるので、「dotfiles」となるわけです。

といっても、ファイルだけでなく、ドットからはじまるフォルダも、一緒に管理したりします。

このように、設定ファイルをひとつのフォルダにまとめておくことで、いろんなツールの設定を、かんたんに管理できるようになるのです。

山田

つまりdotfilesは、ドットからはじまる設定ファイルをあつめたフォルダ、なんだべ

こんなふうに、いろんな設定ファイルを入れておくんだべよ
もちろん、フォルダを入れてもいいべ

グッバイキティ

たしかに、設定ファイルが1箇所にまとまってはると、管理が楽になりそうどすなぁ

山田

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

りこ

すごーい!

アル

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

りこ

ここで悩んでても仕方ないわね。とにかく作ってみましょ!

ドットファイルをdotfilesフォルダに移動しよう!

ではまず、ドットからはじまるファイル(ドットファイル)を、「dotfiles」フォルダに移動しましょう。

いろんなツールのドットファイルの多くは、ホームディレクトリに保存されています。
ホームディレクトリは、自分のユーザ名になっているディレクトリですね。

グッバイキティ

あらあら。ホームフォルダ、見てみても、ドットからはじまるファイルもフォルダも見当たらないどすー

アル

ぼくもー

山田

ドットからはじまるファイルやフォルダは、通常は見えないように隠れているんだべ
shift + command + .で、表示非表示を切り替えられるべよ

りこ

へぇー

山田

まずは、ホームディレクトリに「dotfiles」フォルダを作るべ

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

山田

さらに、その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というファイルを作って、内容を次のようにするべ!

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ファイル名を指定して実行するべ!

% cd dotfiles
% sh link.sh

%は入力しなくて構いません)

山田

するとホームディレクトリに、こんなふうに矢印のついたファイルやフォルダが作られるべ
これが、シンボリックリンクだべ

りこ

あ、ホームディレクトリに、dotfilesにあったファイルやフォルダがそのまま作られてる!
ちゃんと矢印もついてるよ!

山田

そして、dotfilesにあるデータに変更を加えても、ちゃんとシンボリックリンクの方にも反映されるんだべ!

グッバイキティ

場所は離れとっても、ちゃんと結ばれている
シンボリックリンク、ホンマ美しいどすなぁ

一曲作れてまうなぁ。「ウチはアンタのシンボリックリンク」なんて……ふふふっ、ホンマ、言わせんといてぇな

りこ

きゃー! すてき!

山田

すばらしいべ!

アル

なんだそれ

山田

まぁまぁ。とにかく、これでdotfilesの完成だべ

このdotfilesだけあれば、Macを変えたときでも、link.shを実行するだけで、すぐに自分の環境に設定することができるんだべよ

今回は解説しないべけど、このdotfilesをGitHubとかにアップしておくと、とても便利になるんだべ

グッバイキティ

ほう。せやから秘密の情報を管理したらあかん、言うてはったんどすなぁ

まとめ

今回はdotfilesの作り方を紹介しました。
dotfilesを作っておくことで、Macを変えたときなど、すぐに自分の環境を整えることができます。

グッバイキティ

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

アル

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

グッバイキティ

そうなんどすえ

りこ

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

アル

ぼくも聞きたい!

グッバイキティ

ひっ、は、恥ずかしいどす〜
ウチ、そんなふうに言われてもうたら……

ウチ、もうそろそろ帰ります
ほな、グッバイならどすー

グッバイキティ

とことことことこ

アル

帰っちゃった!

りこ

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

山田

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

りこ

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

アル

ほんとに歌えるの?

山田

てやんでぇ、べらぼうめだべ!
聞いて驚くなだべ!

こほん……
グッバイ、グッバイ、キティちゃん〜♪
グッバイ、グッバイ、キティちゃん〜♪

アル

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

山田

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

オリジナルゲーム.com