thumb_homebrew_01

Homebrewとは?

新しいプログラミング言語でアプリケーションを開発する際、実行プログラムやソースコード、ライブラリ、設定ファイル・データファイル・ドキュメントなど開発環境の設定に欠かせない様々なソフトウェアをOSにインストールする必要があります。

それらをインターネットから入手して個別にインストールすることも可能ですが、インストールに時間がかかったり、面倒な手順を踏んだりすることが多くなります。初心者の中には環境構築のためのインストール作業で挫折してしまうこともあります。

そうしたソフトウェアのインストールをより簡単に実施できるのが「パッケージ管理システム」です。今回は、macOSにおける代表的なパッケージ管理システムである「Homebrew(ホームブルー)」の特徴や使い方、メリット・デメリット、他のパッケージ管理システムとの違いなどを解説していきます。

そもそもHomebrewとは何か

Homebrewは、macOSやLinux、Windows Subsystem for Linuxなどで動作するパッケージ管理システムの1つです。各種OSにおけるソフトウェアの導入を単純化する機能を備えており、Windowsでは動作しません。

2009年5月に初版がRuby言語で開発され、2016年に最初のメジャー版「1.0」がリリースされました。2021年2月にリリースされたメジャーアップデート「3.0.0」が最新のバージョンです(2023年3月時点)。

brewとは英語で「醸造する(ビルド)」を意味し、homebrewとは「ユーザーが自らパッケージをビルドして使用する」ことを表しています。Homebrewのアイコンがビールである由来となっているようです。

Homebrewは、フリーソフトウェアで使われているライセンス体系の1つである「BSDライセンス」として無料で提供されています。BSDライセンスでは、著作権の表示と免責条項を明記すれば、ソースコードの改変や再配布、商用のプログラムに取り入れることも可能です。

【参考】:Homebrew公式サイト

Homebrewでは何ができる?

Homebrewを使うことで、Macのターミナルからさまざまなソフトウェアを簡単にインストールできます。

特にプログラミングの開発環境を用意する場合、Homebrewで初期設定をしておけば、その後の管理が簡単になります。また、「git」や「bash」などWebアプリケーション開発者にとって必要不可欠なパッケージをインストールしたり、管理したりすることも可能です。

パッケージ管理システムの概要

Homebrewのようなパッケージ管理システムは、どのようなツールなのでしょうか。まずは、パッケージ管理システムについて簡単に解説します。

パッケージを管理する機能を備えたツール

パッケージ管理システムとは、ソフトウェアをパッケージ単位で管理するツールです。1つのソフトウェアを構成する実行プログラムやソースコード、設定ファイル・データファイル・ドキュメントなどを1つの圧縮ファイルなどの形式でまとめているものを「パッケージ」と呼びます。

オープンソースソフトウェアやフリーソフトウェアとして提供されているパッケージは、インターネット上の集積場所(リポジトリ)で配布され、誰でも自由に取得・導入して利用できます。

mac OSやLinuxでは、ソフトウェアをパッケージ単位で管理することが多く、そうした機能を備えたツールがパッケージ管理システムです。

パッケージ管理システムは、ソフトウェアのインストール・アンインストール・アップグレード・インストールされているソフトウェアの照会・パッケージの作成などの機能を備えています。

パッケージ管理システムが誕生した背景

これまでUNIX系のOSでは、ソフトウェアをシステムにインストールする際、ソースコードをコンパイルして作成された実行ファイルを、手動でシステムのディレクトリにインストールしていました。

ただ、この手順では導入時や運用時の管理が非常に面倒であり、その解決策として考えられたのが「コンパイル済みのソフトウェアをパッケージ化して、データベースで管理する」という方法です。

パッケージ管理には「バイナリを取得するもの」「ソースコードを取得してビルドするもの」の主に2つのパターンがあります。バイナリとは、ソースコードをあらかじめビルドした成果物を配布することを指します。バイナリの方が、ビルドよりも早くインストールできる点が特徴です。

パッケージ管理システムでは何ができる?

パッケージ管理システムでは、ユーザが指示したパッケージを取り寄せて自動的に展開・導入(インストール)して実行可能な状態にします。

具体的には、ソフトウェア導入時にパッケージに記述されている設定情報を参照し、各ファイルを指定場所にコピーして、それらのファイルの一覧やバージョン情報などをデータベースに登録します。

また、不要になったパッケージをシステムから除去したり、最新バージョンを取り寄せて更新したりすることもできます。ソフトウェアの削除やアップデートを実施する場合、データベースの情報を基に実行されます。そのため、ユーザは各ファイルの場所やバージョン情報などをチェックする手間が省けます。

さらに、あるパッケージが別のパッケージを必要とする場合(依存)には、これを調べて自動的に導入可能です。アンインストールする場合、関連するファイルを端末から削除できるため、PCの容量の節約にもなります。

主なパッケージ管理システムの種類

主なパッケージ管理システムとしては、Linux向けでは「dpkg」や「APT」(Advanced Package Tool)、「RPM」(Red Hat Package Manager)、「yum」(Yellowdog Updater Modified)、FreeBSD向けの「ports」などが挙げられます。

また、macOS向けにはHomebrewの他にも、「MacPorts」と「Fink」などがあります。Windows向けには「PackageManagement」が知られています。

パッケージの種類

パッケージはディストリビューションによって採用する形式が異なり、その種類はいくつかあります。Fedora CoreやSUSE Linuxでは「RPM」形式が採用され、Debian GNU/Linuxでは「deb形式」が主に採用されます。

