特別企画
Windows 10世代では、アプリケーションはUniversal Windows Appに
(2015/6/17 06:00)
Windows 10では、“One Windows”というコンセプトで、デスクトップPC、タブレット、スマートフォンから、IoT、Xbox、HoloLens、84インチの4Kディスプレイを持ったホワイトボードのようなコンピュータSurface Hubまでが、同じOSで動作するようになる。
さらにアプリケーションも、Universal Windows Appベースであれば、どのような画面サイズ、解像度であっても、プログラムを変更せずに動作する(ARMとx86/x64プロセッサなどの違いはあるが、コンパイル時に2種類のプロセッサ向けにバイナリーを作ればいい)。
つまり“One Windows”のもとでは、さまざまなWindowsデバイスで1つのアプリが動作する“One App”が実現できる。
今回は、そのためのMicrosoftの取り組みを紹介する。
.NETやWin32アプリケーションをUniversal Windows App化するProject Centennial
Microsoftでは、まず、デスクトップで動作している.NETアプリケーションやWin32アプリケーションをUniversal Windows App化するProject Centennialというフレームワークを開発している。
Build 2015の基調講演では、AdobeのPhotoshop ElementなどがProject CentennialでUniversal Windows App化され、Windows Storeで提供される様子がデモされた。
Project Centennialでは、アプリケーションを仮想化するApp-Vのテクノロジーを一部採用し、デスクトップアプリケーションをUniversal Windows Appとしてカプセル化する。デストップアプリケーションが利用していたレジストリを仮想化してUniversal Windows App内部に用意したり、使用しているフォルダーをリダイレクトしてUniversal Windows Appで使用するフォルダーに変更したりしている。
何よりも大きなメリットになるのは、デスクトップアプリケーションをWindows Storeから配布できるようになる点だ。また、Windows Storeからアプリをインストールするため、アップデートなどもStoreから一括して行えるし、アプリがカプセル化しているので、アンインストールもシステムに影響を及ぼさない形で行える。
またProject Centennialでは、MSI形式のプログラムをUniversal Windows Appのアプリ形式のAppXに変換するため、既存のデスクトップアプリケーションをバイナリーのまま変換できる。
ただし、Project CentennialでデスクトップアプリケーションをUniversal Windows App化しても、ARMプロセッサベースのWindows 10 Mobile、Windows 10 IoT Coreなどでは動作しない。動作するのは、デスクトップモードを持っているWindows 10 OS、つまりx86/x64プロセッサを使ったPC用のWindows 10(Home/Pro/Enterprise/Education)のみだ。またアプリケーションによっては、プログラムの一部を書き換える必要があるようだ。
なお、Project Centennialは現在も開発中のため、Windows 10のリリース時には間に合わないと思われる。年内にはベータ版などがリリースされるだろう。Project Centennialのツール自体は、無償で公開されると予想している。
Hosted Web AppをStoreアプリ化するProject Westminster
Microsoft社では、WebアプリやHosted Web AppをWindows Store経由で配信できるようにするProject Westminsterという開発ツールを用意している。
Hosted Web Appは、Webサーバーに置かれるHTML5、CSS、JavaScriptなどをパッケージ化し、インストールして利用できるようにするものだ。Project Wetminsterでは、Hosted Web AppをUniversal Windows Appとしてパッケージ化する。このツールを利用すれば、Windows StoreからHosted Web Appを配信することができる。また、Windows 10のライブタイルにHosted Web Appを表示することも可能だ。
Project Westminsterは、ApacheプロジェクトのCordovaとオープンソースで開発されているManifoldJSを使っている。
CordovaとManifoldJSを使えば、1つのWebアプリから、Windows 10、iOS、Androidなどのネイティブアプリを作成することができる。
Project Westminsterは、開発ツールのVisual StudioにCordva用のツールキットを追加することで、HTML5やJavaScriptなど書かれたWebアプリをUniversal Windows App化する。ちなみに、Cordovaは、iOS、Mac OS X、Android、Amazon Fire OS(KindleのOS)、Firefox OS、Tizen、Ubuntu、Windows(desktop)、Windows Phone 7/8などに対応している。
また、Webアプリのリモートデバッガとして「Vorlon.JS(開発コード名)」が開発されている。Vorlon.JSもManifoldJSと同じようにオープンソースで開発されており(Microsoft提案)、Node.jsやSocket.ioなどインターネット標準のテクノロジーを使用して、ManifoldJSで開発されるコードのデバッギングを可能にしている。
現在、Project Westminsterは、Visual Studio 2015向けアドオンツールとして開発が進んでいる。Visual Studio 2015がリリースされるときには、正式リリースになるだろう。
AndroidアプリをUniversal Windows Appに変換するProject Astoria
MicrosoftがWindows 10のUniversal Windows Appを本気で普及させようとしている、と筆者が感じるのは、AndroidアプリやiOSアプリからUniversal Windows Appに変換するツールの開発だ。
Androidアプリ向けに用意されたProject Astoriaは、Androidアプリで利用されているJava/C++で開発されたAPKを、Windows 10のUniversal Windows AppのAppXでラッピングする。
さらに、Androidアプリを動かすためのエミュレーション層というべきProject Astoria Subsystemが用意されている。
Project Astoria Subsystemでは、AndroidのAPIと異なるファイルシステム、ネットワーキング、カメラ、センサーなどの呼び出しをフックして、Windows 10のUWPに変化させてくれる。Androidアプリで利用されているマップなども、自動的にWindows 10のBing Mapに変換される。
Project Astoriaでは、多くのAndroidアプリを、コードを書き換えずにWindows 10上で動かすことを目標にしている。現在、開発が進んでいるが、Windows 10のリリース時にはギリギリ間に合うかどうかというタイミングになるだろう。
iOSアプリをUniversal Windows Appに変換するProject IslandWood
iOSアプリをUniversal Windows Appに変換するProject Islandwoodは、Android向けのProject Astoriaとアプローチが少し異なる。
Project Islandwoodでは、iOSアプリの開発言語Objective-CをVisual Studio 2015で直接コンパイルできるようにしている(最新の開発言語はSwiftだが、これにはまだ対応していない)。もちろん、iOSアプリを開発する統合環境Xcodeのさまざまなファイルを直接取り込み、コンパイルすることができる。
また、Visual Studio 2015でコンパイルする前に、iOSのAPIをUWPのAPIに半自動的に変換できるし、Analyst Toolによって、どの部分の書き換えが必要になるかなどをアドバイスしてくれる。もちろん、iOSアプリのプログラムを100%利用できるわけではなく、プログラムの一部は開発者が書き換える必要があるが、これに関しても、Analyst Toolで確認することができる。
英King Digital Entertainmentでは、自社がリリースしているCandy Crush SagaをWindows Phoneに移植する際に、Project Islandwoodのアーリーバージョンを利用した。コードの書き換え自体は非常に少なく、移植も簡単だったようだ。コードの80%~90%は再利用できたと語っている。
現在、Project IslandWoodは限定的な開発者プレビューを行っている。MicrosoftでもiOSアプリの有力ソフトメーカーに対して、Project IslandWoodのテストを働きかけている。このため、Windows 10のリリース時には、iOSで有力なアプリがUniversal Windows App化されて、Windows Storeから配信されるだろう。
Project IslandWood自体は、Visual Studio 2015のアドオンとしてリリースされるが、その際には、すべての機能は間に合わないかもしれない。一般の開発者が利用できるのは年内になるだろう。
*****
WindowsネイティブアプリケーションをUniversal Windows Appに変換するProject Centennial、Hosted Web Appを変換するProject Westminster、Androidアプリを変換するProject Astoria、iOSアプリを変換するProject Islandwoodなどは、ある時点で開発が終了するのではなく、常にアップデートを繰り返す必要があるだろう。
Androidアプリを変換するProject Astoriaであれば、Androidの新しいOSがリリースされる都度、Subsystemをアップデートする必要がある。またiOSであれば、新しい開発言語Swiftへの対応も期待されている。
MicrosoftがこれらのProjectを必要とするのは、Windows 8においてWindowsストアアプリが普及せず、iOS向けやAndroid向けのアプリが、市場のほとんどを占めることになったからだ。これを逆転させるためには、まずWindows 10デバイスを普及させることが不可欠だろう。
Windows 10は、PC用のOSだけでなく、スマートフォンやIoT、HoloLensなど、さまざまなデバイスを1つのフレームワーク(UWP)でカバーしている。このため、Universal Windows Appで開発したアプリは、すべてのWindows 10デバイスで動作する。このような、IoT、スマートフォン、PC、家庭用ゲーム機(Xbox One)など複数のデバイスをまたぐフレームワークは、Apple、Googleともに構築できていない。Microsoftは、Windows 10における差別化を“One Windows”に求めたといえる。
ただ、多くのソフトベンダーを引きつけるためには、膨大な数のWindows 10デバイスの市場を早急に作り上げることが必要になる。これが、2~3年のうちに10億台のWindows 10デバイスの市場を作り出すという目標になっているのだろう。
市場が存在し、iOSやAndroidから移植が簡単になるツールが用意されれば、多くのソフトベンダーがWindows 10のUniversal Windows Appの開発を行ってもらえると考えているのではないか。
クライアントOSのアップグレード料金を1年間無料にしたり、With Bingのように0円Windowsと呼ばれるOSをPCメーカーに提供したりして、クライアントOSのアップデートで得られる利益を捨てても、、Windows Storeに登録されるアプリが増え、Windows Store経由でのアプリ販売が増えれば、新しい市場が立ち上がり、Microsoftに手数料が入ることになる。
このようなことを考えていくと、Microsoftのビジネスモデルが、クライアントOS自体で利益を上げるというビジネスモデルから、新たなビジネスモデルに変わったのだろうと推測できる。