ターゲット
エンジニアたるもの、自分に最適な開発環境を組み上げることは
サービス開発速度を大きく左右する一つの大きな要素だと考えています。
shellはzsh、iTerm2を入れてテーマはicebergで、さらにあらゆるCLIをインストールする…等。
すごく楽しい作業でもありますが、なかなか時間を使ってしまう作業でもあります。
また新しく社用PCを受け取ったりすると、自分のPCの環境を再現しようとするとこれもまた手間がかかる…。
と今まで思っていた方には、きっと良い気付きの記事になるのではないかと思います!
筆者のリポジトリ
issy-s16 / dotfiles
↑のリポジトリはgit clone
してREADMEのコマンドを打つだけで、
Mac/CentOS/Fedora/RedHatなどの環境に合わせて、環境構築をばばっと行ってくれます!
丸コピしていただいてもよし、フォークいただいてもよし、自由にお使いください
dotfilesとは
俗に、なにかしらの設定ファイルのことを指します。
(.bashrc / .vimrc / .gitconfig)といったもの。
また、例えばiTerm2といったGUIツールの環境設定ファイルを含んでいます。
※大抵の設定ファイルが頭に.がつくことから、このように呼ばれています。
今回はそれら設定ファイルをGit管理して、git clone
すれば環境構築ができるといった状態にしていきます。
自分用のdotfilesを作ってみよう
簡単に始める
dotfilesについては、とりあえず設定ファイルをGit管理するだけでもすごく便利になります!
まずは、さくっと始める方法について記述します。
リポジトリを作成する
mkdir ~/dotfiles
cd ~/dotfiles && git init
git commit -m 'initial commit' && git push
設定ファイルをdotfiles配下に移行する
例: .bashrc
mv ~/.bashrc ~/dotfiles
ln -s ~/dotfiles/.bashrc ~/.bashrc
※手順2のlnコマンドでdotfiles配下の.bashrcをシンボリックリンクし、
~/.bashrcを参照したときに、dotfiles配下の.bashrcを参照するようにしています。
リンクしておくことで、なにか修正を加えたときにGit反映されるというメリットがあります。 一元管理!
また、README.mdを作成して、これらの手順をメモしておくとよいです!
一通り設定が移行が終わったら、忘れずにgit push
git push
がっつり構築する
こちらはがっつり構築編。
「簡単に始める」側では、ただGit管理をするだけでしたが、
こちらでは設定ファイルの配置、他のソフトウェアインストールまで自動化させていきます!
setup.shを作成する
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
テンプレートチックに紹介させていただいたのですが、
実際に動いているものをみたい方は筆者のリポジトリをご覧ください!
最後に
記事執筆にあたって、
他にも様々なやり方で環境構築をハックされている方がいらっしゃり、大変勉強になりました。
色んな方のリポジトリや記事を見ることで、僕自身もっとハックしていきたいと思います!
読んでいただき、ありがとうございました!