Macに仮想環境でWindows10をインストールした


# はじめに(長くなっちゃったのでスルー推奨)

## WindowsからMacに乗り換えた

大学入学してからWindowsを使い始めてコーディングを始めてからもしばらくはWindowsでコーディングしていました。しかし、Windowsでは環境構築やターミナルコマンド等の点で色々と不都合を感じることが増えたのでなけなしの貯金をはたいてMacを購入、今はMacがメイン機になっています。

## やっぱりあるよね、切り替えの弊害

とはいえ、ずっとWindowsで開発してきたのでいきなり全部Macだと不都合なことも多い。
特にWindows用のOfficeしか持ってない私にとってはOfficeが使えなくなることは些か以上に不便でした。(逆にコーディング環境はMacの方が快適です笑)

これから新規で作成する文書についてはPagesやNumbersといったMac用の文書作成ソフトや、MicrosoftOfficeOnlineやGoogleDocument等で問題ありません。

ですが、以前にWindowsローカル上で作成したワードドキュメントを開いたらレイアウトが崩れることもあるため、少なくとも現状では後方互換に難があるため、このままでは過去のOfficeファイルの再利用ができません。

## どう対応しようか?

もっとも、これまでのWindowsマシンを廃棄したわけではないのでWindows環境が用意できないこともありません。ですが自宅ならまだしもモバイルノートとはいえ2台持ち歩くのも面倒だし、そこまで処理が重い作業をするわけでもない。

私にとってはWindowsではOfficeや軽い作業だけができればいいので、VritualBoxで仮想環境を構築してそこにWindows10をインストールしてみました。またホストのMacbookの容量に余裕があるわけでもないので、できるだけWindowsの無駄な機能を削除してできる限り容量も削って、仮想ストレージがSSDに専有している領域の縮小もやってみました。

# 使用するパッケージ

