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

ユニバーサルWindowsプラットフォーム（Universal Windows Platform：ユニバーサル ウィンドウズ プラットフォーム、略称：UWP）とは、異なるデバイス向けに提供されるMicrosoft Windows用のアプリケーションソフトウェアを共通の基盤上で動作させることのできる、統合されたプラットフォーム。

 概要 
ユニバーサルWindowsプラットフォームは、Windows 10にて導入された、様々なデバイス上で動作するアプリケーションを単一のフレームワーク上に統合する仕組みである。ターゲットデバイスを設定することで、すべてのデバイスで共通となる基本APIセットに対してデバイス固有のAPIセットを付加する形で、デバイス固有の機能を使ったUWPアプリを開発することができるユニバーサル Windows プラットフォーム (UWP) アプリのガイド - Windows app development。

UWPアプリの開発には、主にC#/VB.NET/C++C++/WinRT の概要 - UWP applications | Microsoft Docs言語と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）にコンパイルされるユニバーサル Windows プラットフォーム (UWP) 開発者にとっての .NET ネイティブの意味 - Visual Studio 日本チーム ブログ - Site Home - MSDN Blogs。これにより、アプリケーションのパフォーマンス向上やランタイム依存関係の排除といったメリットが享受できるようになる。

UWPアプリの開発環境としてフルサポートされるOSはWindows 10のみだが、Visual Studio 2015ではUWPアプリ用シミュレーターのほかにエミュレーターもサポートされ、Windows 8.1ではクロスコンパイル、リモートWindows 10上での実行、およびエミュレーター上での実行がサポートされる。

また、iOS向けのアプリケーションプロジェクトをUWPアプリとして変換・ポーティングする仕組み「Windows Bridge for iOS」GitHub - microsoft/WinObjC: Objective-C for Windowsや、従来のデスクトップアプリケーションをUWPアプリとしてパッケージする仕組み「Desktop Bridge」Windows デスクトップ ブリッジ アプリのテスト - UWP applications | Microsoft Docsも提供されており、これらは総称として「Windows Bridge」と呼ばれているさまざまな開発者の参入を可能にする「ユニバーサルWindowsプラットフォームブリッジ」入門 (1/4)：CodeZine（コードジン）。Androidアプリの移植に関しても「Windows Bridge for Android」の提供が予定されていたが、2016年2月に開発プロジェクトの中止が発表されたAn Update on the Developer Opportunity and Windows 10 | Building Apps for WindowsMS、アプリをUWP化する「Windows Bridge」の最新情報を公開--Android用は終了 - ZDNet Japan。

 歴史 
マイクロソフト製の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においてカーネルコードの共通化特集 : Windows Server 2008: Windows Server 2008 カーネルの変更についてWindowsの歴史 Windows Server 2008編：同じカーネルを持つ「Vista」とは対照的に早くから支持を得たサーバOS - builder by ZDNet Japanが図られたが、それ以外のプラットフォームでは依然として分断が続いていた。

2006年にはWindows XP/Windows VistaおよびXbox 360上で動作するゲームアプリケーションを統一的に開発することのできるインディーズ向けの開発・実行環境としてXNA Game Studio/XNA Frameworkがリリースされた。ただしXNAは.NET Framework/.NET Compact Framework上で動作し、また開発にはC#言語を必要とするため、ゲーム開発会社が手掛けるパッケージソフトのようにC++言語を使ったネイティブコードによる開発やアセンブラによるチューニングは行なうことができず、パフォーマンスが重要となるゲーム開発では大きな制約となったGDC 2008 チュートリアルセッションレポート“XNA Game Studio Developer Day”。XNAはその後Windows Phone 7で動作するゲームの開発にも対応した。

2009年にリリースされたWindows 7では、マルチタッチAPIが標準搭載され、タッチパネルを活用したデスクトップアプリケーションを開発できるようになったWindowsタブレット向けマルチタッチアプリ開発（1）：Windowsでもスマートにできるマルチタッチの基礎知識 (1/2) - ＠ITが、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アプリ」としてプラットフォームが統合され、ソースコードの互換性も向上した特集：Windowsストアアプリ開発最新情報（Build 2014より）：ユニバーサルWindowsアプリ開発の勧め (1/4) - ＠IT。

そして2015年にリリースされたWindows 10では初めて、Xbox OneやIoT向けなどを含めてOSの中核部分が単一に統合され、あらゆるデバイスに対するアプリケーションの基盤を統合するための仕組みとして「ユニバーサルWindowsプラットフォーム」が用意されることになったユニバーサル Windows プラットフォーム (UWP) 向けアプリの開発。Windows 10ではまた、「ユニバーサルWindowsドライバー（Universal Windows Driver、略称：UWD）」として、UWPベースの新しいデバイスドライバーAPIセットが定義され、複数のデバイス向けのドライバーを共通のインターフェイスで開発することが可能となったユニバーサル Windows ドライバーの概要 (Windows Drivers)Getting Started with Universal Windows drivers[Windows 10 Mobileで何が変わる？　マイクロソフト高橋氏に聞く] iPhone、Androidからもアプリ移行を促すMSの本気 - ケータイ Watch。

 脚注 

 注釈 

 出典 

 関連項目 
 Microsoft Windows 10
 Microsoft Windows 10 Mobile
 Microsoft Windows 10 IoT
 Windowsランタイム
 Windows API
 Windowsストア

Category:Windows 10
Category:Windows API