『GitHub+dotfiles』は環境構築を一瞬で終わらせるすごいやつ
2017/03/06
こんにちは、okutani(@okutani_t)です。『GitHub+dotfiles』を利用すると、開発環境を一瞬で作れて便利なことを最近知りました。
dotfilesはツールでもなんでもなく、単純に『.vimrc』『.emacs.d』『.zshrc』なんかの「頭にドットがつくファイル」を格納したディレクトリのことです。
このdotfilesをGitHubで管理しておいて、「dotfilesリポジトリをクローン+install.shの実行」で、「環境構築をらくーにおこなおうじゃないか!」といった感じです。
今回はMac上で動作させていますが、Linuxでも同じようにinstall.shを作成することができるかと思います。
ちなみに、たくさんの方がdotfilesの管理方法について記事にしているので、めっちゃ参考になります。
参考ミニマルに始めるDotfiles自動化計画 – Qiita
参考(上級者向け)最強の dotfiles 駆動開発と GitHub で管理する運用方法 – Qiita
ちなみに、僕は勝手にDQNEOさんのdotfilesリポジトリ(以下URL)を参考にしました。怒られたらリンク消します(面識まったくありません)。
参考DQNEO/dotfiles: my dot files ( .emacs, .zsh .screenrc ..)
さらに、今回はMacの環境構築をすばやくおこなうために「Homebrew+Homebrew Cask」を実行できるシェルスクリプトも作ってみたので、合わせて参考にしてください(もうドットファイルじゃないとかは置いておいて……)(Linuxの人は飛ばして読んでください)。
というわけで、さっそくdotfilesを作成して、GitHubにリポジトリを作って管理するまでを見てみましょう。
スポンサーリンク
dotfilesの作り方
まずはdotfilesの作り方を解説していきます。
とは言ってもかんたんで、ホームディレクトリに作ったdotfilesディレクトリにドットファイルを移動させ、シンボリックリンクを貼るスクリプトファイルを設置するだけです。
$ cd ~
$ mkdir dotfiles
次のコマンドで、ドットファイルをせっせとdotfilesに移動させます。ちなみに、ドット付きのファイルはfinderで扱いにくいので、以下のようにmvコマンド打ったほうがよさげです。
$ mv .vimrc dotfiles
$ mv .emacs.d dotfiles
$ mv .zshrc dotfiles
...
次のシェルスクリプトを「install.sh」という名前でdotfiles内に作成。
$ cd dotfiles
$ vi install.sh
#!/bin/bash
set -u
# 実行場所のディレクトリを取得
THIS_DIR=$(cd $(dirname $0); pwd)
cd $THIS_DIR
git submodule init
git submodule update
echo "start setup..."
for f in .??*; do
[ "$f" = ".git" ] && continue
[ "$f" = ".gitconfig.local.template" ] && continue
[ "$f" = ".require_oh-my-zsh" ] && continue
[ "$f" = ".gitmodules" ] && continue
ln -snfv ~/dotfiles/"$f" ~/
done
[ -e ~/.gitconfig.local ] || cp ~/dotfiles/.gitconfig.local.template ~/.gitconfig.local
# emacs set up
if which cask >/dev/null 2>&1; then
echo "setup .emacs.d..."
cd ${THIS_DIR}/.emacs.d
cask upgrade
cask install
fi
cat << END
**************************************************
DOTFILES SETUP FINISHED! bye.
**************************************************
END
これは何をしているかというと、「dotfilesにあるドットファイルをfor文で回し、ホームディレクトリにシンボリックリンクを貼る」ということをしてます。
正規表現で「.??*」としておけば、先頭がドットで始まり、2文字以上のファイルを探索できます。
また、探索したファイルを「continue」で個別にスキップできるようにしてあります。
途中でEmacsの初期設定やらgitconfig.localの設定やらをおこなう箇所がありますが、Emacsやgitconfig.localを使わないユーザーは無視してください。あと、git submodule〜の箇所はoh my zshを使うために記述してあります。
作成できたら実行権限をつけ、シンボリックリンクがちゃんと貼られるか試しに実行してみましょう。
$ chmod +x install.sh
$ ./install.sh
普段通り、emacsやvimが使えていれば成功です。一度しくみが分かってしまえばかんたんですね。
次はMacの環境構築用のファイルを作成してみます。
homebrew_install.shの作成
homebrew_install.shを作成して、Macの開発環境を一発で構築できるようにしてみます。
ちなみに、Homebrewが何かわからないor導入方法が知りたい場合は、以下の過去記事を参考にしてみてください。
では、homebrew_install.shを作成していきましょう。次の手順で作成します。
$ cd dotfiles
$ vi homebrew_install.sh
#!/bin/bash
echo "installing homebrew..."
which brew >/dev/null 2>&1 || /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
echo "run brew doctor..."
which brew >/dev/null 2>&1 && brew doctor
echo "run brew update..."
which brew >/dev/null 2>&1 && brew update
echo "ok. run brew upgrade..."
brew upgrade --all
formulas=(
git
wget
curl
tree
openssl
z
colordiff
"--without-etcdir zsh"
zsh-completions
"--with-cocoa --srgb emacs"
cask
ansible
peco
hub
tig
node
python3
lua
"vim --with-lua"
mysql
postgresql
sqlite
"php55 --homebrew-apxs"
httpd22
ricty
sqlite
composer
markdown
ctags
ssh-copy-id
phantomjs
mecab
diff-so-fancy
thefuck
)
"brew tap..."
brew tap homebrew/dupes
brew tap homebrew/versions
brew tap homebrew/homebrew-php
brew tap homebrew/apache
brew tap sanemat/font
echo "start brew install apps..."
for formula in "${formulas[@]}"; do
brew install $formula || brew upgrade $formula
done
casks=(
dropbox
evernote
skitch
bettertouchtool
google-chrome
google-japanese-ime
slack
alfred
iterm2
libreoffice
cyberduck
vlc
atom
virtualbox
vagrant
vagrant-manager
)
echo "start brew cask install apps..."
for cask in "${casks[@]}"; do
brew cask install $cask
done
brew cleanup
brew cask cleanup
cat << END
**************************************************
HOMEBREW INSTALLED! bye.
**************************************************
END
これで、homebrew_install.shを実行することで、好きなツールを一発でMacに導入することができます。
ここまででdotfilesの用意ができました。では、GitHubへプッシュしましょう。
GitHubへプッシュ
GitHubへプッシュして、dotfilesをポータブルにしておきましょう。
GitHubがよく分からない、登録方法や使い方なんかを知りたい場合は以下の過去記事を参考に。
上記記事を参考に、「dotfiles」という名前でリポジトリを作成しておきましょう。
今回は以下のリポジトリを例にして話を進めます。
LINKokutani-t/dotfiles: dotfiles
では、先ほど作成したdotfilesをGitで管理して、GitHubへ紐付けてプッシュするまで見てみましょう。
dotfilesをGitで管理します。
$ cd dotfiles
$ git init
ステージング&コミットします。
$ git add .
$ git commit -m "create dotfiles"
GitHubのリポジトリと連動させます(リポジトリ部分は自分のGitHubリポジトリに置き換えてください)。
$ git remote add origin git@github.com:okutani-t/dotfiles.git
GitHubにプッシュします。
$ git push origin master
もしプッシュできない場合(リモート側でREADME.mdとか作っちゃってる)、一度プルしてからプッシュすればOKです。
$ git pull origin master # README.mdとか作っちゃった場合実行
$ git push origin master
これでGitHubでdotfilesを管理できるようになりました。
GitHubからクローン&dotfilesインストール
ではでは、「MacのOSを再インストールした」「MacbookProに買い替えたやったー!」「就職先が決まった...... 職場のMacに環境構築や!」「お兄ちゃんからお古のMacbookAirもらったわーい」なんてときに、以下の手順で環境一発構築してやりましょう。
まずはGitHubからdotfilesをクローン(リポジトリはご自身ので置き換え)。
$ cd ~
$ git clone git@github.com:okutani-t/dotfiles.git
実行権限をつけます。
$ chmod +x ~/dotfiles/homebrew_install.sh
$ chmod +x ~/dotfiles/install.sh
実行!ツールの初期設定手順上、先にhomebrew_install.shを実行しています。
$ ~/dotfiles/homebrew_install.sh
$ ~/dotfiles/install.sh
これで一気に開発ツールが導入されました......! やったー!
まとめ
本記事ではdotfilesを作成し、GitHubで管理できるようにするまでを解説しました。
今回作成したdotfilesは、以下のGitHubリポジトリにあります。
参考okutani-t/dotfiles: dotfiles
また、GitHubから「dotfiles」で検索すると、海外の方のdotfilesがたくさん出てくるので参考になります。ぜひ、ぎっとはぶってみては。
dotfilesを利用して、便利にMacで開発を進めてみてください!参考になれば幸いです。
Web開発のお仕事を募集しています
フリーランスのエンジニアとして、Webシステム開発のお仕事依頼を随時募集しています(現在の業務量によってお受けできない場合もあります)。
「Ruby on Rails」「JavaScript(jQuery, Reactなど)」「HTML + CSS」を用いたシステム開発、「Heroku」等を用いたサーバー構築・運用、「Git」や「GitHub」を利用したソーシャルコーディングなどに対応しています。
ご依頼を検討している方は、下記リンク本ブログからのお問い合わせ、もしくはokutaniのポートフォリオからご連絡ください。
LINKお問い合わせ
スポンサーリンク