アプリケーション マニフェストApplication manifest

アプリケーション マニフェストには、アプリケーションで必要なリソース ("アプリケーション機能" とも呼ばれます) が記述されています。The application manifest describes the resources, also called application capabilities, that an application requires. すべてのアプリケーションには、アプリケーション マニフェストがあります。Every application has an application manifest.

アプリケーションでは、アプリケーション マニフェストの Capabilities セクションに必要な各リソースを列記することで、機能の使用をオプトインする必要があります。既定で有効になる機能はありません。Applications must opt-in to use capabilities by listing each required resource in the Capabilities section of the application manifest; no capabilities are enabled by default. リストに含まれない機能をアプリケーションで要求すると、要求は失敗します。If an application requests a capability that is not listed, the request fails. アプリケーション マニフェスト ファイルにエラーが含まれる場合、アプリケーションのサイドローディングは失敗します。If the application manifest file contains errors, sideloading the application fails.

各アプリケーションのマニフェストは、app_manifest.json として、PC 上のアプリケーション フォルダーのルート ディレクトリに格納される必要があります。Each application's manifest must be stored as app_manifest.json in the root directory of the application folder on your PC. テンプレートに基づいてアプリケーションを作成すると、Azure Sphere テンプレートによって自動的に既定のアプリケーション マニフェストが作成されます。The Azure Sphere templates automatically create a default application manifest when you create an application based on a template. 既定のマニフェストを編集して、アプリケーションに必要な機能を列記する必要があります。You must edit the default manifest to list the capabilities that your application requires. アプリケーションがデバイスにサイドローディングまたは展開されるとき、Azure Sphere ランタイムはアプリケーション マニフェストを読み取って、アプリケーションが使用を許可されている機能を確認します。When the application is sideloaded or deployed to the device, the Azure Sphere runtime reads the application manifest to ascertain which capabilities the application is allowed to use. マニフェストに列記されていないリソースにアクセスしようとすると、EPERM (アクセス許可が拒否されました) などの API エラーが発生します。Attempts to access resources that are not listed in the manifest will result in API errors such as EPERM (permission denied).

アプリケーション マニフェストには、次の項目が含まれています。The application manifest includes the following items:

名前Name 説明Description
SchemaVersionSchemaVersion 使用されているアプリケーション マニフェスト スキーマのバージョン。Version of the application manifest schema in use. 現在は、1 でなければなりません。Currently must be 1. 必須。Required.
名前Name コンポーネントの名前。Name of the component. プロジェクトの作成時に、この値はプロジェクトの名前に設定されます。At project creation, this value is set to the name of the project. Visual Studio を使用しない場合に名前を追加する方法については、「アプリケーションを手動で構築して読み込む方法」をご覧ください。If you do not use Visual Studio, see How to manually build and load an application for information on adding a name. 必須。Required.
ComponentIdComponentId コンポーネントの ID。ID of the component. アプリケーションをビルドすると、Visual Studio によってこの ID が作成されます。Visual Studio creates this ID when you build the application. Visual Studio を使用しない場合に ID を作成する方法については、「アプリケーションを手動で構築して読み込む方法」をご覧ください。If you do not use Visual Studio, see How to manually build and load an application for information on creating the ID. 必須。Required.
EntryPointEntryPoint 実行可能ファイルの名前と、アプリケーションのファイル システム イメージ内での相対パス。これは、アプリケーションのビルド時に作成されます。Name of the executable together with the relative path in the application's file system image, which is created when the application is built. 現在、Visual Studio では、この値に対して /bin/app が使用されます。Visual Studio currently uses /bin/app for this value. 必須。Required.
CmdArgsCmdArgs 起動時にアプリケーションに渡す引数。Arguments to pass to the application at startup. 各引数を二重引用符で囲み、コンマで区切ります。Enclose each argument in double quotation marks and separate arguments with a comma. 省略可能。Optional.
TargetApplicationRuntimeVersionTargetApplicationRuntimeVersion アプリケーションに必要な Azure Sphere アプリケーション ランタイムのバージョン。Version of the Azure Sphere application runtime that the application requires. このフィールドは、ビルド プロセス中に自動的に追加されます。This field is automatically added during the build process. 省略可能。Optional. 詳細については、ベータ機能の使用に関する記事を参照してください。See Use beta features for details.
TargetBetaApisTargetBetaApis アプリケーションではベータ API が必須であることを指定し、使用されるベータ API を識別します。Specifies that the application requires Beta APIs and identifies the set of Beta APIs used. アプリケーションがベータ API を使用してビルドされる場合、このフィールドはビルド プロセス中に自動的に追加されます。This field is automatically added during the build process if the application is built using Beta APIs. 省略可能。Optional. 詳細については、ベータ機能の使用に関する記事を参照してください。See Use beta features for details.
ApplicationTypeApplicationType アプリケーションの種類。Type of application. 省略可能。Optional. gdbserver に代わるものをビルドしている場合にのみ、Debugger に設定します。Set to Debugger only if you are building a replacement for gdbserver.
CapabilitiesCapabilities アプリケーション リソースの要件を指定するキー/値ペアのリスト。List of key/value pairs that specify application resource requirements. 必須。Required.

