デスクトップ アプリの現代化Modernize your desktop apps

Windows 10 とユニバーサル Windows プラットフォーム (UWP) に用意された多数の機能を使用して、デスクトップ アプリでモダンなエクスペリエンスを実現できます。Windows 10 and the Universal Windows Platform (UWP) offer many features you can use to deliver a modern experience in your desktop apps. これらのほとんどの機能は、独自のペースでデスクトップ アプリに採用できるモジュラー コンポーネントとして利用できます。別のプラットフォーム用にアプリケーションを書き換える必要がありません。Most of these features are available as modular components that you can adopt in your desktop apps at your own pace without having to rewrite your application for a different platform. 既存のデスクトップ アプリを拡張するには、Windows 10 と UWP のどの部分を採用するかを選択します。You can enhance your existing desktop apps by choosing which parts of Windows 10 and UWP to adopt.

この記事では、今すぐデスクトップ アプリで使用できる Windows 10 および UWP 機能について説明します。This article describes the Windows 10 and UWP features that you can use in your desktop apps today. 既存のアプリを現代化してこの記事で説明されている多くの機能を使用する方法を説明したチュートリアルについては、「WPF アプリの現代化」チュートリアルをご覧ください。For a tutorial that demonstrates how to modernize an existing app to use many of the features described in this article, see the Modernize a WPF app tutorial.

注意

デスクトップ アプリを Windows 10 に移行するのにサポートが必要な場合Do you need assistance migrating desktop apps to Windows 10? Desktop App Assure サービスでは、自身のアプリを Windows 10 に移植する開発者に直接無償のサポートが提供されます。The Desktop App Assure service provides direct, no-cost support to developers who are porting their apps to Windows 10. このプログラムは、すべての ISV と条件に適合する企業が使用できます。This program is available to all ISVs and eligible enterprises. ご利用資格とプログラム自体について詳しくは、https://aka.ms/DesktopAppAssure をご覧ください。For more details on eligibility and about the program itself, visit https://aka.ms/DesktopAppAssure. すぐに開始するには、リクエストを送信してください。To get started now, submit your request.

MSIX パッケージMSIX packages

MSIX は、UWP、WPF、Windows フォーム、Win32 アプリを含む、あらゆる Windows アプリ用のユニバーサル パッケージ化エクスペリエンスを提供するモダンな Windows アプリ パッケージ形式です。MSIX is a modern Windows app package format that provides a universal packaging experience for all Windows apps, including UWP, WPF, Windows Forms and Win32 apps. MSIX は、MSI、.appx、App-V および ClickOnce インストール テクノロジの優れた部分が組み合わされ、安全かつセキュアで信頼性の高いものとなるように構築されています。MSIX brings together the best aspects of MSI, .appx, App-V and ClickOnce installation technologies and is built to be safe, secure, and reliable.

MSIX パッケージにデスクトップ Windows アプリをパッケージ化することで、堅牢なインストール、更新エクスペリエンス、柔軟な機能システムによる管理されたセキュリティ モデル、Microsoft Store のサポート、エンタープライズ管理、および多くのカスタム配布モデルにアクセスできます。Packaging your desktop Windows apps in MSIX packages gets you access to a robust installation and updating experience, a managed security model with a flexible capability system, support for the Microsoft Store, enterprise management, and many custom distribution models.

詳しくは、MSIX ドキュメントの「デスクトップ アプリケーションのパッケージ化」をご覧ください。For more information, see Package desktop applications in the MSIX documentation.

.NET Core 3.NET Core 3

