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 アプリをビルドまたは移植する必要があります。
Arm 開発者用ツール
Microsoft は、Arm ネイティブの Visual Studio 2022、VSCode、VC++ ツールチェーン、クラシック .NET Framework、最新の .NET、Java を含む Arm ネイティブ開発者ツールセットの提供に取り組んでいます。 また、Microsoft は、一般的なツール、ランタイム、フレームワーク、ライブラリを移植して、Windows on Arm をネイティブターゲットにするため、複数のサード パーティおよびオープンソース コミュニティと協力しています。 開発者が x64 をターゲットとするときと同じくらい簡単に Arm をネイティブにターゲットとするアプリをビルドして移植できるようにする、この包括的なツール、サービス、デバイスのスイートについては、 ビルド 2022 からの発表 を参照してください。
Arm 開発者サービス
現在、多くの開発者は、Virtual Machinesとコンテナーにも依存しています。 Microsoft の Azure チームが最近、新しい Arm Virtual Machines サービスのプレビューを発表し、近日中に Azure Kubernetes Services を介して Arm コンテナーをプレビューする予定です。
また、ほとんどの開発者は、 Azure DevOps や GitHub などのクラウド サービスでホストされることが多い継続的インテグレーション/継続的デプロイ (CI/CD) によるビルドとテストの自動化にも依存しています。 2022 年夏の後半に、Microsoft は Azure DevOps と GitHub によって共有される CI/CD オートメーション ランナー/エージェントの移植作業を開始します。 クラウドでホストされる Arm CI/CD サービスが利用可能になるタイミングに関する詳細が近日公開予定です。
Arm 開発者デバイス
開発者には、Arm ネイティブ Windows アプリをビルドしてテストするための Arm デバイスが必要です。 いくつかの Arm 電源デバイスは、Microsoft パートナーから既に利用できます。 ノート PC のフォームファクター デバイスでも、コンバーチブル タブレットでも、これらのポータブル デバイスは、優れたパフォーマンス、バッテリ寿命を提供し、Arm ネイティブ開発者ツールの増加する配列を実行します。
Windows Dev Kit 2023 (コード名 "Project Volterra") は、アプリとエクスペリエンスに AI を統合しようとしている Windows 開発者、AI 研究者、開発者をサポートするために構築された最新の Arm デバイスです。
Arm64EC - Arm でWindows 11用のアプリを構築する
Arm64EC ("エミュレーション互換") を使用すると、完全に移行されるまで既存の x64 コード ライブラリを利用しながら、可能な限りネイティブ Arm のパフォーマンスを利用するために、新しいアプリを段階的にビルドしたり、既存のアプリ & を移植したりできます。 詳細情報:
Arm 上の既存の Windows アプリのサポート
Windows on Arm では、ネイティブ Arm アプリだけでなく、変更されていない x86 & x64 アプリも多数実行されますが、最高のパフォーマンスとバッテリー寿命を実現するには、可能な限り Arm ネイティブにアプリを構築する必要があります。 Windows アプリは、ネイティブ C/C++ Win32 アプリ、クラシック .NET Framework WinForms/WPF アプリ、最新の .NET アプリや MAUI アプリ、Java、Python、ノードなどを使用して構築されたアプリなど、さまざまなツールとテクノロジを使用して構築できます。
Arm 開発用のツールを見つける
Windows には、Arm での Arm 用アプリ開発をサポートするためのさまざまなツールとフレームワークが用意されています。
- 新しい Arm ネイティブ Visual Studio には Visual C++、.NET & .NET Framework、Java が含まれており、開発者は Arm ベースのデバイスで Arm アプリをネイティブにビルドおよびデバッグできます。 詳細については、 ブログのお知らせを参照してください。
- Visual Studio Code では Arm がネイティブにサポート されており、Arm デバイスにインストールできます。 VS Code C++ 拡張機能では、Arm64 デバイスでネイティブに実行される Windows アプリを開発するための C++ IntelliSense とビルドのサポートも提供されます。
- .NET 6 では、ネイティブ Arm の実行と x64 エミュレーションの両方で Arm が既にサポートされています。 Arm64 デバイスでネイティブに実行される .NET アプリを開発するには、新しい Arm ネイティブ Visual Studio 2022 17.4 と .NET 7 Arm64 SDK をインストールすることをお勧めします。 Arm の .NET 7 サポートと Arm64 のパフォーマンス向上の詳細については、 .NET ブログを参照してください。
- .NET 6 Arm64 SDK: 既定では、Arm64 SDK を使用する .NET 6 アプリの場合
dotnet run
は、Arm64 として実行されます。 このdotnet-runtimeinfo
ツールを使用して、.NET が実行されている環境を検出できます。 詳細については、 Arm64 サポートに関する .NET 6 のブログ発表 を参照してください。
注意
Arm64 (AArch64 とも呼ばれます) プロセッサで Windows のデスクトップ バージョンを実行する PC の短縮形として Arm という用語を使用します。 ここでは、32 ビット Arm アーキテクチャの略語として Arm32 という用語を使用します (他のドキュメントでは Arm と呼ばれます)。 Arm を搭載した PC は、優れたアプリケーション互換性を提供し、既存の変更されていない x86 win32 アプリケーションを実行できます。 Arm アプリはエミュレーションなしでネイティブに実行されますが、x86 および x64 アプリは Arm デバイス上のエミュレーションで実行されます。
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++の場合は、[すべてのダウンロード] セクションの下にスクロールし、[その他のツールとフレームワーク] ドロップダウン メニューを展開します。 Microsoft Visual C++ Visual Studio 2022 の再頒布可能パッケージが一覧表示されます。 必ず [Arm64] ラジオ ボタンをチェックし、[ダウンロード] をクリックします。
- 古いバージョンの Visual Studio を使用している場合は、ページの下部にある [ 古いダウンロード ] リンクを選択して、お使いのバージョンの Visual Studio に関連付けられているダウンロードを検索します。
ユーザーが Microsoft Store から Arm デバイスにアプリをインストールすると、Windows 11は使用可能なアプリの最適なバージョンを自動的に選択します。 アプリの x86、Arm32、Arm64 バージョンを Microsoft Store に送信すると、オペレーティング システムによって Arm64 バージョンのアプリが自動的にインストールされます。 アプリの x86 バージョンと Arm32 バージョンのみを送信すると、オペレーティング システムによって Arm32 バージョンがインストールされます。 アプリの x86 バージョンのみを送信した場合、オペレーティング システムはそのバージョンをインストールし、エミュレーションで実行します。
アプリ アーキテクチャの選択が必要な場合は、32 ビット x86 バージョンを選択して、Arm PC 上の Windows でアプリの 32 ビット バージョンを実行します。 アプリの x64 Win32 バージョンが機能しない場合、ほとんどのアプリでは x86 バージョンを使用できます。
アーキテクチャについて詳しくは、「アプリ パッケージのアーキテクチャ」をご覧ください。
App Assure での Arm64 への移行のサポート
Arm64 ベースのデバイスをサポートするようにアプリケーションをビルドまたは更新する際のヘルプとして、開発者は App Assure (FastTrack の一部) を利用できます。これは、テクニカル サポートを提供することでアプリケーションの問題のブロックを解除するのに役立つアプリケーション互換性プログラムです。 aka.ms/AppAssure にアクセス します。
その他の資料
- サティア・ナデラのビルド2022基調講演「Project Volterra」発表
- 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サポートの元のお知らせ
- バグを報告する