T-CREATOR

Homebrew でよく使う便利コマンド 15 選

Homebrew でよく使う便利コマンド 15 選

macOS での開発環境構築において、Homebrew は欠かせないツールです。しかし、多くの開発者が基本的なbrew installしか使っていないのが現状ではないでしょうか。実は、Homebrew には開発効率を劇的に向上させる便利なコマンドが数多く存在します。

今回は、日々の開発作業を快適にする「本当に使える」Homebrew コマンド 15 選をご紹介します。これらのコマンドを覚えることで、パッケージ管理の悩みから解放され、より本質的な開発作業に集中できるようになるでしょう。

基本操作コマンド 5 選

brew install - パッケージをインストール

最も基本的なコマンドですが、実は奥が深いのです。単純なインストールだけでなく、オプションを使いこなすことで、より柔軟な環境構築が可能になります。

bash# 基本的なインストール
brew install node

# 特定のバージョンを指定してインストール
brew install node@18

# 複数のパッケージを一度にインストール
brew install git curl wget

よくあるエラーと対処法

Error: Permission denied @ dir_s_mkdir - ​/​usr​/​local​/​varのエラーが発生した場合、権限の問題が考えられます。

bash# 権限エラーの解決
sudo chown -R $(whoami) /usr/local/var
sudo chown -R $(whoami) /usr/local/lib/pkgconfig
sudo chown -R $(whoami) /usr/local/share/info

brew uninstall - パッケージをアンインストール

不要になったパッケージを削除するコマンドです。依存関係を残したくない場合は、後述のautoremoveと組み合わせて使用しましょう。

bash# 基本的なアンインストール
brew uninstall node

# 依存関係も含めて完全削除
brew uninstall node
brew autoremove

注意点として、他のパッケージが依存している場合、以下のようなエラーが表示されます:

bashError: Refusing to uninstall /usr/local/Cellar/node/18.17.0
because it is required by yarn, which is currently installed.

このような場合は、依存しているパッケージを先にアンインストールする必要があります。

brew update - Homebrew 本体を更新

Homebrew の機能を最新に保つために重要なコマンドです。新しいパッケージが追加されたり、セキュリティ修正が含まれたりするため、定期的に実行することをおすすめします。

bash# Homebrew本体とformula情報を更新
brew update

実行結果の例

bashUpdated 2 taps (homebrew/core and homebrew/cask).
==> New Formulae
ast-grep         dolt            helm-ls
==> Updated Formulae
Updated 127 formulae.

brew upgrade - インストール済みパッケージを更新

インストール済みのパッケージを最新バージョンに更新するコマンドです。セキュリティ対策の観点からも、定期的な実行が推奨されます。

bash# 全てのパッケージを更新
brew upgrade

# 特定のパッケージのみ更新
brew upgrade node

# 更新可能なパッケージを確認(実際には更新しない)
brew outdated

注意すべきエラー

bashError: Cannot install node because conflicting formulae are installed.
  node@16: because node is already installed

このエラーは、異なるバージョンのパッケージが競合している場合に発生します。brew unlinkbrew linkを使って解決できます。

brew list - インストール済みパッケージを一覧表示

現在の環境を把握するための重要なコマンドです。プロジェクトの引き継ぎや環境の再構築時に威力を発揮します。

bash# インストール済みパッケージの一覧
brew list

# 詳細情報付きで表示
brew list --versions

# 特定のパッケージのインストール状況を確認
brew list node

活用のコツ

bash# パッケージ数を確認
brew list | wc -l

# 特定の文字列を含むパッケージを検索
brew list | grep python

情報確認コマンド 4 選

brew info - パッケージの詳細情報を表示

パッケージをインストールする前に、その詳細情報を確認することは非常に重要です。依存関係や設定方法、注意点などを事前に把握できます。

bash# パッケージの詳細情報を表示
brew info node

# 複数のパッケージの情報を一度に確認
brew info git curl wget

表示される情報の例

bashnode: stable 20.5.1 (bottled), HEAD
Platform built on V8 to build network applications
https://nodejs.org/
/usr/local/Cellar/node/20.5.1 (1,960 files, 50.1MB) *
  Poured from bottle on 2023-07-28 at 10:30:15
From: https://github.com/Homebrew/homebrew-core/blob/HEAD/Formula/node.rb

インストールしたいパッケージの正確な名前がわからない場合に重宝するコマンドです。関連するパッケージを発見する際にも活用できます。

bash# 基本的な検索
brew search python

# 正規表現を使った検索
brew search /python.*3/

# 説明文も含めて検索
brew search --desc "web server"

検索結果の読み方

bash==> Formulae
python@3.9 ✓     python@3.10 ✓    python@3.11 ✓
python@3.12       python-tk@3.9     python-tk@3.10

==> Casks
python-launcher

✓ マークは既にインストール済みのパッケージを示しています。

brew deps - 依存関係を確認

パッケージの依存関係を理解することで、システムの構成を把握し、トラブルシューティングに役立てることができます。