.NET Core 3 は、.NET Core の最新のメジャー リリースです。.NET Core 3 is the latest major release of .NET Core. このリリースのハイライトは、Windows フォーム、WPF アプリを含む Windows デスクトップ アプリのサポートです。The highlight of this release is support for Windows desktop apps, including Windows Forms and WPF apps. .NET Core 3 で新規および既存の Windows デスクトップ アプリを実行し、.NET Core で提供されるすべての特典を利用することができます。You can run new and existing Windows desktop apps on .NET Core 3 and enjoy all the benefits that .NET Core has to offer. XAML Islandsでホストされている UWP コントロールを、.NET Core 3 を対象とする Windows フォームや WPF アプリでも使用できます。UWP controls that are hosted in XAML Islands can also be used in Windows Forms and WPF apps that target .NET Core 3.

詳細については、「.NET Core 3.0 の新機能」をご覧ください。For more information, see What's new in .NET Core 3.0.

UWP APIUWP APIs

多くの UWP API を WPF、Windows フォーム、または C++ Win32 デスクトップ アプリで直接呼び出して、Windows 10 ユーザーの利便性を高めるモダン エクスペリエンスを統合できます。You can call many UWP APIs directly in your WPF, Windows Forms, or C++ Win32 desktop app to integrate modern experiences that light up for Windows 10 users. たとえば、UWP API を呼び出して、トースト通知をデスクトップ アプリに追加できます。For example, you can call UWP APIs to add toast notifications to your desktop app.

詳細については、「Use UWP APIs in desktop apps (デスクトップ アプリでの UWP API の使用)」を参照してください。For more information, see Use UWP APIs in desktop apps.

UWP コントロールのホスト (XAML Islands)Host UWP controls (XAML Islands)

Windows 10、バージョン 1903 以降では、ウィンドウ ハンドル (HWND) に関連付けられた WPF、Windows フォーム、または C++ Win32 アプリ内の任意の UI 要素に直接 UWP XAML コントロールを追加できます。Starting with the Windows 10, version 1903, you can add UWP XAML controls directly to any UI element in a WPF, Windows Forms, or C++ Win32 app that is associated with a window handle (HWND). つまり、Windows InkFluent Design System をサポートするコントロールなど最新の UWP 機能を、デスクトップ アプリのウィンドウやその他のディスプレイ サーフェスに完全に統合できます。This means that you can fully integrate the latest UWP features such as Windows Ink and controls that support the Fluent Design System into windows and other display surfaces in your desktop apps. この開発者シナリオは "XAML Islands" とも呼ばれます。This developer scenario is sometimes called XAML islands.

詳細については、「UWP controls in desktop apps (デスクトップ アプリでの UWP コントロール)」を参照してください。For more information, see UWP controls in desktop apps

デスクトップ アプリでのビジュアル レイヤーの使用Use the Visual layer in desktop apps

UWP 以外のデスクトップ アプリで UWP API を使用して WPF、Windows フォーム、C++ Win32 アプリの外観や機能を高めたり、UWP でのみ利用可能な最新の Windows 10 UI 機能を活用したりできるようになりました。You can now use UWP APIs in non-UWP desktop apps to enhance the look, feel, and functionality of your WPF, Windows Forms, and C++ Win32 apps, and take advantage of the latest Windows 10 UI features that are only available via UWP. これは、XAML Islands を使用してホストできる組み込みの UWP コントロールだけにとどまらないカスタム エクスペリエンスを作成する必要がある場合に便利です。This is useful when you need to create custom experiences that go beyond the built-in UWP controls you can host by using XAML Islands.

詳しくは、「Modernize your desktop app using the Visual layer (ビジュアル レイヤーを使用したデスクトップ アプリの現代化)」をご覧ください。For more information, see Modernize your desktop app using the Visual layer.

パッケージ ID を持つアプリで利用できる追加機能Additional features available to apps with package identity

一部の最新の Windows 10 エクスペリエンスは、パッケージ ID を持つデスクトップ アプリでのみ利用可能です。Some modern Windows 10 experiences are available only in desktop apps that have package identity. これらの機能には、特定の UWP API、パッケージ拡張機能、UWP コンポーネントなどがあります。These features include certain UWP APIs, package extensions, and UWP components. 詳しくは、「パッケージ ID が必要な機能」を参照してください。For more information, see Features that require package identity.

