Macで自動環境構築＆バックアップ（App Storeも）


そろそろMacの買い替えの時期なので、以下のものを使って個人のMacをバックアップしつつ同じ開発環境を別のMacへと移行できるよう準備をする。

+ homebrew
 - homebrew-bundle
 - homebrew-file
 - mas
+ mackup + Dropbox
+ atom
 - apm


RubyGemとかもあるけどgemはプロジェクト毎にbundle installsすればいいよね、ということで除外。なのでeditorのAtom, dotfiles, brew設定が移行できればよいかな、と。
[Mac 環境構築の自動化 2015年末版 ( homebrew + homebrew-cask + homebrew-brewdle + mackup + crontab )](http://qiita.com/ctokoro/items/d564248eeaebbf003edc)にて同様のことをされているのでこちらも参考に。こちらではcronでバックアップを自動でとっています。

でこちらではこれに加え、私が普段使っているAtomのパッケージの再構築、さらにHomebrewでApp Storeを扱えるように調査しました。
\# 2016/8/31 VSCodeも扱えるように追記しました。

# Atom

まずはeditorのAtomのパッケージから。atom packages managerのapmを使ってインストールしたpackagesを管理する。Atomが入っていれば、"Atom > Install Shell Commands"からapmが導入可能。

まずはインストール済みパッケージをリスト化する。

```Bash:
$ apm list -bi > Atomfile
```

でデフォルトで入っているものを除いた各々のユーザーがインストールしたものだけ(-i)を余計な修飾無しで(-b)リスト化。以下の様なものが出力される。

```
atom-dynamic-macro@1.1.4
autocomplete-swift@1.0.2
git-plus@5.13.0
language-swift@0.4.0
linter@1.11.3
linter-erb@1.0.2
linter-javac@1.7.0
linter-ruby@1.2.2
linter-swiftlint@1.1.0
run-time-syntax@13.37.0
run-time-ui@13.37.3
script@3.5.2
seti-ui@0.8.1
```

でatomのインストール済みパッケージのリストがAtomfileへと出力される。で、そのAtomfileを移行先へDropboxやらで送り、

```Bash:
$ apm install --packages-file Atomfile
```

これだけでOK. 次に紹介するmackupでもAtomのバックアップをとってくれるのだが、https://github.com/lra/mackup/blob/master/mackup/applications/atom.cfg をみればわかるが、もちろんパッケージはないので自分で用意する必要がある。

# mackup + Dropbox

次に[mackup](https://github.com/lra/mackup)をインストールする。こいつはMacのApplicationやdotfilesをDropboxなどに保存、再構築してくれるナイスなやつです。この程度なら私でも簡単にかけますが、これのいいところはとても簡単なところ。

```Bash:
$ brew install mackup
```

でインストール。

```bash:
$ mackup backup
```

でバックアップ。

```bash:
$ mackup restore
```

で再構築。簡単！


# homebrew

ここがメインです。brewでいろいろ入れたり、brew-caskで.appまで入れたりしていると、App Storeのものまで管理したくなってくるのが自然。で調査してみたところ、https://github.com/argon/mas なるものがApp Storeを扱ってくれるようで、それを利用して[Brew-fileでApp Storeのアプリも含めてMacを完全自動初期化](http://rcmdnk.github.io/blog/2016/02/13/computer-mac-homebrew-brew-file/)のなかで開発された[brew-file](https://github.com/rcmdnk/homebrew-file)を使うことで、App Storeを含めて管理できるようになります。

## brew-file: App Storeも管理しよう

まずはインストール。

```Bash:
$ brew install argon/mas/mas
$ brew install rcmdnk/file/brew-file
```

としてやると、"brew file"コマンドが打てるようになる。結構高機能なので気になった方は"brew file help"で調べてみてください。で、インストール後は

```Bash:
$ brew file init
```

としてやるとデフォルトでは ~/.brewfile/Brewfile に出力される。repositoryとか聞かれるけどNOでいい。Brewfileの一番最後に

```
# App Store applications
appstore 422304217 Day One
appstore 408980954 GarageBand
appstore 409183694 Keynote
appstore 409183694 Keynote
appstore 896624060 Kobito
appstore 409203825 Numbers
appstore 409203825 Numbers
appstore 409201541 Pages
appstore 409201541 Pages
appstore 568494494 Pocket
appstore 405580712 StuffIt Expander
appstore 425424353 The Unarchiver
appstore 585829637 Todoist
appstore 497799835 Xcode
```

のような感じで appstore のものが出力されているはずです。

そして再構築は、

```Bash:
$ brew file install Brewfile
```

としてやるだけ。
やはり簡単。

# VSCode (2016/8/31追加)

最近AtomよりVSCodeを使っている時間のほうが長くなってきましたので、VSCodeのextensionについてもまとめます。

まずはvscodeをコマンドラインから使えるようにしないとどうしようもないので
+ http://qiita.com/naru0504/items/c2ed8869ffbf7682cf5c
+ https://code.visualstudio.com/docs/setup/osx
などを参考に、コマンドラインから呼び出す`code`コマンドをインストールしてください。バックアップの有無はともかく、すごい便利なので使えるようにしておくことをおすすめします。

では`code`コマンドが使えるようになりましたら、以下のコマンドを入力してください。

```bash:
$ code --list-extensions > vscode-extensions.txt
```

コマンドを読んだ如くのまま、これだけでインストール済みのextensionのリストが取得できます。以下の様な非常に簡単なものです。

```:vscode-extensions.txt
WakaTime.vscode-wakatime
chrisdias.vscodeEditorConfig
eg2.tslint
johnpapa.Angular1
justinjames.ionic1-snippets
mkaufman.HTMLHint
vsmobile.cordova-tools
zhuangtongfa.Material-theme
```

このファイルを何処か別のところへ退避させておき、復元したくなった場合には以下のコマンドを入力します。

```bash:
$ cat ./vscode-extensions.txt | while read line
do
code --install-extension $line
done
```

ここでatomの場合と少し違うのは、`code --install-extension`はファイルを指定できないため中身を取り出してやる必要があるという程度でしょうか。

以上、AppStoreのものを含めての自動環境構築でした。~~というか買い換えたいので早くNew Macbook Airください。お願いします。~~ 9/7の発表が楽しみですね。


+ [Mac 環境構築の自動化 2015年末版 ( homebrew + homebrew-cask + homebrew-brewdle + mackup + crontab )](http://qiita.com/ctokoro/items/d564248eeaebbf003edc)
+ [Brew-fileでApp Storeのアプリも含めてMacを完全自動初期化](http://rcmdnk.github.io/blog/2016/02/13/computer-mac-homebrew-brew-file/)
+ https://github.com/argon/mas
+ http://qiita.com/naru0504/items/c2ed8869ffbf7682cf5c
+ https://code.visualstudio.com/docs/setup/osx