OSの仮想化ってなに?

プログラミング

仮想化(Virtualization)とは、簡単にいうと物理的には1台のPCしかないのに関わらず、複数のOSを同時に動かすことができる技術のことです。

簡単にいうとMac上でWindowsを動かすことができる技術です。

仮想化を実現するためには仮想化のアプリケーション(Virtual MachineやDockerが有名)を自分が使っているパソコンにインストールして使うこととなります。この時、アプリケーションをインストールするOSをホストOS、その上で動くOSをゲストOSと呼びます。

ゲストOSは物理的にはホストOSのリソース上で動いていますが、仮想的に別のOSとして認識されます。

なお、ゲストOSにはLinuxを使うことが主流となっています。Linuxは無料のOSですので、仮想化とは相性が抜群です。WindowsやMacはライセンス関係が面倒です。

なぜ仮想化技術を使うのか

  1. 自分が今使ってるPCの設定の影響を受けない開発ができる
  2. 本番環境と同じ環境で開発をすることができる
  3. 実験的に色々いじって壊れても大丈夫!

1.自分が今使ってるPCの設定の影響を受けない開発ができる

自分のPCで開発をおこなっていくとその度にPCの設定を変更させる必要があり、それが後の開発の際に悪影響を与えることがおきます。例えば、チュートリアルを見ながら開発をしているときにチュートリアルの環境と実際の環境に設定の違いがありうまく進められないというようなことがおきます。

その度にエラーと格闘していては、ストレスがたまりますし、効率が悪い開発となってしまいます。そこで、新たなOSを仮想化して導入することで常にデフォルトの環境で開発をすることができます。LaravelやWordpressなどメジャーなフレームワークやCMSでは、仮想化した環境ですぐに開発が進められるようなツールもあるので、

2. 本番環境と同じ環境で開発をすることができる

本番のサーバーもやはりLinuxであることが多いです。自分が今まで関わってきたプロジェクトではLinux以外のものを見たことがないです。

やはりWindowsやMacは便利ですが、本番環境であるLinuxと仕様が異なることがあるので、WindowsやMacで動いていたものが必ずしもLinux上で動く保証はありません。動かないリスクを出来るだけ低くするためにも本番サーバーと似た環境で開発するべきです。

3. 実験的に色々いじって壊れても大丈夫

初心者では、リスクを考慮せずに色々開発設定をいじってしまい、ターミナルでログインすることができなくなってしまったりすることもあります。

でも、仮想化したOSならそれでもOKです!壊れてしまった環境は削除してまた新しいゲストOSを立ち上げればいいのです。

また慎重な人だと、よくわからない開発環境の設定をいじることに抵抗を感じ、便利なツールも試せないことも多いですが、ゲストOSならOK!!

どんどん壊せます!!破壊神になりましょう!!壊した分だけ経験値がたまりますw