- macOSの主要なパッケージマネージャーである Homebrew と MacPorts は、それぞれパッケージの情報をAPIで公開しています。
- 両者のデータを定期的に収集することで、macOSユーザーに広く使われているツールや開発環境の全体像を把握できます。
- 今回は、データをそのまま構造体として扱いフィルタ・加工・整形が得意な nushell を使って、各パッケージマネージャーの人気パッケージ情報をTSVファイルに保存する方法を紹介します。
環境
- macOS 13.7.8 Ventura
- nushell 0.110.0
手順
ファイル作成
$ mkdir mac-trend
$ cd mac-trend
$ touch brew.nu macports.nu
コード記述
Homebrew
-
brew.nuに以下のコードを記述します。
# 出力ファイル名: 実行日付_brew_trend.tsv
let filename = (date now | format date "%Y%m%d") + "_brew_trend.tsv"
mkdir data/brew
# Homebrew Analytics API: 過去30日間のインストール数上位パッケージを取得
http get "https://formulae.brew.sh/api/analytics/install/homebrew-core/30d.json"
| get formulae # フォーミュラ一覧を抽出
| values # オブジェクトの値(配列の配列)を取得
| flatten # 一次元の配列に展開
| update count { str replace --all ',' '' | into int } # カンマ区切りの数値文字列を整数に変換
| sort-by count --reverse # インストール数降順で並べ替え
| first 100 # 上位100件に絞り込み
| to tsv # TSV形式に変換
| save -f $"data/brew/($filename)" # ファイルに保存(上書き)
MacPorts
-
macports.nuに以下のコードを記述します。
# 出力ファイル名: 実行日付_macports_trend.tsv
let filename = (date now | format date "%Y%m%d") + "_macports_trend.tsv"
mkdir data/macports
# MacPorts Statistics API: 過去30日間の人気ポートトップ100を取得
http get "https://ports.macports.org/api/v1/statistics/popular/?days=30&limit=100"
| sort-by total_count --reverse # インストール数降順で並べ替え
| to tsv # TSV形式に変換
| save -f $"data/macports/($filename)" # ファイルに保存(上書き)
実行
- 以下のコマンドで実行します。
$ nu brew.nu
$ nu macports.nu
- 実行後、カレントディレクトリに
dataディレクトリが生成されます。以下のような構造・内容になっていることを確認してください。
$ ls
brew.nu data macports.nu
$ ls data
brew macports
$ cat data/brew/20260222_brew_trend.tsv
formula count
XXXX 10000
XXXX 9999
XXXX 9998
XXXX 9990
...
$ cat data/macports/20260222_macports_trend.tsv
port total_count req_count
XXXX 10000
XXXX 9999
XXXX 9998
XXXX 9990
...
まとめ
- Homebrew Analytics API と MacPorts Statistics API を組み合わせることで、macOSのパッケージエコシステム全体の利用傾向を把握できます。
- nushell と組み合わせることで、それぞれのAPIレスポンスをそのまま構造体として扱いつつ、少ないコード量でデータの取得・整形・保存まで行うことができます。
- このデータを定期的に記録しておけば、macOSエコシステムのトレンドを継続的に追えるだけでなく、人気パッケージの存在を知るきっかけにもなります。
- GitHub Actions や cron などを利用してこれらのスクリプトを定期実行するようにしておくと、手動で実行する手間なくトレンドデータを蓄積し続けられるのでおすすめです。