Macでの開発環境構築をできる限り自動化する。




## 2023-03-24追記

気がつけばこのポストも7年の月日が経過しました。
くっそしょうもない話でしかないのに、妙に人気のある本記事です。

実のところあの頃のスクリプトを秘伝のタレのように微妙に変えながら使い続けて、と来たわけですが、
そうこうしている間に、時は流れ、Appleはx86を捨て、そしていつの間にか人類は自分の母語でやりたいこと書けば大体よしななコードが書かれる時代が到来しました。文字通りの未来です。

そして、Macをセットアップする最初に数時間を節約するために、わざわざスクリプトを親切に書き直すというモチベーションはそうそう湧くわけもなかった私に、7年前にやるべきだったことを変わりに、私でも、ましては人類でもなく、コンピュータ自身がその仕事をやってくれる時代が訪れました。

ありがとう、ChatGPT。彼（彼女？ああ、non-binary?コレも違うな）がやってくれました。
_（流石にChatGPTがまんま使えるコードを吐いてくれたわけでも無いですが）_

ワイはnpmやなくてpnpnやねんとか、そういう各々の事情は自分で直してくれ。
みんなで幸せになろう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61912/c7c0e9d0-de15-9480-df16-67afba5d6ba0.png)
[俺用セットアップスクリプト(gist)](https://gist.github.com/takustaqu/fb67f4b95356fbe06046dadeb03f4d26)


---------

以下7年前のワイ

---------

会社等々で新しいスタッフのために開発環境を作るのを手伝ってあげたりとか、自分で新しいMacを買ってきたりした時とか、調子悪い時に思い切って再セットアップする時とか、毎度毎度同じようなセットアップ作業が続くので、自分用の開発環境と、会社用の開発環境をだいたい作ってくれるシェルスクリプトを作っています。

内容は晒せない部分が多いので、何をやったのかという点をだいたい説明してみます。
この記事を投稿した地点ではmac os Yosemiteでしたが、High Sierraの今でも特に変更なく使えているので、OSのアップデートがてらの再インストール時にも有効かと。

## シェルスクリプトとは

それほどこういうもん使うのに明るくないんですが、コマンドを実行するだけなら別にDOSのbatファイルと大して変わりません。コマンドをテキストで書き連ねるだけです。

```lang:.sh
#!/bin/sh
# 以下コマンドを並べる。先頭#はコメントアウト
```

シェルスクリプトはその名の通りスクリプトなので、スクリプト言語でおおよそ思いつくことはだいたいできるけど、今回やるのはコマンドを書き連ねるだけ。

## homebrewとcaskを突っ込む。
```lang:.sh
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
```
homebrewのサイトにあるこいつをまんまコピペ。
これが通ればbrewコマンドが使える。

```lang:.sh
brew install caskroom/cask/brew-cask // 今は自動インストールされるので不要
```

こいつがかなりイケている。SourceTreeだろうがVirtualBoxだろうが、その手のデスクトップアプリケーションをだいたい引っ張ってこれるパッケージマネージャー。naruニキが教えてくれましたが、今は特に個別インストールしなくても自動インストールされます。(正確には、 brew cask ~~　したときに自動インストールするようです。)
ただ、こいつのデフォルトが厄介なのが、~/ApplicationsにAppを配置するので、Launchpadなどで出てこなくなる。うざい。

それをどうにかするために、こうしてみた。

```lang:.bashrc
export HOMEBREW_CASK_OPTS="--appdir=/Applications"
```
~/.bashrcにこの行を書き込んでやれば、brewcaskのSymlinkは全て/Applicationsに作られる。AppStoreとかと同じ挙動。素敵。
OS Xの初期状態に.bashrcはないので、僕は今回あらかじめ設定をまとめたフォルダに.bashrcを作っておいて、コピー&再読み込みさせています。特にnodebrewとかを使ってると、自分でパスを通さなくちゃいけないところがあったりするので、その辺を予め作っておくと便利です。

```lang:.sh
cp .bashrc ~/.bashrc
cd ~
source .bashrc
```

あと、.bashrcはMacのbashではデフォルトでロードされないので、以下を同じく~/.bash_profileに書く。

```lang:.bash_profile
if [ -f ~/.bashrc ] ; then
. ~/.bashrc
fi
```
これでbashrcも読まれます。

ここまでやったらあとはこっちのもんです。

普段から使うAppをひたすら書き連ねればOK

```
brew cask install vagrant
brew cask install virtualbox
brew cask install sourcetree
brew cask install visual-studio-code
brew cask install google-chrome
brew cask install sequel-pro
```
こういう具合に。

## Mac App Storeの Appは？

[神](https://github.com/argon/mas)がいたので簡単にできるのだな。

[2020/04/22追記] 



-----

```
brew install mas
```
これだけで突っ込める。

ただ、こいつの面倒な点は、インストール時にAppのIDを指定する必要がある点。
そこであらかじめすでに環境を組んであるマシンで以下を叩く。

```lang:bash
$ mas list
931657367 Calcbot
449830122 HyperDock
641027709 Color Picker
682658836 GarageBand
425264550 Blackmagic Disk Speed Test
407963104 Pixelmator
497799835 Xcode
```
と、こういう具合にリストが出力される。

ここまでやればもう簡単で、

```
mas install 634148309 # Logic Pro X
mas install 425264550 # Blackmagic Disk Speed Test
mas install 407963104 # Pixelmator
mas install 497799835 # Xcode
mas install 424389933 # Final Cut Pro
mas install 944654199 # Tree 2
mas install 557168941 # Tweetbot
mas install 525742250 # JPEGmini Lite
mas install 417602904 # CloudApp
```

みたいにすればインストールできてしまいます。僕はわかりやすいように右にコメントでApp名を残しておきますた。

-----

こんな感じにしておけば、あとはほとんどほっておくだけで(たまにAppleIDやパスワード聞かれますが)ソフトウェアのインストールがほぼ自動化。
その他Ruby gemやらnpmパッケージも必要に応じてコマンドを書き連ねておけば便利。

毎度環境構築は面倒だったけど、概ねフォントとAppごとのセッティングの復元を除いては望む形にできた。caskはMicrosoftOfficeのような大物すら扱えたりするのでかなりお勧めだし、masのおかげでAppStoreのインストールボタンをひたすら押していくあの苦痛から解放されます。

スクリプトが完走する頃には、XcodeもVagrantも、僕の場合さらに言えばOfficeもFinal Cut Pro Xまで入った状態になってます。マジ素敵。

僕のような低級マカーでもできるのでマジオススメ。