Homebrewを使って新しいMacでサクッと環境構築したい・改


## はじめに

MacBook Proを買いました（まだ家に届いていない）。

新しいMacで開発環境を整えるために初期設定を行っていく必要があります。

時は2016年。[Hamee Advent Calendar 2016](https://qiita.com/advent-calendar/2016/hamee) に投稿した 「[Homebrewを使って新しいMacでサクッと環境構築したい](https://qiita.com/tori076/items/eefd228bdc6ed6cde1e8)」 という記事の通り、新しいMacを迎え入れる際の作業はかなり省略されているのですが、まだまだ手作業でやることは多い。そんな中、

[brew tapでGolangの自作アプリケーションを公開する方法](https://tomokazu-kozuma.com/how-to-release-golangs-homebrew-application-with-brew-tap/)

という記事をみて、自分専用のtapを作ると更に省略可できそうだな。ということで試してみることにした。

### brew tap とはなんぞや
brew tap は、公式で指定されている formula以外の を追加することのできる Homebrew のコマンドの事。

```sh
$ brew tap <username>/<repository>
```

ここで指定したusername、repositoryはGitHub公開リポジトリはにおいて`https://github.com/<username>/homebrew-<repository>`のような関係になっています。
また、リポジトリ名は "homebrew-xxx" となるようにする必要があります。

配布したいツールのブランチとformula置き場としてのブランチの2を用意する方法がありますが、今回は1つのブランチで試してみます。

### 手順
まずはGitHub上で公開リポジトリ（今回は`homebrew-hello-world`）を作成し、お決まりのコマンドでfirst commitしておく

```sh
$ echo "# homebrew-hello-world" >> README.md
$ git init
$ git add README.md
$ git commit -m "first commit"
$ git remote add origin https://github.com/yamadayamada-jp/homebrew-hello-world.git
$ git push -u origin master
```

#### 1. 自作ツールの準備

自作ツールをpushする（簡単にhello world!）するだけのものをサンプルとして追加してpushする。

```sh:helloworld.sh
#!/bin/sh

echo "Hello, World!"
```

pushした内容に対して適当なtagを追加する。

```sh
$ git tag 0.0.1
$ git push origin 0.0.1
```

GitHubでリポジトリを開きReleaseタブからtagが反映されたか確認する。
先程pushした0.0.1があればOK

このタグを使ってGitHub Releasesを行う。
GitHub Releasesについては [こちらの記事](https://qiita.com/todogzm/items/db9f5f2cedf976379f84) でわかりやすく解説されている。

この時点でリポジトリは以下のような構成になっているはずです。

```
homebrew-hello-world
|--helloworld.sh
|--README.md
```

#### 2. formulaを作成する。

まずはformulaを格納するディレクトリを作成する

```sh
mkdir formula
```

formulaファイルを作成する。
手で書いても良いが、生成コマンドはちゃんとあるのでそちらを利用する。

```sh
$ brew create https://github.com/yamadayamada-jp/homebrew-hello-world/releases/download/0.0.1/helloworld.sh
```

すると以下のようなファイルが生成される

```rb:homebrew-hello-world.rb
# Documentation: https://docs.brew.sh/Formula-Cookbook
#                https://rubydoc.brew.sh/Formula
# PLEASE REMOVE ALL GENERATED COMMENTS BEFORE SUBMITTING YOUR PULL REQUEST!
class HomebrewHelloWorld < Formula
  desc ""
  homepage ""
  url "https://github.com/yamadayamada-jp/homebrew-hello-world/releases/download/0.0.2/helloworld"
  sha256 "88fd602a930bc7c0bb78c385f3cb70e976a0cdc3517020be32f19aae8c8eba17"

  # depends_on "cmake" => :build

  def install
    # ENV.deparallelize  # if your formula fails when building in parallel
    # Remove unrecognized options if warned by configure
# 〜〜〜以下略〜〜〜
  end
end
```

`desc`と`homepage`は必要があれば記述する（今回は省略）
insntallメソッドにはインストール方法を記述されていますがツールの樹類によって書き分けが必要。
今回はbin.installでバイナリのファイル名を指定する方法で自作ツールのインストールをします。

```rb:homebrew-hello-world.rb
class HomebrewHelloWorld < Formula
  desc ""
  homepage ""
  url "https://github.com/yamadayamada-jp/homebrew-hello-world/releases/download/0.0.1/helloworld"
  sha256 "88fd602a930bc7c0bb78c385f3cb70e976a0cdc3517020be32f19aae8c8eba17"

  def install
    bin.install "helloworld"
  end
end
```

このファイルを先程作成したformulaディレクトリに設置してpushします。
この時点でリポジトリは以下のような構成になっているはずです。

```
homebrew-hello-world
|--helloworld
|--README.md
|--formula
  |--homebrew-hello-world.rb
```

#### 3. brewで自作ツールを取り込む

ここまで出来たら後はtapしてinstallするだけ。

```sh
$ brew tap yamadayamada-jp/homebrew-hello-world
$ brew install yamadayamada-jp/hello-world/homebrew-hello-world
```

```sh
$ helloworld
Hello, World!
```
正しくインストールされました👍

ここまでの作業で僅か2回コマンドを打てばインストール出来るようになったので、更に初期設定が更に楽になりました。

新しいMacのお迎えが楽しみです。

## 参考
* [GitHubのリリース機能を使う](https://qiita.com/todogzm/items/db9f5f2cedf976379f84)
* [brew tapでGolangの自作アプリケーションを公開する方法](https://tomokazu-kozuma.com/how-to-release-golangs-homebrew-application-with-brew-tap/)