ブロックチェーン・AI・システム開発の株式会社INDETAIL

チームの開発環境構築にHomebrewを使った話

2014.04.16
tacck

みなさま、こんにちは。

アイテック北海道のBlogをたまに書くことになりました、tacckです。
業務では組み込みからフロントエンドまで、何でもやっています。趣味で半田ゴテを握ることもあります。
最近はDevOpsあたりの情報を、ちまちま眺めることが多いですね。

さて、最近社内で始まったプロジェクトの話なのですが、プロダクトの関係上全員Macで統一することとなりました。

チームでのプロジェクトの場合、開発環境としてOSだけでなく、使用するアプリを揃えることも非常に大切ですよね。

他のメンバーへ指示を出す場合、また、他のメンバーに操作を教えてもらう場合、環境が同じであればスムーズにやり取りができます。
さらに、開発中に自分のところで発生するエラーが他の人は再現出来ない、という環境依存・作業者依存の問題もグッと減らすことができます。

というわけで、みんなの環境・使用アプリを整えるために、Homebrewを活用してみたお話をしてみたいと思います。

Macでの環境構築

BOXENの検討そして敗北

Macでの環境構築ツールというとBOXENが有名どころだと思います。

最初は、私もそちらの導入を検討してみたのですが、設定の書き味などにひっかかってしまいました。

準備期間も十分に取れない状況だったので、下手に不慣れなものを取り入れても破綻しちゃうなぁと思い、BOXENの導入は見送りました。

Homebrewで何とかしましょう

そして、今回取り入れたのはHomebrewのコマンドbrew bundleを使った方法でした。

これは最近流行らしく、Qiitaでも記事を見かけますね。ググっても、BOXENから乗り換えた、という記事を目にします。

一番の良い点は、設定がシンプル、ですね。brewコマンドの引数をそのまま設定として書くだけなので、Homebrew経験者であれば導入コスト0です。

MacPorts利用者だと、Homebrewへの切り替えが必要になるので、途中から取り入れる場合には少し大変かもしれませんね。

何をやっているのか

brew bundleを実行すると、カレントにある"Brewfile"を読み込み、brewの引数として逐次実行してくれます。

単純にこれだけなのですが、Homebrewそのものがパッケージの依存やらバージョンアップやらの面倒を見てくれるので、それをフル活用してしまえば難しい仕組みはいらないよね、っていうことですね。

ただ、HomebrewそのものだとMac OSX用のアプリで".dmg"を独自に配布しているアプリを導入できません。(Google Chromeなど)

しかし、この".dmg"をHomebrew管理下においてくれる仕組みが、世の中には存在します。

"homebrew-cask"というもので、これを使うと".dmg"型のアプリも簡単に導入できます。

設定ファイル

実際に、今回使用している設定ファイルを見てみます。

ひとつめの"tap"と"install"でhomebrew-caskの仕組みが組み込まれています。

ただ、これだけだと日本語版Thunderbirdなどがインストールできないため、そちらを追加するために二つ目の"tap"で"homebrew-cask-versions"を導入しています。

あとは、必要なアプリを書いているだけですね。

brew bundleを使った環境構築手順

ということで、今回のプロジェクトでやっている手順を紹介します。

Step1: XCode関係

最初は、App StoreからXCodeをインストールします。

次に、コマンドラインで下記を実行し、Command Line Toolsをインストールします。

Step2: Homebrew

次に、Homebrewそのものをインストールします。

Step3: 設定ファイルをダウンロード

こちらは、それぞれの環境で準備しておくものになりますが、ここでは今回のプロジェクト向けに私が作ったものをGitHubからダウンロード(clone)してきます。ダウンロード先は、各自のホームディレクトリです。

Step4: brew bundleの実行

そして、brew bundelを実行します。

しばらく待てば、"Brewfile"に記載されていたものがすべてインストールされます。

Step5: 日々のメンテナンス

世の中のアプリは日々バージョンアップして行きます。同じく、Homebrew、homebrew-caskもそれに合わせて日々更新されていきます。

同様に、プロジェクトで必要なアプリも日々更新していくことになると思うので、Brewfileを最新に保ちながら、手元の環境もちょくちょく更新していきましょう。

まとめ

Homebrew、homebrew-caskを使うことで、比較的簡単に環境構築を行なうことができました。

チームでの開発の場合、環境の統一を行なうことは大切ですが、メンバー間にスキル差があると口頭指示での環境構築が難しいこともあります。このように手軽に環境構築を行なえる仕組みがあると、その後の開発をスムーズに行なえるようになると思います。

それぞれのチームで"Brewfile"を育ててみると、良いのではないでしょうか。

tacck Takuya KIHARA

エンジニア (モバイルアプリ、フロントエンド、バックエンド、インフラ) 得意なことは、領域をまたいで考え、開発すること。 ブログでは、主にAnsible、Docker、Raspberry Piのことを書いています。 好きなフィギュアスケートの技は、スプレッド・イーグルです。

「いいね」ボタンを押すと、最新情報をすぐに確認できます。