Capabilities セクションでは次のものがサポートされます。The Capabilities section supports the following:

名前Name 説明Description
AllowedConnectionsAllowedConnections アプリケーションが接続できる DNS ホスト名または IP アドレス (IPv4) のリスト。List of DNS host names or IP addresses (IPv4) to which the application is allowed to connect. アプリケーションが Azure IoT Hub を使用している場合、ハブの IP アドレスまたは DNS ホスト名をリストに含める必要があります (通常は、hub-name.azure-devices.net)。If the application uses an Azure IoT Hub, the list must include the IP address or DNS host name for the hub, typically hub-name.azure-devices.net. 名前および IP アドレスでは、ポート番号とワイルドカードは使用できません。Port numbers and wild cards in names and IP addresses are not accepted.
AllowedTcpServerPortsAllowedTcpServerPorts ベータ機能BETA feature 受信 TCP トラフィックを許可するポートの一覧。ベータ機能BETA feature List of ports that allow incoming TCP traffic. 最大 10 個のポートを含めることができ、各ポートを個別に一覧に追加する必要があります。You can include up to 10 ports, and each port must be listed individually. サポートされるポートは、1024 - 65535 です。The supported ports are 1024 to 65535. TCP と UDP の両方に同じポートを指定できます。You can specify the same ports for both TCP and UDP. ただし、デバイス上の複数のアプリに対して同じポートを指定した場合、2 番目に実行されるアプリの読み込みは失敗します。However, if you specify the same port for more than one app on the device, the second app to run will fail to load.
AllowedUdpServerPortsAllowedUdpServerPorts ベータ機能BETA feature 受信 UDP トラフィックを許可するポートの一覧。ベータ機能BETA feature List of ports that allow incoming UDP traffic. 最大 10 個のポートを含めることができ、各ポートを個別に一覧に追加する必要があります。You can include up to 10 ports, and each port must be listed individually. サポートされるポートは、1024 - 65535 です。The supported ports are 1024 to 65535. TCP と UDP の両方に同じポートを指定できます。You can specify the same ports for both TCP and UDP. ただし、デバイス上の複数のアプリに対して同じポートを指定した場合、2 番目に実行されるアプリの読み込みは失敗します。However, if you specify the same port for more than one app on the device, the second app to run will fail to load.
DeviceAuthenticationDeviceAuthentication デバイスの認証に使用する Azure Sphere テナントの UUID を指定する文字列。A string that specifies the UUID of the Azure Sphere tenant to use for device authentication. このフィールドは、デバイスの認証でデバイス プロビジョニング サービスが使用されるときに、Visual Studio 内の接続済みサービスによって自動的に追加されます。This field is automatically added by the Connected Service in Visual Studio when the Device Provisioning Service is used for device authentication.
GpioGpio アプリケーションが使用する GPIO を示す整数のリスト。List of integers that identify which GPIOs the application uses.
I2cMasterI2cMaster ベータ機能BETA feature アプリケーションで使用される I2C マスター インターフェイスのリスト。ベータ機能BETA feature List of I2C master interfaces that are used by the application. MT3620 開発ボードの場合、指定できる値は "ISU0" から "ISU4" です。For the MT3620 development board, the possible values are "ISU0" through "ISU4".
MutableStorageMutableStorage ベータ機能BETA feature アプリケーションでの永続的なストレージの使用を許可する変更可能なストレージの設定。ベータ機能BETA feature Mutable storage settings that allow the application to use persistent storage.
NetworkConfigNetworkConfig ベータ機能BETA feature アプリケーションにネットワークを構成できるアクセス許可があるかどうかを示すブール値。ベータ機能BETA feature Boolean that indicates whether the application has permission to configure networking. アプリケーションにその機能がある場合は True、それ以外の場合は False。True if the application has the capability; otherwise, False.
SpiMasterSpiMaster ベータ機能BETA feature アプリケーションで使用される SPI マスター インターフェイスのリスト。ベータ機能BETA feature List of SPI master interfaces that are used by the application. MT3620 開発ボードの場合、指定できる値は "ISU0" から "ISU4" です。For the MT3620 development board, the possible values are "ISU0" through "ISU4".
SystemTimeSystemTime ベータ機能BETA feature アプリケーションにシステム時刻を構成できるアクセス許可があるかどうかを示すブール値。ベータ機能BETA feature Boolean that indicates whether the application has permission to configure the system time. アプリケーションにその機能がある場合は True、それ以外の場合は False。True if the application has the capability; otherwise, False.
UartUart アプリケーションが使用する UART 周辺機器のリスト。List of UART peripherals that the application uses. MT3620 開発ボードの場合、指定できる値は "ISU0" から "ISU4" です。For the MT3620 development board, the possible values are "ISU0" through "ISU4".
WifiConfigWifiConfig アプリケーションが WifiConfig API を使用するアクセス許可を持っているかどうか、したがって Wi-Fi 構成を変更できるかどうかを示すブール値。Boolean that indicates whether the application has permission to use the WifiConfig API and consequently to change the Wi-Fi configuration. この機能が省略されているか、または False に設定されている場合は、WifiConfig API を使おうとするとエラーになります。If this capability is omitted or is set to False, attempts to use the WifiConfig API fail.

