広くて深い「仮想化」の世界

2022年5月16日

ワイドテック プロダクト企画のYです。

5月13日の金曜日に封切られたばかりの映画「シン・ウルトラマン」を見てきました。
庵野秀明脚本 x 樋口真嗣監督という「シン・ゴジラ」コンビにより、1966年の特撮テレビドラマ「ウルトラマン」の設定を現代に置き換えた作品ですが、怪獣が「禍威獣(かいじゅう)」、科特隊(科学特捜隊)が「禍特対(かとくたい、”禍威獣特設対策室専従班”の略だそうで)」と変えられていたり、通称「エヴァ明朝」フォントによる字幕やら冒頭の禍威獣との対決歴の駆け足な説明やら、あともちろん台詞や演出も含め、随所に庵野風味が感じられる作品でした。 ウルトラマンに変身する主演の斎藤工をはじめ、禍特対でその「バディ(相棒)」となるヒロインの長澤まさみ、先日の米アカデミー国際長編映画賞受賞作「ドライブ・マイ・カー」にも主演していた、禍特対班長役・西島秀俊と、有名俳優が多数起用される中、上手いキャスティングだったと感じたのは、外星人(宇宙人)「メフィラス」を演じた山本耕史ですね。本当にハマっていました。あの名刺、もらえるならほしいです。
テレビの初代ウルトラマンは小学生の頃、数回の再放送で見て以来ご無沙汰だったのですが、そのはるか昔に見た旧作を思い出しながら、童心に帰った気分で楽しめました。


■M1 Macがやってきた

さて、弊社の業務用PCは、これまですべてWindowsマシンでした。しかし、今回新プロジェクトにおいてiOS/iPadOS向けのアプリ開発を行うことになり、iOSアプリの標準的な開発環境「Xcode」を動かす目的で、初めて開発業務用としてAppleのMacを本格的に導入することになりました。 それに便乗する形で、検証用兼自分の業務用サブマシンとして、この連休明け直後、まず届いたのが「MacBook Air(2020)」です。

M1 Macがやってきた

MacBook Air(2020)のSafariブラウザでPOLESTAR Automationを開いたところ。
毎度毎度、写真が下手ですみません。ちなみにUSキーボード仕様。

既に皆様ご存知の通り、最新のMacには「Apple Silicon M1」という、ArmアーキテクチャーをベースにAppleが独自開発したCPUが採用されており、従来の環境との互換性は、macOS側でソフトウェア的に吸収する形となっています。その初号機となったのが、2020年11月発売のAir(2020)です。
この「M1 Mac」は、発表直後からぜひとも触ってみたかったものです。速いと評判のM1そのものもそうですが、M1以上に興味があったのが、仮想ハイパーバイザー(以下、仮想環境)における、Arm版Windowsのエミュレーションです。結局、いつものWindowsの話題じゃないか…と言われてしまいそうですが。

