UWP(Universal Windows Platform):Tech Basics/Keyword
Windows 10から利用できるようになった新しいアプリ実行プラットフォーム「UWP」。今後のWindowsアプリのありようを大きく変えることになるのか?
「UWP Universal Windows Platform)」とは、デスクトップPCやタブレット、携帯電話、IoTデバイスなど、さまざまな種類のデバイス上で動作するように作られた、Windowsアプリケーションの実行基盤のこと。UWP上で動作するアプリケーションを「UWPアプリ(Universal Windows Platform App)」といい、(原理的には)同じアプリケーションが全てのWindowsデバイス上でそのまま同じように使える。
さまざまなデバイスに対応するUWP
Windows 10以降、PCでもスマートフォン/タブレットでも、さらにはゲーム機やIoT向け小型ボードコンピュータなどでも、OSのベースアーキテクチャは統一されており、同じUWPアプリケーションが利用できる。
UWPが初めて実装されたのはWindows 10である。次のようにWindows 10の各エディションでUWPアプリを実行できる。
OS | 機能 |
---|---|
Windows 10 | ・PC/ノートPC/(大画面)タブレット向けのWindows 10。従来のWindows向けアプリとUWPアプリを実行可能 |
Windows 10 Mobile | ・スマートフォン/(小画面)タブレット向けのWindows 10。UWPアプリのみを実行可能。 ・小画面とは、おおむね8インチ以下の画面を指す ・→Tech Basics「Windows 10 Mobile」解説参照 |
Windows 10 IoT | ・組み込みボードコンピュータ向けの省メモリOS ・IoT(Internet of Thing)向けのWindows OS ・1GB程度のメモリを持つ、x86やARM CPUなどの小型ボードコンピュータをサポート ・→連載「Windows 10 IoT Coreで始めるIoT入門」参照 |
その他のWindows 10 | ・「Surface Hub」(複数ユーザーでの協調作業向けの大型画面デバイス)や「HoloLens」(VRデバイス)、「Xbox One」(ゲーム機)などに向けた、カスタマイズされたWindows 10が供給されている。これらのデバイスでも同じUWPアプリを実行できる |
UWPが利用できるさまざまなWindows 10ファミリー |
UWPの実体は、Windows 8やWindows Phone 8で実装された「Windows Runtime」APIをいくらか拡張したもので、その後継/代替という位置付けでもある。
UWPの内部アーキテクチャ
UWPは、従来のPC向けのWindows OSで利用されていたWin32 APIや.NET Frameworkなどをベースとしている。その一方で、UWPアプリを動作させるためのAPIセットは、それらとは全く別に新たなものとして定義されている。
Windows 10におけるUWPアプリ実行環境
UWPは、さまざまなデバイスに対応する新しいアプリケ−ジョン実行環境であり、Windows 8以降で追加されたWindows Runtimeをベースとしている。PC向けのWindows 10には、従来のWindowsアプリケーション(デスクトップアプリ)を実行するための環境もあるが、それ以外のWindows 10にはUWPの部分しかなく、(基本的には)UWPアプリしか実行できない。
Windows 7のような古いOSと比較すると、UWPとその上にあるUWPアプリのサポート部分が増えただけで、デスクトップアプリのサポートに関する部分(Win32や.NET Framework)の部分などは同じである。PC向け以外のWindows 10ではUWPの部分しかなく、UWPアプリしか実行できない。
PC向けのWindows 10はx86/x64 CPUのみをサポートしている(Windows 8のARM CPUサポートはWindows 10ではなくなった)。その他のデバイス向けにはARM CPUもサポートされる。
UWPアプリの特徴
UWPアプリは、主にスマートフォンでの利用を強く意識したアーキテクチャになっており、次のような特徴を持つ。
●スマートフォン向けの新デザイン/UI
小さい画面でも見やすくなるように、シンプルでフラットなデザインで、タッチ操作向きのUIを備えている。アプリは基本的には全画面モードで動作する。ただし、PC向けWindows 10では自由にアプリウィンドウのサイズを変更/再配置できる。
●さまざまな画面サイズ/デバイスに対応
UWPが利用できるデバイスにはさまざまな画面サイズがあり、例えば小さいスマートフォン向けのUIをそのまま大画面に拡大して使うと、非常に使いづらいものになる。これを避けるため、UWPアプリでは画面解像度に応じてUI部品の配置やデザインを切り替えたり、表示を省略したりするようになっている。これを「アダプティブUI(適用的なUI)」という。
もっとも、このデザイン変更はシステムによって完全に自動的に行われるのではなく、画面解像度などに応じて切り替わるように、あらかじめアプリ開発者自身が設計しておくものである。
画面サイズだけでなく、デスクトップPCとモバイルデバイスでは利用できるデバイスやAPIなどにも差があるため、これらに対しても開発者は対応する(「アダプティブデザイン」にする)必要がある。
●さまざまな開発言語/ライブラリをサポート
UWPアプリはデスクトップアプリとは互換性はない。一方、そのプログラミング手法や利用できるライブラリなどは似通っている。
例えば.NET Frameworkでよく使われるC#やVisual Basicが使えるし、Webアプリケーションで多く使われているJavaScriptやHTMLもそのまま使える。パフォーマンスを求める場合はC++とDirectXなども利用できるし、一部の.NET FrameworkやWin32 APIもそのまま使えるようになっているので、ある程度の互換性もある。
●Windowsストアを通じたアプリの配布
UWPアプリは、Windowsストアを通じてのみ配布できる(企業向けには、社内で直接配布する「サイドローディング」も利用可能)。さまざまなCPUアーキテクチャに対するバイナリの配布やバージョンアップなどが一元的に行える。
またUWP以外に向けて作られたアプリケーションをラップして、ほぼそのままUWPアプリ化する「ブリッジ」機能を利用すると、それらのアプリもWindowsストアで管理できる。AndroidやiOS向けのアプリを少ない手間でアプリ化するブリッジ機能も開発中である。
UWPの実行には新しいWindows OSが必要
UWPアプリを実行するにはWindows 10の利用が必須となる。現在まだ多く使われているWindows 7などでは利用できない。
そのため、社内アプリなどを展開・運用する立場で考えると、新規作成するアプリをUWPアプリにするか、それとも旧来のデスクトップアプリにするか、判断するのは難しい。
例えば社内アプリをUWPアプリで作成すると、Windows 10にアップグレードしない限り利用できない。かといって、あまり将来性のないWindows 7に向けて(Windows 7のサポート終了は2020年1月)、デスクトップアプリを今から新規開発するのもためらわれる。
将来的にはUWPアプリが主流になるのは間違いないだろうから、UWPアプリへの移行に備えた準備は必要だろう。(Windows 10にアップグレードするか、Windows 7システムでは利用しないなど)状況が許されるならUWPアプリにするか、UWPへの習熟も兼ねてUWPアプリとアーキテクチャが近い「WPF(Windows Presentation Foundation)」アプリにしておくか、JavaScriptやHTMLなどを活用するWebベースのアプリにする(Windows OSへの依存度が低くなり、将来UWPアプリへ移行しやすい)、といった方法が考えられる(関連リンクの記事参照)。
■関連リンク
- 特集「UWPで業務デスクトップアプリ開発はどう変わるのか?」(Insider.NET)
- 特集「Windowsフォーム開発者のためのWindows 10 UWPアプリ開発入門」(Insider.NET)
- 「ユニバーサル Windows プラットフォーム (UWP) アプリのガイド」(マイクロソフトMSDNサイト)
Copyright© Digital Advantage Corp. All Rights Reserved.