信頼できる Metro スタイル アプリを提供する


Windows 8 と新しい Metro スタイル アプリのアプリ モデルを開発したとき、主なアーキテクチャ要件は信頼して使うことができるアプリをユーザーに提供することでした。信頼できるアプリには、リソースをうまく活用して動作する、他のアプリに干渉しない、同意のもとにシステム リソースを消費する、簡単にインストールおよびアンインストールできる、などの特徴があります。これらの属性を実現するには、開発者に堅牢なプラットフォームと強力なツール セットが必要です。これは、作り直しが必要な作業であり、既存のシステム上で改良することはできません。Windows 8 は、この点で作り直されたものです。この記事では、信頼できる Metro スタイル アプリを実現するために私たちがプラットフォーム レベルで行ったことの一部を詳しく説明します。この記事は、開発者エクスペリエンス チームのプログラム マネージャーである John Hazen が執筆しました。--Steven

Windows 8 の Metro スタイル アプリ プラットフォーム開発における中心的な原則の 1 つは、ユーザーがアプリを信頼できることでした。これは、皆さんと私たち両方が担っている使命です。この記事では、アプリの信頼性に対する私たちのビジョンについて説明し、皆さんがアプリに計画的に信頼性を組み込むことができるようにします。

最初に、私たちが意味する信頼性とは何かについて説明します。ユーザーが Windows ストアで Metro スタイル アプリを調べているところを想像してみてください。ユーザーには、そのアプリがどんなアプリで、自分に適しているかどうかだけを考えてほしいと思います。また、実際に信頼できる、つまり、そのアプリが期待どおりに動作してシステムでうまく実行できる、許可したデータと情報だけ使う、他のアプリケーションと問題なく共存すると見なしてほしいと思います。

プラットフォームに関する私たちの目標は、信頼性のビジョンを実現するすばらしいアプリを確実に構築できるようにし、初期状態で信頼を得られるようにすることです。このために、システム全体にわたって投資を行いました。次のようなイメージです。

アプリの信頼性に寄与する要素をキャプションに列挙した図

アプリの信頼性: Metro スタイル アプリ用の Windows 8 SDK、Windows アプリ認定キット、アプリの署名、
アプリ コンテナー、評価とレビュー、ストアへの登録、スムーズなインストール、製品利用統計情報のフィードバック

この記事ではこれらの分野について扱い、最後の方ではアプリの機能について詳細に説明します。まずは簡単な概要です。

  • Windows ストア – ユーザーはまず Metro スタイル アプリのワンストップ ショップであるストアからアプリを探し始めます。ストアに登録するため、アプリの技術およびポリシー面での準拠状況 (セキュリティ チェックを含む) が確認されます。ストアに公開されると、コミュニティによりアプリに評価とレビューが付けられます。同時に、登録プロセスとコミュニティによるレビューは、ユーザーが信頼してアプリを試せる環境を作るのに役立ちます。
  • アプリのインストール – アプリ展開に関する細かいことは皆さんの代わりにすべて Windows 8 が扱うため、ユーザーはアプリをインストール、更新、削除するときに他のアプリにマイナスの影響が及ぶことについて心配する必要がありません。
  • SDK – Metro スタイル アプリ用の Windows 8 SDK には、明確に定義された API セットが用意されているため、ストアの登録要件を満たし、ユーザーに最良のエクスペリエンスを提供する信頼できるアプリを構築することができます。
  • アプリ コンテナーおよび機能 – Windows 8 では、従来のデスクトップ アプリよりもアプリどうしを明確に分離できるため、互いにやり取りするアプリをこれまでより予測可能な方法で構築することができ、ユーザー エクスペリエンスがより一貫したものになります。

もちろん、私たちは、登録プロセスが操作されたり、API セットが悪用されたり、SDK の制限が巧妙に回避されたり、アプリ コンテナーが機能しない可能性があることも認めています。しかし、この新しいエコシステムに対して行った投資は、ユーザーを喜ばせるアプリを構築するのに役立つと確信しています。この多次元なアプローチは、ユーザーの信頼を築くのに最も効果のある方法であり、私たちは経験から学ぶと同時に各次元を改良していきます。では、信頼性についてお話ししましょう。