デスクトップ アプリに ID を付与する方法はいくつかあります。There are several ways to grant identity to a desktop app:

  • MSIX パッケージでパッケージ化します。Package it in an MSIX package. MSIX は、すべての Windows アプリ、WPF、Windows フォーム、Win32 アプリ用のユニバーサルなパッケージ化エクスペリエンスを提供するモダンなアプリ パッケージ形式です。MSIX is a modern app package format that provides a universal packaging experience for all Windows apps, WPF, Windows Forms and Win32 apps. これは、堅牢なインストールと更新のエクスペリエンス、柔軟な機能システムによる管理されたセキュリティ モデル、Microsoft Store のサポート、エンタープライズ管理、および多くのカスタム配布モデルを提供します。It provides a robust installation and updating experience, a managed security model with a flexible capability system, support for the Microsoft Store, enterprise management, and many custom distribution models. 詳しくは、MSIX ドキュメントの「デスクトップ アプリケーションのパッケージ化」をご覧ください。For more information, see Package desktop applications in the MSIX documentation.
  • デスクトップ アプリを配置するために MSIX パッケージを導入できない場合、Windows 10 Insider Preview Build 10.0.19000.0 以降では、パッケージ マニフェストのみを含む "スパース MSIX パッケージ" を作成することでパッケージ ID を付与できます。If you are unable to adopt MSIX packaging for deploying your desktop app, starting in Windows 10 Insider Preview Build 10.0.19000.0 you can grant package identity by creating a sparse MSIX package that contains only a package manifest. 詳細については、「パッケージ化されていないデスクトップ アプリに ID を付与する」を参照してください。For more information, see Grant identity to non-packaged desktop apps.

デスクトップ アプリ用に最適化された UWP コントロールUWP controls optimized for desktop apps

デスクトップ デバイス ファミリを排他的にターゲットとする UWP アプリを構築する場合でも、WPF、Windows フォーム、または C++ Win32 デスクトップ アプリで UWP コントロールを使用する場合でも、次の新しい、または更新された UWP コントロールは Fluent Design System を使用してデスクトップ最適化されたエクスペリエンスを提供するように設計されています。Whether you're building a UWP app that exclusively targets the desktop device family or you want to use UWP controls in a WPF, Windows Forms, or C++ Win32 desktop app, the following new and updated UWP controls are designed to offer desktop-optimized experiences with the Fluent Design System. これらのコントロールは、Windows 10、バージョン 1809 (October 2018 Update、またはバージョン 10.0.17763) で導入されました。These controls were introduced in Windows 10, version 1809 (the October 2018 Update, or version 10.0.17763).

コントロールControl 説明Description
MenuBarMenuBar CommandBar で許容されるよりも多くの組織またはグループ化が必要になる可能性があるアプリ用のコマンド セットを公開する簡単でシンプルな方法を提供します。Provides a quick and simple way to expose a set of commands for apps that might need more organization or grouping then a CommandBar allows.
DropDownButtonDropDownButton その他のオプションを含むアタッチされたポップアップのある視覚インジケータとして山かっこを示します。Shows a chevron as a visual indicator that it has an attached flyout that contains more options.
SplitButtonSplitButton 個別に呼び出せる 2 つのパーツを持つボタンを指定します。Provides a button has two parts that can be invoked separately. 1 つのパーツは標準のボタンのように動作し、即座にアクションを呼び出します。One part behaves like a standard button and invokes an immediate action. もう一方のパーツは、ユーザーが選択できる追加オプションを含むポップアップを呼び出します。The other part invokes a flyout that contains additional options that the user can choose from.
ToggleSplitButtonToggleSplitButton 個別に呼び出せる 2 つのパーツを持つボタンを指定します。Provides a button has two parts that can be invoked separately. 1 つのパーツは、オンまたはオフにできるトグル ボタンのように動作します。One part behaves like a toggle button that can be on or off. もう一方のパーツは、ユーザーが選択できる追加オプションを含むポップアップを呼び出します。The other part invokes a flyout that contains additional options that the user can choose from.
CommandBarFlyoutCommandBarFlyout UI キャンバス上の項目のコンテキストで一般的なユーザー タスクを示すことができます。Lets you show common user tasks in the context of an item on your UI canvas.
ComboBoxComboBox コンボ ボックスを、ユーザーがコントロール内に一覧表示されていない値を入力できるように、編集可能にできるようになりました。You can now make a combo box editable so the user can enter values that aren't listed in the control.
TreeViewTreeView データ バインディング、項目テンプレート、ドラッグ アンド ドロップを有効にするようにツリー ビューを構成できるようになりました。You can now configure a tree view to enable data binding, item templates, and drag and drop.
DataGridViewDataGridView 行と列に柔軟にデータ コレクションを表示できます。Provides a flexible way to display a collection of data in rows and columns. このコントロールは、Windows コミュニティ ツールキットで入手できます。This control is available in the Windows Community Toolkit.

