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

購入してから一度も初期化をせずにアップグレードを繰り返して2年目の愛用MacBookProを初期化して最高の開発環境を再構築するために下準備を始めてみました。新年度に向けて初期化を考えている方や、新たに開発にチャレンジしてみようという方は参考にしてみてください！
※開発系初心者も意識して書いてます。ご了承ください。

# とりあえずサンプル欲しい
Q. *よくわからん！とりあえずお前を信じて真似したいのだけど*
A. [GitHub](https://github.com/AkkeyLab/mac-auto-setup)に上げているのでご利用ください

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


| 種類         |              ツール |
|:------------:|:------------------:|
| CUI Apps     |🍺 [Homebrew](https://github.com/Homebrew/brew/) |
| GUI Apps     |[Homebrew-Cask](https://github.com/caskroom/homebrew-cask) |
| App Store    |[mas](https://github.com/mas-cli/mas) |

# Homebrew
とっても便利なので、初めてでよくわからない人も使い始めてみましょう！
今回は、これがないと何も始まりません。

```ruby:setup.sh
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
brew update
brew upgrade --all --cleanup
brew -v
```

# Git
ソースコードなどのバージョン管理をするやつです。
macの機能でインストールすることもできますが、Homebrewでインストールしておきましょう。
実は、`brew install git`この一行でインストールが完結しています。これも`Homebrew`のおかげです。

```ruby:setup.sh
brew install git
git --version
```

# zsh
macでは標準で`bash`が採用されています。（ターミナルを開いてコマンドを受け付けてるアイツです）
`bash`が好きな方はスキップしていただいて構いませんが、以後の環境設定等は`zsh`に合わせたものになりますのでご注意ください。

```ruby:setup.sh
brew install zsh zsh-autosuggestions zsh-completions zsh-syntax-highlighting colordiff
which -a zsh
sudo -- sh -c 'echo '/usr/local/bin/zsh' >> /etc/shells'
chsh -s /usr/local/bin/zsh
```
上記のコマンドを実行することで、次回からターミナルを起動したときにzshで立ち上がるようになります。コマンド実行時に2回ほどパスワードを求められますので、パソコンのパスワードを入力してください。

# Vim
エディタですね。私はVimが好きなんです。それ以上はいいません。

```ruby:setup.sh
brew install vim --with-override-system-vi
```

# dot files
`Vim`や`zsh`などはカスタマイズができます。これらを愛する人は自分の使いやすい設定ファイルを作って使っています。この設定ファイルがドットで始まるファイルなんです。
ドットで始まるファイルは隠しファイル扱いなので`ls -l`などとしないと見ることができません。

[skwp/dotfiles](https://github.com/skwp/dotfiles)
GitHubで設定ファイル系をいい感じにしてくれるものを発見しました。仮想環境で動作環境をした程度ですが、良さそうだったのでご紹介します。
よくわからない人は、このようなものから使い始めて、不満が出てきたら自分で設定ファイルを作っていくというのもいいのでは？

```ruby:setup.sh
sh -c "`curl -fsSL https://raw.githubusercontent.com/skwp/dotfiles/master/install.sh`"
# 以下は個人的な追加設定を追加するものです
cp ~/mac-auto-setup/settings/zsh/private.zsh ~/.yadr/zsh/private.zsh
source ~/.zshrc
```

# Powerline
実は私、コマンドラインのデザインにはかなりこだわってまして…
様々なやり方があるのですが、私は[bhilburn/powerlevel9k](https://github.com/bhilburn/powerlevel9k)を利用することにしました。
ターミナルで`Powerline`対応のフォントに切り替えて、テーマを上手く切り替えると美しく大変身します！

```ruby:setup.sh
# Font is 14pt Iconsolata for Powerline with Solarized Dark iterm2 colors.
git clone https://github.com/bhilburn/powerlevel9k.git ~/powerlevel9k
git clone https://github.com/powerline/fonts.git ~/fonts
~/fonts/install.sh
```
適応するには、`.zshrc`に以下の内容を追記する必要があります。
私と同じ環境で行っている場合は`~/.yadr/zsh/private.zsh`を作成して追記してください。

```ruby:~/.yadr/zsh/private.zsh
source  ~/powerlevel9k/powerlevel9k.zsh-theme
# 以下はお好みでカスタマイズ！
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(time context dir vcs)
POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(status rbenv)
POWERLEVEL9K_STATUS_VERBOSE=false
POWERLEVEL9K_SHORTEN_STRATEGY="truncate_middle"
POWERLEVEL9K_SHORTEN_DIR_LENGTH=3
```

# Homebrew-Cask
ある程度基礎的な部分の構築が終了し、残すところは個人的に使っているアプリのインストール作業となりました。まずは、GUIアプリのインストールをコマンドで行っていきましょう。

```ruby:setup.sh
brew cask install android-studio
```
最後のコマンド引数にインストールしたいアプリ名を記述するのですが、複雑な名前のアプリなどは[Casks](https://github.com/caskroom/homebrew-cask/tree/master/Casks)の中を確認してから記述しましょう。また、[Casks](https://github.com/caskroom/homebrew-cask/tree/master/Casks)に無いアプリは残念ながらこの方法でインストールできません。申請するか、手動でインストールするようにしましょう。

# mas
次にApp Storeからダウンロードしてインストールする作業の自動化です。ダウンロード履歴から「ダウンロード」を押していけばいいだけなのですが、数が多い人は自動化したいと思うことでしょう。

```ruby:setup.sh
brew install mas
mas install 497799835  # Xcode (8.2.1)
```
これは、アプリ名を入力するのではなく、アプリIDを入力してあげる必要があります。パソコンを初期化する前に`mas list`で確認しておきましょう。

# 最後に
細かく紹介してきましたが、これらのコマンドをShellScriptのファイルにまとめてしまえば、そのファイルを実行させるコマンドを一度叩くだけで全自動セットアップができてしまうわけです！（パスワード入力が時々必要なのでそばにいてあげてくださいね(\*´ω｀\*)）

ファイルシステム変更などによって、インストール方法が異なるものも多く存在します。そこで、今回はSierraでの動作確認を行いながらコマンドを記述していますので、参考にしてみてください。