brew-discover: Homebrewで新しいパッケージに出会うCLIツールを作った

ツール

はじめに

Homebrewには7000以上のFormulaと数千のCaskが登録されています。しかし、パッケージを探す方法は brew search のキーワード検索くらいしかありません。公式サイト(formulae.brew.sh)にも「人気順」や「カテゴリ別」の一覧はなく、名前を知らないパッケージにはたどり着けない状態です。

「みんなが使っている定番ツールは何か」「開発系で便利なものはないか」――こういった探し方ができるCLIツール brew-discover を作りました。

この記事でわかること。
– brew-discoverの機能と使い方(人気ランキング、カテゴリブラウズ、ランダム発見)
– Homebrew公式APIからインストール統計を取得する仕組み
– 7000パッケージを7カテゴリに自動分類するキーワードマッチングの実装

作ったもの

Demo

brew-discover は、以下の機能を提供します。

機能 説明
人気ランキング インストール数順でTop 20を表示
カテゴリブラウズ 7カテゴリで分類(dev, media, utils等)
ランダム発見 人気パッケージからランダムでおすすめ
強化検索 説明文も含めて検索、人気順でソート
詳細情報 パッケージの人気度(Top何%か)も表示

日本語と英語の両方に対応しています。

インストール

brew tap atani/tap
brew install brew-discover

使い方

人気ランキングを見る

# Formula Top 20
brew-discover top

# Cask Top 10
brew-discover top --cask -n 10

出力例です。

Homebrew Formula Top 5 (installs in last 30 days)

 #    Name              Installs     Description
────────────────────────────────────────────────────────────────
 1    ca-certificates   348.3K       Mozilla CA certificate store
 2    openssl@3         330.5K       Cryptography and SSL/TLS Toolkit
 3    xz                313.7K       General-purpose data compression
 4    sqlite            280.8K       Command-line interface for SQLite
 5    readline          273.6K       Library for command-line editing

カテゴリでブラウズ

# カテゴリ一覧
brew-discover browse
📂 カテゴリを選択

  🛠️ dev        開発ツール (2077 packages)
  🎬 media      メディア・動画・音声 (419 packages)
  🔧 utils      ユーティリティ (2226 packages)
  🌐 network    ネットワーク (1063 packages)
  🔒 security   セキュリティ (316 packages)
  📊 data       データベース・データ処理 (861 packages)
  🎮 games      ゲーム (230 packages)
# 開発ツールを見る
brew-discover browse dev

ランダムで発見

# 1つおすすめ
brew-discover random

# 5つおすすめ
brew-discover random -n 5

# おすすめ + 即インストール確認
brew-discover random --lucky

パッケージ詳細

brew-discover info bat
📦 bat

Clone of cat(1) with syntax highlighting and Git integration

────────────────────────────────────────────────────────────────
📊 人気度
   インストール数: 16.9K (30d)
   ランキング: #260 / 8004+ packages
   人気度: ⭐⭐⭐⭐ Top 5%

📋 詳細
   バージョン: 0.26.1
   ライセンス: Apache-2.0 OR MIT
   ホームページ: https://github.com/sharkdp/bat

📎 依存関係
   libgit2, oniguruma

💻 インストール
   brew install bat
────────────────────────────────────────────────────────────────

技術的なポイント

データソース

Homebrew公式のAPIを使用しています。

  • formulae.brew.sh/api/formula.json – パッケージ情報
  • formulae.brew.sh/api/analytics/install/homebrew-core/30d.json – インストール統計

APIはキャッシュして、Formula/Caskは24時間、Analyticsは6時間保持します。

なぜGoで作ったか

シングルバイナリで配布でき、brew tap + brew install だけで使える手軽さを重視しました。Homebrew自体がmacOS/Linuxのツールなので、クロスコンパイルの容易さもGoを選んだ理由です。

カテゴリ自動分類

7000以上のパッケージを自動で7カテゴリに分類しています。パッケージ名と説明文からキーワードマッチングでスコアリングする仕組みです。

var categoryKeywords = map[Category][]string{
    CategoryDev: {
        "compiler", "build", "git", "docker", "kubernetes",
        "python", "node", "ruby", "rust", "go", ...
    },
    CategoryMedia: {
        "video", "audio", "image", "ffmpeg", "youtube", ...
    },
    // ...
}

多言語対応(i18n)

Go の embed を使って翻訳JSONファイルをバイナリに埋め込んでいます。

//go:embed locales/*.json
var localesFS embed.FS

言語は以下の優先順位で決定します。

  1. --lang フラグ
  2. 環境変数 BREW_DISCOVER_LANG
  3. 環境変数 LANGja_JP.UTF-8ja
  4. デフォルト: en

おわりに

brew search だけでは出会えないパッケージを発見できるツールになりました。

特に brew-discover random は、知らなかった便利ツールを見つけるのにおすすめです。ぜひ使ってみてください。

関連記事

CLIツールやOSSの開発記事をほかにも書いています。

リンク

  • GitHub: https://github.com/atani/brew-discover
タイトルとURLをコピーしました