Windows ストア

何人かのチーム メンバーが、ストアの全体的な設計と計画について Windows ストア ブログでたくさんのことをお伝えしてきました。これは、ユーザーとつながるための中心的な役割を果たすため、まだお読みでない方はぜひストアについてお読みください。アプリのエコシステムで信頼性を構築するのにストアがどのように役立つかをいくつか見てみましょう。

まず、ストアの登録プロセスによりアプリの品質と信頼性に関する一貫した基準が確立されます。Windows アプリ認定キットに含まれている技術的な準拠テストを行うと、アプリを提出する前に期待される標準を満たしているかどうかを調べることができます。皆さんや他の開発者がこれらの標準を満たすアプリを提供し続けると、ユーザーは喜んで新しいアプリを見つけて試すようになり、私たちすべてにとって強力なアプリのエコシステムができあがります。

ストアでは、ユーザーが簡単に評価とレビューを付けることもできるので、優れたアプリが目立つようになり、より多くのユーザーが高評価のアプリを信頼して試すきっかけともなります。以下のアプリの内容ページのサンプルでは、評価とレビューだけでなく、アプリの内容ページの他の 2 つの重要な要素をハイライトした部分にも注目してください。新しいアプリをインストールする前に、ユーザーはインストールするとアプリに与えられる許可を確認できます (詳細については、記事の後方で説明します)。アプリをインストールした後、アプリの内容や動作について懸念事項がある場合、ユーザーはその懸念事項を簡単に報告できるので、見つかった問題を皆さんが解決できるようにお知らせします。ニーズに最も合うアプリがどれかをユーザーが判断し、意見やフィードバックを述べることができるようにすることは、Windows 8 アプリのエコシステムの全体的な信頼性を向上させる重要な方法です。

Windows ストアのゲーム アプリの内容ページのサンプル。評価、レビュー、許可、レポート リンクがハイライトされている

Windows ストアのアプリの内容ページ

最後に、ストアでは製品利用統計情報データが収集され、発生したクラッシュの回数や種類など、ユーザーに生じた問題の調査に役立ちます。私たちは、自動化されたこの製品利用統計情報を確認し、アプリの動作が信頼できなかったり、ユーザーの期待と異なる部分があったことを示すものを探します。私たちの目標は、評価やレビューをとおしてユーザーから与えられたアプリの個々のフィードバックを効果的に利用するだけでなく、ユーザーのコンピューター上でアプリが実際にどのように動作しているかわかるようにし、このデータに基づいてアプリを改善する機会を皆さんに与えることでもあります。

これらの方法すべてを通じて、アプリを必要としているユーザーと皆さんをつなげ、アプリのユーザー エクスペリエンスを向上させる点で、Windows ストアは皆さんのパートナーとなります。

クリックするだけでアプリを使用可能

アプリの内容ページにユーザーの注意を引いたら、何もアプリを入手する妨げとなってほしくないと思います。Windows 8 では、アプリを入手するのに必要となるは 1 つのボタンをクリックすることくらいです。ユーザーは、一連の質問に苦労して答えたり、次から次へとボタンをクリックする必要がなくなりました。ストアにログインして、気に入ったものを見つけたら、ボタンをクリックして購入を確認するだけです。

皆さんにとって喜ばしいことに、この機能を実現するためにインストール コードを記述する必要がありません。すべて Windows 8 の一部として用意されています。Windows は、インストールを処理するだけでなく、デジタル署名を使ってストアからインストールまで (アプリが読み込まれて、ユーザーのコンピューターで実行されているときでも) アプリの整合性を確保します。アプリがデジタル署名に一致しなくなったことを Windows が検出した場合、修正されたバージョンをストアからダウンロードするようにユーザーに案内します。

Windows は、各アプリを別個の場所にインストールし、各アプリのデータと設定の場所は分離されているため、ユーザーはアプリをインストールまたは削除するときに他のアプリやコンピューターの動作と干渉することについて心配する必要はありません。ユーザーは、アプリをインストールしたり削除したりしてもエクスペリエンスが低下しないことを時間の経過と共に知るため、これまでよりも進んでアプリを試すようになります (実際、Windows 8 のコントラクトでは、アプリをインストールするたびにエクスペリエンスが向上します)。皆さんにとっては、別のアプリが皆さんのアプリのユーザー エクスペリエンスに悪影響を与えることがほとんどないというメリットがあります。