Windows UI ライブラリWindows UI Library

Windows UI ライブラリは、UWP アプリ用の新しいコントロールとその他のユーザー インターフェイス要素を提供する NuGet パッケージのセットです。The Windows UI Library is a set of NuGet packages that provide new controls and other user interface elements for UWP apps. Windows UI ライブラリの API は以前のバージョンの Windows 10 で動作するため、ユーザーが最新バージョンの Windows 10 を実行していなくてもアプリは動作します。Windows UI Library APIs work on earlier versions of Windows 10, so your app works even if users aren't running the latest version of Windows 10. これにより、新しいコントロールが Windows UI ライブラリでリリースされたときにこれらを導入することができます。バージョン チェックや条件付き XAML を含める必要がありません。This lets you adopt new controls as they are released in the Windows UI Library without having to worry about including version checks or conditional XAML.

Windows UI ライブラリ」をご覧ください。See Windows UI Library.

モダン デスクトップ アプリ向けのその他のテクノロジOther technologies for modern desktop apps

Microsoft GraphMicrosoft Graph

Microsoft Graph は、数百万に及ぶユーザーのデータとやり取りする組織やコンシューマーがアプリの構築に使用できる API のコレクションです。Microsoft Graph is a collection of APIs you can use to build apps for organizations and consumers that interact with the data of millions of users. Microsoft Graph では、次のデータにアクセスするための REST API とクライアント ライブラリが公開されます。Microsoft Graph exposes REST APIs and client libraries to access data on the following:

  • Azure Active DirectoryAzure Active Directory
  • Office 365 サービス:SharePoint、OneDrive、Outlook/Exchange、Microsoft Teams、OneNote、Planner、ExcelOffice 365 services: SharePoint, OneDrive, Outlook/Exchange, Microsoft Teams, OneNote, Planner, and Excel
  • Enterprise Mobility および Security サービス:Identity Manager、Intune、Advanced Threat Analytics、Advanced Threat ProtectionEnterprise Mobility and Security services: Identity Manager, Intune, Advanced Threat Analytics, and Advanced Threat Protection.
  • Windows 10 サービス: アクティビティとデバイスWindows 10 services: activities and devices

詳細については、Microsoft Graph のドキュメントをご覧ください。For more information, see the Microsoft Graph docs.

アダプティブ カードAdaptive Cards

アダプティブ カードは、オープンなクロスプラットフォーム フレームワークで、これにより、さまざまなデバイスやプラットフォーム間で一貫性のある共通の方法によりカードベースの UI コンテンツを交換できます。Adaptive Cards is an open, cross-platform framework that you can use to exchange card-based UI content in a common and consistent way across devices and platforms.

詳しくは、アダプティブ カードのドキュメントをご覧ください。For more information, see the Adaptive Cards docs.