開発環境を構築する際、VMWareなどの仮想化ツールを使う、という選択肢があります。仮想環境はIPアドレス管理やネットワーク設定が煩雑になり、膨大なハードディスク容量や高いマシンスペックを要求するため、導入にはそれなりの準備と決断が必要になります。
ですが、それでもテクニックの一つとして確立しているのは、そうしたデメリットを補って余りあるメリットが存在するからです。
今回は、そんな仮想開発環境によって得られるメリット・デメリットについて、それぞれ3つずつ解説していきましょう。
仮想環境とは?
まずおさらいとして、仮想環境とはどういうものなのか、ということからご紹介していきましょう。
仮想環境とは、パソコンやサーバー内に作られたバーチャルな環境です。パソコンの中にもう一台、あるいは何台ものパソコンがあり、それぞれを個別に動かすイメージ、と言えば分かりやすいでしょうか。
仮想環境を構築するためのツールは多くの種類があるので、その代表的なものをご紹介しましょう。
■VMware Player
VMware社より提供されている仮想化ツールです。
ホストOSはWindowsとLinuxの2つ、ゲストOSとしてLinux、Windows、FreeBSD、Solarisの4つが利用可能です。インストールは簡単で、初心者でも環境構築に戸惑うことはないでしょう。
特徴的なのは、仮想OSを全画面化し通常のPCと同じように使えるようにする「Unityモード」という機能が搭載されている点です。使い勝手が飛躍的に向上するため、長時間使うには嬉しい機能ですね。
デメリットとしては、グラフィック性能があまり良くないのと、無償版では商用利用ができないという点です。もしも商用利用を目的とする場合は、VMware WorkStationという商用ライセンスを購入する必要があるので、注意しましょう。
■Virtual Box
データベースで有名なOracle社より提供されている仮想化ツールです。もともとはSunマイクロシステムズ社で開発されていましたが、現在はOracle社での所有となっているようです。
VMwareに比べて優れているのは、ホストOS・ゲストOSの多彩さです。インストール可能なOSは、LinuxとWindowsに加え、MacOS、FreeBSD、Solarisがあり、ゲストOSでもそれら全てが利用可能です。また、スナップショット機能やネットワークストレージなどの機能もあり、申し分ないスペックだと言えるでしょう。
特筆すべきは、標準機能のみであれば、無償版でも商用利用できるという点です。コストを抑えなければならないのであれば、こちらを選んでおけば間違いないと思います。
残念ながら、VirtualBoxにはUnityモードが搭載されていません。VMwareに慣れている方には、少々使いづらく感じてしまうかも知れませんね。
メリット
メリット1 チーム全員に一意の環境を用意できる
プロジェクトを始めるに当たり、開発環境はいの一番に用意する必要があります。これはチーム全員が同じ手順、同じ設定で環境構築しなければならないので、メンバーが多ければ多いほど、足並みを揃えるのが難しくなります。
ですが仮想環境を使えば、そんな苦労は無縁の物になります。
代表として一人が環境を作れば、あとはそれをチーム全員に配布すれば解決です。PCの入れ替えや、新規参入メンバーが現れた時も同様の方法が使えるので、すぐに開発に取りかかることができます。
工数削減と設定の一意性を同時に実現可能な、これ以上ないほど大きなメリットだと言えるでしょう。
メリット2 再現が難しいバグでも共有できる
デバッグ作業において鬼門となるのが、環境依存の、再現が難しい不具合です。時にはPCとシステムの相性が悪い、という開発者にはどうにもできない事象の可能性もありますので、同じバグを発生させるために、途方もない労力が必要になることもあります。
しかし仮想環境であれば、環境ごとコピーするだけで、チームメンバーと不具合の状況を共有できます。多人数で調査すれば、解決までの工数を大幅に削減できるようになるでしょう。
メリット3 OSの垣根無く開発ができる
よほどの例外がない限り、開発で使うマシンは、全て同じOS、同じスペックであることが理想です。ですがそれはあくまで理想論であり、実現させるのはコスト的にも非常に難しい問題ですよね。
しかしそんな時でも、仮想環境であれば心配無用です。開発者のパソコンがWindowsであろうとLinuxであろうと、仮想OSを起動できるツールさえ用意できれば、どんなマシンであっても同じように開発することができるのです。
ます。
デメリット
デメリット1 マシンスペックが必要になる
仮想環境の構築における最大のデメリットは、やはり何と言って要求されるマシンスペックの高さです。パソコンを起動させつつ、更にその中でもう一台パソコンを動かさなければならないのですから、ある種当然のことではありますよね。
単純計算で倍のメモリ、倍のCPUが必要とまでは言いませんが、それでも相当な性能が必要になります。中途半端なマシンで仮想環境を作ろうとすると、逆に作業効率が落ちることになるので注意しましょう。
デメリット2 サーバー側のディスク容量も不可欠
仮想環境を作ると、その情報はファイルとして保存されます。OS丸ごとを一つのファイルに纏めているのですから、当然、そのサイズは膨大なものになります。例えば筆者が自宅の環境でWindows7の仮想環境を構築した際には、50GB超のファイルとなりました。
最近のPCならこのくらいの容量であれば十分保存可能ですが、問題は企業で利用する場合です。
大抵の場合、仮想環境はプロジェクトごとに用意することがほとんどですので、50GB×プロジェクト数、つまり何百GB、場合によっては1TB超の保存領域を確保しなければなりません。
こんな膨大な容量を個人のマシンに管理するのは不可能ですので、サーバーなどに置けるよう専用のディスクを用意する必要があります。
デメリット3 ホストOSより性能が劣る
仮想環境であることの必然ですが、ホストOSよりゲストOSの方が性能が良い、ということは有り得ません。そのためマシンスペックが不足していると、システムの動作が実際よりも遅かったり、酷い時にはファイルを開く速度などにも影響することがあります。
納期が非常に厳しいプロジェクトの場合は、作業効率を優先し、仮想環境の構築は諦めた方が無難かもしれません。
仮想化の目的を理解しよう
開発環境の仮想化は、上記で上げたとおり、チーム内での共有が主な目的です。逆に行えば、開発者が一人しかいない少数チームや、敢えて別設定・別環境での動作確認を行いたい場合は、わざわざ用意する必要がない、ということです。
準備の煩雑さというデメリットも確実にありますので、「何のために仮想化するのか?」という目的を履き違えないよう気をつけた上で、業務の効率化を目指しましょう。