検証可能で一貫した 1 つのアプリ インストール メカニズムにより、皆さんの作業が簡略化されるだけでなく、ユーザー エクスペリエンスも簡単になるというメリットがあるので、ユーザーはすばらしいアプリをこれまでよりたくさん確実に入手することができます。アプリの展開の詳細については、アプリ パッケージと展開をご覧ください。

Metro スタイル アプリ用の Windows 8 SDK

アプリのユーザー エクスペリエンスが良ければ良いほど、新しいアプリや更新プログラムがリリースされるとユーザーはすぐに試すようになります。Metro スタイル アプリ用の Windows 8 SDK (英語) は、ユーザーがインストールをためらわないアプリを構築する優れた基盤となります。

私たちは、Metro スタイル アプリに用意した API セットにたくさんの考えを組み込みました。これは、Windows プログラミング環境を簡略化することだけでなく、Windows 8 の Metro スタイル アプリ モデルとうまく連携することで信頼してアプリを構築できる、十分にテストされたプラットフォームを用意することでもあります。

SDK に含まれてない API を呼び出す方法を見つけようという誘惑に抵抗してください。結果的にはユーザーがアプリに対して抱く期待に背くことになります。SDK に含まれていない API は、このリリースでも今後のリリースでも Metro スタイル アプリと連携することが保証されていないため、ユーザーによってアプリが正しく動作しない可能性があります。このような API は、Metro スタイル アプリ設計の基盤となる非同期環境で正しく機能しないこともあります。さらに、このような API は、Metro スタイル アプリが通常は操作しないリソースやデータにアクセスすることでユーザーの信頼を裏切る可能性があります。これらのことから、SDK によって公開されていないインターフェイスが誤って呼び出されている場所を検出できるチェック方法を Windows アプリ認定キットに用意しました。

SDK に含まれていない API の呼び出しを隠したり、あいまいにすることはできますが、これもユーザーの期待やストアのポリシーに背くことになります。結局のところ、私たちは、皆さんのような開発者がシステムや他のアプリ/デバイスとうまく連携するすばらしいアプリを構築してユーザーを喜ばせることができるようにするためにこのプラットフォームを作成したのです。Metro スタイルの SDK を正しく扱うことは、この目的を実現するための基盤となります。

連携と分離

クリーン インストール処理はユーザーにとって重要であり、SDK はシステムとうまく連携するアプリを皆さんが構築するのに役立ちます。さらに、ユーザーはアプリとプラットフォームに高い信頼性を期待します。私たちは、従来の Windows デスクトップ アプリケーションよりも Metro スタイル アプリどうしを明確に分離できるようにすることで、信頼性の目標を達成できるようにしています。Windows 8 では、各 Metro スタイル アプリが独自のアプリ コンテナーのコンテキストで実行されるため、アプリとそのデータを他の Metro スタイル アプリと分離することができます。

アプリ コンテナーには、すべての Metro スタイル アプリが共通して持ついくつかの特徴があります。以下のとおりです。

  • データと設定の専用の保存場所など、アプリ専用の環境が確保されます。他の Metro スタイル アプリが自分のアプリのデータ、設定、動作を変更することについて心配する必要がほとんどありません。
  • アプリが誤って Windows プラットフォーム自体の信頼性を脅かしたり、ユーザーのデータやデバイスをユーザーが望まない方法で使ったりすることがないようにします。
  • マニフェストで宣言を作成してアプリの内容ページでユーザーに開示することでアプリの機能を拡張する、明確に定義された方法があります。

このような明確な分離により、信頼性が高くてユーザーを尊重したアプリを記述することがはるかに簡単になります。同時に、アプリが互いにうまく連携することを私たち全員が望んでいます。Windows 8 には、Metro スタイル アプリが他のアプリやプラットフォームと連携するための、次のようなメカニズムが用意されています。

  • アプリ コントラクト: Metro スタイル アプリを他のアプリおよびシステム UI とつなげる役割を果たします。
  • ファイル選択ツール (英語): ユーザーが選択したデータをアプリが操作できるようにします。
  • アプリ機能の宣言 (英語): 機能にとって適切な場合は、アプリがデバイスやデータをプログラムにより操作できるようにします。