MutableStorage セクションでは次のものがサポートされます。The MutableStorage section supports the following:

名前Name 説明Description
SizeKBSizeKB 変更可能なストレージのサイズをキロバイト単位で指定する整数。Integer that specifies the size of mutable storage in kibibytes. 最大値は 64 です。The maximum value is 64.

app_manifest.json ファイルの例を次に示します。The following shows a sample app_manifest.json file:

{
    "SchemaVersion": 1,
    "Name": "MyTestApp",
    "ComponentId": "072c9364-61d4-4303-86e0-b0f883c7ada2",
    "EntryPoint": "/bin/app",
    "CmdArgs": ["-m", "262144", "-t", "1"],
    "Capabilities": {
        "AllowedConnections" : [ 
            "my-hub.example.net",
            "contoso.azure-devices.net",
            "global.azure-devices-provisioning.net" ],
        "AllowedTcpServerPorts": [ 1024, 65535 ],
        "AllowedUdpServerPorts": [ 1024, 50000 ],
        "DeviceAuthentication": "77304f1f-9530-4157-8598-30bc1f3d66f0",
        "Gpio": [ 15, 16, 17, 12 ],
        "I2cMaster": [ "ISU2" ],
        "MutableStorage" : {
            "SizeKB": 64,
        },
        "SpiMaster": [ "ISU1" ],
        "SystemTime" : true,
        "Uart": [ "ISU0" ],
        "WifiConfig" : true
    }
}

MyTestApp 用の sample app_manifest.json ファイルでは、以下が行われます。The sample app_manifest.json file for MyTestApp does the following:

  • 4 つのコマンドライン引数をアプリに渡します。Passes four command-line arguments to the app.
  • my-hub.example.net、contoso.azure-devices.net、および global.azure-devices-provisioning.net をホストしている DNS への接続のみを許可します。Only allows connections to the DNS hosts my-hub.example.net, contoso.azure-devices.net, and global.azure-devices-provisioning.net.
  • ベータ機能BETA feature ポート 1024 と ポート 65535 上での受信 TCP トラフィックを許可します。ベータ機能BETA feature Allows incoming TCP traffic on ports 1024 and 65535.
  • ベータ機能BETA feature ポート 1024 と ポート 50000 上での受信 UDP トラフィックを許可します。ベータ機能BETA feature Allows incoming UDP traffic on ports 1024 and 50000.
  • デバイス認証で使用する Azure Sphere テナントを指定し、デバイス プロビジョニング サービスへの接続を許可します。Specifies an Azure Sphere tenant to use for device authentication and allow connections to the Device Provisioning Service.
  • 4 つ の GPIO の使用を指定します。Specifies the use of four GPIOs.
  • 1 つの UART 周辺機器の使用を指定します。Specifies the use of one UART peripheral.
  • ベータ機能BETA feature ストレージ領域の 64 キビバイトを変更可能なストレージとして有効にします。ベータ機能BETA feature Enables mutable storage with 64 kibibytes of storage space.
  • アプリで WifiConfig API を使用して Wi-Fi 構成を変更できるようにします。Enables the app to use the WifiConfig API to change the Wi-Fi configuration.
  • ベータ機能BETA feature 1 つの SPI マスター インターフェイスの使用を指定します。ベータ機能BETA feature Specifies the use of one SPI master interface.
  • ベータ機能BETA feature 1 つの I2C マスター インターフェイスの使用を指定します。ベータ機能BETA feature Specifies the use of one I2C master interface.