vdeep

*

vdeepはプログラミング、IT、Web技術、ライフハックの事などなどを管理人okutaniがつぶやくブログです

『GitHub+dotfiles』は環境構築を一瞬で終わらせるすごいやつ

      2017/03/06

LINEで送る
Pocket


こんにちは、okutani(@okutani_t)です。『GitHub+dotfiles』を利用すると、開発環境を一瞬で作れて便利なことを最近知りました。

dotfilesはツールでもなんでもなく、単純に『.vimrc』『.emacs.d』『.zshrc』なんかの「頭にドットがつくファイル」を格納したディレクトリのことです。

このdotfilesをGitHubで管理しておいて、「dotfilesリポジトリをクローン+install.shの実行」で、「環境構築をらくーにおこなおうじゃないか!」といった感じです。

今回はMac上で動作させていますが、Linuxでも同じようにinstall.shを作成することができるかと思います。

ちなみに、たくさんの方がdotfilesの管理方法について記事にしているので、めっちゃ参考になります。

参考dotfilesを管理しよう – Qiita

参考ミニマルに始める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導入方法が知りたい場合は、以下の過去記事を参考にしてみてください。

MacにHomebrewを導入する方法&使い方まとめ
こんにちは、okutani(@okutani_t)です。プログラミングをおこなう際に、みな必ず通る「環境構...
2015-04-18 18:15
はてブ

では、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がよく分からない、登録方法や使い方なんかを知りたい場合は以下の過去記事を参考に。

GitHubの登録手順。SSH設定&リポジトリをclone, pushまで解説
こんにちは、okutani(@okutani_t)です。最近はコーディング時にGitを使うのがマストになっ...
2016-01-15 19:30
はてブ

上記記事を参考に、「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で開発を進めてみてください!参考になれば幸いです。

LINEで送る
Pocket

okutani (okutani_t) のヒトコト
dotfilesは一度作っておくと環境がポータブルになっていいですね。Macを買い替えたり、再インストールしたいときにすげー便利です。

Web開発のお仕事を募集しています

フリーランスのエンジニアとして、Webシステム開発のお仕事依頼を随時募集しています(現在の業務量によってお受けできない場合もあります)。

Ruby on Rails」「JavaScript(jQuery, Reactなど)」「HTML + CSS」を用いたシステム開発、「Heroku」等を用いたサーバー構築・運用、「Git」や「GitHub」を利用したソーシャルコーディングなどに対応しています。

ご依頼を検討している方は、下記リンク本ブログからのお問い合わせ、もしくはokutaniのポートフォリオからご連絡ください。

LINKお問い合わせ

LINKokutani's Portfolio


 - Git

スポンサーリンク

PC用AdSense

PC用AdSense

  こちらもどうぞ

vdeepのトップページへ戻る画像です。風船の形をした島を女の子が掴んでいます。