• 会員限定
  • 2022/06/21 掲載

ユニバーサルWindowsプラットフォーム(UWP)とは?その存在意義は今、どこにあるのか

山市良のマイクロソフトEYE

  • icon-mail
  • icon-print
  • icon-hatena
  • icon-line
  • icon-close-snsbtns
会員になると、いいね!でマイページに保存できます。
ユニバーサルWindowsプラットフォーム(UWP)は、Windows 10およびWindows 11のデスクトップアプリの開発、実行環境の1つであり、“モダン”と表現される技術やエクスペリエンスの中核に位置します。登場時の印象から、UWPアプリは制限されたサンドボックス環境で実行されるというイメージを持つ人は多いと思いますが、現在は必ずしもそうではありません。
画像
画面1:Windows 8.1のストアアプリ(メトロアプリ)の例。全画面またはこの例のように縦2分割表示で実行される。ディスプレイ解像度は最低でも1024×768が必要だった

制限の多い安全な実行環境だった「メトロアプリ」時代

 ユニバーサルWindowsプラットフォーム(UWP)は、Windows 8で初めて導入され、メトロ(Metoro)アプリ、ストアアプリ、イマーシブ(没入型)アプリなど、さまざまな名称で呼ばれたモダンアプリの開発、実行環境です。

 当時のモバイルデバイス向けのOSであったWindows Phoneとは技術的に異なりますが、Windowsストア(現在のMicrosoft Store)という共通のストアを通じて、開発者がマイクロソフトに申請し、承認されたアプリのみが有料または無料、またはOSにビルトインされる形で提供されました。

 当時のUWPアプリは、アプリコンテナ(AppContainer)と呼ばれる特権やアクセス範囲が制限されたサンドボックス環境の中でアプリケーションが実行され、ユーザーは1024×768以上の解像度のディスプレイに全画面(または縦方向の2分割表示)した状態で対話することができました。また、起動するにはスタート画面からしか起動できず、アプリの終了という概念がなく、特権的な操作を行う方法を持ちませんでした(冒頭の画面1参照)。

 それは、ウィンドウを自由にリサイズでき、実行可能ファイルのダブルクリックで起動し、ウィンドウを閉じる操作で終了でき、管理者権限(特権の昇格により)や別のユーザー(Runasコマンド)としても実行できる従来のWin32デスクトップアプリとはまったく異なる世界でした。

 UWPアプリのサンドボックス環境は、「アプリコンテナ」と呼ばれ、ユーザーアカウント制御(UAC)の基礎になっている特権の制限レベル「整合性レベル(Integrity Level)」の「低(Low)」よりも権限が制限された「AppContainer」で実行されます。また、開発者により宣言された「ケーパビリティ(Capability)」と呼ばれるアクセス許可(インターネット接続やホームネットワークと社内ネットワークなどのネットワーク範囲、画像や音楽などのリソース、カメラやマイクなどのデバイス、ファイルピッカーによる間接的なファイルシステムへのアクセス)のみでアプリコンテナの外部のデバイスやリソースとやり取りできました。

 この制限された環境は、Windowsのデスクトップアプリケーションのための新たなセキュリティ境界になり、システムのセキュリティ向上につながるものでした。ビルトインアプリとWindowsストアのアプリのみを使用できる、Windows RT/RT 8.1(既に開発終了、2023年1月でサポート終了)のセキュリティと安定性を高く維持するのにも無くてはならないものでした。


