Mac 環境構築の備忘録

# たまにあるよね、クリーンインストールして環境構築し直すはめになること

…ありませんかね？
というわけでMacOSからクリーンインストールして、開発環境諸々再構築するはめになったので次に備えて備忘録として書いてます。

# 目次

1. [MacOS再インストール](#1macos再インストール)
2. [Homebrewインストール](#2homebrewインストール)
3. [CLIパッケージインストール](#3cliパッケージインストール)
4. [GUIパッケージインストール](#4guiパッケージインストール)
5. [npmパッケージインストール](#5npmパッケージインストール)
 
## 1.MacOS再インストール
色々方法はありますが、私はUSBメモリにOSデータを書き込んでブータブルUSBメモリを作成して、そのUSBメモリから起動する形でインストーラを起動し、再インストールしています。

※詳細はこちら
[macOS の起動可能なインストーラを作成する方法 - Apple](https://support.apple.com/ja-jp/HT201372)

まず肝心のOSのデータをダウンロードします。
[macOS Catalina にアップグレードする方法 - Apple](https://support.apple.com/ja-jp/HT201475)
上記リンクの手順４「macOS Catalina をダウンロードする」からAppStoreを開いてCatalinaのインストーラディスクイメージをダウンロードします。



Mojave, HighSierraを使用したい場合は下記からダウンロードできます。
[macOS Mojave にアップグレードする方法 - Apple](https://support.apple.com/ja-jp/HT210190)
[macOS High Sierra にアップグレードする方法 - Apple](https://support.apple.com/ja-jp/HT208969)
Catalinaの場合と同じく手順４からAppStoreを開き、OSインストーラーのディスクイメージをダウンロードできます。

ダウンロードが完了したらUSBメモリに書き込みます。ただコピーするだけではブータブルメディアにはならないのでターミナルから作成します。

```
//Catalina
$ sudo /Applications/Install\ macOS\ Catalina.app/Contents/Resources/createinstallmedia --volume /Volumes/MyVolume

//Mojave
$ sudo /Applications/Install\ macOS\ Mojave.app/Contents/Resources/createinstallmedia --volume /Volumes/MyVolume

//High Sierra
$ sudo /Applications/Install\ macOS\ High\ Sierra.app/Contents/Resources/createinstallmedia --volume /Volumes/MyVolume
```
ここではUSBメモリの名前を`MyVolume`としています。
もちろん任意に変更しても問題ありませんが、その場合はコマンド後半の`--volume /Volumes/MyVolume` を`--volume /Volumes/"USBメモリの名前"`としないと当然作成できません。

USBメモリへの書き込みが終了したらMacをシャットダウンします。
電源が切れたら目的のUSBメモリ以外の周辺機器は取り外して、`optionキー`を押したまま電源ボタンを押して`Startup Manager`を起動し、先ほど作成したインストーラー（USBメモリ）から起動します。

インストーラーが起動したらディスクユーティイリティを開いて、MacのSSDのパーティションを全て消去し、APFS形式で新しいパーティションを再作成します。

パーティションの再作成が完了したら、ディスクユーティイリティを閉じて、インストールを開始します。
インストール手順自体はインストーラーが指示を出してくれるのでそのまま従ってインストールしていきます。

インストールが完了したら自動的に再起動されます。ユーザー情報や iCloudログイン等が
またこのタイミングで`TimeMachine`からの復元も可能です。その場合はこれ以降の操作は不要です。

※ブータブルメディアを作成せずに、再インストールする方法もあります。
これはAppleが公式サイトにまとめてくれているので詳細はそちらで。

[macを再インストールする - Apple](https://support.apple.com/ja-jp/guide/mac-help/mchlp1599/mac)

※注意
英字キーボードの場合言語切替キーが存在しないため、ショートカットで切り替えることになる。
少し調べた範疇ではCatalinaではMojaveかそれ以前から言語切替のショートカットキーの組み合わせのデフォルト値が変更されたようで、これを以前に戻そうという記事をいくつか見かけた。

が、これはやらないほうが良さそう。
実際に変更してみたがデフォルトのキーペアの場合と比較して言語切替のスピードが遅い。
メニューバーの表示からは切り替わっていても実際には切り替わらないことが多々あった。
あるいは切り替えてから入力までに一瞬待たないと切り替わらないことも多々あった。
原因は不明だが、デフォルトのキーペアに戻したら同様の減少は発生しなくなったので理由がない限り少なくとも言語切替のショートカットキーペアは変更しないほうが良さそう。



## 2.Homebrewインストール

言わず知れたHombrewをインストールしていきます。

公式ドキュメントに従ってターミナルで以下のコマンドを実行します。もちろんインストール済みなら飛ばしても問題ありません。

```
$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
```

`brew`コマンドが実行できれればインストール完了です。

```
$ brew -v
Homebrew/homebrew-core (git revision 279ca1; last commit 2020-09-10)
Homebrew/homebrew-cask (git revision 9c41b; last commit 2020-09-10)
```

## 3.CLIパッケージインストール

Homebrewもインストールできたので各パッケージをインストールしていきます。
複数のパッケージを同時にインストールできるので１行で実行します。
ひとまず今回は`Git`, `NodeJS`, `Yarn`, `PostgreSQL`, `pyenv`をインストールします。

```
$ brew upgrade
$ brew install git node yarn postgresql pyenv
```

`brew list` で各パッケージが確認できれば成功です。

```
$ brew list 
autoconf	icu4c		openssl@1.1	postgresql	yarn
gettext		krb5		pcre2		pyenv
git			node		pkg-config	readline
```
`pyenv`を使ったpythonのインストールは[ここから](https://qiita.com/linus_sh/items/f46d3abc7a854706f72e)。


## 4.GUIパッケージインストール

これまでGUIパッケージは手動で各インストーラーでインストールしていたのですが、今回環境構築をやり直している過程で`brew cask`でGUIパッケージもインストールできる事を思い出しました。

調べてみたら今回インストールしたGUIパッケージがなんと全て`brew cask`に対応していたことがわかりました。

今回はGUIパッケージは全部それぞれのインストーラーからインストールしてしまったのでそのままにしておきますが、次回以降のために`brew`でインストールする手順を記録しておきます。
今回インストールするのは以下のパッケージです。

※ブラウザ
[MozillaFireFox](https://www.mozilla.org/ja/firefox)
[GoogleChrome](https://www.google.com/intl/ja_jp/chrome)

※オンラインストレージ
[GoogleBackup&Sync](https://www.google.com/intl/ja_ALL/drive/download/backup-and-sync)

※オフィスソフト
[AdobeAcrobatReader](https://get.adobe.com/jp/reader)
[LibreOffice](https://ja.libreoffice.org)

※開発環境
[VisualStudioCode](https://azure.microsoft.com/ja-jp/products/visual-studio-code)
[PostMan](https://www.postman.com)
[VirtualBox](https://www.virtualbox.org)

※コミュニケーションツール
[Slack](https://slack.com)
[Zoom](https://zoom.us)

※セキュリティソフト
[AvastSecuroty](https://www.avast.co.jp)

※言語環境
[Google日本語入力](https://www.google.co.jp/ime)
[DeepL](https://www.deepl.com)

※システムユーティリティ
[iStat-Menus](https://bjango.com/mac/istatmenus)
[TheUnarchiver](https://the-unarchiver.softonic.jp/mac)

※システムクリーナー
[AppCleaner](https://freemacsoft.net/appcleaner)
[CCleaner](https://www.ccleaner.com)
[OnyX](https://www.titanium-software.fr/en/onyx.html)


※その他
[Spotify](https://www.spotify.com)
[VLC](https://www.videolan.org)

それではインストールしていきます。

```
$ brew cask install firefox google-chrome google-backup-and-sync adobe-acrobat-reader libreoffice visual-studio-code psotman virtualbox slack zoomus avast-security google-japanese-ime deepl istats-menus the-unarchiver app-cleaner ccleaner onyx spotify vlc 
```


`brew list --cask` でパッケージが確認できれば成功です

```
$ brew list --cask
```

## 5.npmパッケージインストール

グローバルでインストールするnpmパッケージをインストールします。
現時点でインストールしてあるのは`typescript`だけなので、インストールしておきます。

```
$ npm install -g typescript
```
必要に応じて追加していこう。
とは言ってもグローバルでインストールする項目はそんなに多くはならないと思うが。

あとはプロジェクト単位でのローカルインストールになるかな？

# あとがき

`brew`は使ってたけど`brew cask`は使ってなかった。そして今回少し調べたら自分が使ってる有名所のソフトは全部あったので、次回以降の環境再構築の際に試したみたいところ。
これで行けるならいちいちインストーラ起動しなくてもいいし、一括でパッケージ管理もできるからインストール/アップデート/アンインストールの管理の手間も削減できそう。

CLIパッケージだけでなく、これまで手動でインストールしていたGUIパッケージも`brew`コマンドで、つまりは今回まとめたようにパッケージのリストを作成しておけば１行のコードをターミナルにコピー・アンド・ペーストするだけでインストールできることになる、これは後々すごく楽になりそう。

`brew`でインストールできていないパッケージはあるにはあるが、AppStoreでインストールだからログインしてワンクリックで済むからさして手間にはならない。

あとは必要になるとしたらファイルのコピーとOSや各パッケージの設定かな。
そのあたりもコマンドでできるやつは一括でやりたいところ。
コマンドで実行できるならシェルスクリプト書いておけば一括で実行できるので、合間見て記録しておこうかな。


#  参考記事
[新しいMacを買ったらやること - Qiita](https://qiita.com/ayase/items/e74b83956d401cd16676)