また、各パッケージを取り扱うための管理用コマンドも異なります。たとえば、RPM形式では「rpmコマンド」、deb形式では「dpkgコマンド」が利用されています。

Homebrewと他のmacOS向けパッケージ

Homebrewは、特にMacユーザに人気のパッケージ管理ソフトです。同様にmacOS向けであるMacPortsやFinkとは、どのような違いがあるのでしょうか。ここからはMacPorts、Finkの特徴とHomebrewとの違いを解説します。

MacPortsとは?

MacPortsは、以前は「DarwinPorts」と呼ばれていました。macOSやAppleが開発しているUNIX系のOS「Darwin」向けのパッケージ管理システムです。MacPortsのスクリプト言語は、C言語をベースとする独自言語「TCL」を用いています。

MacPortsは、ターミナルにおいて「sudo port install パッケージ名」とコマンドを入力することでパッケージを導入できます。

【参考】:MacPorts公式サイト

HomebrewとMacPortsの違い

HomebrewとMacPortsでは使用言語が異なり、HomebrewがRubyであるのに対して、MacPortsのスクリプト言語はTCLです。独自のTCL言語に比べると、一般的にRubyの方が馴染みがある方が多いのではないでしょうか。

また、パッケージ管理のパターンは、Homebrewが基本的にビルド形式であるのに対して、MacPortsでは主にバイナリ形式が取られ、例外的にビルド形式を取ります。

両者ではインストール時のユーザが異なり、Homebrewでは一般ユーザでも可能ですが、Macportsでは管理者権限のあるユーザでないと実行できません。また、Homebrewではコードをターミナルに入力するだけでインストールが完了しますが、MacPortsではダウンロードするために、あらかじめパッケージを用意する必要があります。

加えて、MacPortsをインストールするには、Appleの統合開発環境「Xcode」が必要です。

特に両者の異なる点として挙げられるのが「サーバーの有無」です。Homebrewは、Gitにパッケージ管理を依存しているため自前のサーバーがありません。対して、MacPortsは自前のサーバーとコマンドを含めたシステム構成を取っています。

【参考】:Xcode公式サイト 

Finkとは?

Finkは、macOSよりもLinuxやUNIXに重点を置いて開発されている点がHomebrewと根本的に異なります。Finkが使用するスクリプト言語は「Perl」です。コンパイル済みのバイナリ形式を採用しており、Finkが使用するコマンドラインは「fink」を使用します。

【参考】:Fink公式サイト

HomebrewとFinkの違い

FinkがHomebrewと根本的に異なるのが、macOSよりもLinuxやUNIXに重点を置いて開発されている点です。また、パッケージに豊富な機能を備えており、LinuxやUNIX用に開発された多くのツールを活用できます。

FinkはHomebrewに比べてツリーがかなり細かく、管理が難しいというデメリットがあります。

Homebrewのメリット・デメリットとは?

ここまででHomebrewの概要や他のパッケージ管理システムとの違いを紹介してきました。ここからは、より具体的にHomebrewを利用するメリット、デメリットを見ていきましょう。Homebrewを利用する上で、ぜひ参考にしてください。

メリット1:インストールやアップグレードが簡単である

Homebrewをインストールするための準備は、Homebrewを導入したいPCとインターネット環境を整えるだけで済み、他のパッケージ管理ソフトと比べて、より簡単に導入が可能です。

また、必要なアプリケーションをダウンロード・インストールするコマンドをスクリプト化し、実行するだけで、自動的にアプリケーションをまとめてインストールできます。Homebrew経由でインストールしたアプリケーションを一覧で確認したり、ファイルやパッケージ間の依存関係を自動的に解決したりできます。

メリット2:必要なソフトウェアが揃いやすい

HomebrewではMacPortsと異なり、必要なソフトウェアが自動的にインストールされます。

また、スクリプト化さえしておけば、新たな環境作りは不要です。ライブラリに登録されていれば、ダウンロードやアップグレードがスムーズに済むといったメリットがあります。

メリット3:ストレージ容量が大きい

Homebrewの場合、他のパッケージ管理システムと比べて、ストレージの容量が大きいこともメリットの1つです。

MacPortsでは、既にOSにインストールされているパッケージであっても、パッケージ側の判断によってインストールされることがあります。そのため、不要なパッケージを手動で削除する作業が必要です。

対して、HomebrewではOS側の判断で手元にある資源から優先して利用するので、不要なパッケージをインストールしません。無駄な追加がないため、メモリ消費のリスクが他のツールよりも少なくなります。

デメリット

ここまで説明したようにHomebrewはメリットが多く、MacPortsからの乗り換えるユーザも多く存在しています。しかし、メリットが多い反面、デメリットもあります。

まず挙げられるデメリットは「ライブラリに登録しないとパッケージがインストールできない」点です。パッケージをダウンロードしたい場合は、必ずHomebrewに登録する必要があります。登録されていない場合は、ダウンロードできないため、必ずライブラリに登録できているか確認してから実行しましょう。

また、Homebrewではインストールしたパッケージのバージョンが最新ではない場合、手動でライブラリを更新する必要があります。そうしたライブラリの管理に手間がかかることもデメリットの1つです。

macOSでのシステム開発では必須のツール

Homebrewを使用すると、macOSアプリケーションのインストール作業を簡単にすることが可能です。また、プログラミング言語の開発環境の構築をより楽に実施できます。

特にmacOSでのシステム開発に携わる場合、多くのパッケージをコマンド1つで手軽にインストールできるHomebrewは必須のツールだと言えるでしょう。ぜひ、Homebrewを使いこなせるように取り組んでみてください。