方法: アプリケーションの機能を特定する
2012/02/09
Windows Phone アプリケーションに対しては、ネットワーク、位置情報センサー、またはカメラなど、アプリケーションで必要な機能を指定する必要があります。機能を正確に指定しないと、アプリケーションは正常に動作しなかったり、Windows Phone Marketplace の申請プロセスで不合格になる場合があります。アプリケーションの機能は、アプリケーション マニフェスト ファイル (WMAppManifest.xml) で指定します。対象が Windows Phone OS 7.1 と Windows Phone OS 7.0 のどちらであるかに応じて、Marketplace Test Kit または Windows Phone Capability Detection Tool を使用してアプリケーションの機能を検出することができます。このトピックでは、アプリケーションの機能を確認する方法について説明します。
これらの手順を完了するには、Windows Phone SDK が必要です。詳細については、「Windows Phone SDK のインストール」を参照してください。
アプリケーションの機能は、ネットワーク、位置情報センサー、またはカメラなど、Windows Phone アプリケーションで必要な機能です。アプリケーションの機能は、アプリケーション マニフェスト ファイル (WMAppManifest.xml) で指定します。既定では、Windows Phone プロジェクトの作成時に、アプリケーション マニフェスト ファイルには Windows Phone でサポートされるすべての電話機能のリストが含まれています。機能の完全なリストと説明については、「Windows Phone のアプリケーション マニフェスト ファイル」を参照してください。
Windows Phone では機能駆動型のセキュリティ モデルが提供されているため、ユーザーはアプリケーションで特定の機能を有効にする必要があります。一部のシナリオでは、アプリケーションによって呼び出された Windows Phone API が実行時に指定されたセキュリティ権限またはユーザーによる情報開示を必要とする場合があります。Windows Phone オペレーティング システムはアプリケーション マニフェスト ファイルのリストにある機能に従ってアプリケーションにセキュリティ権限を許可します。使用している API および指定する機能によっては、Marketplace へのアプリケーションの申請が不合格になる場合があります。
Marketplace にアプリケーションを申請すると、アプリケーションの機能はプログラムにより検出されます。アプリケーションの申請手順では、Microsoft Intermediate Language (MSIL) コード分析を使用してアプリケーションが必要とする電話機能を検出します。アプリケーションの申請手順で機能リストは、自動生成されたリストまたは変更されたリストであるかどうかにかかわらず、アプリケーションが必要とする特定の機能で置き換えられます。つまり、アプリケーションと共に提出されたアプリケーション マニフェストに、アプリケーションが使用する機能が含まれていない場合、これらの機能は申請手順の一環として追加されます。
申請中に追加または変更される機能に対しては、2 つの例外があります。第 1 の例外は、マニフェスト ファイルから以下のネットワーク機能を削除すると、申請手順中にその機能は追加されないことです。これにより、アプリケーションのネットワーク サポートを無効にできます。
ID_CAP_NETWORKING
第 2 の例外は、前向きのカメラ ハードウェア要件を指定することができ、これは申請手順で変更されないことです。
ID_HW_FRONTCAMERA
前向きのカメラの詳細については、「Windows Phone のカメラと写真の概要」を参照してください。
アプリケーションに必要な電話の機能を検出するためにアプリケーション申請手順に頼るのではなく、開発中にツールを使用してアプリケーションをテストすることができます。アプリケーションの対象が Windows Phone OS 7.1 である場合、[Marketplace Test Kit] の [機能検証] テストを使用し、アプリケーション マニフェスト ファイル内の自動生成された機能リストを検出し、アプリケーションが必要とする特定の機能で置き換えることができます。Windows Phone OS 7.0 を対象とするアプリケーションの場合は、[Windows Phone Capability Detection Tool] を使用して同じ操作を実行できます。
注: |
|---|
アプリケーションのテストは、必ずアプリケーションが必要とする正確な電話機能に基づいて実行する必要があります。アプリケーションが必要とする特定の機能に基づいてテストを実行しなかった場合は、さまざまなエンドユーザーの問題が生じる可能性があります。 |
Marketplace Test Kit は、Windows Phone OS 7.1 アプリケーションを Marketplace に提出する準備ができているかどうかを評価できる一連のテストです。この Marketplace Test Kit には、一連の自動テストの一部として実行できる [機能検証] テストが含まれています。Marketplace Test Kit の詳細については、「Windows Phone Marketplace Test Kit」を参照してください。アプリケーションが使用する機能を評価するために [機能検証] テストによって適用されるルールを確認する場合、これらのルールは Rules.xml という名前のファイルにあります。このファイルは、以下のいずれかの場所にあります。
Program Files\Microsoft SDKs\Windows Phone\v7.1\Tools\Marketplace
Program Files (x86)\Microsoft SDKs\Windows Phone\v7.1\Tools\Marketplace
Marketplace Test Kit を使用してアプリケーションの機能を特定するには
Visual Studio で、機能をテストする Windows Phone OS 7.1 アプリケーションのリリース ビルドを作成します。リリース ビルドを作成する方法については、「方法: Visual Studio を使用して Windows Phone アプリケーションをビルドおよび配置する」を参照してください。
ソリューション エクスプローラーで、スタートアップ プロジェクトを選択し、[プロジェクト] メニューで [Marketplace Test Kit を開く] オプションを選択します。Marketplace Test Kit が開きます。
[自動テスト] タブをクリックし、[テストの実行] をクリックします。これで、[機能検証] テストを含め、すべての自動テストがアプリケーションに対して実行されます。
注:アプリケーションのアートまたはスクリーンショットを指定していない場合は、[アイコン] と [スクリーンショット] のテストは不合格になります。これらのテスト結果は、機能の結果とは関係がありません。
[機能検証] テストの [結果の詳細情報] の列を表示します。この列で識別された各機能は、ID_CAP で開始されます。次に、[機能検証] テストの実行結果の例を示します。この例では、一覧にある機能は ID_CAP_NETWORKING のみです。
[INFORMATION]: Capabilities used by application: ID_CAP_NETWORKING
ソリューション エクスプローラーで、アプリケーションのアプリケーション マニフェスト ファイル (WMAppManifest.xml) を開き、[結果の詳細情報] 列の一覧にないすべての機能を削除します。前の手順の例の結果では、ネットワーキング (ID_CAP_NETWORKING) を除く、すべての機能を削除します。
ツールによって提供された機能でアプリケーションをビルド、テスト、展開します。
[Capability Detection Tool] は、Windows Phone OS 7.0 を対象とするアプリケーションに使用できるルールベースのコマンドライン ユーティリティです。このツールはアセンブリを含むプロジェクト出力フォルダーまたはアセンブリ ファイルを入力として使用し、アプリケーションが使用するセキュリティ機能の一覧を出力します。機能を発行または削除するためのルールは、ツールと共に配布される Rules.xml という名前のファイルにキャプチャされます。次の表に、[Capability Detection Tool] でサポートされるコマンドとパラメーターを示します。
コマンド | 説明 |
|---|---|
CapabilityDetection.exe /? | 簡単なヘルプの説明を表示します。 |
CapabilityDetection rules path "file path" | アプリケーションが必要とする電話機能を検出します。
|
Capability Detection Tool を使用してアプリケーションの機能を特定するには
Visual Studio で、機能をテストする Windows Phone OS 7.0 アプリケーションのリリース ビルドを作成します。
コマンド プロンプトを開き、Windows Phone Capability Detection Tool (CapabilityDetection.exe) を含むフォルダーまで移動します。これは次のいずれかの場所にあります。
Program Files\Microsoft SDKs\Windows Phone\v7.0\Tools\CapDetect
Program Files (x86)\Microsoft SDKs\Windows Phone\v7.0\Tools\CapDetect
次のコマンドを入力し、file path パラメーターでアセンブリまたはアセンブリ ファイルを含むプロジェクト出力フォルダーの場所を指定します。
CapabilityDetection.exe Rules.xml "file path"
注:ファイル パスに空白文字が含まれる場合は、引用符 ("") で囲む必要があります。ファイル パスがフォルダーである場合は、末尾のスラッシュ (\) を含めないようにする必要があります。
2 つの例を次に示します。
CapabilityDetection.exe Rules.xml "C:\MyApp" CapabilityDetection.exe Rules.xml "C:\MyApp\MyApp.dll"
ツールに表示された機能出力をコピーします。出力の例を次に示します。
ID_CAP_NETWORKING ID_CAP_WEBBROWSERCOMPONENT
機能が検出されない場合、結果は表示されません。
注:ファイル パスに XAP ファイルを指定した場合、出力は表示されません。
Visual Studio でプロジェクトを開き、アプリケーション マニフェスト ファイル (WMAppManifest.xml) を開きます。
Capabilities 要素にあるすべての機能を削除し、ツールの出力から必要な機能を追加します。たとえば、前の手順の出力を使用すると、要素は次のように表示されます。
<Capabilities> <Capability Name="ID_CAP_NETWORKING"/> <Capability Name="ID_CAP_WEBBROWSERCOMPONENT"/> </Capabilities>ツールによって提供された機能でアプリケーションをビルド、テスト、展開します。
重要な注:状況によっては、アプリケーションがネットワーキングを使用していないにもかかわらず、ツールが ID_CAP_NETWORKING 機能を返す場合があります。たとえば、XAML でローカル URI を宣言した場合などです。このような場合はこの機能を削除できますが、機能の削除後はアプリケーションが完全にテストおよび展開されたことを確認してください。