M1/M2/M3/M4 MacをできるかぎりHomebrewを使って初期設定してみる

Apple Silicon Mac(当時はM1)が手元に届きセットアップをしたので、今更ながら初期設定に関する記事を書いてみます。

これまでおそらく10回近くMacのインストールを行っていますが、今回はHomebrewでインストールできるものはなるべくHomebrewを使う、というポリシーを持ってインストールしました。なお、移行インストールを用いて各種アプリも含めて移行した場合は既に各アプリケーションはインストールされていると思うので、当記事の内容は不要です。

なぜHomebrew縛りにしたのかについては話が長くなるので、[記事の後ろ](#homebrewを使った背景)に置きました。


# Homebrewをインストール

「ターミナル」を開き、以下のインストールコマンドを実行。
（コマンドは[公式ページ](https://brew.sh/ja/)より2025/2/2現在のもの。変更の可能性があるので最新の情報は[公式ページ](https://brew.sh/ja/)を参照）

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

インストール後に、パス設定を追加します。

```zsh
echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> /Users/$(whoami)/.zprofile
# すぐにコマンドが使えるように呼び出し
. /Users/$(whoami)/.zprofile
```

## Homebrew Cask

GUIプログラムをインストールするのに使われる Homebrew Cask ですが、最近は `brew cask install` コマンドが廃止され、 `brew install --cask` コマンドとなりました。
なお、 `--cask` は省略することができるので、基本的にGUIアプリケーションかどうかを意識せずにインストールすることができます。以下では基本的にオプションなしで記述しています。

# 必須アプリ

## Google Chrome

```zsh
brew install google-chrome
```

Google Meetなどのスクリーン共有機能を使う場合、あらかじめ設定をしておく必要があります。
Macの設定の「Privacy & Security」中の「Screen Recording」から、「Google Chrome」をチェック。いざ会議中に設定しようとしても遅いのであらかじめやっておくのがおすすめです。

## Google日本語入力

```zsh
brew install google-japanese-ime
```

keyboard設定からことえりを削除して、Google日本語入力の「ひらがな」を追加

設定を有効にするためにOSを再起動

## iTerm2

```zsh
brew install iterm2
```

他端末からの引っ越しの場合は、Profile設定をjsonでexportし、M1 MacでimportすればOKです。


## git

```zsh
brew install git
```

コミットログに残るユーザーの情報設定を忘れないようにしましょう。

```zsh
git config --global user.name "Your Name"
git config --global user.email "your.email@bmail.com" 
# 確認
git config --global -l
		user.name=Your Name
		user.email=your.email@bmail.com
```

# コミュニケーションツール

## Slack

```zsh
brew install slack
```

## Notion

```zsh
brew install notion
```

## Teams

```zsh
brew install microsoft-teams
```

Chrome同様、ビデオ会議中の画面共有を有効にするには、あらかじめ「Privacy & Security」中の「Screen Recording」から、「Microsoft Teams」をチェックしておく必要があります。
いざ会議中に設定しようとしても遅いため、あらかじめ設定しておくのがおすすめです。

## Zoom

```zsh
brew install zoom
```

ZoomもTeamsと同様、あらかじめ「Privacy & Security」からScreen Shareの設定を行わないと画面共有が使えません。Zoomの場合再起動を求められた際にあとで行うようキャンセルしても、画面共有を行うことができました。



# 開発系 (エディタ)

## VSCode

```zsh
brew install visual-studio-code
```

## PyCharm

```zsh
brew install pycharm-ce
```

## IntelliJ IDEA

```zsh
brew install intellij-idea-ce
```

# 開発系（その他）

## Docker Desktop for Mac

```zsh
brew install --cask docker
```

**注意:** `brew install docker` だと、Docker CLIのみがインストールされます。そのため、Docker Desktop for Macを入れるには `--cask` オプションが必要です。

## terraform

terraform自体のバージョン管理を行うため、tfenvを利用してインストール

```zsh
brew install tfenv

# 最新バージョンをセット
tfenv install latest
tfenv use latest
```

## AWS CLI

```zsh
brew install awscli
```

別マシンから引っ越しの場合は `~/.aws` ディレクトリをまるっとコピーすればそのまま動きます。

## [Figma](https://www.figma.com/)

デザイナーさんとの協業には欠かせないツール

```zsh
brew install figma
```

## [Gyazo](https://gyazo.com/captures)

Gif動画のスクリーンキャプチャが簡単に取れるツール

```zsh
brew install gyazo
```

## [1Password](https://1password.com/jp/)

個人だけでなく、チームでのパスワード管理にもおすすめのパスワードマネージャー（通称ワンパス）

```zsh
brew install 1password
```

そのほか、各開発言語の環境はHomebrewでインストールすることも可能ですが、使っているパッケージマネージャーなどによって変わったり、まだHomebrewで完結しない部分も多いため、ここでは割愛します。


# Homebrewを使った背景

Mac引っ越しの際にアプリをインストールする方法は、そのほかにもいくつか考えることができます。

他の候補をなぜ採用しなかったかについて並べてみます。

## 候補１： 移行アシスタントで丸っとコピーする

Macには「[移行アシスタント](https://support.apple.com/ja-jp/HT204350)」というお引っ越し用専用アプリが用意されています。しかし、今回こちらは使いませんでした。

開発時のソースコードや、ダウンロードしたファイルをいろんなところに置くことによって、環境はどんどん汚れていきます。
家の中がどんどん物が増えて汚くなっていくので、数年に一回引っ越しをしてリセットする、という知り合いがいますが、これと同じようにOSを再インストールするたびにソフトウェアのインストールは新しく行うようにしています。
そうした不要なものや、アプリだけではなくデータやbuildによる中間生成物なども一緒にコピーすることになるため、移行アシスタントではデータの転送にかなりの時間がかかるというのも採用しなかった理由のひとつです。

さらに、ご存知のようにM1 MacはARMアーキテクチャです。Intel Macからただファイルのコピーをしただけでは使えないアプリケーションもあるため、基本的にすべてのケースにおいて再インストールしておいたほうが安心というのもありました。

## 候補２： IaCのように完全にインストール手順を自動化する

先ほどのディスクコピーの対局として、完全にインストールを自動化する設計図を作る、という方法もあります。特にterraformやAnsibleなどでインフラ構成の自動化を行なっている方ほど再現性のある環境構築には馴染みが深いと思います。

しかし、数年に１回というOSインストールでは、バージョンアップによってそもそも昔の設定が使えなくなる恐れがあり、この設定を常に最新に保つためのメンテナンスコストは高くなるため、隅々までの自動化はしないこととしました。

その代わりに、Homebrewではインストールしたアプリを `brew leaves` 、Caskで入れたアプリは `brew list --cask -1` によって書き出すことができます。次回の引っ越し時にはこれを使うことが可能になるというのもポイントでした。

## 候補３： それぞれのソフトウェアの配布サイトに行ってパッケージをダウンロード

多くのソフトウェアは公式ページにダウンロードボタンが置かれていて、そこからダウンロードできます。

この方法でしか配布していないソフトウェアもあるのでそうしたものは仕方ないのですが、サイトのURLが変わっていたりして、毎回ググらなければいけないしんどさがあるので、この方法は極力避けることとします。

ある程度の再現性を担保しつつ、手間をかけずに必要なソフトウェアだけをインストールする方法として、 "Homebrew" を極力使う運用にすることとしました。