ユニバーサル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セットが定義され、複数のデバイス向けのドライバーを共通のインターフェイスで開発することが可能となった。 [脚注の使い方] ^ C++に関しては、C++/CX（英語版）と呼ばれるマイクロソフト独自の拡張が施された言語を用いることになる。なおC++/CXはC++/CLIとは異なり、マネージ言語拡張ではなくネイティブ言語拡張となっている。のちにC++/WinRTと呼ばれる、標準C++17を活用したサポートライブラリが導入され、独自拡張のC++/CXを使わずとも開発できるようになった。 ^ ただしXAMLデザイナーは使用できない。 ^ ユニバーサル Windows プラットフォーム (UWP) アプリのガイド - Windows app development ^ C++/WinRT の概要 - UWP applications | Microsoft Docs ^ ユニバーサル Windows プラットフォーム (UWP) 開発者にとっての .NET ネイティブの意味 - Visual Studio 日本チーム ブログ - Site Home - MSDN Blogs ^ GitHub - microsoft/WinObjC: Objective-C for Windows ^ Windows デスクトップ ブリッジ アプリのテスト - UWP applications | Microsoft Docs ^ さまざまな開発者の参入を可能にする「ユニバーサルWindowsプラットフォームブリッジ」入門 (1/4)：CodeZine（コードジン） ^ An Update on the Developer Opportunity and Windows 10 | Building Apps for Windows ^ MS、アプリをUWP化する「Windows Bridge」の最新情報を公開--Android用は終了 - ZDNet Japan ^ 特集 : Windows Server 2008: Windows Server 2008 カーネルの変更について ^ Windowsの歴史 Windows Server 2008編：同じカーネルを持つ「Vista」とは対照的に早くから支持を得たサーバOS - builder by ZDNet Japan ^ GDC 2008 チュートリアルセッションレポート“XNA Game Studio Developer Day” ^ Windowsタブレット向けマルチタッチアプリ開発（1）：Windowsでもスマートにできるマルチタッチの基礎知識 (1/2) - ＠IT ^ 特集：Windowsストアアプリ開発最新情報（Build 2014より）：ユニバーサルWindowsアプリ開発の勧め (1/4) - ＠IT ^ ユニバーサル Windows プラットフォーム (UWP) 向けアプリの開発 ^ ユニバーサル 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ストア 表示 編集