toshi-toma blog

主にフロントエンド、作業ログあとは色々なメモ ✍️ 🍅

dotfilesの作り方

dotfiles

dotfilesを作成しました。

github.com

エンジニアはエディタやshellの設定ファイル(dotfiles =設定ファイル)をdotfilesとしてGitHubで管理する文化があるようですが、初めてだと作り方など全然分からなかったのでまとめます。

作り方について説明する前に、なぜdotfilesを作るのかを説明します。

エンジニアは自分の好きなエディタや好きなshell、好きな開発環境をカスタマイズしていくと思います。 その環境をPCを変えるたびに構築するのは大変なので、設定ファイルをGitHubで管理してスクリプトを1つ実行すれば、いつもの開発環境が構築されるというのを実現するというのが主な目的だと思います。

dotfilesについては人によって様々ですが、その一例としてdotfilesの作り方について紹介します。

Step1 リポジトリ作成

GitHubに自分用のdotfilesリポジトリを作成します。

他の人のリポジトリもたくさん公開されているので参考にすると面白いです。 github.com

Step2 Applicationを自動でインストールできるようにbrew.shの用意

Macを使っている人であれば、brewを使ってツールやアプリケーションをインストールする人が多いと思います。

今回は、brew.shというshellスクリプトを実行すると、普段使っているツールやアプリケーションを自動でインストールできるようにしました。

用意したスクリプトは以下の通りです。brewが入っているかのチェックやbrew installで列挙したツールを順番にインストールします。

またbrew caskを使ってMacGUIアプリケーションなどもインストールするようにしました。

#!/bin/sh -xe

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

formulas=(
    git
    zsh
    fzf
   # 省略
)

echo "start brew install apps..."
for formula in "${formulas[@]}"; do
    brew install $formula || brew upgrade $formula
done

brew tap caskroom/cask

casks=(
    google-chrome
    firefox
   # 省略
)

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

Step3 各種設定ファイルを用意

dotfilesで管理したい設定ファイルを用意します。

自分の場合は以下のファイルを用意しました。

  • .aliases
  • .gitconfig
  • .gitignore
  • .hyper.js
  • .screenrc
  • .zshrc

Step4 dotfilesを環境に適用するためにinstall.shを用意

Step3で用意した設定ファイルをinstall.shというshellスクリプトを実行すれば、自分のルートにシンボリックリンクを貼ることで適用できるようにしました。

用意したスクリプトは以下の通りです。 今回はnodebrewでnodeをインストールするようにもしました。

#!/bin/sh -xe

# 実行場所のディレクトリを取得
THIS_DIR=$(cd $(dirname $0); pwd)

cd $THIS_DIR

echo "\033[0;32mstart setup... \033[0;39m"

echo "setup symbolic link..."

# dotfileのシンボリックリンク作成
for f in .??*
do
    [[ "$f" == ".git" ]] && continue
    [[ "$f" == ".DS_Store" ]] && continue
    ln -snfv ~/dotfiles/"$f" ~/
done

echo "finish"

source ~/.zshrc

echo "setup nodebrew and node"
if !(type "nodebrew" > /dev/null 2>&1); then
    curl -L git.io/nodebrew | perl - setup
    nodebrew install-binary stable
    nodebrew use stable
fi
echo "finish"

echo "\033[0;32mAll Finish!!! \033[0;39m"

Step5 GitHubにpushしてREADME.mdを整備

Step2~Step4までで用意した設定ファイルやshellスクリプトリポジトリへpushします。

また、install.shbrew.shを用意したので、使い方などREADME.mdに書いておきます。あとで使う自分向けですね。

だいたいがリポジトリのクローンやshellスクリプトに実行権限を与えて、実行するくらいです。

$ git clone https://github.com/toshi-toma/dotfiles.git
$ cd dotfiles
$ chmod +x brew.sh
$ sh brew.sh
$ chmod +x install.sh
$ sh install.sh

これで完成です。

さいごに

dotfilesがどんなものなのか?から5つのStepに分けて作り方を紹介しました。

他の人の設定を見ると、とても手が込んだものもあり面白かったです。

最初から頑張ると大変なので、まずはbrewでのアプリケーションのインストールとshellやgitの設定ファイルを用意するくらいが楽そうです。

また、こまめにメンテナンスしておく必要もありそうです。