Windows 10 UWPで業務デスクトップアプリ開発はどう変わるのか?特集:UWPとは何か(2/3 ページ)

» 2015年06月23日 05時00分 公開
[山本康彦BluewaterSoft/Microsoft MVP for Windows Platform Development]

UWPのメリット

 それでは、従来のデスクトップアプリに替えてWindows 10のUWP用にアプリを開発するメリットは何だろうか? 筆者が重要だと考えているものを、順不同で述べる。

Windowsが「腐らない」

 従来のデスクトップアプリをインストールすると、レジストリへのデータ書き込みやシステムDLLの上書きなどをすることがあった。アンインストール時には、レジストリのデータやインストールしたDLLなどを完全に削除できないこともある。その結果、アプリのインストール/アンインストールを繰り返していくと徐々にWindowsの動作が遅くなっていくし、機能に支障をきたすことさえある(この現象をWindowsが「腐る」と表現することがある)。

 UWPでアプリをインストールするには「APPXパッケージ」を使う(ファイル拡張子が「.appx」となっている)。APPXパッケージでインストールする際には、レジストリへのデータ書き込みはほとんど行われない(開発者が書き込むデータを追加することはできない)。パッケージに同梱したDLLは、実行ファイルと同じ場所に格納される。このようにすることで、システムへの影響を最小限度に抑えてWindowsが「腐る」ことがないように設計されているのだ。

 また、APPXパッケージはWindowsストアや、Windows 10で提供開始される予定となっている「Windows Store for Business」で配布できる。配布やアップデートの手間が少なくて済むのである。

ユニバーサルなアプリ

 UWP用のアプリを(デバイスを限定せずに)作成すれば、前出の表のように全てのWindows 10デバイスで動作させることができる(CPU依存にしたり、アプリマニフェストでデバイスを限定したりできるので、あくまでも「そのように作れば」の話である)。一つのプロジェクト/一つのバイナリで、複数のデバイスに対応できるのである。

 なお、マルチプラットフォーム開発という面では、iOS/Android/Windows 10 UWP向けのアプリをC#やJavaScriptで開発できる環境が整いつつある(Xamarin/Unity/Cordovaなど)。

タッチ対応が簡単

 従来のデスクトップアプリでタブレット用のアプリを作ろうとすると、UIコントロールがタッチ操作を考慮して作られていないため大変な苦労をすることになった(そのような開発をするとなったらサードパーティ製のコントロールなどを利用すべきだ)。

 UWPアプリ開発に利用するWindowsランタイムのコントロールWinJSのコントロールはタッチ対応になっている。

セキュアなシステムアーキテクチャにしやすい

 UWP用のアプリが利用するWindowsランタイム/WinJSは、クライアント=サーバー型と似ているが、よりセキュアな構成となっている、いわば「クラウド型」とでも呼ぶべきシステムアーキテクチャを前提としている(次の図)。クライアントからDBサーバーなどに直結させず、Webサービスを介する形態である。これにより重要な情報やタスクが分離されるので、クライアントがサイバー攻撃を受けたとしても情報漏えいは最小限に抑えられるのだ。

 また、UWP用のアプリがインストールされるフォルダーは、管理者権限があってもその中を見ることさえできない。アプリを改ざんしようとする攻撃にも強いのである。さらに、Windowsストア/Windows Store for Businessで配布するAPPXパッケージは、Windows 10 Enterpriseエディションの新機能「Device Guard」とも相性がよい(Device Guardの下で従来のデスクトップアプリを使うことも可能ではあるが、デジタル署名にまつわる面倒を全て見ることになる)。

「クラウド型」システムアーキテクチャ 「クラウド型」システムアーキテクチャ
筆者の造語である。すでに適切な呼び名があるかもしれない。
UWPは、このようなアーキテクチャを前提として設計されている。
基幹サーバー群と一般のクライアントとはネットワークを分離し、必ずWebサービスを介するようにする。クライアントのアプリはWebサービスのフロントエンドとして作成し、情報の取得は必要最小限にとどめる。データを全件取得するといった「危険な」Webサービスを作らない限り、クライアントがサイバー攻撃を受けたとしても重要な情報が大量に漏えいするリスクは極めて低くなるだろう。また、重要な情報の印刷(例えばDM封筒の大量印刷)などのタスクも基幹ネットワーク側の物理的に隔離された場所で行うようにする。

UWPのデメリット

 従来のデスクトップアプリ開発と比べたとき、Windows 10のUWP用アプリにはデメリットもある。従来はできていたことができなくなるのだが、しかしそれはUWPのメリットの裏返しでもある。

システムアーキテクチャが限定される

 前述した「クラウド型」システムアーキテクチャに立脚したセキュアなシステムを構築しやすいが、クライアントPCとDBサーバーを直結するようなクライアント=サーバー型のシステムを開発するのは困難である。「クラウド型」システムアーキテクチャを前提としているWindowsランタイムでは、クライアントPCからADO.NETやEntity Frameworkを使ってDBサーバーに直接接続する機能が提供されていないのだ。

ローカルリソースの利用が制限される

 UWPアプリでは、ローカルリソースの利用が制限されている。従来のデスクトップアプリでは、クライアントPCのファイルや接続されているプリンターなどをほぼ自由に活用できたし、実行中の他のプロセスにもアクセスできた。ところがUWPアプリでは、ファイルアクセスや印刷を行うには原則としてエンドユーザーの操作が必要なのである。また、プロセス間の情報交換はUWPが中継するものだけに限定されている。

 この制限はセキュリティを侵害するようなマルウエアを作らせないためであるが*2、従来のデスクトップアプリに与えられていた自由な環境に比べると窮屈な思いをすることになる。

配布方法が限定されている

 UWPアプリのインストールはAPPXパッケージで行うが、その配布はマイクロソフトのWindowsストアか、あるいはデジタル署名を管理している組織では「サイドローディング」という手段を利用する。配布経路の途中で改ざんされないようにするためである。そのために、従来のデスクトップアプリのように、インストールパッケージを自由に配布して導入するというわけにはいかない。

 これもセキュリティが向上したことの裏返しである。Windows 10で導入される企業ユーザー向けの「Windows Store for Business」を利用すれば、組織内での配布は楽になるだろう。

Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。