見出し画像

【プログラミング道具箱】仮想環境

今回は仮想環境についてまとめようと思います(「道具箱」に入る道具の中では一番大きいかもしれない)。

仮想環境とは

普段、皆さんはWindows、macOSを利用していると思います。仮想環境は、普段皆さんが使っているWindowsやmacOSの中で、もう一つ別のOSを実行させる環境というものになります。つまり、一つのPCで複数のOSを同時に実行させるというわけですね。

仮想環境を構築するもの

仮想環境を構築するには「仮想化技術」というものが必要となります。今では、この「仮想化技術」を簡単に扱えるように機能に含めたソフトウェアが存在します。例としては、下記に挙げるものになるでしょうか。

  • Oracle VirtualBox

  • VMware Player

  • Parallels Desktop(macOSのみ)

  • WSL(Windows Subsystem for Linux。その名の通り、Windowsのみ)

この内、Oracle VirtualBox、VMware Player、Parallels Desktopは「仮想PC」を作成して、その上でOSを起動します。WSLは先の3つと毛色が違い、Windows上でLinuxを動かすようになっています。
ついでにVagrant。ネットで検索すると、仮想環境構築の記事にVagrantに関する記事も引っかかるのでまずは挙げましたが、厳密に言うと、Vagrantは仮想環境ではありません。実はこれ、「仮想PC」作成ソフト(Oracle Virtual BoxやVMware Player)のフロントエンドプログラムなんですね。Vagrantを実行した際、バックグランドで「仮想PC」を起動するので、仮想環境構築の話題に挙がるのでしょうが、逆に「仮想PC」を動かすソフトが無ければ意味が無い、Vagrant単体では仮想環境は使えないということになります。なので、Vagrantは無くても問題ありません(むしろ、仕組みがわかってないとハマります。チームで開発するには便利なツールですが)。

なぜ仮想環境?

さて、プログラミングをするのに仮想環境を使うことのメリットとは何でしょう。私が思うに、以下の点がメリットとなるかと思います。

  • 別途PCを用意する必要が無い

  • 実際に動かす環境での確認ができる

  • ホストOS側の環境を汚さない

まず「別途PCを用意する必要が無い」。これが最大のメリットではないでしょうか。別のOSを利用するので、本来ならば、別途専用にPCを用意する必要があります。そうなると、導入コストが必ずかかってしまいます。その点、仮想環境を利用すれば、別途PCを用意する必要が無くなるので、導入コストを浮かせることが可能になります。また、PCが増えないので、設置スペースなどの心配も無くなりますね。
次いで「実際に動かす環境での確認ができる」。ハードウェア的な要件は別として、ソフトウェア的に本番環境と同等の環境を構築することができるので、より実践的な開発に取り組むことができます。
最後に「ホストOS側の環境を汚さない」。開発するにあたり、色々とソフトウェア等を導入しますが、開発が終わったなどで不要となった場合、アンインストールが面倒になったりします。その点、仮想環境ではその環境を丸ごと削除するだけで済みますので、ホストOS側に影響を残さないようにすることができます。

仮想PCとWSLどちらを選ぶ

Windowsに限った話になりますが、仮想PC作成ソフトで仮想環境を作るのと、WSLで仮想環境を作るのとではどちらが良いか。
かかる手間のことから見るとWSLの方が手軽です。Microsoftストアから導入したいLinuxのディストリビューションを選んで入れるだけですので(主要なディストリビューションは揃っていますし)。一方、仮想PCの場合は

  1. 動かす仮想PCの作成(ストレージサイズや割り当てるメモリ量の決定などが必要)

  2. OSをインストールする

といった手順を踏みます。こうして比較すると、導入するまでの手間を考えるとWSLの方が手軽ですね。ただ、WSLはLinuxしか動かせません(名前に「for Linux」と付くくらいですから)。しかもMicrosoftストアで配布されているもの限定になります。一方、仮想PCはLinux以外動かせます。ここが選ぶ際の勘所になりますね。選ぶ点をまとめると、

WSLを選ぶ

  • Microsoftストアで配布されているLinuxディストリビューション(UbuntuやSUSE Linux、Oracle Linux等)であればよい

仮想PCを選ぶ

  • Linux以外のOSを動かす

  • LinuxでもMicrosoftストアで配布されていないディストリビューションを動かす

となります。





この記事が気に入ったらサポートをしてみませんか?