2017.10.31

【Techの道も一歩から】 第5回「快適なシェル環境の再構築を自動化する」

こんにちは。DSOC R&Dグループの高橋寛治です。

今回は、快適なTech道を爆走するために必要不可欠なシェル環境の構築を紹介します。

Githubで設定ファイルを管理しよう

ホームディレクトリが共有されていない複数台のサーバーにログインしたり、PCを乗り換えたりした際にネックとなるのが、手慣れたシェル環境を再構築しなければならないことです。

毎回、設定ファイルを手動でコピーするのもいいですが、自動化したくなるのがエンジニア魂というものです。

では、どうやって自動化を行うかというと、ズバリ設定ファイルをGithubで管理することで完了させます。

また、Githubに公開することで、自身の技術力のアピールやTipsの共有につながります。そして、シェル芸を極めた神々の設定ファイルを読むことは本当に勉強になります。

大まかな流れとポイントとしては、以下の4つが挙げられます。

  1. Githubに設定ファイル管理レポジトリを作成
  2. 設定ファイルをレポジトリに追加
  3. 自動構築スクリプトをレポジトリに追加
  4. 環境構築する際に、クローンして自動構築スクリプトを走らせる

それでは、具体的にどんなふうに記述すればよいか、私の設定ファイルを例にして紹介していきます。

シェルスクリプトでかっこよく環境構築

私の設定ファイルのレポジトリはこちらで、dotfilesというレポジトリ名で管理を行っています。

dotfilesは設定ファイルを管理する上では、定番の命名です1

インストールスクリプトと各種設定ファイルを追加することで、設定ファイルを管理します。私の場合は、TmuxやZsh, Emacsの設定ファイルを管理しています。 シェルスクリプトを用いて環境構築する際のイメージは、以下となります2

$ git clone https://github.com/kanjirz50/dotfiles.git ~/dotfiles
$ cd dotfiles && bash install.sh
captcha - 【Techの道も一歩から】 第5回「快適なシェル環境の再構築を自動化する」
インストールのGifアニメ

詳細に手順を説明します。まず git clone でdotfilesレポジトリを ~/dotfiles にクローンします。そして、 dotfiles ディレクトリに移動し、 install.sh スクリプトを実行することで、シェル環境の構築は終了です3

install.sh の記述

install.sh に記述する内容が重要になります。基本的には、設定ファイルのシンボリックリンクをホームに張るという動作です。

#!/bin/bash

# -eはエラー時にスクリプトが停止、-uは未定義変数利用時にスクリプトが停止
set -eu

# 本ファイルが存在するカレントディレクトリの絶対パスをカレントディレクトリを移動せず取得
cwd=`dirname "${0}"`
DOTFILES_PATH=`(cd "${cwd}" && pwd)`

# 正規表現で設定ファイルを取得し、シンボリックリンクを張る
for f in .??*
do
    # 除外リスト
    [[ "$f" == ".git" ]] && continue
    [[ "$f" == ".gitignore" ]] && continue
    [[ "$f" == ".DS_Store" ]] && continue

    # シンボリックリンクを張る
    ln -snfv ${DOTFILES_PATH}/"${f}" ~/"${f}"
done

これを記述しておくことで、GitとBashが使えれば、どこでもシェル環境を再現できます。

Zshを使っているなら、zplugがオススメ

私が普段用いているシェルであるZshの設定自動化について、上記の install.sh に加えて紹介します。

Zshの設定にはzplugというプラグイン管理ツールを利用しています。

install.sh に以下の記述を加えることで、zplugのインストールが完了します。

if [ -d ${DOTFILES_PATH}/.zplug ];
then
    echo "Zplug has already installed."
else
    # zplugが未インストールなら、cloneする
    echo "Installing Zplug."
    git clone https://github.com/zplug/zplug ${DOTFILES_PATH}/.zplug
fi

後は、こちら のように .zshrc などでzplugの読み込みに関して記述すれば自動でZsh環境が構築されます。

zplugは以下のように記述することで、GithubレポジトリからZshプラグインを導入してくれる優れものです。

zplug "zsh-users/zsh-syntax-hilighting"

ここでは書ききれないほど高機能ですので、ぜひ使ってみて、その凄さを感じてください(今後の記事で書こうと思っていますので、「Zsh設定特集」にもご期待ください)。

いつでも快適な環境で

慣れた環境で作業することは、効率の良さにつながります。そして、それはいいプロダクトを開発する上での1つの重要な点にきっとなると思います。

環境整備について時々振り返り、より良い環境が作れないか模索する瞬間、一番の楽しみを感じます。

気が付くと休日が溶けてなくなってしまうので、設定はほどほどにしましょう(笑)。

執筆者プロフィール

過去記事

▼第4回
第16回情報科学技術フォーラム(FIT2017)で登壇

▼第3回
第11回テキストアナリティクス・シンポジウム

▼第2回
R&D論文読み会勉強会

▼第1回
言語処理100本ノック勉強会

text:DSOC R&Dグループ 高橋寛治

  1. ドットファイルは隠しファイルを意味します。設定ファイルは基本的に隠しファイルで記述されているため、その集合としてdotfilesを用います。 
  2. さらに極める場合は、 curl -L path/to/install.sh | bash のように、curlでスクリプトを取得し、bashで実行するようです。 
  3. && は1つ目のコマンドが正常に終了(戻り値が0)の場合、2つ目のコマンドを実行するという意味です。