はじめに
私は初学者であり、一部の用語を誤って記述している可能性があります。そのような箇所があれば、本記事のコメントにてご連絡くださると幸いです。
OS(オペレーティングシステム)
一般的なコンピュータはOSによって動作され、私たちはOSの管理によってアプリケーションを利用できます。OSの例として、Microsoftによって開発されたWindowsやApple製のmacOS、UNIXというOSとの互換性をもたせて開発されたLinuxが挙げられます。他にも、スマートフォンのOSとして、AppleによるiPhone専用OSであるiOSやGoogle社によって開発されたAndroidなどが存在します。
仮想マシン(Virtual Machine[VM])
仮想マシンとは、コンピュータ上で仮想的なコンピュータ環境を作り出すソフトウェアや技術のことです。
ホストOS
基本的にコンピュータは1つのOSによって起動されます(デュアルブートやマルチブートの設定をすることでそのOSを複数にすることは可能です)。このように、物理的なコンピュータを起動するOSをホストOSといいます。
ゲストOS
仮想マシンは、物理的なコンピュータの中で、ソフトウェアによって仮想的なコンピュータ)を作成することができます。そして、その中で別のOSやアプリケーションを動作させることができます。このOSをゲストOSといいます。つまり、仮想マシンは「ホストOS上でゲストOSを構築して制御する技術」といえます。ライセンスやハードウェアの観点で推奨されないOSが存在するため、ゲストOSの準備には注意が必要です。特に、macOSはApple社によってmacマシンのみに利用が認められており、アップルシリコンの登場によって独自的なハードウェア設計となったことから仮想マシンのゲストOSとして利用することは推奨できません。
仮想マシンのメリット
環境の分離とセキュリティ
仮想マシンは互いに独立しているため、1つのゲストOSに問題が発生しても他のゲストOSに影響を及ぼすことがありません。また、仮想マシンで検証を行うことで悪意のあるソフトウェアがホストOSに影響を及ぼすリスクを低減できます。
テストや開発の環境
仮想マシンを使用すると、アプリケーションやシステムのテストや開発において、異なる環境を容易に構築できます。また、仮想マシンツールの機能によって仮想マシンデータをエクスポートすることで、開発チームで環境の共有が可能となります。
バックアップと復元
仮想マシンはファイルとして保存されるため、バックアップや復元が簡単に行えます。作業内容を複製して保存することで、開発で問題点が発生した前の環境に戻ることができます。
代表的な仮想マシンツール
具体的な仮想マシンツールを挙げます。調査した内容をまとめたものになりますので、動作の保証はできかねます。ご了承ください。
Windows Hyper-V
ネイティブなサポートがあり、Windowsのバージョンに対して高い互換性があります。64ビット版のWindows 10 ProとEnterprise、Educationで利用できます。
Windows 10 の Hyper-V の概要 | Microsoft Learn
Oracle VirtualBox
オープンソースであり無料で利用ができ、豊富な機能とカスタマイズが可能です。ゲストOSはWindowsやLinux、Solaris、FreeBSDなど幅広く対応されているとのことです。複数の仮想マシンの作成やスナップショット(仮想マシンの状態の保存と復元)など、多くの機能を提供しています。処理内容によっては動作が遅いです。後述のVMware Workstation Playerに比べて、パフォーマンスがやや低くなる場合があります。また、ユーザーインターフェースがやや複雑で、初心者には少し学習コストがかかる場合があります。
VMware Workstation Player
Oracle VirtualBoxとともに高いシェアを誇る仮想マシンツールです。高いパフォーマンスを提供し、特に3Dグラフィックスやハードウェアアクセラレーション(コンピュータの処理速度を向上させる機構)を必要とするアプリケーションの動作が得意とのことです。また、ユーザーインターフェースが直感的で使いやすいとの評判で初心者から上級者まで幅広いユーザーに適していると評判です。商用製品として提供されているため、基本機能は無料版でも利用できますが、高度な機能は有料となります。
Parallels Desktop
macOS専用の仮想マシンツールです。シームレスなMacとWindowsの統合を提供し、高いパフォーマンスと快適な利用が可能だそうです。2週間のトライアル期間を過ぎると利用料金が発生します(2023/07/29時点)。
QEMU
オープンソースであり無料で利用が可能です。こちらも、クロスプラットフォームに対応しています。欠点として、ユーザーフレンドリーさに欠けており、初心者には少し扱いが難しい場合があるとのことです。また、カーネルといった低レイヤーの開発者向けの設計となっているとのことです。
おわりに
ご閲覧いただきありがとうございました。現在、私は新しいパソコンで開発環境を整えるために様々なツールを導入している状況です。今後、同様の作業をする際の忘備録として記事を投稿させていただいております。拙い点や誤っている点がいくつかあるかと思いますが、コメントにてご指摘、ご教授いただけると幸いです。