Macが長年にわたっていかに愛されようとも、PC用OSとしてのシェアでWindowsがmacOSを圧倒する状況だけはどうしようもなく、Windows用しかリリースされない有用なアプリケーションが多数あります。
近年(2006年~)の通称「Intel Mac」では、同じIntel CPUということでWindowsの併用が容易で、手段としては「Boot Camp」によるデュアルブートか、「Parallels Desktop for Mac(以下、単にParallels)」や「VMware Fusion」のような仮想環境、または両方の併用が行われてきました。
しかし、Apple Silicon用の仮想環境では、Intel版Windowsのエミュレーションはまだ実現されていません。一方でWindows側も、Armに本格対応してからまだ日が浅い上、M1 Macで直接起動可能なArm版Windowsが(おそらく今後も未提供なので、Boot Campも使えません。
M1 MacでWindowsを使うには、「仮想環境にArm版Windows 11をインストールする」というのが、目下(たぶん、これからも)唯一の方法です。


■Mac仮想環境の定番「Parallels」でWindows 11 Arm版を動かす

と、いうわけで、Air(2020)が届いた初日、Macとしての一連のセットアップを終えてから最初にやったのが、Intel Macの頃から仮想環境のデファクトスタンダードになっているParallelsの最新バージョン17と、Arm版Windows 11の導入です。
Windows 11ではPC(マザーボード)への「TPM(Trusted Platform Module) 2.0」というセキュリティ機能搭載が必須となりますが、Parallels 17にはこのTPM 2.0のエミュレーションが搭載され、Windows 11のインストール条件をクリアできています。
Parallelsでまず驚いたのが、Parallelsそのものだけでなく、Windows OSのインストールまで一気にできてしまうことです。
より具体的には、Parallelsのインストール過程でWindowsのイメージファイルをダウンロードし、Windowsの必要な設定が終わると同時に、Mac上の仮想マシンとしてWindowsが利用可能になる、というものです。

Parallelsのインストール

Parallelsのインストール。
左を選ぶとWindows 11 Armの製品版が自動的にダウンロードされ、そのままインストールされます。


ごく最近まで、M1 Mac上のParallelsインストール時に自動ダウンロードされるWindowsはInsider Preview版で、つまりM1上でWindowsを使うにはMicrosoftの「Windows Insider Program」にあらかじめ登録しておく必要があったのですが、現在ダウンロードされるのは製品版なので、Insider Programへの登録は不要となりました。 (もちろん、最新機能が先行提供されるInsider Previewの方を積極的に選びたいのであれば、Parallelsによるダウンロード機能を使わず、別途ダウンロードしておいたVHDX形式のInsider Previewを入れることも可能です) Mac-Windows間のリソース共有やショートカットキーに関するオプションもいろいろ選べますが、初めてで詳しくないので、とりあえずは全部デフォルトのまま入れてみました。

ParallelsのWindows用ショートカットキー設定

ParallelsのWindows用ショートカットキー設定。
カスタマイズも可能なのですが、Mac & Parallels初心者なので全部デフォルトのまま。


かくして、憧れ?のM1 Mac上のWindows 11 Arm版に、ようやく触れることができました。
Parallelsについては、Intel Mac上でWindowsを動かす手段としてデファクト、という以上の知識はなかったのですが、実際に触ってみて、支持される理由がわかりました。
リソースの共有機能がよくできていて、Windows上でダウンロードしたファイルはMac側からも見られますし、逆もまた同様です。Microsoft Officeのファイルなど、もしWindows側にWindows版のOfficeしかインストールされていなければ、ファイルがMac側にあってもWindows版のOfficeを起動してそちらで開けますし、Mac側にOfficeがあれば、逆のことも可能です。
その名の通り、MacとWindowsの両環境がパラレル(並列)に、シームレスに動いているイメージです。VMwareでも、ゲスト側(仮想マシン)にVMware Toolsを入れることで、解像度の自由な変更、ホスト側(仮想環境を起動したマシン)とゲスト側とのリソース共有が可能となりますが、ここまでの一体感はありません。

仮想Windows 11を実行中

ウインドウ(Apple用語では「ウイ」は拗音ではありません)モードで仮想Windows 11を実行中。
ちなみにスタートボタンは左が好きなので、左寄せにしてあります。


フルスクリーンモード

こちらはフルスクリーンモード。
スクリーンショットではMacとわからないので画面撮りですが、蛍光灯が写り込んでしまってすみません。


Mac側の画面

Mac側の画面。右端に並んでいるのはWindows側のショートカットアイコン。


あと、M1 Macでは無理ですが、Intel MacとBoot CampでIntel版Windowsを動かしているなら、OS切り替えのために再起動しなくても、Boot Camp用にインストールしたWindowsを、Mac環境上のParallelsから仮想マシンとして起動できる機能もあるそうですね。もちろん、完全なWindowsマシンとして使いたいなら、Boot Campでリブートすればいいわけです。
そんな話を聞くと、今から中古でIntel Macを手に入れるのも悪くなさそうに思えますが、いずれOSやアプリのサポート対象から切り捨てられるのは確実なので、もうApple Siliconだけでいいです。

Windows 11 Arm版の方は、従来からのIntel x86(32ビット)アプリだけでなく、x64アプリのエミュレーションにも対応した、との話でしたが、愛用するメディアプレイヤー「MPC-BE」のx64版は、インストールからできませんでした。Google Chromeブラウザも、ダウンロードされてくるのは32ビット版。x64サポートはまだ完全ではないようですし、動くものもパフォーマンスが悪い(遅い)という話もありますので、追究するのはやめました。
ただし、x86アプリはちゃんと動いて、特に違和感もありません。使い慣れたターミナルアプリ「Tera Term」なども、ごくごく普通に使えます。
最近は、x86/x64とは別途に、Armバイナリを用意するアプリも増えつつあります。ファイル圧縮・展開の「7-zip」はArm版があったので、入れてみました。
ちなみに今回のAir(2020)はメモリ8GB版なので、Windows側には4GBしか割り当てていないのですが、アプリを大量に起動したり、ブラウザで何十とタブを開いたりしなければ大丈夫です。

M1 MacでもParallelsにより、実用レベルのWindows環境が利用可能になっている、と断言してよいでしょう。少なくとも32ビットWindows相当では使えますし、使用感もリアルのWindowsマシンと変わりません。 ただし、トラックパッドやマウスホイールによるスクロールは、MacとWindowsで向きが逆になりますので、両方を合わせるには工夫が必要です。手段はいくつかあるようですが、自分は「Scroll Reverser」というツールで解決しました。


■「仮想環境」に明け暮れた1か月

実は、4月に新プロジェクトが本格スタートしてから連休明けにM1 Macが届くまでの間も、仮想環境の構築や設定に、公私ともに結構な時間を取られていました。
新プロジェクトの方では、VMware ESXiを用いた検証用マシンを、自作で1台組みました。第12世代の最新Intel Core CPUとNVMeのSSDだけを用いた、単体のデスクトップ機として使うなら最新・最速の割と贅沢な環境にESXi 7.0を入れ、最大数十個のLinux仮想マシンを動かそう、というものです。
デスクトップ用のハードウェアとしたのは、あくまで社内でのテスト用途なので、Xeonベースとかのサーバー用で組むより、単純にコア数・スレッド数が多くて大量のメモリを積んでも安いから、という理由なのですが、ESXiには標準ではあまり新しいデバイスドライバーが含まれないので、自分で探してきてインストールする必要があり、これに結構な時間を要しました。
2年前(コロナ禍で最初に発令された緊急事態宣言が解除された頃)にもPOLESTARチームの検証環境として、当時最新の第10世代Coreで同様なマシンを組んだことがあったのですが、やはり今回同様、ドライバー周りで苦労させられたものです。 「ESXiは枯れたハードウェアがいい」…格言です。

自宅でも、連休前後にPCを新調したのですが、連休中に今までメイン機として使っていた完全ファンレス構成のPCを仮想環境のホストとして再構成し、それまで別のシングルボードコンピューターで動かしていた24/365稼働のサーバーを、WindowsのHyper-Vで立てた仮想のLinuxに移して使うことにしました。ディストロは元がUbuntu 18.04だったので、出たばかりの最新Ubuntu LTSである22.04にしました。 同じUbuntuでも、そもそもCPUアーキテクチャーが違うので、データと一部のコンフィグ(設定)以外は全部入れ直しになる上、22.04ではPython 2.xが完全に廃止されていたりもするので、その辺の対応も割と面倒でしたが、なんとか都合数日で完了しました。

そんなわけで、この1か月だけで、仮想環境に関する見聞と経験をかなり拡げられたと思っています。特に、Parallelsには感動させられました。


■面白くてSDGsな仮想環境

ところで、仮想環境を使う目的、意義はなんでしょうか? ひとつは「古い環境の保存・維持」が挙げられると思います。
趣味の世界では、MS-DOSやWindows 9xのような20世紀のOSで、1980年代から世紀末にかけての時代を風靡した、いわゆる「レトロゲーム」を楽しむために仮想環境が使われる例もありますよね。ゲームをあまりしなかった自分でも、たまに「DOOM(初代)」などを動かしてみることがあります。
その時代のハードウェアを今から手に入れるのはもちろん、使い続けるにも辛いものがあるので、仮想環境こそ最適解といえますが、例えばWindows 98とか2000あたりを、現代のPCの仮想環境で動かしてみると、当時の実機をはるかに上回る速度で快適に使えるので、感心させられたりもします。
そのような極端な古い事例に限らず、Windows XPや7、Server 2003や2008といった、比較的近年にEOL/EOSとなったOSについては、POLESTAR Automationで運用管理を自動化できるかどうかのお問い合わせをいただくことも稀にあるので、弊社POLESTARチームでも、それらの古いOSを仮想環境に保存してあります。

何より、アプリケーションやミドルウェアなどの中には、最新コンピューティング環境の提供するフルスペックを必要とせず、1つのハードウェア+ハイパーバイザー上で資源を共有し、仮想マシンとして動かせば済むようなものが、意外にあります。
SDGs(持続可能な開発目標)の実践が叫ばれて久しいですが、ITの世界でいろいろな意味でSDGsに相応しく、もっと広く活用されるべきなのが、仮想環境だと思います。