Boxenとbrew bundle && Homebrew-caskを比較した感想

森裕介(プログラマー)
無念

比べてみよう

前々回前回 の記事を書くにあたり、Boxenからbrew bundle && Homebrew-cask に乗り換えたわけですが、 Boxenとbrew bundle && Homebrew-caskそれぞれ使用した感想をまとめてみます。

インストールするパッケージ、アプリケーション

Boxenではインストールするパッケージ、アプリケーションのバージョンを固定することが出来ます。 インストール後に brew upgrade などでバージョンを上げても再度boxenコマンドで元通りになります。

一方 brew コマンドでインストールするパッケージは基本的には最新バージョンのものです。 そのためBrewfileを作成した当時はうまく動いていたけれど1ヶ月後に再度環境構築したら うまく動かない、ということが考えられます。 実際に Virtualboxの不具合 にハマってしまいちょっとつらい思いをしました。

アプリケーションインストール後の設定

Boxenでは manifests を適切に記述することでアプリケーションの初期設定、 (OS Xの設定も)自動化できます。これはとてもありがたいことです。

brew bundle ではあくまでbrewコマンドでできることに留まるため、 各種設定は手動で行う必要があります。

設定ファイルのメンテナンス

Boxenでインストールしているアプリケーションのバージョンを変更したい場合に Puppetfile を弄ることになりますが、この管理がちょっとめんどうです。 まず 公式レポジトリ から puppet-* という名前のレポジトリを探して それぞれのreleasesをみてバージョンを確認して…とこのへんの面倒臭さは 以前に書いてます

また、先述のアプリケーションの初期設定などをmanifestsを記述するのですが、 これも適切に書くのが難しいです。ちゃんと書いたつもりなのになんで動かないの…と泣いたことも多々あります。

brew bundleの場合は Brewfile を1つ(用途によっては複数)、 内容もbrew コマンドの羅列のようなものなので管理も苦ではないです。

Homebrewをすでに使用している場合の乗り換え

すでにHomebrewを使用している状態からBoxenへの乗り換えも 以前紹介しました が 難しくはないのですが 既存の環境が使えなくなってしまう というのはちょっと抵抗感が強いです。rbenvも乗り換え必須なので抵抗感もよりアップ。

実行時間

boxenのほうが実行時間は長い傾向にありました。 ちょっとアプリケーションを1つ再インストールしたいんだよな、 というときにboxenコマンドを実行しても前述のバージョンを固定する設定のため 他のアプリケーションなども色々巻き戻っていくためだと思います。

アプリケーションのインストール先

Boxenでは /Application 以下にインストールされますが Homebrew-caskでは /opt/homebrew-cask/Caskroom 以下にインストールされます。 launchpadにアプリアイコンがちゃんと表示されるので実害はないですがちょっと気持ち悪い気もします。

どう使い分ける?

それぞれ使用した感想をまとめました。 使ってみた実感としては ただアプリケーションをインストールするだけならばbrew bundle && Homebrew-cask が圧倒的に楽です。

新しく環境を構築するのであればBoxen を使ってみる価値はあります。 1人でBoxenを使っていくのはPuppetfile, manifestsの更新がしんどいところもありますが、 複数人が同じBoxenを使うのであればメンバー全員の時間削減につながるでしょう。 そもそもBoxenてそういう用途のものですよね。