bash# 依存関係をツリー形式で表示
brew deps --tree node

# 特定のパッケージに依存しているパッケージを確認
brew uses --installed node

依存関係の例

bashnode
├── c-ares
├── icu4c
├── libuv
└── openssl@3
    └── ca-certificates

brew doctor - システムの問題をチェック

環境に問題がある場合の診断ツールです。インストールがうまくいかない時や、予期しない動作が発生した時の第一歩として活用しましょう。

bash# システムの健康状態をチェック
brew doctor

よくある警告と対処法

bashWarning: Your system is ready to brew.
# 問題なしの場合

Warning: Some installed formulae are missing dependencies.
# 依存関係の問題がある場合
brew missing

メンテナンス・管理コマンド 3 選

brew cleanup - 不要なファイルを削除

定期的なクリーンアップは、ディスク容量の節約とシステムの健全性維持に欠かせません。

bash# 全ての不要ファイルを削除
brew cleanup

# 特定のパッケージのみクリーンアップ
brew cleanup node

# 削除される内容を事前に確認
brew cleanup --dry-run

クリーンアップの効果

bash# クリーンアップ前のディスク使用量を確認
du -sh /usr/local/Cellar

# クリーンアップ実行
brew cleanup

# 削除されたファイルサイズの確認
Removing: /usr/local/Cellar/node/18.16.0... (1,960 files, 50.1MB)
Removing: /usr/local/Cellar/git/2.40.1... (1,664 files, 44.7MB)

brew autoremove - 不要な依存関係を削除

パッケージをアンインストールした後に残る、不要な依存関係を自動的に削除します。システムをクリーンに保つための重要なコマンドです。

bash# 不要な依存関係を自動削除
brew autoremove

# 削除される内容を確認
brew autoremove --dry-run

実行例

bash==> Autoremoving 3 unneeded formulae:
ca-certificates, openssl@3, readline

brew pin/unpin - パッケージの更新を固定/解除

特定のバージョンを維持したい場合に使用するコマンドです。プロジェクトの互換性を保つために重要な機能です。

bash# パッケージの更新を固定
brew pin node

# 固定を解除
brew unpin node

# 固定されているパッケージを確認
brew list --pinned

使用シーン

bash# 本番環境と同じバージョンを維持
brew pin node@18
brew pin python@3.9

# 開発中のプロジェクトで使用中のバージョンを固定
brew pin postgresql@13

応用・便利コマンド 3 選

brew services - サービスの管理

バックグラウンドで動作するサービスを管理するコマンドです。データベースや Web サーバーの管理が格段に楽になります。

bash# サービスの一覧を表示
brew services list

# サービスを開始
brew services start postgresql

# サービスを停止
brew services stop postgresql

# サービスを再起動
brew services restart nginx

サービス管理の例

bash# 開発環境を一括起動
brew services start postgresql
brew services start redis
brew services start nginx

# 自動起動の設定
brew services start postgresql --auto-start

brew bundle - パッケージをまとめて管理

Brewfileを使って、プロジェクトやチームで環境を統一できる素晴らしい機能です。

bash# 現在の環境からBrewfileを生成
brew bundle dump

# Brewfileから環境を復元
brew bundle install

# 不要なパッケージを削除
brew bundle cleanup

Brewfile の例

ruby# Brewfile
tap "homebrew/cask"
tap "homebrew/core"

# CLI tools
brew "git"
brew "node"
brew "yarn"
brew "postgresql"

# Applications
cask "visual-studio-code"
cask "google-chrome"
cask "docker"

brew --prefix - インストールパスを確認

パッケージのインストールパスを確認するコマンドです。設定ファイルの編集やパスの設定に重要な情報を提供します。

bash# Homebrewのベースパスを確認
brew --prefix

# 特定のパッケージのパスを確認
brew --prefix node
brew --prefix python@3.11

実用的な活用例

bash# 環境変数の設定
export NODE_PATH=$(brew --prefix node)/lib/node_modules

# 設定ファイルの場所を確認
echo "$(brew --prefix nginx)/etc/nginx/nginx.conf"

# シンボリックリンクの作成
ln -s $(brew --prefix node)/bin/node /usr/local/bin/node

まとめ

Homebrew の便利コマンド 15 選をご紹介しました。これらのコマンドを日常的に使うことで、パッケージ管理に関するストレスが大幅に軽減されるはずです。

特に重要なのは、brew doctorでの定期的な健康チェックと、brew cleanupでのメンテナンス、そしてbrew bundleを使った環境の統一管理です。これらを習慣化することで、開発環境の品質が格段に向上します。

また、エラーに直面した際は、エラーメッセージを注意深く読み、適切な対処法を選択することが大切です。多くの場合、Homebrew のエラーメッセージは親切で、解決策のヒントが含まれています。

最後に、これらのコマンドは単なるツールではなく、より良い開発体験を実現するための手段です。効率的なパッケージ管理により、本当に大切な開発作業に集中できる環境を構築していきましょう。

関連リンク