Macのセットアップを自動化！３つのポイント



# はじめに
最近、新しいMac💻を買って、セットアップする必要がありました。
そのときに、自動化できることをいくか知ったので、その知見をまとめたいと思います:writing_hand:
※この記事では開発環境の構築については記載していませんmm

# 自動化できるセットアップ、３つのポイント。
新しいMacのセットアップのうち、自動化できる部分が３つありました。

## ① システム環境設定 （defaultsコマンド）
まず、最初に「システム環境設定」についてです。
システム環境設定の画面をひとつひとつ開いてポチポチ設定するのは大変ですよね。
それを`defaults`コマンドで自動化します。

**`defaults`コマンド**
>  「plist」と呼ばれるアプリやシステムの設定ファイルに、設定値を追加、変更、削除、検索するコマンドです。
> 
> [Macギークなら知っておきたいdefaultsコマンドの使い方 | Macとかの雑記帳](http://tukaikta.blog135.fc2.com/blog-entry-209.html)

> defaults コマンドは User Defaults System にアクセスするためのコマンドです。
> User Defaults System とは各ユーザー設定のストレージを管理するものであり、ほとんどの設定は永続的に保存されます。
> 
> [Macのマウスカーソルを爆速にする方法 - Qiita](https://qiita.com/hakuro/items/83b810a34a04b9c7fedc)

```shell:設定例
# スクロールバーの表示:スクロール時に表示
defaults write -g AppleShowScrollBars -string "WhenScrolling"

# Dock:自動的に隠さない
defaults write com.apple.dock autohide -bool false

# Mission Control:ホットコーナー
# 左下で Mission Control
defaults write com.apple.dock wvous-bl-corner -int 2
defaults write com.apple.dock wvous-bl-modifier -int 0
# 右下で ディスプレイをスリープ
defaults write com.apple.dock wvous-br-corner -int 10
defaults write com.apple.dock wvous-br-modifier -int 0

# スリープとスクリーンセーバの解除にパスワードを要求
defaults write com.apple.screensaver askForPassword -bool true
# パスワードを要求するまでの秒数
defaults write com.apple.screensaver askForPasswordDelay -int 5

# タップでクリックを許可
defaults write com.apple.driver.AppleBluetoothMultitouch.trackpad Clicking -int 1

# カーソルの移動速度を変更 （1〜15）
defaults write -g com.apple.trackpad.scaling -float 10

# Finder:隠しファイル/フォルダを表示
defaults write com.apple.finder AppleShowAllFiles true

# Finder:拡張子を表示
defaults write NSGlobalDomain AppleShowAllExtensions -bool true

```

### 参考資料
各設定に対する設定値を確認するには、こちらの記事が参考になります。
[システム環境設定をターミナル（defaultsコマンド）から設定する方法（一般） – OTTAN.XYZ](https://ottan.xyz/system-preferences-terminal-defaults-2-4643/)
[“defaults” の検索結果 – OTTAN.XYZ](https://ottan.xyz/?s=defaults&x=0&y=0)

defaultsコマンド自体の解説。
[OSXの固有コマンド - MacWiki](http://macwiki.osdn.jp/wiki/index.php/OSX%E3%81%AE%E5%9B%BA%E6%9C%89%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89#defaults_.E2.80.A6_.E3.83.A6.E3.83.BC.E3.82.B6.E3.83.BC.E3.83.87.E3.83.95.E3.82.A9.E3.83.AB.E3.83.88.E3.82.B7.E3.82.B9.E3.83.86.E3.83.A0.E3.81.B8.E3.81.AE.E3.82.A2.E3.82.AF.E3.82.BB.E3.82.B9.E3.82.92.E6.8F.90.E4.BE.9B.E3.81.99.E3.82.8B)



## ② Mac App Store （mas-cli）
次に「Mac App Store」です。
Mac App Storeのソフトウェアも多く利用していると、1個1個インストールする作業は煩雑ですよね。
そこで、「mas-cli」というMac App Storeをコマンドラインインターフェイスで操作できるツールを利用します。

詳細はこちらから。
[mas-cli/mas: Mac App Store command line interface](https://github.com/mas-cli/mas)

### mas-cliの準備
Homebrew（パッケージマネージャ）を前提としているので、まず先にそちらを準備します。
[homebrewとは何者か。仕組みについて調べてみた - Qiita](https://qiita.com/omega999/items/6f65217b81ad3fffe7e6)

```shell
# Homebrewのインストール
# パスワードを入力が要求されたら、Macログイン時のパスワードを入力
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

# mas-cliのインストール
brew install mas
```


### 各ソフトウェアのidを準備
masコマンドによるソフトのインストールでは、ソフト固有のidを指定します。
そのため、次にインストールしたいソフトのidを調べます。
idを調べる方法には次の３つがあります。

（１）既存の環境でlistコマンドを実行する



```shell:実行例
$ mas list
539883307 LINE (5.11.2)
406056744 Evernote (7.6)
409183694 Keynote (8.3)
405399194 Kindle (1.23.3)
417375580 BetterSnapTool (1.9)
540348655 Monosnap (3.5.4)
485812721 TweetDeck (3.9.889)
```

（２）searchコマンドでソフト名から調べる
`search`コマンドのあと任意の文字列で名称から検索できます。

```shell:実行例
$ mas search slack
   803453959  Slack                                              (3.3.3)
  1128645172  QuickPlan Slack Bot - Project Management team Comm (1.0)
  1293799461  Send It - For Slack                                (1.0)
  1271281910  Activebot for Slack                                (1.0)
   994537604  ChannelScrobbler - Real-time scrobble bot for Last (1.2)
  1406123151  Ratstash - For Slack                               (1.3.6)
```


（３）Mac App Store のWebサイト URLから調べる
例：`https://itunes.apple.com/jp/app/slack/id803453959?mt=12`
`/id`から`?`までの数字列がidです。Slackなら「803453959」がidとなります。


### インストール実行方法
`install`コマンドでインストールできます。
※`mas signin`コマンドは[macOS 10.13以降では利用できない](https://github.com/mas-cli/mas/issues/164)ようなので、先にApple IDでiCloudやAppStoreにログインしておきます。

```shell:実行例
$ mas install 803453959 # Slack
```


## ③その他のソフト（cask）
最後に、AppStoreにない一般的なソフトについてです。
Homebrew CaskというMac App Store用の「mas-cli」と同様にコマンドラインでインストールできるツールがあります。
[Homebrew/homebrew-cask](https://github.com/Homebrew/homebrew-cask)

Homebrewのバージョンが`0.9.5`以上であれば利用できます。

```shell:確認例
$brew --version
Homebrew 1.8.4
Homebrew/homebrew-core (git revision d25c; last commit 2018-12-15)
Homebrew/homebrew-cask (git revision fd8b4; last commit 2018-12-15)
```

### searchコマンドでインストールできるソフトに存在するか確認
かなり多くのソフトがHomebrew Caskでのインストールに対応しています。
ないかも？と思わずに、`search`コマンドで一度検索してみると意外とあります。

```shell:実行例
$brew search chrome
==> Formulae
chrome-cli                                       chrome-export

==> Casks
chrome-devtools                                  google-chrome
chrome-remote-desktop-host                       mkchromecast
chromedriver                                     homebrew/cask-versions/google-chrome-beta
dmm-player-for-chrome                            homebrew/cask-versions/google-chrome-canary
epichrome                                        homebrew/cask-versions/google-chrome-dev
```

### インストール実行方法
`install`コマンドでインストールできます。

```shell:実行例
brew cask install google-chrome
```



# シェルスクリプトにまとめておく

３つのポイントであげたものついてまとめたシェルスクリプトとして用意しておけば、
システム環境設定からソフトウェアのインストールまでは、一気に完了します。

```shell:setup.sh

# 1.システム環境設定

# スクロールバーの表示:スクロール時に表示
defaults write -g AppleShowScrollBars -string "WhenScrolling"

# Dock:自動的に隠さない
defaults write com.apple.dock autohide -bool false

# Mission Control:ホットコーナー
# 左下で Mission Control
defaults write com.apple.dock wvous-bl-corner -int 2
defaults write com.apple.dock wvous-bl-modifier -int 0
# 右下で ディスプレイをスリープ
defaults write com.apple.dock wvous-br-corner -int 10
defaults write com.apple.dock wvous-br-modifier -int 0

# スリープとスクリーンセーバの解除にパスワードを要求
defaults write com.apple.screensaver askForPassword -bool true
# パスワードを要求するまでの秒数
defaults write com.apple.screensaver askForPasswordDelay -int 5

# タップでクリックを許可
defaults write com.apple.driver.AppleBluetoothMultitouch.trackpad Clicking -int 1

# カーソルの移動速度を変更 （1〜15）
defaults write -g com.apple.trackpad.scaling -float 10

# Finder:隠しファイル/フォルダを表示
defaults write com.apple.finder AppleShowAllFiles true

# Finder:拡張子を表示
defaults write NSGlobalDomain AppleShowAllExtensions -bool true



# HomeBrewのインストール
if [ ! -x "`which brew`" ]; then
  /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
  brew update
fi

# mas-cliのインストール
if [ ! -x "`which mas`" ]; then
  brew install mas
fi



# 2. mas-cli
mas install 539883307 # LINE
mas install 485812721 # TweetDeck
mas install 803453959 # Slack
mas install 405399194 # Kindle

mas install 880001334 # Reeder
mas install 568494494 # Pocket
mas install 410628904 # Wunderlist
mas install 406056744 # Evernote

mas install 417375580 # BetterSnapTool
mas install 540348655 # Monosnap
mas install 425955336 # Skitch



# 3. homebrew-cask
brew cask install google-japanese-ime

brew cask install google-chrome
brew cask install firefox

brew cask install google-backup-and-sync
brew cask install dropbox

brew cask install adobe-acrobat-reader
brew cask install skype

brew cask install macs-fan-control
brew cask install scroll-reverser
brew cask install ccleaner
brew cask install alfred
brew cask install cheatsheet

```


```shell:コマンド実行例
sh ~/setup.sh
```
このコマンドを実行したあと、各アプリを起動して、初期設定などをしていきます。



# さらにセットアップの自動化を追求する
Ansibleと組み合わせている方もいました。
[Mac OSXの設定をAnsibleで9割以上自動化する - will and way](http://blog.matsuokah.jp/entry/2016/01/01/191338)

セットアップのご参考に！
[Mac Book Pro セットアップメモ - Qiita](https://qiita.com/satosystems/items/075c3f4429c7ae374354#homebrew)
[インフラエンジニアなMacセットアップ - Qiita](https://qiita.com/imura81gt/items/860ac6196e571c17b7e1)



# まとめ
クリスマス🎄年末年始🎍で、これから新しいMacを購入する予定がある方など、
ぜひ、この記事を参考にセットアップ作業を自動化して、スムーズな環境構築をしてみてください。
自分は今までこういった自動化できることすら、知らなかったので、すごく新鮮でした。

※Qiita初投稿です！ 間違いなどあればコメントおねがいします！