🍣

Macの新環境構築に便利!Brewfileでアプリを管理 ~ Mac編

2022/04/04に公開3

はじめに

4月になりました。
新年度で新しい環境に移られる退職エントリーや入社エントリーをよく見かける気がする今日この頃。

新しい職場やプロジェクトに移ると最初に必要となるのは自分のマシンの設定。
ということで自分がインストールするアプリの管理に使っている方法を紹介します。

環境

Mac Monterey
MacBook Air (M1, 2020)

Homebrew

アプリのインストールにはHomebrewを使います。

Install

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

https://brew.sh

HomebrewでインストールしたアプリをBrewfileで管理する

homebrew-file という以下のツールを利用すしていますがとても便利です。

https://github.com/rcmdnk/homebrew-file

Homebrewでインストールしたアプリ、App Storeでインストールしたアプリのインストールを自動化できます。
インストールしたアプリの情報を Brewfile に書き出しておくことで他のマシンでも利用できるという仕組みです。
Brewfile をGithubで管理する仕組みも備えています。

Install homebrew-file

Homebrewでインストールできます。

brew install rcmdnk/file/brew-file

また、以下を .bashrc or .zshrc 自分のシェル環境に合わせて記載します。

.zshrc
# Brewfile
if [ -f $(brew --prefix)/etc/brew-wrap ];then
  source $(brew --prefix)/etc/brew-wrap
fi

Brewfileを生成する

初めて利用する時にはまずBrewfileの生成をします。
以下のコマンドを実行すると生成されます。

brew init

ファイルは ~/.config/brewfile/Brewfile に置かれます。
以下のコマンドでファイルの内容が確認できます。

brew file cat

GithubでBrewfileを管理する

まずはBrewfileを管理するリポジトリを作成します。
自分は以下のリポジトリで管理しています。

https://github.com/y16ra/Brewfile

以下のコマンドで作成したリポジトリを設定します。

brew set_repo

リポジトリにあるBrewfileの更新

以下のコマンドを実行すると更新内容がリポジトリに反映されます。

brew file update

定期的に実行するようにするかbrewコマンド実行後に上記のコマンドが実行されるようにも設定できます。

https://rcmdnk.com/blog/2022/03/21/computer-homebrew-brew-file-mac-windows-linux-bash/

.zshrc
if [ -f $(brew --prefix)/etc/brew-wrap ];then
  source $(brew --prefix)/etc/brew-wrap

  _post_brewfile_update () {
    brew file update
  }
fi

新しいMacの設定をする

リポジトリに保管済みのBrewfileを使って新しいMacにアプリのインストールをするのは簡単です。
以下のコマンドを実行してあとは待つだけ。

brew file set_repo
brew file install

終わりに

個人でインストールするアプリを管理する方法として紹介しましたが、Brewfileをチームで共有してオンボーディングを効率化したりできそうです。
今回その機能は使っていませんがBrewfileをホスト名ごとやOSごとなどで分割できるのでチームで利用するといった場合には公式ドキュメントを参考にやってみましょう。

https://homebrew-file.readthedocs.io/en/latest/usage.html#use-machine-specific-brewfile

GitHubで編集を提案

Discussion

nickynicky

この記事を見て興味がわき、自分も試してみたのですが、以下の文を.zshrcに追記するとbrewコマンド全般がかたまって動かなくなってしまうのですが、現在もこのツールは使用することができるのでしょうか?権限などは確認しました。
環境は同じくM1で、公式ドキュメントを読んでも特に初期設定の変更はないように思うのですが。。。

if [ -f $(brew --prefix)/etc/brew-wrap ];then
  source $(brew --prefix)/etc/brew-wrap
fi
u1u1

自分の環境では問題なく動いてそうです。
何か相性の問題などがあるのでしょうか。。
GithubにIssueあげてみると良いかもしれません!