9
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Windows アプリの開発手段の選択肢をまとめてみたの続き

Last updated at Posted at 2026-02-02

はじめに

Windows アプリの開発手段は幾つもあります。新たにアプリを作るときにどれを選ぶのがいいのか、まとめてみました。

Windows アプリの開発手段の選択肢をまとめてみた #.NET - Qiita

この続きです。

Windows アプリの種類と概要

前回の記事の表の続きです。「Win API アプリ」「VB6 アプリ」は除きました。↓

アプリの種類 WinUI 3 アプリ UWP アプリ WPF アプリ WinForms アプリ
非パッケージの配布 可能 × 可能 可能
パッケージ化 MSIX APPX MSI など MSI など
開発ツール Visual Studio VS など VS VS
UI デザイナ なし なし あり あり(神)
UI フレームワーク XAML XAML など XAML WinForms
開発言語 C#(C++) C# など C# など C# など
UI サブシステム WinUI 3 WinUI WPF WinForms
API WinRT × WinRT .NET または .NET Framework
× Win API × Win API
実行環境 Win 10 以降
× Win 7 以前
導入時期 2020年 2015年 2006年 2002年
  • UWP(Universal Windows Platform) は、異なるデバイス向けに提供される Windows 用のアプリを共通の基盤上で動作させることのできる、統合されたプラットフォーム。ベースとなるフレームワークは WinRT (Windowsランタイム)
    (ユニバーサルWindowsプラットフォーム - Wikipedia)

  • WinRT(Windows Runtime) は、Modern UI スタイルのアプリケーションを作成するバックボーンとなる API である。Windows 8 以降のオペレーティングシステムで実装されている。
    WinRT API は、Win32 API サブセットの上に構築されており、Win32 API の代替というよりはむしろ高レベルのラッパーであるといえる。これは内部実装に Win32 API を利用している .NET Framework で使われているのと同じアプローチである。
    WinRT アプリケーションはサンドボックス内で実行される。そのため、従来のデスクトップアプリケーションと比べてインストールや動作に関する制約が設けられる。セキュリティ面での安全性は向上する。
    (Windowsランタイム - Wikipedia)

  • WinUI(Windows UI Library) は、Windows 8 、Windows 8.1 、Windows 10 OS 用の UWP アプリのバックボーンを形成する WinRT プログラミングモデルの一部である。
    WinRT のために組込された UI フレームワークの一つ。XAML テクノロジーを使用してユーザーインターフェイスを宣言・記述できる。
    (Windows UI Library - Wikipedia)

  • WinUI(1) は、Windows OS に組込されて提供される。そのため OS を更新しないと WinUI ライブラリも更新できない。

  • WinUI 2 は、Windows OS から分離してアプリに組込できるようにした

  • WinUI 3 は、Windows App SDK の一部として提供される
    (WinUI の歴史とアーキテクチャ #Windows - Qiita)

  • Windows App SDK は、Project Reunion として発表された。Microsoft が提供する SDK で、Windows 11 および Windows 10 のデスクトップアプリケーション開発に使用できる、統一された API とコンポーネントセットを提供します。Windows SDK の代替を意図したものではありません。
    (Windows App SDK - Wikipedia)

  • Microsoft Windows Installer は、Windows でソフトウェアのインストール・メンテナンス・削除を行うエンジンである。
    インストールパッケージ (installation package) には、インストール処理に関する情報とインストールされるファイルとがパッケージングされている。インストールパッケージのデフォルトのファイル拡張子が "MSI" であることから MSI ファイルとも呼ばれる。
    (Microsoft Windows Installer - Wikipedia)

  • AppX ファイルは、アプリケーションの配布とインストールに使用される配布可能なパッケージ ファイル形式です。Windows 8 で導入され、Microsoft Windows Store で公開されました。 Windows アプリケーションのインストールに必要なすべてのファイルが含まれています。
    (APPX ファイルとは? | FILEFORMAT)

  • MSIX(MSI eXtended)は、あらゆる Windows アプリに最新のパッケージ化エクスペリエンスを提供する Windows アプリ パッケージ形式です。MSIX パッケージ形式では、Win32、WPF、および WinForms アプリの新しい最新のパッケージ化と展開機能を有効にするだけでなく、既存のアプリ パッケージの機能やファイルのインストールも保持されます。
    (MSIX とは? | Microsoft Learn)

UWP の以前と以後について

UWP の利用が提案されていた前後は、Windows アプリの開発手段に対する Microsoft の方針が迷走していた記憶があります。以下の記事に当時の経緯がまとめられているのを見つけました。

整理すると以下のようになるでしょうか。

  • Win API を使った「Windows ネイティブアプリ」
    いずれ非推奨とされる古いスタイルと考えられていた
  • .NET Framework および .NET
    WinForms が提供される(2002 年)
  • WPF(Windows Presentation Foundation)が提供される(2006 年)
    以前の Win API+GDI と一線を画す UI フレームワークであり、後の WinUI の先祖
  • モダン UI スタイルアプリ(ストアアプリ)
    Windows 8 に伴って(2012 年)。モバイルデバイスに対応したモダンで安全なアプリ。このために WinRT API が用意された。デスクトップアプリから置換しようとしていた。
  • UWP(Universal Windows Platform)が提供される
    Windows 10 に伴って(2015 年)。モダン UI スタイルのデスクトップアプリを作ることができる。より安全なプラットフォームを実現する。Windows の機能をフルに活用できない。
    .NET アーキテクチャから置換されると考えられていた。
    ところが、アプリ開発者の対応は鈍かった
  • 従来のデスクトップアプリから UWP API を使えるようにするアプローチ
    Desktop Bridge が提供される(2016 年)。XAML Island が提供される(2019 年)
    Project Reunion が発表される(2020 年)。Windows App SDK がリリースされる(2021 年)

前回と今回の記事の表には、Win 8 および 8.1 の「モダン UI スタイルアプリ」は記述していない。あくまで Windows アプリといえばデスクトップアプリでしょう。
UWP アプリから WinUI 3 アプリに移行するまでの混乱の時期に提供された Desktop Bridge や XAML Island も記述していない。今になって当時のアプローチでアプリを作ろうとしないでしょう。

モダン UI スタイルアプリが発表された頃に「デスクトップアプリ開発はどうなるか」と心配したことを覚えています。また、WinRT や UWP が発表された頃に「.NET アプリ開発は切捨されるのか」と心配されていたことを覚えています。
今日になってみると「デスクトップアプリへの回帰」と「ネイティブおよび .NET の復権」となったと言えるように思います。

Windows アプリの開発手段の選択肢

Windows アプリを開発するのに、以下の選択肢がありそうです。

「UWP」アプリ

アプリの種類 UWP アプリ
非パッケージの配布 ×
パッケージ化 APPX
開発ツール VS など VS など
UI デザイナ あり なし
UI フレームワーク XAML HTML
開発言語 C# など JavaScript
UI サブシステム WinUI
API WinRT
×
実行環境 Win 10 以降
×
導入時期 2015年

モダン UI スタイルのデスクトップアプリを作れます。
WinRT をベースにした UWP 環境に依存します。Win API は呼出できません。
HTML+JavaScript でアプリ開発するアプローチがありました。

制約が多く、このアーキテクチャでアプリを作成するメリットが、今やありません。
WinUI および WinRT API を使えるアプリを作るなら、下記の「Win UI 3」を使うことになります。

「WinUI 3」アプリ

アプリの種類 WinUI 3 アプリ
非パッケージの配布 可能
パッケージ化 MSIX
開発ツール Visual Studio
UI デザイナ なし
UI フレームワーク XAML
開発言語 C#(C++)
UI サブシステム WinUI 3
API WinRT ×
× Win API
実行環境 Win 10 以降
×
導入時期 2020年

Project Reunion(Windows App SDK)により、UWP アプリのように WinUI を使えて、Win API も WinRT API も呼出できるようになりました。
アプリのコードは .NET API を呼出しますが、これは SDK に組込されています。

従来の .NET ないし Win API アプリが WinUI および WinRT を使えるようにするアプローチと、従来の UWP アプリが .NET ないし Win API を使えるようにするアプローチがあって、前者が生き残ったようです。ブランドとすると、UWP アプリの後継と言えそうです。

「.NET MAUI」アプリ

アプリの種類 .NET MAUI (Win)
非パッケージの配布 可能
パッケージ化 MSIX
開発ツール Visual Studio
UI デザイナ なし
UI フレームワーク XAML
開発言語 C#
UI サブシステム WinUI 3
API WinRT ×
× Win API
実行環境 Win 10 以降
×
導入時期 2022年

.NET MAUI は、Xamarin の後継で、「マルチプラットフォーム」対応です。作成できる Windows アプリは「WinUI 3」アプリになります。

「WinForms」アプリ

アプリの種類 WinForms (.NET) WinForms アプリ
非パッケージの配布 可能 可能
パッケージ化 MSI など MSI など
開発ツール Visual Studio Visual Studio
UI デザイナ あり(神) あり(神)
UI フレームワーク WinForms WinForms
開発言語 C# など C# など
UI サブシステム WinForms WinForms
API .NET .NET Framework
WinRT Win API Win API
実行環境 Win 10 以降 Win 10 以降
× Win 7 以前 Win 7 以前
導入時期 2020年 2002年

伝統的な .NET アプリです。
Visual Studio に組込された UI デザイナが「神」ですね。
アプリのコードが呼出する .NET API は、OS に組込されます。
.NET Framework から .NET に移植されました。.NET 5 以降は WinRT API の呼出も可能になっています。

「WPF」アプリ

アプリの種類 WPF (.NET) WPF アプリ
非パッケージの配布 可能 可能
パッケージ化 MSI など MSI など
開発ツール Visual Studio Visual Studio
UI デザイナ あり あり
UI フレームワーク XAML XAML
開発言語 C# など C# など
UI サブシステム WPF WPF
API .NET .NET Framework
WinRT Win API Win API
実行環境 Win 10 以降 Win 10 以降
× Win 7 以前 Win 7 以前
導入時期 2020年 2006年

上記の WinForms と同様です。
Visual Studio に用意された UI デザイナは、WinForms ほどではありません。

9
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?