VirtualBoxやVagrantを用いたRails開発環境の構築方法(前編)

2014年6月26日(木)
黒田 努

Vagrantを利用したRails開発の進め方

留意事項

Vagrantの利用を始めるとRails開発の考え方や進め方が大きく変わります。具体的な作業手順の説明に入る前に、留意事項を2つ述べておきます。

第1の留意事項は、Railsアプリケーション開発プロジェクトごとに別々の仮想マシンを作るということです。仮にプロジェクトAとプロジェクトBが同一のOSを標的にしていたとしても、原則として別々の仮想マシンを動かしてそこで開発を進めます。

第2の留意事項は、Vagrantの設定ファイルVagrantfileおよびそれに付随するファイル(プロビジョニングスクリプトなど)は開発チーム全体で共有するということです。もし、あなたのチームがGitやMercurialやSubversionなどのバージョン管理システム(SCMツール)を利用していれば、それらをリポジトリに加えましょう。あなたが独力で開発している場合でも同様です。

新規アプリケーションの作成

さて、新たにRailsアプリケーションxyzの開発を始めようというとき、従来であれば作業マシンの適当な作業ディレクトリで次のようなコマンドを最初に実行したはずです。

> rails new xyz

しかし、Vagrantを利用する場合は最初の手順が異なります。まずxyzというディレクトリを作成し、そこに移動します。以下、このディレクトリをプロジェクトディレクトリと呼ぶことにします。

> mkdir xyz
> cd xyz

そして、そのディレクトリにVagrantfileというファイルを作ります。このファイルは他のプロジェクト用に作ったものを流用してもいいし、誰かがインターネット上で公開しているものを修正しても構いません。あるいは、次のコマンドを実行してひな形を作ることもできます。

> vagrant init

このVagrantfileがあれば、次のコマンド1つで仮想マシンの作成から起動まで終わらせることができます。

> vagrant up

仮想マシンが無事起動したら、次のコマンドによりSSHでゲストOSにログインします。

> vagrant ssh

そして、ゲストOS上でRailsアプリケーションの骨格を作ります。

$ rails new xyz

この結果、vagrantユーザーのホームディレクトリ/home/vagrantにディレクトリxyzができ、その中にRailsアプリケーションの初期ソースコードが生成されます。

続いて、できあがったRailsアプリケーションの骨格を/vagrantディレクトリに移動します。

$ cp -rT xyz /vagrant
$ rm -rf xyz

/vagrantディレクトリはVagrantで仮想マシンを作成する際に自動的に作られます。オプション-r付きでcpコマンドを実行することにより、ディレクトリの内容を再帰的に(深い階層のサブディレクトリまですべて)コピーしています。cpコマンドのオプション-Tはコピー元ディレクトリの内容でコピー先ディレクトリを上書きするために付けています。このオプションを省くと/vagrantディレクトリの下にxyzというディレクトリが作られてしまいます。コピー元のディレクトリは不要なので削除してください。

以上が、新規アプリケーションの作成手順です。

3つのディレクトリの関係

ここまでの説明でプロジェクトディレクトリ、vagrantユーザーのホームディレクトリ、/vagrantディレクトリという3つのディレクトリが登場しました。少しややこしいので、整理しておきましょう。

  • プロジェクトディレクトリ……ホストOS(WindowsやOS X)側に存在します。アプリケーションの名前がxyzなら、プロジェクトディレクトリのパスは~/projects/xyzとなります。ただし、プロジェクトディレクトリを~/projectsディレクトリの下に置くのは本書での決めごとです。
  • vagrantユーザーのホームディレクトリ……ゲストOS(CentOSやUbuntu Server)側に存在します。パスは/home/vagrantです。
  • /vagrantディレクトリ……ゲストOS(CentOSやUbuntu Server)側に存在します。パスは/vagrantです。

vagrantユーザーのホームディレクトリは、Railsアプリケーションの新規作成時に一時的に使用するぐらいで普段はあまり利用しません。

実際にRailsアプリケーションの開発が始まると、Railsルートディレクトリという用語も登場します。Railsアプリケーションが設置されたディレクトリという意味です。/vagrantディレクトリにRailsアプリケーションを設置すれば、Railsルートディレクトリになります。しかし、1つのOS上に複数のRailsアプリケーションを設置することが可能なので、/vagrantディレクトリとRailsルートディレクトリは同義語ではありません。

日々の開発作業

実は、プロジェクトディレクトリ~/projects/xyzと/vagrantディレクトリはVagrantによって「共有フォルダ」に設定されています。つまり、プロジェクトディレクトリのファイルを修正すれば、/vagrantディレクトリの同名ファイルに修正が反映されます。/vagrantディレクトリにディレクトリやファイルを追加すれば、プロジェクトディレクトリ側にも現れます。

この仕組みがあるため、Railsアプリケーションソースコードの編集作業をホストOS(WindowsやOS X)側で行うことが可能です。つまり、普段使っているお気に入りのテキストエディタやIDEをそのまま利用できるということです。

他方、Railsアプリケーションの起動と停止はゲストOS側で行います。つまり、SSHでログインした上で以下のコマンドを順に実行することでRailsアプリケーションを起動します。

$ cd /vagrant
$ bin/rails s

アプリケーションを停止するには、ゲストOSのターミナル上でCtrl+Cを入力します。

同様に、RSpecによる自動テスト(Chapter 5)の実行もゲストOS側で行うことになります。

進行中の開発プロジェクトに途中から加わる場合

すでにVagrantを利用した開発プロジェクトが進行していて、あなたがそのプロジェクトに途中から加わる場合、開発環境の構築手順はとても簡単です。

まず、バージョン管理システムのリポジトリからソースコードを取得します。そのソースコードのルートディレクトリにはVagrantfileが含まれていることを確認しましょう。もし存在すれば、そのディレクトリで次のコマンドを実行するだけです。

$ vagrant up

初めて使うタイプのOSの場合は少し時間がかかるかもしれませんが、あなた自身が何か作業する必要はありません。ただ待っていれば開発環境ができあがります。

この記事のもとになった書籍
実践Ruby on Rails 4 現場のプロから学ぶ本格Webプログラミング

黒田 努 著
価格:3,500円+税
発売日:2014年05月23日発売
ISBN:978-4-8443-3592-4
発行:インプレスジャパン

実践Ruby on Rails 4 現場のプロから学ぶ本格Webプログラミング

本書は、Ruby on Railsの実践的な学習書です。最新のRuby2.0およびRuby on Rails4.1、RSpec3.0に対応しました。1つの企業向け顧客管理システムを作る中でRailsによるWebアプリケーション開発の基礎知識とさまざまなノウハウを習得していきます。各章末には演習問題が設けられているので、理解度を確かめながら確実に読み進められます。

Amazon詳細ページへImpress詳細ページへ

株式会社オイアクス

東京大学教養学部卒。同大学院総合文化研究科博士課程満期退学。ギリシャ近現代史専攻。専門調査員として、在ギリシャ日本国大使館に3年間勤務。中学生の頃に出会ったコンピュータの誘惑に負け、IT業界に転身。株式会社ザッパラス技術部長、株式会社イオレ取締役を経て、技術コンサルティングとIT教育を事業の主軸とする株式会社オイアクスを設立。現在、同社代表取締役社長。また、2011年末にRuby on Rails によるウェブサービス開発専業の株式会社ルビキタスを知人と共同で設立し同社代表に就任(オイアクス社長と兼任)。

連載バックナンバー

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています