58
55

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 アプリの開発手段の選択肢をまとめてみた

58
Last updated at Posted at 2020-06-28

はじめに

Windows アプリの開発手段は幾つもあります。新たにアプリを作るときにどれを選ぶのがいいでしょうか。
知りたくて幾つか記事を読んでみました。例えば、

これまで使ったことのないコンセプトも出てきてよく分からないし、新たに聞く用語もあるので調べてみるがさらに分からなくなります。
記事を読んでいて混乱する理由は、記事で同列に並べられているコンセプトが、実は異なるレイヤーのもののようだと分かってきました。
そこで、用語とコンセプトを整理してみました。

Windows アプリの種類と概要

アプリの種類と概要を整理して、キーワードを調べてみました。

アプリケーションの種類 UWP アプリ デスクトップアプリ
配布方式 主に Microsoft Store 経由 直接ダウンロード可能
パッケージ形式 APPX MSI または独自インストーラ
開発ツール Visual Studio VS など 右のいずれか VS VS VB VC++ など VC++ など
UI フレームワーク XAML HTML XAML WinForms 独自 MFC など なし
開発言語 C# など JavaScript C# など C# など VB C++ など C++ など
UI サブシステム WinUI WPF WinForms VB ランタイム ×
API WinRT .NET Framework VB ランタイム ×
×(Win API) Win API
実行環境 Win 10
× Win 7 以前
  • Windows API とは、Microsoft Windows のシステムコール用 API のこと。特に Windows 95 以降や Windows NT で利用できるものは Win32 API と呼ばれる。
    (Windows API - Wikipedia)

  • .NET Framework は、実行中のアプリにさまざまなサービスを提供する、Windows 向けのマネージド実行環境です。
    実行中のアプリを処理する実行エンジンである共通言語ランタイム (CLR) と、開発者が独自のアプリから呼び出すことができる検証済みの再利用可能なコード ライブラリである .NET Framework クラス ライブラリから構成されています。
    (.NET Framework の概要 | Microsoft Docs)

  • WinForms(Windows Forms) は、.NET Framework に含まれるグラフィカルユーザーインターフェイス API である。Windows API(GDI/GDI+)をマネージコードでラップし、Windows のユーザーインターフェイス要素へのアクセスを提供するフレームワークである。
    従来から Visual C++ 用に提供されていた、複雑なネイティブ C++ ベースの MFC や、旧 Visual Basic(VB6)のフォームにとって代わるものとされる。
    (Windows Forms - Wikipedia)

  • WPF(Windows Presentation Foundation) は、.NET Framework 3.0 以降に含まれるユーザインタフェースサブシステムである。
    (Windows Presentation Foundation - Wikipedia)
    WPF は、Extensible Application Markup Language (XAML) を使用して、アプリケーションのプログラミング用に、宣言型モデルを提供します。
    (WPF とは - Visual Studio | Microsoft Docs)

  • UWP(Universal Windows Platform) は、異なるデバイス向けに提供される Windows 用のアプリを共通の基盤上で動作させることのできる、統合されたプラットフォームである。
    Windows 8 で、従来の Win APIベース(ネイティブコード)のデスクトップアプリや、.NET Frameworkベース(マネージコード)のデスクトップアプリに加えて、新たに WinRT をフレームワークとする Windows Store アプリが登場した。Windows Store アプリは、C#/VB.NET/C++言語+XAML もしくは JavaScript 言語+HTML を用いて開発される、Windows Store を通して配布される、WinRT のサンドボックス内で動作するなどの特徴を持つ。
    Windows 8.1 で、WinRT ベースの「ユニバーサル Windows アプリ」としてプラットフォームが統合された。
    Windows 10 で、あらゆるデバイスに対するアプリケーションの基盤を統合するための仕組として「ユニバーサル 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)

  • XAML(Extensible Application Markup Language)とは、Microsoft によって開発された、アプリケーションソフトのユーザーインターフェースを記述するための言語仕様のことである。
    XML をベースとしたマークアップ言語であり、例えば HTML が Web ページの構造を定義するように、アプリケーションの外観やボタン配置などを設定することができる
    (XAMLとは何? Weblio辞書)

  • デスクトップブリッジは、従来のデスクトップアプリ(.NET Framework のものとは限りません)を「UWP アプリ化」する技術です。
    「UWP アプリ化」によって、まず、アプリの配布方法が UWP アプリと同じになります。一般向けの Microsoft Store などで公開したり、購入したデジタル証明書を使って署名したパッケージを配布したりできます。
    「UWP アプリ化」したアプリには、UWP のパッケージ ID が与えられます。これによって、従来のデスクトップアプリからは利用できなかった UWP の API の一部が、利用できるようになります。
    (簡単になったUWP Bridge:CodeZine)

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

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

