徳丸本の実習環境をIntel Mac＋Parallels Desktopで構築する手順

# はじめに

[「体系的に学ぶ 安全なWebアプリケーションの作り方 第 2 版」](https://www.amazon.co.jp/dp/4797393165/ref=cm_sw_em_r_mt_dp_CGJHGAZV08TA1H3M1QET)で使う実習環境を、Intel Mac + Parallels Desktop（以降、Parallels） で構築する手順です。本では VirtualBox による導入手順が解説されていますが、私は Parallels を使っているので VirtualBox の代わりにこちらを使うことにしました。

本の「2.3 VirtualBoxのインストール」と「2.4 仮想マシンのインストールと動作確認」の部分に対応する手順になります。

# 私の環境

10 年前の Mac mini に macOS Mojave というかなり古い環境です。Parallels は Pro Edition ですが、Pro 特有の機能は使っていないかと思いますので Standard Edition でも大丈夫なはずです。

| 項目     | 環境                                                         |
| :--------- | :----------------------------------------------------------- |
| ハード     | Mac mini(Late 2012)                                          |
| OS   | macOS Mojave バージョン 10.14.6                              |
| 仮想化基盤 | Parallels Desktop 17 for Mac Pro Edition バージョン 17.1.4 (51567) |


# 構築手順

## 仮想マシンのアーカイブ（wasbook.ova）の変換

本の「2.4 仮想マシンのインストールと動作確認」の冒頭の手順に従って「wasbook.ova」をダウンロードします。そして、Parallels のナレッジベースで紹介されている [Can VMWare deployment package with .ova extension be converted for Parallels Desktop?](https://kb.parallels.com/122835) の手順で変換します。以下にその手順をざっとまとめます。

まず、VMware のサイト内の [Open Virtualization Format Tool (ovftool)](https://developer.vmware.com/web/tool/4.1.0/ovf) から「Download」を選びます。
![ovftool01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139624/e91e3127-9b11-8c76-8bbe-8f02d79659d6.png)
そして、変換に必要な「VMware OVF Tool for Mac OSX」を選びます。
![ovftool02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139624/ff6c7329-7f4d-ed2d-147c-ea910b9e83ef.png)
ここで、VMware Customer Connect のサインイン画面が出てきます。もしアカウントがない場合は「Sign up now」を選び、アカウントを作成してください。
![ovftool03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139624/d5779379-38e2-fca3-0058-d9ae27c9a326.png)
アカウントの作成は項目が多くてちょっと大変です。
![ovftool04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139624/6aa239aa-79bd-1605-eaad-701eeb006261.png)
「Individual」（個人）と「Organaization」（法人）を選ぶところは選択によって入力項目が変わりますが、なぜか個人を選んでも「Job title」（肩書き）を聞かれてしまいます。
「Phone number」は、日本なら「+81」に続けて、通常の電話番号の頭の「0」を除いたものを書けば OK です。
住所の英語表記は [日本の住所](https://adro.jp/) が簡単に調べられて便利です。
![ovftool05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139624/ace4078b-b3db-8ab7-0b3b-8e4e90b33da2.png)
「Email Language Preference」は「日本語」を選びましょう。この後の確認メールが日本語になります。
![ovftool06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139624/4335ec0d-80d0-2db3-7aed-d6364372380f.png)
利用規約を確認して残りの質問に答えて「REGISTER」すると認証コードが書かれたメールが届きますので、それを入力すれば登録完了です。再度、ダウンロード ページに進んで「VMware OVF Tool for Mac OSX」をダウンロードしてください。

続いて「VMware OVF Tool for Mac OSX」のインストールですが、これは通常の macOS のインストーラーなので、特に変わったところはありません。dmg ファイルをダブルクリックして手順に従ってください。終わると「アプリケーション」の「VMware OVF Tool」フォルダーにインストールされます。
![ovftool08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139624/5a2844a0-07c0-4779-d27d-4ffa8cf3082e.png)
インストール後、ターミナルでこのツールを使って「wasbook.ova」を「wasbook.vmx」に変換します。
ターミナルで入力するのは
`/Applications/VMware\ OVF\ Tool/ovftool --lax {変換元の wasbook.ova　のパス} {変換結果の wasbook.vmx　のパス}`
です。`{`と`}`で囲まれた部分を環境に合わせて書き換えてください。なお、`{` の手前まで入力してからターミナルに変換元のファイルをドロップすると簡単にパスが入力できます。変換結果の保存先は、作成する仮想マシンのファイルの場所とは無関係なので、どこでも大丈夫です。

以下、実行例です。

```Console:実行例
segavvy-macmini:~ segavvy$ /Applications/VMware\ OVF\ Tool/ovftool --lax /Users/segavvy/Downloads/wasbook.ova /Users/segavvy/Downloads/wasbook.vmx
Opening OVA source: /Users/segavvy/Downloads/wasbook.ova
Opening VMX target: /Users/segavvy/Downloads/wasbook.vmx
Warning:
 - The specified operating system identifier 'Debian' (id: 95) is not supported on the selected host. It will be mapped to the following OS identifier: 'Other (32-bit)'.
 - Line 33: Unsupported hardware family 'virtualbox-2.2'.
 - Line 91: OVF hardware element 'ResourceType' with instance ID '7': No support for the virtual hardware device type '35'.
Writing VMX file: /Users/segavvy/Downloads/wasbook.vmx
Transfer Completed                    
Warning:
 - No manifest entry found for: 'wasbook-disk001.vmdk'.
 - No manifest file found.
Completed successfully
```

これで変換完了です。「wasbook.vmx」と同じ位置に「wasbook-disk1.vmdk」というファイルもできますので、作成後に移動する場合はセットで移動してください。
OS やハードウェア情報がツールの想定外らしくワーニングがいろいろ表示されますが、今のところ問題なく使えています。

## Parallels の仮想マシン作成

ここからは、変換した「wasbook.vmx」と「wasbook-disk1.vmdk」を使って仮想マシンを作成します。
まず、Parallelsの「ファイル」メニューから「新規…」を選び、表示されるインストールアシスタントの左下の「開く…」を選んで「wasbook.vmx」を指定します。
![para01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139624/51c3582e-5ac0-d445-729c-31691883d1c4.png)
名前と場所を聞いてきますので、自由に設定します。
![para02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139624/9ce6a0dc-58bf-6470-b3dd-88ebd08f0e98.png)
しばらくすると変換が終わって仮想マシンが起動します。なお、カメラにアクセスできない旨の警告がでますが、アクセスできない方がいいかと思いますので「OK」しましょう。
![para03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139624/e18fd6d6-30fd-8aa3-3801-cff8af9e6420.png)
これで本のユーザーIDとパスワードでログインできます。
なお、マウス カーソルが仮想マシンに取られて表示されなくなるので、戻したい時は[Ctrl]+[Alt]を押してください。
![para04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139624/81014d5f-49b8-9887-f69c-3795f67ca460.png)
なお、この状態ではまだネットワークが使えません。本にあるように `ip a`　を入力しても 終わりの方に表示されるはずの IPv4 のアドレスが表示されません。
![para05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139624/7eeb23c9-bb0e-d225-1736-b9e162316a08.png)
ネットワークの設定を変えるため、`sudo shutdown -h now` で仮想マシンを終了させてください。

## Parallels 側の設定

Parallels の「Parallels Desktop」メニューから「設定…」を選び、「ネットワーク」を選んで左下の「＋」をクリックします。
![para07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139624/503fbffb-d1fd-d71f-6a66-966b2cd4939a.png)
そうすると左の一覧に「Host-Only #2」が増えるので、それに対して図のように IPv4 DHCPの開始アドレスを `192.168.56.1`、終了アドレスを `192.168.56.100`、サブネットマスクを `255.255.255.0` に設定してします。
![para08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139624/03929a2a-3b28-2946-9ec3-671af5ffd249.png)
この時に「システム環境設定に表示する」にチェックを入れておくと、Mac の「システム環境設定」の「ネットワーク」で一覧に「Parallels Host-Only #2」というのが並び、 Mac 側の IP　アドレスを指定できるようになります。
![para14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139624/4f32605e-a725-c012-0eeb-d1e35cc8e240.png)
設定が終わったら「Parallels Desktop　環境設定」のウィンドウを閉じます。

次に、Parallels の「コントロール センター」から今回作成した仮想マシンを右クリックして「構成…」を選び、「一般」の先頭にある OS を「Debian GNU/Linux」に切り替えます。
![para06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139624/e02cec32-b506-e650-ba90-8bda2630f049.png)
また、「ハードウェア」で左のリストから「ネットワーク2」を選び、ソースを先ほど追加した「Host-Only #2」に切り替えます。
![para09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139624/7571e6aa-7017-e755-736f-aa5c16b68341.png)
これで Parallels 側の設定は終わりです。

## 仮想マシン側の設定
仮想マシンを起動してログインして `ip a` を実行し、2 番目と 3 番目のデバイス名を確認します。私の場合は「enp0s5」と「enp0s6」でした。
![para10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139624/7ce23c19-bc4e-4998-4dcc-734cb614779e.png)
次に `sudo nano /etc/network/interfaces`　でネットワークの設定ファイルを編集してデバイス名を合わせます。変更前は2番目が「enp0s3」、3番目が「enp0s8」になっていました。
![para11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139624/7f5ad13e-f02f-bdf1-a9b2-359851351611.png)
これで保存して `sudo reboot`　で再起動し、再びログインして `ip a` を実行すれば、 IP アドレスが表示されるはずです。
![para12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139624/2aec44ca-0ff4-d888-4244-12685f903994.png)

## Mac からの接続確認
最後に接続の確認です。Mac のターミナルで `ping 192.168.56.101` で疎通確認ができれば正常です。確認は[Ctrl]+[C]で止まります。
```
segavvy-macmini:~ segavvy$ ping 192.168.56.101
PING 192.168.56.101 (192.168.56.101): 56 data bytes
64 bytes from 192.168.56.101: icmp_seq=0 ttl=64 time=0.375 ms
64 bytes from 192.168.56.101: icmp_seq=1 ttl=64 time=0.389 ms
64 bytes from 192.168.56.101: icmp_seq=2 ttl=64 time=0.352 ms
64 bytes from 192.168.56.101: icmp_seq=3 ttl=64 time=0.343 ms
64 bytes from 192.168.56.101: icmp_seq=4 ttl=64 time=0.435 ms
^C
--- 192.168.56.101 ping statistics ---
5 packets transmitted, 5 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 0.343/0.379/0.435/0.032 ms
```
また、Mac の FireFoxで `192.168.56.101`　が表示できれば確認完了です。
![para13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139624/64a65cf9-8378-0992-6688-2903e2f5b562.png)
あとは本の「2.4 仮想マシンのインストールと動作確認」の後半の手順で hosts ファイルを編集すれば仮想マシンの構築は完了です。

# その他

## US キーボードの設定

私は US 配列のキーボードを使っていますが、そのままだと日本語配列扱いされて記号がずれてしまうため、[Debianで利用するキーボードの種類を変更する](https://memo.xight.org/2013-05-12-1) の手順で修正しました。
`sudo nano /etc/default/keyboard`
で設定ファイルを編集し、`XKBLAYOUT="jp"` を` XKBLAYOUT="us"` に変更すれば OK です。再起動後から正しくなります。
![para15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139624/2517aad2-2205-ae4b-00e9-6887015d7bb9.png)

## Parallels Tools のインストール

Parallels Tools　は、通常のインストール手順ではうまく入れられませんでした。あまり困らないのでとりあえず放置しています:sweat:
![para16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139624/556c9c2e-7816-935a-1576-54df075000ae.png)

# おわりに

誤りなどありましたらご指摘ください。よろしくお願いします。

# 参考にさせていただいたサイト

- [Can VMWare deployment package with .ova extension be converted for Parallels Desktop?](https://kb.parallels.com/122835)
- [Apple Silicon Mac(M1 Mac)で徳丸本の実習用仮想マシンを動かす](https://qiita.com/bamboo_and_tyre/items/2e5dd35d0b03235e9ed9)
- [Debianで利用するキーボードの種類を変更する](https://memo.xight.org/2013-05-12-1)