事実上、何でもできる現行版

 現在のWindows 10およびWindows 11のUWPアプリはどうかというと、解像度要件の削除、ウィンドウの自由なリサイズや配置、重ね合わせができるようになったのはもちろんのこと、UWPアプリでできることも大幅に増えています。Windows 10の最初のリリースからそうだったわけではありませんが、サービスとしてのWindows(Windows as a Service)の半期チャネル(SAC)という短いサイクルで少しずつ機能強化されてきました。

 特定のUWPアプリが要求するケーパビリティ、つまり使用するためにはユーザーが受け入れる必要があるアクセス許可は、Mirosoft Storeのアプリのページの「追加情報」にある「このアプリでは次のことができます」(筆者はこの日本語訳が適切でないと思っています)で確認できます。たとえば、「Windows電卓」アプリは、「インターネット接続にアクセスする」のケーパビリティを使用します(「為替レートの更新」のために必要なようです)。

 では、「WinDbg Preview」アプリの「このアプリでは次のことができます」を確認してみてください。そこには「すべてのシステムリソースを使用する」が含まれているのが分かるでしょう。このアプリは、アプリケーションやカーネル(ローカルまたはリモート)のデバッグを行うための「Debugging Tools for Windows」のUWPアプリ版であり、デバッガーでデバッグを行うには、管理者権限やデバッグ特権といった高い権限が必要です(画面2)。

画像
画面2:「WinDbg Preview」のアクセス許可には「このアプリでは次のことができます」とあり、「管理者として実行」することもできる(アクセス許可に「管理者として実行」のあるなしに関係なく)

 「すべてのシステムリソースを使用する」が許可されたアプリは、デスクトップブリッジやCentennialアプリとも呼ばれる種類の比較的新しいタイプのアプリであり、Win32アプリケーションを「Desktop App Converter」(現在は非推奨)やその後継の「MSI Packaging Tool」で変換、パッケージ化したものです。

 Centennialアプリは、制限されたアプリコンテナの中で実行される従来のUWPアプリとは異なり、レジストリとファイルシステムを仮想化(ローカルの実際のレジストリやシステムファイルを変更しないように)する薄いレイヤー上で実行されます。インストール先は通常のUWPアプリと同じように、「C:\Program Files\WindowsApps\<パッケージの完全名(Get-AppXPackageのPackageFullName)>\」になりますが、実行されたものは通常のWin32アプリケーションと同じです。管理者として特権を昇格して実行することも可能です。つまり、事実上何でもできるのです。

 画面3は、Windows SysinternalsのProcess Explorerを使用して、WinDbg Previewのローカルカーネルデバッグ中のプロセスを参照したものです。整合性レベルは通常のUWPアプリの「AppContainer」ではなく、最上位の「高(High)」で実行されているのが分かるでしょう。

画像
画面3:ローカルカーネルデバッグ中のWinDbg Previewのプロセスは、最上位の整合性レベル「高(High)で動作している

【次ページ】コンソールアプリの開発もサポート
関連タグ タグをフォローすると最新情報が表示されます
あなたの投稿

    PR

    PR

    PR

処理に失敗しました

人気のタグ

投稿したコメントを
削除しますか?

あなたの投稿コメント編集

機能制限のお知らせ

現在、コメントの違反報告があったため一部機能が利用できなくなっています。

そのため、この機能はご利用いただけません。
詳しくはこちらにお問い合わせください。

通報

このコメントについて、
問題の詳細をお知らせください。

ビジネス+ITルール違反についてはこちらをご覧ください。

通報

報告が完了しました

コメントを投稿することにより自身の基本情報
本メディアサイトに公開されます

必要な会員情報が不足しています。

必要な会員情報をすべてご登録いただくまでは、以下のサービスがご利用いただけません。

  • 記事閲覧数の制限なし

  • [お気に入り]ボタンでの記事取り置き

  • タグフォロー

  • おすすめコンテンツの表示

詳細情報を入力して
会員限定機能を使いこなしましょう!

詳細はこちら 詳細情報の入力へ進む
報告が完了しました

」さんのブロックを解除しますか?

ブロックを解除するとお互いにフォローすることができるようになります。

ブロック

さんはあなたをフォローしたりあなたのコメントにいいねできなくなります。また、さんからの通知は表示されなくなります。

さんをブロックしますか?

ブロック

ブロックが完了しました

ブロック解除

ブロック解除が完了しました

機能制限のお知らせ

現在、コメントの違反報告があったため一部機能が利用できなくなっています。

そのため、この機能はご利用いただけません。
詳しくはこちらにお問い合わせください。

ユーザーをフォローすることにより自身の基本情報
お相手に公開されます