「Win API」アプリ

いわゆる「Windows ネイティブ」なデスクトップアプリです。

アプリケーションの種類 デスクトップアプリ
開発ツール VC++ など VC++ など
UI フレームワーク MFC など なし
開発言語 C++ など C++ など
UI サブシステム ×
API ×
Win API
実行環境 Win 10
Win 7 以前

「WinForms」アプリ

.NET Framework で用意された WinForms を利用するデスクトップアプリです。

アプリケーションの種類 デスクトップアプリ
開発ツール Visual Studio
UI フレームワーク WinForms
開発言語 C# など
UI サブシステム WinForms
API .NET Framework
Win API
実行環境 Win 10
Win 7 以前

「WPF」アプリ

.NET Framework で用意された WPF(Windows Presentation Foundation) を利用するデスクトップアプリです。

アプリケーションの種類 デスクトップアプリ
開発ツール Visual Studio
UI フレームワーク XAML
開発言語 C# など
UI サブシステム WPF
API .NET Framework
Win API
実行環境 Win 10
Win 7 以前

「UWP」アプリ

Windows 10 で用意された UWP(Universal Windows Platform) を利用します。UWP は、新たに用意された WinRTWinUI を含みます。

アプリケーションの種類 UWP アプリ
配布方式 主に Microsoft Store 経由
パッケージ形式 APPX
開発ツール Visual Studio VS など 従来
UI フレームワーク XAML HTML
開発言語 C# など JavaScript
UI サブシステム WinUI
API WinRT
×(Win API)
実行環境 Win 10
×

WinUI を使うことで、いわゆる「モダンな」見かけのアプリが作れます。
WinRT アプリは、Win API を呼出できません。
Microsoft Store を通して配布されます。
従来のデスクトップアプリもデスクトップブリッジを使って UWP アプリ化できます。

「Xamarin」アプリ

Xamarin は「マルチプラットフォーム」対応ですが、そのうち .Forms を使って 「UWP」アプリが作成できます。

アプリケーションの種類 UWP アプリ
開発ツール Visual Studio
UI フレームワーク XAML
開発言語 C#
UI サブシステム WinUI
API WinRT
×(Win API)
実行環境 Win 10
×

「Delphi」アプリ

Delphi を使うと、「Win API」アプリが作成できます。ただし、WinRT API を呼出することもできるようです。

アプリケーションの種類 デスクトップアプリ
開発ツール Delphi
UI フレームワーク FireMonkey VCL
開発言語 Delphi 言語(Object Pascal)
UI サブシステム 独自 独自
API WinRT × ×
×(Win API) Win API Win API
実行環境 Win 10
× Win 7 以前

「Electron」アプリ

Electron も「マルチプラットフォーム」対応ですが、作成できる Windows アプリは 「Win API」アプリになります。アプリのコードは、Electron が用意する Chromium の描画システムと Node.js の API を利用できます。

アプリケーションの種類 デスクトップアプリ
開発ツール VS など
UI フレームワーク HTML
開発言語 JavaScript
UI サブシステム (Chromium)
API (Node.js)
Win API
実行環境 Win 10
Win 7 以前

おわりに

「UWP アプリ」前後の経緯を整理してみました。

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

58
55
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
58
55

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?