Homebrewのインストール方法について詳細に解説する

# はじめに

環境構築を行う際に、パッケージ管理システムを使うと環境を綺麗に保つことができます。本記事では、MacOSにおいておそらく最も使われているパッケージ管理システムであるHomebrewのインストール方法について**丁寧に**説明します。

また、所々で特殊なコマンドがありますが、そのようなコマンドは**`man`コマンドによって確認できる**ので、参考にしてください。

# [0] 環境の確認

ターミナル上で`sw_vers`コマンドを実行すると、OSのバージョンを確認できます[^1]。また、<font color="red">本記事ではIntel Macでの動作確認のみをしているので、M1 Macの方はご注意ください</font>。

```zsh
% sw_vers
ProductName:    macOS
ProductVersion: 11.2.3
BuildVersion:   20D91
```

# [1] CommandLineTools for Xcodeのインストール

## (1) CommandLineTools for Xcodeとは

コマンドラインとは、ターミナルにおいて操作を行うときの入力行のことです。このコマンドラインから呼び出すプログラム等をコマンドラインツールと呼び、CommandLineTools for Xcodeにはコマンドラインツールなどの開発者用のツールが含まれます[^2]。

CommandLineTools for Xcodeを利用する場合、「CommandLineTools for Xcodeを単体でインストールして使う」or「Xcodeに付属しているCommandLineTools for Xcodeを使う」の2通りがあります。後者の場合、コマンドラインツール以外の開発者用ツール等が多く含まれる[^3]ので、**前者でのインストールを推奨します**。また、本記事では前者でのインストール方法のみ紹介します。

## (2) インストール先の確認と変更

CommandLineTools for Xcodeは、現在使っているディベロッパーディレクトリ[^6]にインストールされます。従って、適切な場所にインストールするために現在のディベロッパーディレクトリを確認する必要があります。

### `xcode-select`コマンド

`xcode-select`コマンドは先程のディベロッパーディレクトリを管理するためのコマンドです。`-p`をオプションにつけた際は、現在選択しているディベロッパーディレクトリのパスを出力します。また、`-s`オプションの後にパスを指定することで、ディベロッパーディレクトリを切り替えることができます。

### 確認と変更

ディベロッパーディレクトリとして今回は`/Library/Developer/CommandLineTools`を使用します。従って、`-p`オプションでディベロッパーディレクトリへのパスを確認した後、必要な場合は`-s`オプションでディベロッパーディレクトリを切り替えてください。

```zsh:切り替える必要がない場合
% xcode-select -p
/Library/Developer/CommandLineTools
```

```zsh:切り替える必要がある場合（同じパスとは限らない）
% xcode-select -p
/Applications/Xcode.app/Contents/Developer
% xcode-select -s /Library/Developer/CommandLineTools
% xcode-select -p
/Library/Developer/CommandLineTools
```

## (3) インストール方法①

### インストール用コマンド

CommandLineTools for Xcodeは下記のコマンドでインストールすることができます。この際、いくつかのポップアップが出てきますが、基本的に指示に従えば良いです。

```zsh
% xcode-select --install
```

### 確認用コマンド

CommandLineTools for Xcodeのバージョンは`pkg`ファイルによるインストールを管理する`pkgutil`コマンドにより確認でき、同時に正しくインストールできていることも確認できます[^4]。

```zsh
pkgutil --pkg-info=com.apple.pkg.CLTools_Executables | grep version
```

## (4) インストール方法②

先程のコマンドによるインストールを行うことで、安定版の中で最新のCommandLineTools for Xcodeをインストールすることができます。しかし、**上記の方法が上手くいかない場合**は別の方法を試す必要があります。

まず、先程の方法で途中までインストールがされている場合を避けるために、下記のコマンドでCommandLineTools for Xcodeを一旦削除します。

```zsh
% sudo rm -r /Library/Developer/CommandLineTools
```

そして、インストールの際にはApple公式の[More Downloads for Apple Developers](https://developer.apple.com/download/more/)を利用します。ここにある様々なバージョンのうちから適切なものを選んで直接インストールを行なってください。

また、**OSやSDKのバージョンによって適切なCommandLineTools for Xcodeのバージョンも異なる場合がある**ので、詳しくは[Xcodeの英語版wikipedia](https://en.wikipedia.org/wiki/Xcode#Version_comparison_table)の表を見てください。

# [2] Homebrewのインストール

HomebrewはMacにおけるパッケージ管理システムです。Homebrewについて詳しくは[Homebrewのドキュメント](https://docs.brew.sh/)を参照してください。また、それぞれのコマンドの説明は[Homebrewのドキュメントのmanページ](https://docs.brew.sh/Manpage)を見ると良いです。

## (1) インストール用コマンド

[Homebrewのホームページ](https://brew.sh/index_ja)にあるHomebrewのインストールコマンドによりインストールを行なってください。インストール用のコマンドが時折変わるので、本記事には貼り付けません。

## (2) 確認用コマンド

確認用のコマンドにより、下記の出力が得られた場合はHomebrewを問題なくインストールすることができています。

```zsh
% brew doctor
Your system is ready to brew.
```

## (3) エラーへの対処

先程の確認用コマンドを実行した際に、主に2つのエラーが出る場合があります。この場合の対処法について紹介します。

### `Unbrewed ~`となる場合

Homebrew経由でインストールしていないパッケージが`/usr/local/`にあります。この場合は、それぞれのパッケージを適切にアンインストールすることで対処可能です。また、該当するファイルやディレクトリを削除するのみでもエラーは消えますが、**環境を綺麗に保つために適切にアンインストールすることをお勧めします**。

### `You have unlinked kegs ~`となる場合

Homebrewでインストールしたパッケージへのリンクが切れています。そのパッケージが必要な場合は`% brew link (パッケージ名)`で再度リンクし、必要ない場合は`% brew uninstall (パッケージ名)`でアンインストールしてください。

## 後書き

[MacでGCCを"正しく"環境構築しよう！](https://qiita.com/DaikiSuyama/items/09f5aa399aad37783146)のHomebrewのインストールまでをこちらの記事に移植しました。Homebrewのインストールで困る方がより減れば嬉しいです。




[^1]: 下記は自分の環境での出力です。また、以降では`% コマンド名`でコマンドの実行を示します。
[^2]: 名前とは異なり、コマンドラインツール以外のものも含まれます。
[^3]: 全体として10GB以上なのでSSDを圧迫してしまいます。
[^4]: CommandLineToolsはdmgファイルとしてダウンロードされ、解凍されると中のpkgファイルが展開されることでインストールが開始されます。
[^6]: XcodeやBSDの開発者用ツールを用いる際に使用するディレクトリのこと。