【Mac】Cloud Native Buildpacksのpackコマンドをインストールする方法

## 1. Cloud Native Buildpacksとは
超ざっくり言うと、
「ソースコードがあれば、**packコマンド1つで超簡単にコンテナイメージが作れるよ！**」
コンテナに触れたことがある人ならばイメージしやすいかも。

**Dockerfileなどのめんどくさい準備がいらない**ですし、
**コンテナイメージのサイズが大きくなりすぎて使い物にならない！**
ということもなくなるのです :blush:

「もっと気になる！」という方は以下のサイトを見てみるといいかも！
イメージがつきやすく、わかりやすいです。（一番は公式サイトの説明見るのがいいんですけどね笑。英語が苦手な方は以下のサイトだけでも十分理解できると思います）

- [【公式】Cloud Native Buildpacks 特性](https://buildpacks.io/features/)
- [【公式】Cloud Native Buildpacks コンセプト](https://buildpacks.io/docs/concepts/)
- [Cloud Native Buildpackで めんどうなコンテナイメージ作成を自動化しよう](https://speakerdeck.com/jacopen/cloud-native-buildpackde-mendounakontenaimezizuo-cheng-wo-zi-dong-hua-siyou)


## 2. packコマンドのインストール
Macではbrewコマンドを使ってインストールすることができます。
[【Cloud Native Buildpacks - 公式サイト】](https://buildpacks.io/docs/tools/pack/)にあるように、たった１つのコマンドを実行するだけでインストールできます！

:::note alert
あらかじめ、brewコマンドのインストールが必要です！
brewコマンドのインストールコマンド: https://brew.sh/
:::

```text:Terminal
$ brew install buildpacks/tap/pack

(省略)
==> Installing pack from buildpacks/tap
==> Downloading https://github.com/buildpacks/pack/releases/download/v0.19.0/pack-v0.19.0-macos.tgz
Already downloaded: /Users/user_name/Library/Caches/Homebrew/downloads/22d2f840ae07d8fb8ca1088863e9d6b1240fea7c4e18b6f5bcd961fd12aacc0b--pack-v0.19.0-macos.tgz
🍺  /usr/local/Cellar/pack/0.19.0: X files, 19.5MB, built in 3 seconds
```

上記のような出力結果が表示されればインストール完了！(早い・簡単！)

:::note warn
<font color="red">エラーが出た場合</font>は <strong>3. (2で失敗した人だけ) エラー対処</strong> を参照してください。
:::

以下のコマンドでpackコマンドがインストール済みか確認して見てください。
バージョンが表示されていればインストール完了済みです。
（2021/07/17時点：私の環境では0.19.0が表示されています。）

```text:Terminal
$ pack --version
0.19.0+git-360dbae.build-2550
```

:::note info
【Finish!!】
バージョンが確認できた人は、以上で終了です！
お疲れ様でした！ :thumbsup:
:::


## 3. (2で失敗した人だけ) エラー対処
私の環境では以下のエラーが出てしまいました。
同じエラーが表示された人がいれば、参考にしてください。

### 3.1. エラーその１
このようなエラー結果が出力されました。

>（省略）
Error: An exception occurred within a child process:
  CompilerSelectionError: buildpack/tap/pack cannot be built with any available compilers.
Install GNU's GCC:
  brew install gcc

私 「なんだ！gccインストールすればいいだけじゃん！」
ということで、エラー内容にもあるgccインストールコマンドを早速実行です :running:

```text:Terminal
$ brew install gcc
（省略）
==> Downloading https://ftp.gnu.org/gnu/gcc/gcc-11.1.0/gcc-11.1.0.tar.xz
Already downloaded: /Users/noritaka/Library/Caches/Homebrew/downloads/104cdaaeb30152af30fd8af2d3da5eb879ba1191832e8225d91f3538e4002fb6--gcc-11.1.0.tar.xz
==> ../configure --prefix=/usr/local/Cellar/gcc/11.1.0_1 --libdir=/usr/local/Cellar/gcc/11.1.0_1/lib/gcc/11 --disable-nls --enable-checking=release --enable-languages=c,c++,objc,obj-c++,fortran,d --progra
==> make BOOT_LDFLAGS=-Wl,-headerpad_max_install_names
==> make install
🍺  /usr/local/Cellar/gcc/11.1.0_1: 2,163 files, 449MB, built in 42 minutes 36 seconds
```

:::note warn
<font color="red">エラーが出た場合</font>は <strong>3.2. エラーその2</strong> を参照してください。
:::


gccインストール後、以下のコマンドを実行して確認します。
バージョンが表示されているか確認してください。

```text:Terminal
$ gcc -v
（省略）
Apple clang version 12.0.5 (clang-1205.0.22.11)
Target: x86_64-apple-darwin20.5.0
Thread model: posix
InstalledDir: /Library/Developer/CommandLineTools/usr/bin
```

:::note info
gccのバージョンが表示されたら完了です。
手順２に戻ってください。
【Next: 2. packコマンドのインストール】
:::


### 3.2. エラーその２
以下のエラー結果が出力されました。

> （省略）
You can try to install from source with:
  brew install --build-from-source gcc
Please note building from source is unsupported. You will encounter build
failures with some formulae. If you experience any issues please create pull
requests instead of asking for help on Homebrew's GitHub, Twitter or any other
official channels.


私 「はいはい、オプションつければいいのね。」
ということで、オプションをつけて再度 実行です :running: （数分程かかります）

```text:Terminal
$ brew install --build-from-source gcc
（省略）
==> ../configure --prefix=/usr/local/Cellar/gcc/11.1.0_1 --libdir=/usr/local/Cellar/gcc/11.1.0_1/lib/gcc/11 --disable-nls --enable-checking=release --enable-languages=c,c++,objc,obj-c++,fortran,d --progra
==> make BOOT_LDFLAGS=-Wl,-headerpad_max_install_names
==> make install
🍺  /usr/local/Cellar/gcc/11.1.0_1: 2,163 files, 449MB, built in 42 minutes 36 seconds
```
:::note warn
<font color="red">エラーが出た場合</font>は <strong>3.3. エラーその3</strong> を参照してください。
:::
:::note info
上記のような結果が表示されたらgccのインストール完了です。
手順２に戻ってください。
【Next: 2. packコマンドのインストール】
:::

### 3.3. エラーその3
このようなエラー結果が出力されました。

> Error: The following flag:
  --build-from-source
requires building tools, but none are installed.
Install the Command Line Tools:
  xcode-select --install
Alternatively, remove the flag to attempt bottle installation.

私 「またエラーでちった :tired_face:」
**Apple Command Line Toolsをインストールする必要がある**
gccをインストールしたければ、"xcode-select --install"を実行せよとのこと。
私 「ならば実行しよう」

以下のコマンドを実行時、ポップアップが出現する。
**同意する → インストール** の順でボタンをクリック
でCommand Line Toolsがインストールされます。（数分~数十分程度かかる）

```text:Terminal
$ xcode-select --install
xcode-select: note: install requested for command line developer tools
```

↓ダウンロードの様子(実際は15分くらいでダウンロード完了した)↓
![スクリーンショット 2021-07-17 16.17.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/259737/85e70fbb-9d91-68e2-e981-287433d7e210.png)

:::note info
Command Line Toolsダウンロード完了時
手順3.2. に戻ってください。
【Next: 3.2. エラーその２】
:::