これらはすべて、アプリが他のアプリやシステムとより深くかかわるための明確に定義された方法です。アプリ コンテナーは、信頼性とユーザーを尊重したシステムおよびデータの利用に関してユーザーの期待に応えることができるように存在しています。アプリ コンテナーの制約は、一貫した直観的なアプリの動作に関するユーザーの期待に応えるためのものであるため、アプリがアプリ コンテナーの外でコードを実行できるようにする方法を使うことは、ユーザーの信頼とストアのポリシーに背くことになります。

このプレビュー期間における開発者との話し合いで、これらのメカニズムを誤解していたり、誤って誤用しているアプリが見られたため、特にアプリの機能について詳しく見ていきましょう。

アプリ機能の宣言

アプリ コンテナーは、機能の宣言を使ってさまざまな方法で拡張でき、それぞれ特定のシナリオに対応するようになっています。そのため、これらの宣言は特定の条件下でのみ使うことをお勧めします。機能は、以下のように 4 つの主なカテゴリに分類されます。

  • データ ライブラリ: 既定では、アプリはユーザーのデータ ライブラリ (ミュージック ライブラリやドキュメント ライブラリなど) にアクセスすることができません。これらのライブラリはファイル選択ツールを使って操作することをお勧めしますが、まれにアプリがこれらの場所のデータを直接読み取って管理する必要が生じるケースがあります。
  • デバイス アクセス: 既定では、ほとんどのユーザーがプライバシーを脅かすと考えるデバイス (Web カメラ、マイク、GPS など) をアプリが使うことはできません。アプリがそれらのデバイスを必要とする場合、その目的を宣言した上でユーザーの同意を得る必要があります。
  • ネットワーク アクセス: 既定では、アプリはユーザーのネットワークにアクセスすることができません。ほとんどのアプリはインターネットとやり取りするため、この特定の機能は Metro スタイル アプリのすべての Visual Studio テンプレートで有効にしました。アプリがインターネット アクセス以上のことを必要とする場合、以下のオプションについての説明をお読みください。
  • ユーザー ID: これらの機能を使うと、特定のユーザーの企業ログイン情報や、ユーザー ID に関連付けられた証明書に直接アクセスすることができます。めったにありませんが、特定のエンタープライズ アプリでこれらの機能が必要になることがあります。認証にスマート カードが必要な銀行取引などのシナリオで使う必要が生じる可能性があります。

これらのどのカテゴリの機能も、Visual Studio のマニフェスト デザイナーでチェック ボックスをオフにするだけで簡単に宣言できます。しかし、これらの機能はアプリのシナリオを実現するために必要な場合のみ追加してください。Consumer Preview では、すべての機能、またはアプリに絶対必要とは言えない機能を宣言したアプリがいくつかストアに提出されているのを見ました。ですから、使用可能な機能のリストは比較的短くなっていますが、これらの各機能とその使用方法を詳しく確認することは重要です。

アプリが使用できるシステム機能やデバイスを選択できる機能タブが表示された Visual Studio マニフェスト デザイナー

Visual Studio のマニフェスト デザイナー

データ ライブラリ

これらの機能を使うと、アプリで作成されたものではないユーザー データにアプリがアクセスできるようになります。ユーザーは、アプリがユーザーを尊重した方法でプライベートなデータにアクセスすることを期待します。ユーザーがアプリに対して抱く信頼を尊重する 1 つの方法は、アプリにとって必要最小限のアクセスのみ宣言することです。ほとんどの場合、ファイル選択ツール (英語) を使ってこれらの機能をすべて使うことを避けることができます。このツールでは、ユーザーはハード ドライブまたはネットワーク上のどこにあるファイルでも参照できます。たとえば、ユーザーがアプリからライブラリやリムーバブル ストレージにコンテンツを保存できるように、ファイルを開く機能やファイル名を付けて保存する機能を追加するためにファイル選択ツールを使います。

