WindowsもArmへの移行が進むのか――Arm64にネイティブ対応するVisual Studio 2022.NET 6移行入門(終)

.NET 6の現状を把握し、具体的な移行方法を学ぶ連載。今回は、Arm64にネイティブ対応するVisual Studio 2022についてまとめる。

» 2022年10月07日 05時00分 公開
[鈴木友宏NTTデータ先端技術株式会社]

この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。

 .NET 6の現状を把握し、具体的な移行方法を学ぶ本連載「.NET 6移行入門」。最終回ではまさに現在進行形で進んでいる.NETの方向性を占う最新情報からVisual StudioのArm64ネイティブ対応についてお伝えします。

Arm64ネイティブ対応の背景

 Microsoftは「Visual Studio 2022」で64bit化対応を完了しました。そして次のステップとしてVisual StudioのArm64ネイティブ対応を急速に進めています。2022年9月7日の原稿執筆時現在、Arm64 Visual Studio 2022はプレビュー版がリリースされており、年末までにGA(一般提供)される予定です。

 なぜここに来てMicrosoftは急速に対応を進めているのでしょうか。今回はその背景と現時点での進捗(しんちょく)について確認します。また、Arm64 Visual Studio 2022のプレビュー版に触れてみた感触についてもレポートします。

背景その1 持続可能性の価値の高まり

 MicrosoftがVisual StudioのArm64ネイティブ対応を進める理由の一つは、.NETアプリをArm64ネイティブで運用できる環境を整えたい動機が高まっているからです。その中には「Sustainability(持続可能性)」への取り組みがあります。

 Arm64アーキテクチャはx64と比べて電力効率に優れており、コストだけでなく持続可能性に大きく寄与するポテンシャルを持っています。昨今、持続可能性への取り組みは企業価値を高める指標として重要な位置を占めており、アプリは単にユーザビリティとパフォーマンスが優れているだけでは「テクノロジーによる社会への貢献」というミッションを果たすことはできなくなりつつあります。

 また、アプリの開発ではこれまでQCD(Quality、Cost、Delivery)が重視されていましたが、今後は運用時のコストとエネルギーの消費にもいっそうの配慮が必要になるので、その有効な解決策としてArmアーキテクチャへの注目が高まっています。このような背景においては.NETの開発者としても既存アプリのマイグレーションや新規アプリ開発時に持続可能性の観点も含めArm64アーキテクチャ採用の知見を蓄積していく必要があります。

 特にスケールを前提としたサーバコンピューティングではエネルギー削減効果が顕著であり、サービス提供側が関与できないクライアントコンピューティングと違い、Arm64の導入が進みやすい状況にあります。

 なお「Microsoft Azure」では、Arm64対応のVM(仮想マシン)が2022年10月2日にGAされており、下記画像のように「East US」リージョンなどで既に利用可能です。Arm64対応のVMはx64のVMと比べておおむね20%程度安価になっています。

背景その2 Arm64環境のエコシステムの整備

 Microsoftは2022年中にAI関連の開発者向けのNPU搭載ArmアーキテクチャWindows PC「Project Volterra」を投入予定です。NPUはNeural Processing Unitの頭文字を取った略称で、ニューラルネットワークや機械学習の高速化を専門に処理するプロセッサです。過去にCPUとは別にグラフィックスを専門に処理するGPUが搭載されていったように、昨今のAI需要の高まりによって、NPUをCPUやGPUとは別に搭載するケースが出てきました。将来的には過去のGPUがそうだったようにほとんどのデバイスにNPUが搭載されることになると予想されています。

 なおiPhoneでは、2017年発売のiPhone 8、iPhone X世代のApple A11 Bionicプロセッサから標準でNPUが内蔵されています。

 Microsoftはこれまでに何度かWindowsのArm対応を進めてきましたが、Windows単体のリリースにとどまり、積極的に訴求されなかったので、本格的に普及しませんでした。しかし、今回はこれまで述べたようにWindows 11 Arm64だけでなく、開発環境を整備するProject VolterraやVisual Studio、Visual Studio Code、デプロイ環境のAzureやLinuxといったエコシステム全体への積極的な投資を進めています。また、Microsoftは既存アプリをArmプロセッサ搭載デバイスに移植する支援も計画しています。

 この流れは、Apple M1以降、MacのArm64化のあたりから顕著になってきており、M1 Macの影響は大きかったと考えられます。

Arm64 Visual Studio 2022のインストール

 Arm64 Visual Studio 2022は、Windows 11 Arm64で利用できます。

 注意点としてArm64 Visual Studio 2022をインストールするには、いったんインストール済みのVisual Studio 2022を全てアンインストールし、Visual Studio 2022の最新のプレビューをインストールします。

 Windows 11 Arm64の環境を手軽に準備するには、AzureのWindows 11 Arm64 VMを利用するか、M1/M2搭載のMacに「Parallels」を導入しWindows 11のライセンスを用意するのが最も簡単です(筆者はM1 Macの環境で検証しています)。

 また、.NET 6は既定でArm64ネイティブ対応ですが、.NET Frameworkについてもバージョン4.8.1をインストールすることでArm64ネイティブ対応となります。

 「PowerShell」を使うことで、インストールされている.NET Frameworkのバージョンを調べることができます。

