Microsoft は Metro アプリ開発者に対して,周到に考慮された Metro スタイルアプリケーション用 Windows 8 SDK の範囲内で開発を行うように強く要請している。同社プログラムマネージャである John Hazen 氏は先日,Microsoft の Metro アプリに対するアプローチの背景となっている方針について説明した。そこには Windows アプリケーションでこれまで行われてきた方法との際だった違いが現れている。
Microsoft は Metro ベースのアプリに関して,同プラットフォームに関心を持つ開発者にある提案をしている – Microsoft が集中的なストア ("Windows Store") を提供して,エンドユーザがアプリを検索およびインストールするための障壁を下げる。それと引き換えに開発者は,これまで謳歌してきた自由を部分的に放棄しなければならない,というものだ。アプリの購入,インストール,アップデートに関するロジスティクスなどが簡略化される一方で,開発者はその代償として,顧客との関係における自らの役割を Microsoft に明け渡すことになる。
Hazen 氏は開発者に対して,API 利用のような SDK 外部に踏み出す行為を止めさせようとしている。
"Metro スタイルのアプリにおいては,SDK 範囲外の API は,今回および今後のリリースのいずれにおいても保証されません。したがってそのようなアプリケーションは,すべてのユーザに対しては正しく機能しない可能性があります。"
興味深いことに Hazen 氏は,外部 API を "コールしていることの隠蔽または難読化" は可能だが,それは Windows Store のポリシに反する行為である,という言い方をしている。InfoQ ではこのステートメントに関する詳細情報の提供を Microsoft に求めたが,同社はこのような操作の可能性について説明することを拒否した。
アプリの機能宣言
個々の Metro アプリが実行される環境はアプリコンテナと呼ばれる。各コンテナはアプリ同士を隔離するように設計され,システムあるいは他のアプリへの操作は厳密に規格化されている。ここでの操作にはアプリのコントラクト,アプリの操作対象データを選択する FilePicker,そしてアプリ機能宣言がある。アプリ機能宣言は,そのアプリに対してユーザデータあるいは基本システムに対する,より大きなアクセス権を与えるものである。そのため Microsoft では限定的に利用するよう推奨している。
Hazen 氏はアプリ機能宣言について,4つの主なカテゴリを説明している。
データライブラリ:アプリはデフォルト状態では,音楽ライブラリやドキュメントライブラリといったユーザデータへのアクセス権を持っていません。このようなライブラリ操作には FilePicker の使用が推奨されています。しかし時として,これらの場所にあるデータの直接参照や操作が必要となる場合もあります。
デバイスアクセス:デフォルトでは,アプリはユーザのプライバシに密接に関わると思われるデバイス,例えば Web カメラやマイク,位置情報などにアクセスすることはできません。この種のデバイス操作が必要な場合には,その意図を宣言した上で,ユーザの同意を得る必要があります。
ネットワークアクセス:デフォルトでは,アプリはユーザのネットワークにアクセスできません。ほとんどのアプリがインターネット通信を行うので,Metro 形式アプリ用のすべての Visual Studio テンプレートでは,この機能を有効にしています。アプリケーションで単純なインターネットアクセス以上の処理を必要とする場合は,下記のオプションを参照してください。
ユーザID:この機能は特定のユーザの企業ログオン情報,あるいは ID に関連付けられてた証明書への直接アクセス機能を提供します。このような機能は,特定の企業用アプリにおいて必要とされる可能性があります。また認証にスマートカードを使用する,銀行取引などのシナリオにも必要です。