マニフェスト宣言

実現する機能

musicLibrary

ローカル PC およびホームグループ PC のミュージック ライブラリでファイルを追加、変更、または削除する機能を追加します。

videoLibrary

ローカル PC およびホームグループ PC のビデオ ライブラリでファイルを追加、変更、または削除する機能を追加します。

pictureLibrary

ローカル PC およびホームグループ PC のピクチャ ライブラリでファイルを追加、変更、または削除する機能を追加します。

documentsLibrary

ローカル PC のドキュメント ライブラリでファイルを追加、変更、または削除する機能を追加します。アプリは、ドキュメント ライブラリ内にある、[ファイルの種類の関連付け] 宣言を使って定義されたファイルの種類にのみアクセスできます。ホームグループ PC のドキュメント ライブラリにアクセスすることはできません。

removableStorage

リムーバブル ストレージ デバイスでファイルを追加、変更、または削除する機能を追加します。アプリは、リムーバブル ストレージ上にある、[ファイルの種類の関連付け] 宣言を使ってマニフェストで定義されたファイルの種類にのみアクセスできます。ホームグループ PC のリムーバブル ストレージにアクセスすることはできません。

Consumer Preview では、本当は必要ではない機能を制限したアプリが提出されていたのを見ました。たとえば、アプリは以下のようなさまざまな理由で documentsLibrary を宣言していました。

  • アプリ固有の設定をドキュメント ライブラリに保存する。この目的では、プライベート ストアが用意されています。アプリの設定とストレージの詳細については、ここをご覧ください。
  • ユーザーが生成したファイルを保存する。これは、ファイル選択ツールを使って、ユーザーがファイルを任意の場所 (ドキュメント ライブラリを含む) に保存できるようにした方が適切に実現できます。
  • ドキュメントを別のアプリと共有する。この目的では、共有コントラクトが用意されています。

システムで特定のファイルの種類のプライマリ ハンドラーとなるようにアプリが設計されている場合 (たとえば、ユーザーのドキュメント ライブラリにあるすべての .TIFF ファイルを扱う必要があるファックス ビューアーなど)、この機能を宣言してください。

デバイス アクセス

方位センサーや加速度計などの多くのデバイスは、どのアプリでも利用できます。しかし、ほとんどのユーザーはあるデバイスを他のデバイスより機密性が高いと考えます。ユーザーのプライバシーに深くかかわっているためです。これらのデバイスを使うと、すばらしいアプリをたくさん構築できます。たとえば、共有ゲームプレイが可能なカジュアル ゲームの場合、デバイス間で接続を確立するには近接通信が適しています。

これらのデバイスはユーザーのプライバシーに深くかかわっているため、この機能を宣言した場合、Windows 8 ではアプリが特定のデバイスに初めてアクセスしようとしたときにアクセスの許可を必ずユーザーに求めるようになっています。たとえば、アプリに地図機能が付いている場合、ユーザーの地理位置情報データにアクセスする必要があることと思います。アプリが初めてこの情報を取得しようとすると、アプリのアクセスの許可を求めるメッセージがユーザーに表示されます。この許可は、ユーザーが後で設定をとおしてアクセスを明示的に削除することを決定するまで有効です。ユーザーはアプリによるこれらのデバイスへのアクセスを拒否できるので、マニフェストに機能を追加した場合でも、アクセスできない状況を適切に処理できるようにアプリを設計してください。たとえば、ユーザーがアプリによる組み込み GPS へのアクセスを拒否した場合、地図から位置を選択するようユーザーに求めることができます。

マニフェスト宣言

実現する機能

location

PC の GPS センサーなどの専用ハードウェアから取得された現在位置情報や、利用可能なネットワーク情報から導き出された現在位置情報にアクセスできます。

webcam

Web カメラのビデオ フィードにアクセスできます。アプリが、接続された Web カメラからスナップショットやムービーをキャプチャできるようになります。

microphone

マイクのオーディオ フィードにアクセスできます。アプリが、接続されたマイクからオーディオを録音できるようになります。

proximity

