めんどくさいMacの環境構築を自動化する方法


闘うエンジニア(物理) Noumiです。
Androidをメインに開発しているので基本はAndroid Studioさえ入れてもらえればどこでもどの端末でも開発できるので、基本的にはノーカスタマイズを貫いて開発をしてきました。

しかし、エミュレータやブラウザ、エディタや各設定など好きな環境を自動的に準備できればそのほうが幸せなのではないかと感じ、せっかくなのでShellScriptを用いて環境構築(各種インストール)を自動化してみたいと思います。

大体ググればでてくる

カスタマイズや自動化のきっかけは一緒に開発するメンバーに便利なカスタマイズを教えてもらって「あ、カスタマイズ良い。。」と自分が隠れカスタマイズ派であることを自覚したことでした。

なんかみんな詳しいし、Macの自動環境構築もきっと調べればあるんじゃないか。と思ってググッた結果がこちらです。

【Sierra対応】mac開発環境構築の自動化

めっちゃ一件目から探してたものがありました。気になったら速攻ググるの大事。
というわけで今回はこの記事をOverrideする感覚で記事を書いていきたいと思います。

サンプルソース

参考記事のサンプル:https://github.com/AkkeyLab/mac-auto-setup
Noumiのソース:https://github.com/noumi0k/mac-auto-setup
※AkkeyLabさんのmasterブランチからforkして作成してます

(参考元の)方針

記述方法:ShellScript
設定関係:オープンソースを活用
利用ツール:以下表を参照

種類 ツール
CUI Apps 🍺 Homebrew
GUI Apps Homebrew-Cask
App Store mas

使い方

まずGit上にあげてあるソースを下記コマンドでダウンロードする

元々はGitで手元にクローンする仕組みだったので、Git導入前の状態でもcurlでダウンロードできるように変更してみました。ついでにプルリクを投げたらマージしていただけました。やった!
ここでHomebrewとGitをインストールし、インストールしたGitでクローンしてくる

sh -c "$(curl -fsSL https://raw.githubusercontent.com/AkkeyLab/mac-auto-setup/master/download.sh)"

セットアップ開始

ここでvimとかdotfiles、Ruby系をインストールします

~/mac-auto-setup/setup.sh

その中で下記のような記載があるのですが、これによってユーザがコマンドラインからy/nで次の動作を選択することができます。今回の場合はWebからインストールするアプリをインストールするかどうかです。

setup.sh
| while true; do |
|:--|
|   read -p 'Now install web apps? [Y/n]' Answer |
|   case $Answer in |
|     '' | [Yy]* ) |
|       $(cd $(dirname ${BASH_SOURCE:-$0}); pwd)/app.sh |
|       break; |
|       ;; |
|     [Nn]* ) |
|       echo "Skip install" |
|       break; |
|       ;; |
|     * ) |
|       echo Please answer YES or NO. |
|   esac |
| done; |

これに従っていれば用意されているものを全てインストールすることが可能になります。
しかし、おそらくみんなが同じ環境を求めているわけではないので、自分専用の自動環境構築ツールに作り変える必要があります。

自分の好きな環境を自動で構築する準備

ここからが本番です。
ですが、特に難しいことは発生しないので気楽に行きます。

フォークする

参考記事のサンプル:https://github.com/AkkeyLab/mac-auto-setup

こんな感じでさっき紹介したAkkeyLabさんのサンプルの画面をGithubで開きます。上部メニューのすぐ下の右上のあたりにforkのボタンがあるのでクリック。ここから指示に従って自分のリポジトリにフォークをしていってください。

あとは自分のローカル環境に持ってきたり持ってこなかったりしながらファイルを編集して行きます。

インストールアプリ選択

setup.sh
#
# Install vim
#
echo " ------------ Vim ------------"
brew install vim --with-override-system-vi
echo " ------------ END ------------"

上記のようにアプリケーションごとにインストールのコマンドが書いてあります。なので、いらないアプリケーションについてはこのコメントで囲まれた部分を削除することでインストールがされなくなります。

また、新しくインストールしたいアプリケーションがある場合は上記のようにインストールのコマンドを追記してください。

setup.sh
#
# Mac App Store apps install
#
echo " ---- Mac App Store apps -----"
brew install mas
mas install 497799835  # Xcode (8.2.1)
echo " ------------ END ------------"

さらに、AppStoreでインストールする項目も追加できます。こんな感じで追加できます。
※アプリIDが必要になります。

まとめ

という感じで簡単に自分専用のMac環境構築の自動化ができます。
チームメンバーが新しく入った時に共通のアプリケーションをインストールしたいなんて時など役立つところは多くあるかと思います。これからも快適な自動化ライフに向けて楽しんで行きたいと思います\(^^)/

Twitterフォローもよろしくです!
- @noumi0k