* [Virtual Box](https://www.virtualbox.org/)    

    Oracleが提供しているMac、Windows、Linux向けのフリーの仮想環境構築ソフトです。これを使用することで使用中のOS上に別のPCを仮想的に構築して、ソフトウェアのように別のOSをインストール、実行することができます。
    　単一のOS上に複数の、異なるOSをインストールすることができるので、OS毎に端末を用意しなくても色々なOSを普通のソフトウェアのように使用することができます。今回のように特定のOSでしか動かないソフトウェア使用したいときや、新しいOSの導入テストなどで他のOSが必要な場合などには便利です。

* [Windows10](https://www.microsoft.com/ja-jp/windows/get-windows-10)

    いわずと知れたMicrosoftが誇るOS。VirtualBoxはWindows以外のOSにも対応しているので、必要なOSのインストーラーを用意して下さい。

※　Mac向けの仮想環境構築ソフトだと他には定番としてParallels Desktopを挙げる人も多いかと思います。こちらはシェアウェアですがWindowsの仮想化に特化しているようで、VirtualBoxにはない色々便利な機能があるそうです。最も今回は予算の関係で使いません(苦笑)。
　MacのBootCampでインストールするという手もありますが、これだとOSを切り替えるのに一々再起動する必要がある上に、SSDの容量が結構必要になってしまう。あまりSSDの容量が大きくない私の環境には向かなさそうだったので今回の選択肢から外しました。興味のある人は下のリンクからどうぞ。

* [BootCamp](https://support.apple.com/ja-jp/HT201468) 
* [Parallels Desktop](https://www.parallels.com)

# 実行環境

MacbookPro Mid 2014
macOS Catalina ver.10.15.6

# 作業の流れ

1. [準備編](#1準備編) 
  1-1.[Windows10インストーラーをダウンロード](#1-1windows10インストーラーをダウンロード)
  1-2.[VirtualBoxをダウンロード](#1-2virtualboxをダウンロード)

2. [環境構築編](#2環境構築編) 
 2-1.[VirtualBox初期設定](#2-1virtualbox初期設定)
 2-2.[VirtualBoxにWindows10インストール](#2-2virtualboxにwindows10インストール)

3. [容量縮小編](#3容量縮小編)
 3−1.[Windows10容量縮小](#3-1windows10容量縮小)
 3-2.[VDIファイル容量縮小](#3-2vdiファイル容量縮小)

## 1.準備編

### 1-1.Windows10インストーラーをダウンロード

Windows10のインストーラーがなければ話にならないので入手します。Microsoftのホームページからダウンロードします。

[Windows10のディスクイメージのダウンロード](https://www.microsoft.com/ja-jp/software-download/windows10ISO)

bit数を選んでダウンロードします。もっとも2020年現在32bit版をあえて使う必要性もないので64bit番をダウンロードします。日本語環境以外も選択できます。

![1_windows10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/654516/7c2e7629-1f2c-2568-4467-65746041099f.png)

GB単位でのダウンロードで時間も多少かかるのでこの間に他の準備もしておきましょう。

### 1-2.VirtualBoxをダウンロード

まず、VritualBoxのインストーラーをダウンロードします。

[VirtualBox](https://www.virtualbox.org/)

![2_virtualbox.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/654516/2c266c60-ce59-ab55-9a02-0513071df979.png)

ダウンロードが終わったらインストーラーを起動してVirtualBoxをインストールします。特に気をつける点もないのでインストーラーの指示に従ってインストールします。

## 2.環境構築編

### 2-1.VirtualBox初期設定

VirtualBoxのインストールが完了したので、Windows10をインストール準備を進めていきます。
「新規」アイコンをクリックし、Windows10をインストールするための仮想マシン(仮想環境)を構築していきます。
「Windows10」の名前で一つ作成済みになっているので、新しく「Windows」という名前で新規に作成します。

![3_virtualbox-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/654516/1cc99bd2-3293-c337-a3b5-5039ce7e8a3c.png)

まずは仮想環境の名前を決めていきます。これはユーザーが識別するためのものなので、自分にとって使い勝手のいい名前なら何でもOKです。インストールするOSの種類もここで選択しておきます。

![4_virtualbox-2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/654516/9ebd0e7a-34d7-9b7b-04bc-14d43710d434.png)

次に仮想マシンに割り当てるメモリ量を決めます。当然のことながらホストマシンのメモリを使用するので、それ以上のメモリを割り当てることはできません。
Windows10は結構メモリ量が必要なのと、ホストマシンのメモリが16GBあるので半分の８GB割り当てておきます。軽量のLinuxならもっと少なくても問題ありません。
割り当てるメモリが多すぎるとホストOSの使用するメモリが足りなくなり、逆に少なすぎると仮想OSのメモリがすくなり双方動作が重くなりかねないので、ホストマシンのメモリ量とインストールするOSの必要メモリ量と相談して下さい。

![5_virtualbox-3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/654516/c8fd61b0-22ea-67fa-a0a8-2962c25ae048.png)

メモリの割当が終わったら仮想ストレージの設定です。ここで設定した仮想ストレージに実際にOSがインストールされます。今回は新規で作成します。

![6_virtualbox-4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/654516/a938c3ec-8b8f-9f96-37c1-b4130b7dc830.png)

ファイル形式が3種類選べますが特に理由がなければデフォルトのVDI形式でいいと思います。
VHDの方が仮想ストレージの形式としては一般的なですが、VDI形式からVHD形式への変換は可能ですし、もう一つの理由で今回はVDI形式を使用します。

![7_virtualbox-5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/654516/dfb5d39c-7aad-b005-6a1d-4d686d4a6486.png)

VDI形式を選択するとこの画面に移動します。VDI形式の仮想ストレージは実際にデータが書き込まれた文しかVDIの容量を使用しないというメリットがあります。例えばVDIを100GBで作成したとしてもその中に書き込まれたデータが1GBしかなければ、ホストマシン上で実際に使用されるストレージ領域は１GB だけで済みます。もちろんデータ量が増えれば使用されるストレージ領域は増えますが、SSD容量がそれほど多くない私の環境ではとてもありがたい機能です。

![8_virtualbox-6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/654516/5ba58f1d-a52e-51f6-79bb-3a66ecae1084.png)

仮想ストレージの容量を決めます。今回はWindows10と使いたいいくつかのアプリケーション、それと多少の余剰領域があれば十分なので50GBを割り当てます。最も、先に述べたとおり可変ストレージにしたので実際にデータを書き込まれた分しかSSD領域を使用しませんが。

![9_virtualbox-7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/654516/ff1224c7-155d-3b51-637a-ee65e2048a29.png)

ここまで終われば仮想マシンの設定は終わりです。メイン画面に戻って、左の列に設定した仮想マシンの名前が表示されるはずです。

![10_virtualbox-8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/654516/c878e7b7-d3cb-79c9-8975-413d0f8587a8.png)

### 2-2.VirtualBoxにWindows10インストール

設定した仮想マシンにWindows10をインストールします。左の列からインストールしたい仮想マシンを選択し、上の「設定」アイコンをクリックします。

![10_virtualbox-8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/654516/c878e7b7-d3cb-79c9-8975-413d0f8587a8.png)

クリックすると下のような設定画面に移動します。上のアイコンから「ストレージ」を選択します。

![11_virtualbox-9.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/654516/e9444f3a-4b76-4829-f118-6d1a8dd36f3a.png)

移動したら下の様な画面になっているはずです。左側の「ストレージデバイス」の一覧から「空」と表示された光学ディスクのアイコンを選択してから、右側にある光学ディスクのアイコンをクリックします。

![12_virtualbox-10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/654516/b3d1e020-21c5-408b-536a-ef5febdc3ace.png)

クリックすると以下のように表示され割り当てるディスクイメージを選択できます。「ディスクファイルを選択」をクリックし、ダウンロードしたWindows10のインストーラーディスクイメージを割り当てます。
これで仮想マシンの起動時にWindows10のインストールディスクから起動します。他に設定する項目がなければ「OK」を押し、設定を終了します。

![13_virtualbox-11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/654516/eebb0737-0774-1df0-133f-c4b2f21ae457.png)

設定が終わったら、メイン画面上の「起動」をクリックします。下のようにWindows10のインストーラが起動すれば成功です。あとはインストーラーの支持に従って仮想マシンにWindows10をインストールします。

![14_virtualbox-12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/654516/4e958f15-8ee7-3671-547e-61ca02f5fc52.png)

## 3.容量縮小編

### 3-1.Windows10容量縮小

Windows10インストールが完了したら各種初期設定、アプリのインストールなどを行います。
終わったらWindows10の容量を縮小してホストマシンのSSD使用量を節約していきます

Windows10にはシステム領域のファイルを圧縮するコマンドが実装されています。
ファイルを圧縮することになるので実行の度にファイルの解凍することになるので実行速度は低下するはずですが、今回は容量縮小目的なのでそこは無視します。
(これについては圧縮するとむしろ動作が速くなると書かれた記事をいくつか見つけたのですが、前述の通りファイルを圧縮するからには解凍する工程が増えるわけでその分実行速度は低下すると思うのですがどうなのでしょうか…？触った限りでは実感できるほどの差はなかったのですが。)

コマンドプロンプトを管理者権限で起動して、以下のコマンドを実行します。

``` 
compact /compact:always
```

![15_windows-compact.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/654516/2a0ff637-c0b1-29ca-e7f9-8d75000b5ab9.png)

結果を見てみましょう。 `compact` コマンド実行前のCドライブのプロパティです。

![17_before_reduce.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/654516/4fac176f-3da1-6b2b-403d-df00c20436eb.png)

圧縮後のCドライブのプロパティです。3GBちょっと節約できました。大した量ではありませんが、コマンド一つでGB単位で容量を圧縮できたのはありがたいです。
![18_after_reduce.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/654516/becf9d55-6095-1816-14a3-3f8d1b42d403.png)


圧縮が完了したら、この後のVDIファイルの圧縮に備えた下準備をしていきます。
可変形式のVDIファイルは実際に書き込まれているデータ量しかSSD領域を使用しませんが、データを削除してもその分の容量は自動的には開放されません。つまり仮想マシン上のファイルを削除しても、VDIファルの容量はそのままです。
この後にVDIファイルの容量を縮小する手順を踏みますが、そのためには仮想マシンの空き領域を全て「0」で上書きしなければ圧縮できません。
 [VirtualBox-Manual-8.22. VBoxManage modifymedium](https://www.virtualbox.org/manual/UserManual.html#vboxmanage-modifymedium)

Microsoftが空き領域を全て0で上書きするソフトを提供してくれているのでそれを使用します。
[SDelete](https://docs.microsoft.com/en-us/sysinternals/downloads/sdelete)

ダウンロードができたら解答してコマンドプロンプトでSDeleteのフォルダに移動します。
移動できたら以下のコマンドを実行します。

``` 
$ sdelete -z C:
```

空き領域を全て「0」で上書きするので空き容量が多いほど時間がかかります。終わったら仮想マシンをシャットダウンします。

### 3-2.VDIファイル容量縮小

VDIファイルを圧縮していきます。ターミナルを開いて目的のVDIファイルのディレクトリに移動します。
初期設定のままなら`` `userfolder/VirtualBox VMs` ``フォルダに仮想マシン単位でフォルダが作成されていて、それぞれの仮想マシンのフォルダの中にVDIファイルが格納されているはずです。

移動したらVirtualBoxと一緒にインストールされたパッケージ`` `VBoxManage` ``を利用してVDIファイルの未使用領域を圧縮します。

``` 
$ VBoxManage modifymedium --compact TargetFile.vdi
```

![21_beforeVDI.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/654516/c2f96c0a-21d3-e8e8-22c0-f7097ccb12aa.png)

圧縮後のVDIファイル情報です。37GBから17GBに約20GBの縮小に成功しました。数GB程度ならこの手間を踏まなくてもいいかと思ってましたが、予想外に容量が縮小できて驚きました。
![22_afterVDI.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/654516/89a6389b-1300-4cca-471d-68cf2e91c956.png)


# あとがき

最新のMacBookならストレージが1TBのモデルも選べるので容量に余裕があるのであればここまでの手順を踏まなくても運用できるでしょうが、それでも20GBの縮小は大きいです。
ひとまず今回はMicrosoftOfficeの実行環境として構築しましたが、今後は動作確認環境としても使用していければなと思っています。またCentOS等のLinux環境も機会があれば試してみたいところです。

# 参考&参照した記事
[VirtualBoxにWindows10をインストールする](https://qiita.com/hinataysi29734/items/d4e48ca673bad2f5ea03)
[Microsoftの「SDelete」を使ってSSDの空き領域をゼロフィルする方法-ハルパス](https://blog.halpas.com/archives/10256)