Get-ChildItem 'HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP' -Recurse | Get-ItemProperty -Name version -EA 0 | Where { $_.PSChildName -Match '.*L.*'} | Where { $_.Version -gt 4.8} | Select PSChildName, Version

 以下のように「4.8.09037」以上が確認できれば、.NET Framework 4.8.1がインストールされています。インストールされていなければ下記からダウンロードできます。

PSChildName Version
----------- -------
Client      4.8.09037
Full        4.8.09037 

 現在、Arm64で利用できるワークロードは下記画像の通り、「ASP.NETとWeb開発」「Node.js 開発」「.NETデスクトップ開発」「C++によるデスクトップ開発」「ユニバーサルWindowsプラットフォーム開発」「C++ によるゲーム開発」「Visual Studio 拡張機能の開発」です。今後、.NET MAUIなどの他のワークロードもサポートされる予定です。

 x64版と同様に利用したいワークロードにチェックを入れて「ダウンロードしながらインストールする」を実行すればインストールされます。

Arm64 Visual Studio 2022の使用感とアプリのx64版からの移行

 Arm64 Visual Studio 2022のルック&フィールはx64版と違いはありません。違和感なくx64版と同じ感覚で使用できます。

 違いはバージョン情報にArm64版であるという表記が入るくらいです。

 また、アプリの移行についても.NET の世界に閉じている場合、非常にスムーズです。

※アンマネージドのdllなどをラップしている場合には、Arm64に対応したdllを準備する必要があります。

 x64 Visual Studio 2022で作成した簡単な.NET 6アプリを、コードを何も変更せずにArm64 Visual Studio 2022でビルド、デバッグ実行した様子を以下で紹介します。

.NET Framework アプリのArm64への移行

 x64 Visual Studio 2022で作成した簡単な.NET Frameworkのアプリを、コードを何も変更せずにArm64 Visual Studio 2022でビルドしてみました。簡単なアプリなので少ない機能しか使用されていませんが、ビルド完了までは非常にスムーズで問題なく成功しx64版となんら違いは見られませんでした。

 注意点として既定の「Any CPU」のビルド構成でビルドすると、「Debug」でも「Release」でも、なぜかx64でビルドされ、エミュレーションでの実行となってしまいます。

構成マネージャー

実行アプリのアーキテクチャ

 これを回避するには下記画像のように明示的にビルド構成でArm64を構成した上でビルドすることで、Arm64ネイティブでビルド、実行されます。

構成マネージャー

実行アプリのアーキテクチャ

.NET 6アプリのArm64への移行

 同様にx64 Visual Studio 2022で作成した簡単な.NET 6のアプリを、コードを何も変更せずにArm64 Visual Studio 2022でビルドしてみました。こちらも簡単なアプリのため少ない機能しか使用されていませんが、こちらもビルド完了までは非常にスムーズで問題なく成功しx64版となんら違いは見られませんでした。

 .NET 6の場合、既定のAny CPUのビルド構成でビルドしても期待通りArm64ネイティブでビルド、実行されます。

構成マネージャー

実行アプリのアーキテクチャ

最後に

 このように、Arm64 Visual Studio 2022はプレビュー版とはいえ既にかなりの完成度に達しており、ワークロード側の対応が進めば迅速にGAされることでしょう。なお.NET 6は、既にWindows、Linux、macOS全てのプラットフォームでArm64対応のランタイムがリリース済みです。

 クライアントPCがArmアーキテクチャに置き換わるにはもう少し時間がかかりそうですが、サーバコンピューティングにおいてクラウドベンダーのMicrosoftが自社の企業価値を高めるためにも、Azureでサービスを提供する企業が自社の企業価値を高めるためにも今後急速にArm対応は進むと予想されます。

 .NETの開発者としてはいち早く自社のアプリのArm対応について検証を進め、おそらくわれわれの予想より早く到来するであろう.NETアプリの多数がArmで運用される時代の到来に備えることをお勧めします。

 なお、今後の.NETの予定ですが、2022年11月に.NET 7のリリースが控えています。11月8〜10日(米国時間)には、ローンチイベント「.NET Conf 2022」も開催予定ですので、今後の情報公開が楽しみです。

 以上で、本連載は終了となります。ご覧いただきありがとうございました。

Copyright © ITmedia, Inc. All Rights Reserved.

スポンサーからのお知らせPR

注目のテーマ

Microsoft & Windows最前線2025
AI for エンジニアリング
ローコード/ノーコード セントラル by @IT - ITエンジニアがビジネスの中心で活躍する組織へ
Cloud Native Central by @IT - スケーラブルな能力を組織に
システム開発ノウハウ 【発注ナビ】PR
あなたにおすすめの記事PR

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。