VirtualBoxやVagrantを用いたRails開発環境の構築方法(前編)
実践Ruby on Rails 4 現場のプロから学ぶ本格Webプログラミング
顧客管理システムの構築を体験しながら、Railsアプリケーション開発のノウハウを習得! この記事は、書籍『実践Ruby on Rails 4 現場のプロから学ぶ本格Webプログラミング』の内容を、Think IT向けに特別にオンラインで公開しているものです。詳しくは記事末尾の書籍紹介欄をご覧ください。本記事では、VirtualBoxとVagrantを用いて仮想マシン上にRailsの開発環境を整える手順を解説します。仮想マシンのOSにはCentOSまたはUbuntu Serverを使用します。また、データベース管理システムとしてMySQLとPostgreSQLを仮想マシン上にインストールします。
仮想マシンを利用したRails開発
本書ではCentOSまたはUbuntu ServerをインストールしたVirtualBox仮想マシンを、Railsの開発環境として用います。仮想マシンの構築にはVagrantというユーティリティを利用すると便利です。
Rails開発で仮想マシンを使う理由
単なる演習用のサンプルではない“本物”のRailsアプリケーションを開発しようとするとき、私たちエンジニアを悩ませる問題があります。それは、開発用のマシン(作業マシン)と実運用を行うマシン(プロダクションマシン)の環境が異なることです。ここで言う「環境」とは、OSの種類やバージョン、あるいはOS上で動くソフトウェアやライブラリの種類やバージョンを指しています。
Ruby on Rails自体はWindowsでもOS XでもLinuxでも動作するように設計されています。しかし、私たちがRailsを拡張するために導入するGemパッケージは必ずしもそうではありません。また、仮に動いたとしても特定の環境では振る舞いが微妙に異なったり、不具合が出たりすることがあります。
この問題の単純な解決法は、作業マシンとプロダクションマシンの環境を一致させることです。あなたのPCのOSをプロダクションマシンと同じ(あるいはほぼ同等の)OSで置き換えるか、あるいはプロダクションマシンにログインしてVimやEmacsで直接ソースコードを書き換えながら開発するのです。
しかし、これは言うほど簡単なことではありません。PCをRails開発以外の用途(メールの送受信、動画の再生、表計算など)にも使うのであれば、気軽にOSの入れ替えなどできません。また、GUIを持つテキストエディタや統合開発環境(IDE)での開発に慣れた人は、VimやEmacsでのソースコード編集に不満を抱くことでしょう。
そこで現れるのが仮想マシンというオプションです。仮にあなたのPCがWindowsマシンであったとします(Macであっても同じことですが)。Windows上に仮想マシンを構築し、仮想マシンにCentOSやUbuntu ServerといったLinuxベースのServer OSをインストールするのです(図1)。
開発中のRailsアプリケーションは仮想マシン上で動作させます。そして、Windows上のWebブラウザからRailsアプリケーションにアクセスして動作を確認します。他方、Railsアプリケーションのソースコードは、後述する「共有フォルダ」の機能によって、Windows上で開いて編集します。こうすれば、使い慣れたテキストエディタやIDEを使い続けながら、プロダクションマシンと同等の環境下でRailsアプリケーションの開発が行えることになります。
VirtualBoxとは
Oracle VM VirtualBox(
VirtualBoxの用語では土台となるマシンで動作しているOSをホストOS、仮想マシン上で動作しているOSをゲストOSと呼びます。本書の場合は、WindowsまたはOS XがホストOS、CentOSまたはUbuntu ServerがゲストOSになります。
Vagrantとは
また、ホストOSからゲストOSにSSHで簡単にログインできるようにお膳立てをし、共有フォルダの設定をしてくれるなど、開発者にとってうれしい機能が揃っています。さらに、仮想マシンにさまざまなソフトウェアやライブラリをインストール・設定する作業(プロビジョニング)の自動化を支援する仕組みも用意されています。
Vagrantはミッチェル・ハシモト、ジョン・ベンダーらによって開発され、MITライセンスの下でオープンソースソフトウェアとして無償で配布されています。
連載バックナンバー
Think ITメルマガ会員登録受付中
全文検索エンジンによるおすすめ記事
- VirtualBoxやVagrantを用いたRails開発環境の構築方法(後編)
- 開発環境の構築・共有を簡単にするVagrant入門
- Serverspecの概要からインストールまで
- Ubuntuを使ったWebサーバ構築
- 仮想マシンにCentOSをインストールする
- ズバリ!andLinuxは使えるのか?
- 実践「Heroku」をセットアップしてサンプルアプリを動かそう
- 仮想マシン自動作成・設定ツール「Vagrant 1.8」リリース
- Windows Azure上にLinuxインスタンスを立ち上げる(クエスト5)
- [入門編] RHELユーザーが知っておきたい、Ubuntu Serverとのコマンド・サービスの違い