Arm 版 Windows
Windows は従来、x86/x64 プロセッサを搭載したマシンで実行されていますが、最近では Arm プロセッサを搭載したデバイスでも実行されています。
Arm 搭載デバイスが特に興味深いのは、Arm アーキテクチャの省電力特性により、これらのデバイスが優れたパフォーマンスを実現しながら、より長いバッテリーの寿命を提供できるためです。 多くの場合、Arm Systems on Chip (SoC) には、強力な CPU、GPU、Wi-Fi と モバイル データ ネットワーク、AI ワークロードを高速化するための ニューラル プロセッサ ユニット (NPU) などのその他の主要な機能が含まれています。
Arm で実行される Windows アプリをビルドする
Windows 10 では、変更されていない既存の x86 アプリを Arm デバイスで実行できます。 Windows 11 では、変更されていない x64 Windows アプリを Arm デバイスで実行する機能が追加されています。 Arm デバイスで x86 アプリと x64 アプリを実行するこの機能により、既存のアプリとツールの大部分が新しい Arm 搭載デバイスでも適切に実行されることをエンドユーザーが確信できます。
パフォーマンス、応答性、バッテリーの寿命を最大限に高めるために、ユーザーには Arm ネイティブ Windows アプリが必要です。つまり、開発者は Arm ネイティブ Windows アプリをビルドまたは移植する必要があります。
Virtual Machines
Ampere Altra Arm ベースのプロセッサを使用して、Windows 11 Arm64 VM を作成して Azure にデプロイできます。 このクイックスタート記事では、その方法について説明します。
以下の Arm版 Windows 仮想マシンについて詳しく説明します
- Arm 版 Windows 仮想マシンに関してよくあるご質問
- Azure Virtual Machines と Ampere Altra Arm ベースのプロセッサ—一般提供
- Terraform を使用して Arm ベースの Azure Kubernetes Service (AKS) クラスターを展開する - ARM Developer Hub
- Azure DevOps や GitHub など、クラウドでホストされている継続的インテグレーション/継続的展開 (CI/CD) を使用した自動化のビルドとテストの詳細について説明します。
Arm 開発者デバイス
開発者には、Arm ネイティブ Windows アプリをビルドしてテストするための Arm デバイスが必要です。 いくつかの Arm 搭載デバイスは、Microsoft パートナーから既に入手できます。 ノート PC のフォーム ファクター デバイスでも、コンバーチブル タブレットでも、これらのポータブル デバイスは、優れたパフォーマンス、バッテリの寿命を提供し、増加する一連の Arm ネイティブ開発者ツールを実行します。
Windows 開発キット 2023 (コード名 "Project Volterra") は、Windows 開発者、AI 研究者、およびアプリとエクスペリエンスに AI を統合しようとしている開発者をサポートするためにビルドされた最新の Arm デバイスです。
既存の Arm 版 Windows アプリをサポートする
Arm 版 Windows では、ネイティブ Arm アプリだけでなく、変更されていない x86 アプリと x64 アプリも多数実行されますが、最高のパフォーマンスとバッテリー残量を実現するには、可能な限りアプリを Arm ネイティブとしてビルドする必要があります。 Windows アプリは、ネイティブ C/C++ Win32 アプリ、従来の .NET Framework WinForms/WPF アプリ、最新の .NET アプリや MAUI アプリ、さらには Java、Python、ノードなどを使用してビルドされたアプリなど、さまざまなツールとテクノロジを使用してビルドできます。
Arm 開発用のツールを見つける
Microsoft は Arm ネイティブ開発者ツールセットの更新プログラムを継続的に提供して、Windows ARM 搭載デバイスをネイティブにターゲットとするアプリを、x64 をターゲットとする場合と同じようにビルドして移植しています。 Arm での、Arm 向けアプリ開発のサポート。
- Arm ネイティブの Visual Studio には、Visual C++、.NET. & NET Framework、Java が含まれており、開発者は Arm ベースのデバイス上で Arm アプリをネイティブにビルドおよびデバッグできます。 詳細情報: Arm64 Visual Studio が正式に公開されました (2022 年 11 月)、Visual Studio 2022 17.7 の MSVC ARM64 最適化 (2023 年 9 月)。
- Visual Studio Code は Arm をネイティブにサポートしており、Arm デバイスにインストールできます。 VS Code C++ 拡張機能では、Arm64 デバイスでネイティブに実行される Windows アプリを開発するための C++ IntelliSense とビルドのサポートも提供されます。
- .NET 6+ では既に Arm がサポートされています (ネイティブの Arm 実行と x64 エミュレーションの両方とも)。 Arm64 デバイスでネイティブに実行される .NET アプリを開発するには、新しい Arm ネイティブの Visual Studio 2022 17.4 と .NET 8 Arm64 SDK をインストールすることをお勧めします。 Armの .NET 8 サポートと Arm64 のパフォーマンス向上の詳細については、.NETブログ: .NET 8 での Arm64 のパフォーマンス向上 (2023 年 10 月) を参照してください。
- .NET 6 Arm64 SDK: 既定では、Arm64 SDK と一緒に .NET 6 アプリを
dotnet run
する場合、Arm64 として実行されます。 このdotnet-runtimeinfo
ツールを使用して、.NET が実行されている環境を検出できます。 詳細については、Arm64 サポートに関する .NET 6 のブログ発表を参照してください。 - VC++ ツールチェーン (Arm 開発者向け) は、Arm によって生成された Arm アーキテクチャ リリース用の GNU ツールチェーンです。パートナー、開発者、コミュニティはっこれを使用すると、新しい Arm アーキテクチャの新機能や、オープンソース プロジェクトである GCC、Binutils、glibc、Newlib、GDB の新機能を使用できます。
- OpenJDK での Arm 向け Java サポート: Arm 版 Windows 用 OpenJDK の発表 (2020 年 6 月)
- GitHub Actions: GitHub Actions (GitHub の CI/CD ワークフロー エンジン) は、多くの開発者のワークフローに不可欠な部分であり、開発者はこれを使用してアプリを継続的にビルド、テスト、デプロイします。 Arm 版 Windows では、次の 2 種類の GitHub Actions を使用できるようになりました。1. Arm VM または Arm デバイスでホストできるセルフホステッド ランナー、および 2. GitHub でホストされているランナー (現在はプライベート ベータ版で利用可能ですが、一般リリースは近日公開予定です)。
- Docker Desktop: コンテナーがデプロイ ターゲットとして非常に人気があるのには、合理化された開発ワークフロー、分離とセキュリティ、効率的なリソース使用、移植性、再現性など、さまざまな理由があります。 Docker Desktop は、Arm 版 Windows でネイティブに実行されるようになりました。
Note
ここでは、Arm という用語を、Arm64 (一般に AArch64 とも呼ばれます) プロセッサで Windows のデスクトップ バージョンを実行する PC の省略形として使用しています。 ここでは、Arm32 という用語を、32 ビット Arm アーキテクチャ (他のドキュメントでは一般に Arm と呼ばれます) の省略形として使用しています。 また、Arm 搭載 PC にはアプリケーションの互換性が十分に備わっており、変更されていない既存の x86 win32 アプリケーションを実行できます。 Arm アプリはエミュレーションされずにネイティブで実行されますが、x86 および x64 アプリはエミュレーション下で実行されます。
Arm64EC - Windows アプリを Arm 上で実行できるように更新するためのヘルプ
Arm64EC ("エミュレーション互換") を使用すると、新しいアプリを段階的にビルドしたり既存のアプリを移植したりして、可能な限りネイティブ Arm のパフォーマンスを活用しながら、完全に移行されるまでは既存の x64 のコードとライブラリを利用できます。 詳細情報:
Arm デバイスで実行される Windows アプリを開発するためのその他のヒント
MSIX を使用して、配布用にアプリをパッケージ化することをお勧めします。 MSIX が Arm と Arm64 をサポートする方法の詳細については、「アプリ パッケージ アーキテクチャ: Arm と Arm64」を参照してください。
Arm デバイスからデバッグを開始する (F5) ときに、すべての Visual Studio プロジェクトがローカルでプロジェクトを起動するように構成されているわけではありません。 アプリがローカルで実行されている場合でも、リモート デバッグのために Visual Studio の構成が必要になる場合があります。 詳細については、「リモート デバッグ」を参照してください。
Visual Studio で推奨されるパッケージを見つけてインストールするには、Visual Studio のダウンロード ページにアクセスしてください。
- Remote Tools for Visual Studio 2022 の場合は、[すべてのダウンロード] セクションの下にスクロールし、[Tools for Visual Studio 2022] ドロップダウン メニューを展開します。 Remote Tools for Visual Studio 2022 が一覧表示されます。 必ず [Arm64] ラジオ ボタンをチェックしてから、[ダウンロード] をクリックしてください。
- Microsoft Visual C++ 再頒布可能パッケージの場合は、[すべてのダウンロード] セクションの下にスクロールし、[その他のツールとフレームワーク] ドロップダウン メニューを展開します。 Visual Studio 2022 の Microsoft Visual C++ 再頒布可能パッケージがそこに一覧表示されます。 必ず [Arm64] ラジオ ボタンをチェックしてから、[ダウンロード] をクリックしてください。
- 古いバージョンの Visual Studio を使用している場合は、ページの下部にある [古いダウンロード] リンクを選択して、お使いのバージョンの Visual Studio に関連付けられているダウンロードを検索してください。
Microsoft Store から Arm デバイスにアプリをインストールすると、使用可能なアプリの最適なバージョンが自動的に選択されます。 x86、Arm32、Arm64 バージョンのアプリを Microsoft Store に申請すると、Arm64 バージョンのアプリが自動的にインストールされます。 x86 バージョンと Arm32 バージョンのアプリのみを申請すると、Arm32 バージョンがインストールされます。 アプリの x86 バージョンのみを申請すると、そのバージョンがインストールされ、エミュレーションの下で実行されます。
アプリ アーキテクチャを選択する場合は、32 ビット x86 バージョンを選択して、Arm PC 版 Windows でアプリの 32 ビット バージョンを実行します。 アプリの x64 Win32 バージョンが機能しない場合、ほとんどのアプリでは x86 バージョンが使用可能になります。
アーキテクチャの詳細については、「アプリ パッケージのアーキテクチャ」を参照してください。
App Assure Arm アドバイザー業務
Arm サポートを Windows アプリに追加するためのガイダンスでは、Arm に最適化されたバージョンのアプリを作成する方法について説明します。 App Assure Arm アドバイザー業務は、行き詰まった場合に役立ちます。 このサービスは、アプリは Arm 版 Windows で実行され、問題が発生した場合は Microsoft が修復を支援する、という Microsoft の既存の約束に加えられます。 詳細情報 を参照してください。
Windows Arm アドバイザー業務にサインアップします。
その他のリソース
- 「Project Volterra」を発表する Satya Nadella のビルド 2022 基調講演
- Arm での x86 エミュレーションのしくみ
- x86 デスクトップ アプリのトラブルシューティング
- Arm UWP アプリのトラブルシューティング
- プログラム互換性のトラブルシューティング ツール (Arm)
- WDK を使用した Arm64 ドライバーのビルド: Arm64 ドライバーをビルドする手順。
- Arm の x86 アプリのデバッグ | Arm での x86 アプリのデバッグに関するガイダンス。
- ビデオ: Arm64 Win32 C++ アプリのビルド
- 開発者向け Arm 版 Windows 10 (Microsoft Build 2018 ビデオ プレゼンテーション)
- ブログ: Arm 開発用 Windows 10 のサポートの元のお知らせ
- バグを報告する
外部リソース
Windows on Arm