検索
連載

Windows 10はPCとスマホで同じアプリがなぜ動く?――「UWP」の理想と現実鈴木淳也の「Windowsフロントライン」(3/4 ページ)

PCとスマホで同一アプリを利用、スマホに外部ディスプレイ+キーボード+マウスをつないでデスクトップPC的に作業、外部ストレージにアプリ導入など、ユーザーの利便性を高めるWindows 10世代のアプリ基盤「UWP」は、どのような仕組みなのだろうか?

Share
Tweet
LINE
Hatena
※本記事はアフィリエイトプログラムによる収益を得ています

Windows 8.1とWindows 10で異なるアプリ配布パッケージの仕組み

 意外と見過ごされがちなのだが、最後にUWPにおいてアプリの配布方式である「パッケージ」に触れて今回の話題を締めたい。

 過去に『PCでもスマホでもタブレットでも動く――Windowsの秘策「ユニバーサルアプリ」とは?』の記事で解説したが、Windows 8/8.1とWindows Phone 8.1では「AppX」というパッケージファイル形式を採用している。Androidでは「.apk」、iOSでは「.ipa」のファイル形式で知られるスマートフォンアプリのパッケージだが、AppXも同様に「.appx」の拡張子のついた単一ファイルによる配布パッケージとなる。

 実際には本体バイナリとリソースを含む複数のファイルをZIPファイルで固めただけだが、旧式のWindows OSでは共有ファイルのほか、レジストリに“ゴミ”が残ることで、アンインストールしてもOSが一方的に“重くなる”だけという「Windows ROT」現象が問題になっており、Windows 8以降ではAppXを導入して他のスマートフォンOSを見習ったアプリ管理方式を採用することとなった。

 さて、AppXと単純には書いているが、実際にはAppXだけでも「Windows Phone 8.1用」「Windows 8.1(8)用」「Windows 10用」の3種類が存在する。これにパッケージ形式として、Windows Phone 7/8以前の「XAP」形式も加えれば、Windowsストアで流通可能な配布パッケージは4種類存在することになる。

AppXの種類 Windows 10の時代になり、アプリ配信パッケージのAppXも変化している

 注意点は2つあり、Windows 8/8.1とWindows 10のAppXは異なること、さらにWindows 8.1でもPhone用とPC用は別ということだ。

 Windows 8.1とWindows Phone 8.1はユニバーサルアプリという名称でアプリの共通化が図られているものの、実際には「2つの異なるプラットフォーム向けに異なるバイナリとリソース」がプログラムコードのコンパイル時に用意され、アプリストア登録を経てMicrosoft側がターゲットとなる配信デバイスに合わせて異なるパッケージをダウンロードさせることで成り立っている。

 単一パッケージとなるWindows 10のUWPとは異なり、Windows 8.1時代は「あくまでプラットフォーム単位で別々」というわけだ。

 Windows 8.1時代はターゲットとなるデバイスのプラットフォーム(PCかスマートフォンか)や環境(言語など)に応じてファイルを組み替えてパッケージを配信していた(「バンドル形式」と呼ぶ)。

 Windows 10ではさらに複雑となり、拡大したプラットフォームの種類だけでなく、プロセッサの種類やフォアグラウンド動作で利用可能なメモリサイズ、DirectXのバージョンや有無なども含め、配信されるパッケージを変更するパラメータが複数存在する。

 配信されるパッケージは「バージョン管理」形式で選ばれるようになっており、基本的には「最新バージョン」のパッケージが落ちてくるようになっているが、ここにOSバージョンやプロセッサパワー、メモリサイズといった条件を加えることで“異なるバージョン”のパッケージがダウンロードされるよう調整できる。

Windows 10 Packages Windows 10におけるAppXのWindowsストアパッケージ配信方式
Package selection 複数のパラメータで条件分岐が可能であり、これで最適なバージョンのパッケージを配信できる

 この仕組みを利用することで、「高性能なゲーミングPCにはフルパッケージを配信し、同一名称のスマートフォン向けアプリには機能とパッケージサイズを削減したアレンジ版を別バージョンで配信」といったことが可能になる。

 もちろん、動作の最低要件を設定しつつ、それ以下のスペックのPCに適合したバージョンのパッケージをストアに登録しなければ、「あなたのPCは動作に必要な機能を満たしていません」といった具合に最初からダウンロードさせないこともできるだろう。

 UWPにおけるAppXのパッケージサイズは従来の4Gバイトから150Gバイトまで一気に拡張されており、本格的なゲームを中心にこういったケースが増えてくると思われる。

Copyright © ITmedia, Inc. All Rights Reserved.

ページトップに戻る