0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

macOSでよく使われているパッケージをnushellで収集および記録する

0
Posted at
  • macOSの主要なパッケージマネージャーである HomebrewMacPorts は、それぞれパッケージの情報を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 などを利用してこれらのスクリプトを定期実行するようにしておくと、手動で実行する手間なくトレンドデータを蓄積し続けられるのでおすすめです。

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?