ユニバーサルWindowsプラットフォーム

ユニバーサルWindowsプラットフォーム（Universal Windows Platform：ユニバーサル ウィンドウズ プラットフォーム、略称：UWP）とは、異なるデバイス向けに提供されるMicrosoft Windows用のアプリケーションソフトウェアを共通の基盤上で動作させることのできる、統合されたプラットフォームのことである。
概要.
ユニバーサルWindowsプラットフォームは、Windows 10にて導入された、様々なデバイス上で動作するアプリケーションを単一のフレームワーク上に統合する仕組みである。ターゲットデバイスを設定することで、すべてのデバイスで共通となる基本APIセットに対してデバイス固有のAPIセットを付加する形で、デバイス固有の機能を使ったUWPアプリを開発することができる。
UWPアプリの開発には、主にC#/VB.NET/C++言語とXAML、もしくはJavaScript言語とHTMLを用いる。ベースとなるフレームワークはWindowsランタイム (WinRT) だが、デバイスに応じてWindows APIやDirectX、そして.NET Frameworkを用いることも可能である。
UWPアプリに対応する最初の統合開発環境はVisual Studio 2015である。Visual StudioにてUWPアプリのプロジェクトをリリース用にビルドすると、「.NETネイティブ」と呼ばれる技術により、C#/VB.NETによって記述されたマネージコードは共通中間言語からターゲットとなるプロセッサー (CPU) アーキテクチャ固有のバイナリ（x86/x64/ARM）にコンパイルされる。これにより、アプリケーションのパフォーマンス向上やランタイム依存関係の排除といったメリットが享受できるようになる。
UWPアプリの開発環境としてフルサポートされるOSはWindows 10のみだが、Visual Studio 2015ではUWPアプリ用シミュレーターのほかにエミュレーターもサポートされ、Windows 8.1ではクロスコンパイル、リモートWindows 10上での実行、およびエミュレーター上での実行がサポートされる。
また、iOS向けのアプリケーションプロジェクトをUWPアプリとして変換・ポーティングする仕組み「Windows Bridge for iOS」や、従来のデスクトップアプリケーションをUWPアプリとしてパッケージする仕組み「Desktop Bridge」も提供されており、これらは総称として「Windows Bridge」と呼ばれている。Androidアプリの移植に関しても「Windows Bridge for Android」の提供が予定されていたが、2016年2月に開発プロジェクトの中止が発表された。
歴史.
マイクロソフト製のWindows OSやデバイスは、デスクトップPCやノートPCなどPC向けのWindows、サーバー向けのWindows Server、組み込み向けのWindows Embedded (Windows CE)、スマートフォン向けのWindows MobileやWindows Phone、そしてゲーム専用機のXboxシリーズなど、デバイスごとに異なるカーネルコードから構築されたOSがそれぞれ用意され、またAPIやSDK、アプリケーションフレームワークもOSごとに異なっていた。PC/サーバーに関してはWindows Vista/Windows Server 2008においてカーネルコードの共通化が図られたが、それ以外のプラットフォームでは依然として分断が続いていた。
2006年にはWindows XP/Windows VistaおよびXbox 360上で動作するゲームアプリケーションを統一的に開発することのできるインディーズ向けの開発・実行環境としてXNA Game Studio/XNA Frameworkがリリースされた。ただしXNAは.NET Framework/.NET Compact Framework上で動作し、また開発にはC#言語を必要とするため、ゲーム開発会社が手掛けるパッケージソフトのようにC++言語を使ったネイティブコードによる開発やアセンブラによるチューニングは行なうことができず、パフォーマンスが重要となるゲーム開発では大きな制約となった。XNAはその後Windows Phone 7で動作するゲームの開発にも対応した。
2009年にリリースされたWindows 7では、マルチタッチAPIが標準搭載され、タッチパネルを活用したデスクトップアプリケーションを開発できるようになったが、OS全体レベルでのモバイル機器への最適化やモバイルOSとのプラットフォームの共通化は行なわれていなかった。
2012年にリリースされたWindows 8では、従来のWindows APIベース（ネイティブコード）のデスクトップアプリケーションや.NET Frameworkベース（マネージコード）のデスクトップアプリケーションに加えて、新たにWindowsランタイム (WinRT) をフレームワークとするWindowsストアアプリが登場した。Windowsストアアプリは、C#/VB.NET/C++言語 + XAMLもしくはJavaScript言語 + HTMLを用いて開発される、Windowsストアを通して配布される、そしてWinRTのサンドボックス内で動作するなどの特徴を持つ。またARMデバイス向けのWindows 8としてWindows RTがリリースされたが、Windows RT上で動作するアプリケーションの開発と配布はWindowsストアアプリのみに限定されていた。Windows Phone 8ではSilverlight/XNAアプリケーションやWindows Phone向けのWinRT (WinPRT) アプリケーションが動作するが、Windows 8/Windows RT向けとは異なるSDKを用いて別々に開発する必要があり、ソースコードの互換性も確保されていなかった。
2013年にリリースされたWindows 8.1/Windows RT 8.1および2014年にリリースされたWindows Phone 8.1では、WinRTベースの「ユニバーサルWindowsアプリ」としてプラットフォームが統合され、ソースコードの互換性も向上した。
そして2015年にリリースされたWindows 10では初めて、Xbox OneやIoT向けなどを含めてOSの中核部分が単一に統合され、あらゆるデバイスに対するアプリケーションの基盤を統合するための仕組みとして「ユニバーサルWindowsプラットフォーム」が用意されることになった。Windows 10ではまた、「ユニバーサルWindowsドライバー（Universal Windows Driver、略称：UWD）」として、UWPベースの新しいデバイスドライバーAPIセットが定義され、複数のデバイス向けのドライバーを共通のインターフェイスで開発することが可能となった。