ShellScript
Mac
開発環境
環境構築
dotfiles

Git管理するdotfilesのススメ - 自分の開発環境を持ち歩こう -

スクリーンショット 2018-12-21 20.18.29.png


ターゲット

エンジニアたるもの、自分に最適な開発環境を組み上げることは

サービス開発速度を大きく左右する一つの大きな要因だと考えています。

shellはzsh、iTerm2を入れてテーマはicebergで、さらにあらゆるCLIをインストールする…等。

すごく楽しい作業でもありますが、なかなか時間を使ってしまう作業でもあります。

また新しく社用PCを受け取ったりすると、自分のPCの環境を再現しようとするとこれもまた手間がかかる…。

と今まで思っていた方には、きっと良い気付きの記事になるのではないかと思います!


筆者のリポジトリ

:smiley: issy-s16 / dotfiles

↑のリポジトリはgit cloneしてREADMEのコマンドを打つだけで、

Mac/CentOS/Fedora/RedHatなどの環境に合わせて、環境構築をばばっと行ってくれます!

丸コピしていただいてもよし、フォークいただいてもよし、自由にお使いください:v:


dotfilesとは

俗に、なにかしらの設定ファイルのことを指します。

(.bashrc / .vimrc / .gitconfig)といったもの。

また、例えばiTerm2といったGUIツールの環境設定ファイルを含んでいます。

※大抵の設定ファイルが頭に.がつくことから、このように呼ばれています。

今回はそれら設定ファイルをGit管理して、git cloneすれば環境構築ができるといった状態にしていきます。


自分用のdotfilesを作ってみよう


:beginner: 簡単に始める

dotfilesについては、とりあえず設定ファイルをGit管理するだけでもすごく便利になります!

まずは、さくっと始める方法について記述します。


リポジトリを作成する


  1. mkdir ~/dotfiles

  2. cd ~/dotfiles && git init

  3. git commit -m 'initial commit' && git push


設定ファイルをdotfiles配下に移行する

例: .bashrc

1. mv ~/.bashrc ~/dotfiles

2. ln -s ~/dotfiles/.bashrc ~/.bashrc

※手順2のlnコマンドでdotfiles配下の.bashrcをシンボリックリンクし、

~/.bashrcを参照したときに、dotfiles配下の.bashrcを参照するようにしています。

リンクしておくことで、なにか修正を加えたときにGit反映されるというメリットがあります。 一元管理!

また、README.mdを作成して、これらの手順をメモしておくとよいです!


一通り設定が移行が終わったら、忘れずにgit push


  1. git push


:thumbsup: がっつり構築する

こちらはがっつり構築編。

「簡単に始める」側では、ただGit管理をするだけでしたが、

こちらでは設定ファイルの配置、他のソフトウェアインストールまで自動化させていきます!


setup.shを作成する


  1. vim ~/dotfiles/setup.sh

echo "DOTFILES SETUP START!"

for f in .??*; do
[ "$f" = ".git" ] && continue
ln -snfv ~/dotfiles/"$f" ~/
done

echo "DOTFILES SETUP FINISHED! bye."

※上記のshellでは、ホームディレクトリ配下にcloneしたdotfilesリポジトリ配下の設定ファイルを

全てホームディレクトリ配下にシンボリックリンクするShellです。これだけでめちゃ便利。


ツール系もインストールしてみる

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=(
wget
curl
tree
openssl
z
colordiff
peco
hub
tig
)

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

brew cleanup


OSに合わせて処理を分けてみる

setup_mac() {

if [ "$(uname)" == 'Darwin' ]; then
# Mac
echo "Setup for Mac"
# 何かしらの処理
fi
}

setup_debian() {
if [ -e /etc/debian_version ] || [ -e /etc/debian_release ]; then
# Check Ubuntu or Debian
if [ -e /etc/lsb-release ]; then
# Ubuntu
echo "Setup for Ubuntu"
# 何かしらの処理
else
# Debian
echo "Setup for Debian"
# 何かしらの処理
fi
fi
}

setup_redhat() {
if [ -e /etc/fedora-release ]; then
# Fedra
echo "Setup for Fedora"
# 何かしらの処理
elif [ -e /etc/redhat-release ]; then
if [ -e /etc/oracle-release ]; then
# Oracle Linux
echo "Setup for Oracle Linux"
# 何かしらの処理
else
# Red Hat Enterprise Linux
echo "Setup for Red Hat Enterprise Linux"
                        # 何かしらの処理
fi
fi
}

setup_arch() {
if [ -e /etc/arch-release ]; then
# Arch Linux
echo "Setup for Arch Linux"
# 何かしらの処理
fi
}

setup_suse() {
if [ -e /etc/os-release -o -e /etc/SuSE-release ]; then
# OpenSUSE
echo "Setup for OpenSUSE"
# 何かしらの処理
fi
}

setup_mandriva() {
if [ -e /etc/mandriva-release ]; then
# Mandriva Linux
echo "Setup for Mandriva Linux"
# 何かしらの処理
fi
}

setup_gentoo() {
if [ -e /etc/gentoo-release ]; then
# Gentoo Linux
echo "Setup for Gentoo Linux"
# 何かしらの処理
fi
}

setup() {
setup_mac
setup_debian
setup_redhat
setup_arch
setup_arch
setup_suse
setup_mandriva
setup_gentoo
}

setup

テンプレートチックに紹介させていただいたのですが、

実際に動いているものをみたい方は筆者のリポジトリをご覧ください!


最後に

記事執筆にあたって、

他にも様々なやり方で環境構築をハックされている方がいらっしゃり、大変勉強になりました。

色んな方のリポジトリや記事を見ることで、僕自身もっとハックしていきたいと思います!

読んでいただき、ありがとうございました!:relaxed: