マイクロソフト研究所

Win32からUWPへ――、アプリケーションの移行を進めるMicrosoft

 Windows 10 Creators Update(以下、Creators Update)は、Virtual Reality(VR)/Argument Reality(AR)などで使う3Dグラフィックス機能の強化、ゲーム関連の機能強化などが目を引くが、隠れた部分で大きな方針の転換が見える。

 今までのWindows OSでは自由にインストールできたWin32アプリケーションのインストールを制限し、UWP(Universal Windows Platform)アプリへのシフトを加速しようとしている。

アプリのインストールを制限する機能が追加された

 Creators Updateの「アプリと機能」には、新たに「アプリのインストール」という項目が追加された。この項目では、3つの選択肢が用意されている。「任意の場所からのアプリを許可する」、「ストア以外からのアプリをインストールする前に警告する」、「ストアからのアプリのみを許可する」だ。

Creators Updateでは、アプリケーションのインストールをコントロールする設定が用意された(画面はCreators Update Insider Preview Build 15063より)

 ストアからアプリをインストールするかどうかのコントロールだと思うかもしれないが、ストアではUWPアプリ(注:一部Windowsストアアプリを含む)しか配布していないため、「ストアからのアプリのみを許可する」を選択すれば、UWPアプリのインストールしかできなくなる。

 例外として、CD/DVDドライブからのパッケージソフトのインストールは「ストアからのアプリのみを許可する」モードでもインストール可能だったが、インターネットからダウンロードしたアプリケーションはインストールできない。

 またUWPアプリであっても、入手先がWindowsストアに限られてしまうため、UWPアプリのサイドバイサイド(Appxを入手してローカルPCにインストールするやり方)でのインストールも禁止される。

 なお、デフォルトでは「任意の場所からのアプリを許可する」に設定されているため、今までと同じようにすべてのアプリケーションがインストールできる。すぐにWin32アプリケーションが利用できなくなる、という話ではないので、その点はご安心を。

「ストアからのアプリのみ許可」に設定すると、Win32アプリケーションをインストールしようとした際に、警告が表示される。この画面では、ストアにジャンプするボタンが用意されている(画面はCreators Update Insider Preview Build 15063より)
「ストア以外からのアプリをインストールする前に警告する」に設定すると、アプリケーションのインストール時に警告が表示される。2つのボタンが表示され、ストアにジャンプするか、そのままインストールするかの選択が可能(同)

 この機能は、「アプリと機能」のUIからだけでなく、グループポリシーでも設定できるようになるだろう。これが実現すると、企業においてはグループポリシーを設定することで、ドメイン環境では、勝手にWin32アプリケーションをネットからダウンロードしてインストールする、といったことを制限できるようになる。

 違法に入手したソフトウェアを導入することによるライセンス違反や、勝手に持ち込まれ、マルウェアに感染したソフトウェアのインストールを防止できるので、クライアントPCのセキュリティレベルを高く保つことが可能になるわけだ。

 IT管理者としては大きなメリットと考えられるが、一切、Win32/.Netアプリケーションがインストールできなくなるのは大きな問題だ。

 そこで用意されたのが、Win32/.NetアプリケーションをUWPアプリとして動作させるツール「Desktop App Converter(DAC)」である。

 DACでは、Win32/.Netアプリケーションを仮想化し、UWPアプリとしてラッピングする。これにより、Win32/.Netアプリケーションでありながら、動作モードとしてはUWPアプリとして動くようになる。

Win32アプリをコンテナ化してUWPアプリに

 DACでは、動作しているWindows OSのイメージファイルと、UWPアプリ化するWin32/.Netアプリケーションが必要になる。

 DACの仕組みに関しては以前の記事で紹介したので詳細は省くが、簡単にいえば、アプリケーションが使用するOSの部分を含めてコンテナ化するもの。MicrosoftがSA(Software Assurance)ユーザーに提供しているApp-Vの機能なども一部使われているようだ。

 コンテナをUWPアプリとしてパッキングする仕組みのため、仮想化されたレジストリをUWPアプリ内部で持っており、Win32/.Netアプリケーションがレジストリを使用しても、OS本体のレジストリを書き換えたり、項目を追加したり、といったことは行わない。

DACは、Win32/.NetアプリケーションをUWPでラップして動かす(出典:De:Code2016の資料より)
以前のWindows OSで問題になっていたDLL問題やレジストリの“汚染”などが回避できる(出典:Build2016のセミナー資料より)

 Win32/.Netアプリケーションの実行ファイルがあればUWPアプリ化できるので、企業にある古い業務アプリケーションをUWP化することも可能だ。ソースコードがなくても、単にUWPアプリ化するだけなら、DACで何とかなる(このほか、タイルのイメージを作成したり、マニフェストファイルを作成したり、署名をしたりする作業は必要になる)。

 ただし、DACを使えばすべてのWin32/.NetアプリケーションがUWPアプリ化できるわけではない。例えば、ソフトウェア本体のインストール途中でドライバなどをインストールするアプリケーションは、そのままではUWPアプリ化できない。

 また、DACでUWPアプリ化する時に、対話型のインストールを行っている場合は、一切入力を必要としないサイレントモードを使う必要がある。DACにかけた時に、ユーザーの入力を待つアプリケーションはコンバート中に入力待ちになってしまい、コンバートができないためだ。

 なおMicrosoftでは、Win32/.NetアプリケーションのUWPアプリ化に関して、コンバートするだけではなく、段階を経てフルUWP化を果たしてほしいとも話している。単純なコンバートでは、PC上のWindows 10には対応しても、Windows 10 Mobile、Xbox、HoloLensなどのほかのWindows 10デバイスへの対応は行われないためだ。DACはあくまでも、PC上での動作を可能にするだけの移行措置、という位置付けなのだろう。

4段階で、Win32/.NetアプリケーションをフルUWPアプリ化していこうと提案している(出典:Microsoft DACの解説ビデオより)
1段階目は、アプリをUWPとして動作するようにラッピングする。アプリの中身を解析してUWPアプリ化するのではなく、あくまでもUWP環境で動作するようにラッピングするだけだ(出典:Build2016のセミナー資料より)
徐々にWin32/.NetアプリケーションをUWP化していき、最終的にフルUWP化すれば、Xbox、HoloLens、Surface Hubなどの“One Windows”環境で動かすことができる(出典:Build2016のセミナー資料より)
Crystal Disk Markは、DACを使ってUWP化している
左側がUWPアプリ、右側がWin32アプリケーション。単にUWP化しただけでは、動作モードが異なるだけで、UIなどに違いはない

 UWPアプリ化すれば、アプリのバージョン管理が簡単になる。基本的にUWPアプリはWindowsストアからインストールするため、もしバージョンアップが行われたら、クライアントPC側が自動的に最新バージョンをチェックし、アップデートしてくれるからだ。

 つまり、企業内でアプリを展開しても、常に最新バージョンが利用されるようになるわけだ。複数のバージョンが原則として存在しなくなるので、バージョン違いによるトラブルがなくなり、今よりもサポートは単純化されるだろう。

ビジネス向けのWindowsストア

 アプリ自体がUWP化されたとして、もう1つ考慮しなければならない問題に、UWPアプリの配布方法がある。

 UWPアプリは原則としてWindowsストア経由での配布になるが、開発したUWPアプリをMicrosoftに提出し、審査を通らなければWindowsストアには掲載されない。AppleのApp Storeなどでも審査があるため、Windowsでも同じようになると考えればいい。

 これでは配布可能になるまで時間がかかってしまうし、一般のWindowsストアに特定企業の業務アプリが登録されるのは問題だ。そこで用意されたのが、ビジネス向けのWindowsストアである。

 Office 365などで使われている「職場もしくは学校アカウント」のドメインを使って、その企業だけが使用できるWindowsストアをMicrosoft Azure上に構築できる。またSystem Centerなどを利用すれば、オンプレミス環境に社内向けのWindowsストアを構築することもできる。

 Windows 10からは、ドメイン環境を使っていれば、グループポリシーで自社のビジネス向けWindowsストアにアクセスを切り替えられるようになった。ビジネス向けのWindowsストアには、一般向けのストアから必要なアプリを登録したり、自社で開発したアプリをIT管理者自身が登録したりできる。

 この機能をうまく使えば、自社で認定したアプリをユーザーが簡単にインストールするための、アプリ配布ポータルの役割も果たせる。もちろん、一般のWindowsストアの機能を利用しているため、そこで配布されているアプリがバージョンアップされれば、クライアント側のアプリも自動的にアップデートされる。