近距離通信電波をとおして PC に近接するデバイスに接続する機能を追加します。近距離通信を使うと、ファイルを送信したり、近隣のデバイスのアプリと通信したりすることができます。

ネットワーク アクセス

ほとんどのアプリはインターネット接続を必要とするため、Metro スタイル アプリの Visual Studio テンプレートには internetClient 機能が既定で含まれています。アプリがインターネット経由で通信する必要がない場合、この機能を削除してください。internetClientServer 機能は、一般にゲームや VOIP などのピア ツー ピア (P2P) シナリオで使用されますが、アプリがファイアウォール内でポートを開く必要がない限り、この機能を使わないでください。privateNetworkClientServer 機能は、アプリがプライベート ネットワーク経由 (自宅内のデバイス間や、企業ネットワーク接続経由など) で通信する必要がある場合に使います。

マニフェスト宣言

実現する機能

internetClient

インターネット、および空港やカフェなどの公共の場所にあるネットワークに発信アクセスできます。インターネットに接続する必要があるほとんどのアプリではこの機能を使ってください。

internetClientServer

インターネット、および空港やカフェなどの公共の場所にあるネットワークに着信および発信アクセスできます。この機能は、internetClient の上位セットです。この機能を有効にした場合、internetClient 機能を有効にする必要はありません。

privateNetworkClientServer

認証されたドメイン コントローラーがあるイントラネット ネットワークや、ユーザーが自宅または職場のネットワークとして設計したイントラネット ネットワークに着信および発信アクセスできます。

ユーザー ID

ほとんどの開発者は、これらの機能を使う必要がありません。これらの機能の使用は、かなり制限されており、追加の登録ポリシーおよび確認が必要になります。ただし、このような機能が必要かつ適切なケースがあります。たとえば、一部の銀行では 2 要素認証を要求しており、ID を確認するデジタル証明書が搭載されたスマート カードをユーザーが使えるようにする必要があります。主にコンシューマー向けではなくエンタープライズ ユーザー向けに設計された他のアプリでは、ドメイン資格情報がないとアクセスできない企業リソースへのアクセスが必要なことがあります。

マニフェスト宣言

実現する機能

enterpriseAuthentication

ドメイン資格情報が必要な企業イントラネット リソースに接続する機能を追加します。

sharedUserCertificates

ユーザーの ID を検証するため、スマート カード証明書などのソフトウェアおよびハードウェア証明書にアクセスする機能を追加します。実行時に関連する API が呼び出されると、ユーザーは操作を行う必要があります (カードの挿入、証明書の選択など)。この機能は、[証明書] 宣言によるプライベート証明書がアプリに含まれている場合は必要ありません。

信頼性の構築

ユーザーは、Windows 8 と皆さんが構築したアプリを安全に使いたいと思っています。Metro スタイル アプリのエクスペリエンスは、すべてのユーザーが信頼して試用し、購入できるアプリを皆さんが簡単に構築できるような設計になっています。この結果、ユーザーがたくさんのアプリを気に入って購入する前向きなサイクルができあがるので、開発者にとってはすばらしい Metro スタイル アプリをさらにたくさん作成して提供する機会が生まれます。

この記事の冒頭で触れたように、この点で皆さんと私たちは同じ立場にいます。私たちがこの新しいエコシステムに対して行った投資全体が、ユーザーが喜ぶアプリを皆さんが構築するのに役立つと確信しており、驚くような新しいエクスペリエンスを共通の顧客に提供する点で皆さんと協力できることを楽しみにしています。

--John Hazen

Comments (4)
  1. はまかぜ says:

    翻訳ありがとうございます。

    8の普及は、アプリ次第ということも考えられそうですね。ざっと読ませてもらいました。

  2. nanasi says:

    次のユーザーエクスペリエンス関連の記事は重要ですね。こちらを先に翻訳して下さい。

    一部してるところもありますよ。

  3. Hide says:

    翻訳遅すぎませんか。あと3つほど溜まってますよ。

    早くしてくださいよ!Twitterでも「遅いぞ」の書き込みあります。

    大至急お願いします!!(アメリカ以外のほかの国も遅いですが。)

Comments are closed.

Skip to main content