Homebrewが7.0.0を公開した。今回の更新は、単なる定例のバージョン上げではなく、インストールやアップグレードの高速化、sandboxingの強化、macOS向けの新しいネイティブアプリ、脆弱性チェックの内蔵など、使い方そのものに触る内容がまとまっている。しかも、macOS 10.15のサポート終了やIntel Macの扱い変更まで含まれていて、Homebrewがどの環境を今後重視するのかもはっきりした。日常的にbrewを叩いている人ほど、影響の大きい節目だと思う。
Homebrew 7.0.0は、6.0.0以降で最も大きい変化として、まず速度と安全性を前面に出している。公開時点のアップグレードは、brew update を通じて自動で進められるか、HOMEBREW_NO_AUTO_UPDATE を使っている場合は手動で brew update を走らせればよい。ここでいう 7.0.0 では、古いインターフェースは段階的に扱いが変わり、deprecated は警告、disabled は拒否、removed はそもそも使えない、という整理が入った。
サポート環境の見直しも大きい。macOS 10.15 Catalina 以前は終了し、macOS 11 以降が必要になった。macOS Sonoma 14 は Tier 3 に落ち、bottle や .pkg の利用は Sequoia 15 以上が推奨される。一方で、macOS Golden Gate 27 on Apple Silicon は Tier 1 でフルサポートになった。さらに、Intel macOS は 2026年9月に Tier 3 へ移り、2027年9月1日には Homebrew を Intel Mac で動かすこと自体が将来的に外される予定だという。Homebrew/brew の master は2027年3月1日で凍結され、main への切り替えが必要になる。ghcr.io/homebrew/ubuntu22.04 のイメージ削除や、Homebrew/actions/*@master / @main の扱い変更も、この整理の一部だ。
性能面では、ダウンロード、準備、インストールの並行化が進んだ。brew install、brew reinstall、brew upgrade は、複数パッケージの準備とダウンロードを重ねて進めるようになり、brew bundle でも同じ共有作業を使える。brew config はシステム情報を独立して並列に集め、brew tap-info --installed --json=v1 も複数のtapのメタデータを並行取得する。brew cleanup はキャッシュを何度も見直さないようにし、brew fetch はAPIメタデータから bottle や cask の情報を直接読む。brew update はRuby cacheを先に整え、起動時の subprocess も減らした。加えて、ターミナルサイズを直接読むことで、uutils stty 由来の待ちにくさも避けている。
安全性では、いくつかの脆弱性修正がまとめて告知された。たとえば、GHSA-5263-whxq-77hp は moderate で、悪意ある cask が macOS の install sandbox の外でコードを実行できる問題だったが、7.0.0で修正された。Homebrew は LaunchServices、Mach services、Unix socket connections を制限している。ほかにも、brew livecheck のリダイレクト制限、ダウンロード時の secret headers の漏えい防止、Git リダイレクトによる tap 制限の回避防止、patch target の staged source tree からの脱出防止など、6.0.x 系の修正も列挙されている。
インストール保護の説明も重要だ。Homebrew は third-party cask に対して、まず tap trust を主な防御線として置いている。sandboxing は主に事故を減らし、インストール時の守りを強めるもので、信頼できないソフトを安全に実行できるわけではない。アプリはユーザー権限で動き、vendor の .pkg installer は sandbox の外で走って sudo が必要になることもある。7.0.0 では、署名付きの structured data でセットアップを渡し、formula と cask の処理を sandbox に閉じる。依存先のダウンロードを先に済ませる fetch phase への移行も始まっていて、その後の install ではネットワークを切り、cache を読み取り専用にする。ホームディレクトリの読み取りも既定では止め、shared installation での setuid wrapper のような未検証の切り替え経路も退けている。
コマンド周りでは、brew install --dry-run が formula と cask をまとめて事前表示し、brew list --no-installed-on-request で依存として入ったものを見分けやすくした。brew info は、未インストールと実行不可を ✘ と ⊘ で区別する。brew services はサービスごとの環境設定を別ファイルから読むようになり、再起動後も設定が残る。brew doctor --json は自動化向けの構造化出力を返し、brew deps --brewfile は Brewfile の依存を確認できる。cask 側では、formula と同じコマンドがある場合は formula のリンクが優先され、brew link / brew unlink に --cask や --formula が追加された。macOS では Homebrew の .pkg installer が Apple Silicon 専用となり、Command Line Tools なしで prebuilt cask を入れられるようにもなっている。
今回いちばん印象に残るのは、Homebrewが「便利な包み方」を少しずつやめて、「安全に保守できる形」に寄せていることだ。速度改善だけなら普通の大型更新に見えるが、実際には sandbox、権限、APIメタデータ、サービス設定の持ち方まで変えている。私はこれを、Homebrewが長年抱えていた“何でもできる柔軟さ”を削ってでも、事故率を下げにいっている動きだと見る。特に third-party cask は、ユーザーが思う以上に危ない。Homebrew自身も「untrusted software を安全に run できるわけではない」と明言していて、その線引きを曖昧にしない姿勢ははっきりしている。
Intel macOS を Tier 3 にする判断は、単に古いCPUを切る話ではない。本文でも、Apple と GitHub が Intel 支援を縮めたために、Homebrewのボランティアでは穴埋めできないと書かれている。ここが重要で、Homebrewは「まだ動く」ことと「プロジェクトが面倒を見る」ことを分けた。Tier 3 になると既存 bottle は残るが、新しい bottle は期待しにくい。つまり、Intel Mac ユーザーは当面使えるが、快適さや再現性は落ちていく。これは冷たい決断に見えるかもしれないが、保守者の人数が限られたOSSでは、実際にはこういう線引きがないと全体が崩れる。むしろ、終了時期をかなり先まで示している分、まだ誠実だと思う。
7.0.0は全ユーザー向けの更新に見えて、実際には受け取る恩恵が人によってかなり違う。普段 brew install を数本しか使わない人には、速度改善は地味かもしれない。一方で、Brewfile で環境を丸ごと再現している人、CI で brew doctor --json や brew fetch を使う人、あるいは multiple tap を日常的に触る人には、並列化や構造化出力の改善がかなり効くはずだ。特に CI では、起動時間の短縮とエラーの再現性がそのままコストに響く。Homebrewが command output を整理しつつ、裏では API データと sandbox を強くしているのは、個人利用よりもむしろ自動化や大規模運用を意識しているように見える。今後のHomebrewは、見た目の派手さより、壊れにくさと説明可能性で評価されるのではないかと思う。
macOS Golden Gate 27 on Apple Silicon が Tier 1 になった一方で、Intel の扱いは後退した。そこに native macOS app の話が入ってくるのが面白い。本文では Homebrew app が新しく出てきており、prebuilt cask の扱いともつながっている。これは、Homebrew がこれまでの CLI 中心の世界だけでなく、macOS の利用体験そのものにも踏み込もうとしているサインだと思う。もちろん、アプリ化すれば何でも良くなるわけではない。だが、brew services の環境継承や brew shellenv の PATH 設定の改善を見ると、Homebrew は「ターミナルで完結する道具」から少しずつ外へ広がっている。CLI の哲学を残しながら、OS との摩擦を減らす。そのバランスをどこまで保てるかが、次の数年の見どころだろう。
参考: 7.0.0