ビジネス向けのWindowsストアを使えば、社内向けに配布するUWPアプリを登録できる。一般ユーザー向けとは分かれているので、特定企業向けアプリを一般ユーザーがダウンロードすることはない(出典:Build2016の資料より)

すべてをUWPアプリ化したいMicrosoft

 Microsoftの意図としては、将来的にはWindows 10では、UWPアプリだけが動作する環境を構築しようとしているようだ。

 Windowsストアからしかアプリが入手できなくすれば、マルウェアやウイルスが入ったアプリがクライアントPCに入り込む余地が少なくなるので、セキュリティ的にもメリットがある。

 ただし企業内の状況を考えてみると、既存のWin32/.Netアプリケーションはどうしても利用せざるを得ない。UWPアプリが推奨されていても、当面はカプセル化などの手段でUWPアプリ化し、動かし続けることになるだろう。

 ネイティブのUWPアプリにすべて移行するには非常に時間がかかるし、強力な必然性がないと移行は進まない。こういったことを考えれば、段階を経てUWPアプリ化するのではなく、必要が生じた際に一気にUWPアプリへと移行すると思う。

 UWPアプリへの移行が進まなければ、もしかするとMicrosoftは、Windows 7の延長サポートが切れる2020年を1つのめどとして、Win32/.Netアプリケーション環境のサポートを制限するようになるかもしれない。

 が、Win32/.Netアプリケーションのインストールや動作をスパッと禁止することはできないだろう。Windowsの最大のメリットは、今までのソフトウェア資産が生かせることにあるからだ。そのメリットを切り捨てるとは考えにくい。

 ただ、Win32/.Netアプリケーションを開発する環境やライブラリ、APIなどが進化しなくなり、Windows 10の新しい機能に対応しなくなる可能性はある。

 そうすると、Win32/.Net環境がレガシーとなり、徐々にUWPアプリへと移行していくことになるのかもしれない。

Windowsのアプリは、UWPへ集約していく(出典:De:Code2016の資料より)

*****

 企業にとっては、既存のWin32/.Netアプリケーションから移行を強制されるのは、非常に面倒だ。しかし、新しいアプリ環境を考えれば、Windows 10がUWPを基本としている以上、いつかはUWPアプリに移行していくことになるだろう。

 現在のIT環境は、iOS、Android、Windowsなどのマルチデバイス環境となっているため、それぞれのデバイスにアプリを開発していく必要がある。企業にとっては、開発リソースが3倍必要となるし、コストも3倍以上かかる。

 こういった状況では、早晩IT予算を食い尽くして、新しいIT環境の構築などはできなくなる。そこで、期待されるのが、昨年Microsoftが買収したXamarinを使ったマルチデバイス環境に対応した開発環境だろう。

 1つのプログラムを開発すれば、iOS、Android、Windows 10(UWP)などマルチデバイスに対応する。こういった開発環境が進化し、多くの開発者がXamarinベースでの開発に慣れていけば、UWPアプリの開発も難しくなくなるだろう。そうなれば、Win32/.NetアプリケーションからUWPアプリへの移行が進むのではないか。

Xamarinを使えば、UI以外のロジックプログラムを共通化して利用できる。UI部分は、現状ではそれぞれのOS別に構築する必要がある(出典:De:Code2016の資料より)

 いずれにしても、Creators Updateでの「アプリのインストール」制限は、UWPアプリへの移行をうながす第一歩となるだろう。これからアップグレードがあるたびに、徐々にWin32/.Netアプリケーションに対する制限、もしくは機能追加の停止などが行われていくと予想される。

 だからこそ、現在シェアの大きなWindows 7の延長サポートが終了する2020年を1つのめどにして、業務アプリのUWP移行を考えていくべきではないだろうか。