第4章 Windows 10のアプリケーション - ユニバーサルWindowsアプリとは

Windows 10のアプリケーションに関して述べる前に、「ユニバーサルWindowsアプリ」という新たな概念について説明しておこう。ただし、前章の各記事と重複する部分もあるので、あらかじめご了承頂きたい。まず、Microsoftは"One Windows"ビジョンの元、すべてのWindows 10稼働デバイス上で同一のアプリケーションを実行可能にしている。これが「ユニバーサルWindowsプラットフォーム(UWP)」だ。

MicrosoftはユニバーサルWindowsプラットフォームを「増加傾向にある開発者の負担を削減する」ことをゴールと定めている。そのため開発者は共通かつ一貫したAPIを用いることで、必要最小限の操作でPCやスマートフォンなど異なるデバイスでも、同一のUXを提供するアプリケーションの開発が可能になる。

「ユニバーサルWindowsプラットフォーム」の概要

このAPIをベースに開発したアプリケーションが、ユニバーサルWindowsアプリだ。各コントロール部品はXAMLファイルから参照できるため、どのデバイスでも表示が乱れるようなことはない。ただし、共通化するのはAPIやABI(OSとアプリケーション間の低レベルインタフェース)といったコア部分に限られる。そのためPCとスマートフォンなど操作特性や用途が異なるデバイスに対しては個別の機能を用意し、条件分岐文を用いた1つのコードとしてパッケージングしなければならない。

例えばハンバーガーボタンによるメニューも共通化している

このようにユニバーサルWindowsプラットフォームは、基本的にソフトウェア開発者の恩恵が大きく、エンドユーザー側の利点は"PCでもスマートフォンでも同一のアプリケーションとデータを利用できる"といった程度となる。だが、PCもスマートフォンもOSの機能よりも、アプリケーションの充実度が重要なのは読者もご承知のとおりだ。そのためMicrosoftも開発者向けプラットフォームを充実させることを優先したのだろう。

では、従来のWin32アプリケーションはどうなるのだろうか。筆者が普段使用している範囲だが、問題なく動作することは確認できた。もちろんアプリケーションによっては細かな不具合が発生する可能性を否定できないが、基本的には動作すると考えて構わないだろう。もっともMicrosoftは、Win32アプリケーションをユニバーサルWindowsアプリへ移植する「Project Centennial」の準備を進めている。

開発者向けの話題となるため本稿では割愛するが、MSI(Windowsインストーラーパッケージ)ファイルが行うレジストリやファイルシステムへの書き込みを記録し、appx(Windowsランタイムアプリパッケージ)への変換が可能になる予定だ。

また、Windows 10はWindows 8から導入したWindows RT(Runtime) APIへ移行するが、すぐに切り替わるわけではない。既存のWin32アプリケーションはWin32 API上で動作するが、Microsoftも"一定期間は重複する"と考えているようだ。

Windows 10上で動作する「秀丸」。使い込んでいないため断言できないが問題なく動作している

Windows 10のAPI/ABIはWin32とWinRTの両者を残すため、"移行期"にあたる

いずれにせよ、従来のWindowsストアアプリはユニバーサルWindowsアプリという名称に変わり、その範囲はWin32/Windowsストアアプリにとどまらない。Build 2015のキーノートでは、Windows PhoneでAndroid向けアプリケーションを実行し、iOS向けアプリケーションをVisual Studio上でビルドして実行するデモンストレーションを披露していることから、他のプラットフォームも取り込もうとしている。

Build 2015のキーノートで発表したユニバーサルWindowsアプリの戦略。WebやJava/C++(Android)、Object C(iOS)も取り込もうとしている

すべてが成功するか否かは現時点で判断できないが、Windows 10時代のアプリケーション環境は、これまでと大きく異なることは覚えておいて損はないだろう。