ソフトウェア更新の概念(プレビュー)

Azureデバイスレジストリの機能であるソフトウェアアップデートを活用し、大規模にデバイスにOTAアップデートを届けましょう。 更新情報をAzureデバイスレジストリの名前空間にインポートし、その名前空間内のジョブやグループを使ってデバイスにデプロイします。

Important

Azure デバイス レジストリのソフトウェア更新機能は、現在プレビュー版として提供されています。 現在のプレビューはIoT Hub接続デバイスに限定されています。 本番作業でプレビュー機能は使わないでください。 本番ワークロードについては、引き続き一般利用可能なDevice Update for IoT Hubをご利用ください。

ベータ版、プレビュー版、または他の方法で一般公開されていない Azure の機能に適用される法的条件については、Microsoft Azure プレビューの追加利用規約を参照してください。

複数のデバイスを対象としたソフトウェアアップデートジョブと、Azureデバイスレジストリ名前空間内でオンボーディングされているデバイスを対象としたオンボーディングアップデートジョブを示す図。

サービスの適用性

機能 Azure IoT Operations Azure IoT Hub
ソフトウェア更新プログラム 適用なし プレビュー

IoT Hub向けソフトウェアアップデートおよびデバイスアップデート

ソフトウェア更新は、OTA更新機能をAzure デバイス レジストリに組み込みます。 IoT HubのDevice Updateと同じインポートマニフェスト形式を使用し、Azureデバイスレジストリのグループやジョブを使って名前空間レベルでアップデートを管理できます。

適切な選択肢を選ぶために、以下のガイダンスを参考にしてください。

もしあなたが... Use
本番ワークロードに OTA更新が必要です IoT Hubのデバイスアップデートは、現在も一般に利用可能でサポートされています。
Azureデバイスレジストリの名前空間、グループ、ジョブを通じたアップデート管理について評価したいです この記事では、ソフトウェア アップデート (プレビュー) について説明します。

すでにIoT Hub用のDevice Updateを使っている場合、以下の点を念頭に置いてください:

  • 同じIoTハブで両方を使うことはできません。 このプレビューでは、既存のDevice Update for IoT HubインスタンスがないIoTハブでのみソフトウェアアップデートを使用できます。 ソフトウェアアップデートを試すには、Device Update for IoT Hubを使わないIoT hubをネームスペースに接続してください。
  • デバイスは別のクライアントを使っています。 Device Update Agentを実行するデバイスはソフトウェアアップデートからのアップデートを受け取ることができません。 ソフトウェアアップデートを受け取るには、デバイスは統合されたAzure IoT SDKs(プレビュー版)内のソフトウェアアップデートクライアントを使用します。

ソフトウェアアップデートの仕組み

Azureデバイスレジストリの名前空間でソフトウェアアップデートは、名前空間を設定するとき、または後で有効にできます。 方法については、「Azure Device Registry の使用を開始する (プレビュー)」をご覧ください。 この機能には以下のコンポーネントが含まれます:

  • ソフトウェアアップデート:名前空間にインポートするアップデートです。 ソフトウェアアップデートは、1つ以上のアップデートファイルとインポートマニフェストで構成されています。 ソフトウェアアップデートをインポートした後は、その名前空間内のソフトウェアアップデートジョブやオンボーディングアップデートジョブに利用可能になります。
  • ソフトウェアアップデートジョブ:対象グループの対応デバイスにソフトウェアアップデートを適用します。
  • オンボーディング更新ジョブ: 対応デバイスがオンボーディング中に更新プログラムを確認したときに、登録して動作を開始する前にソフトウェア更新プログラムを適用します。
  • ソフトウェア更新クライアント: デバイス アプリケーションがソフトウェア更新プログラムの確認、ダウンロード、インストール、および結果の報告に使用する、統合 Azure IoT SDK (プレビュー) の一部。

典型的な更新フローは以下の通りです:

  1. 更新ファイルとインポートマニフェストをAzure Storageコンテナにアップロードします。
  2. ソフトウェア更新を名前空間にインポートします。
  3. グループをターゲットにしたジョブを作成するか、オンボーディングのために名前空間を対象にします。
  4. 各デバイスは更新プログラムを確認し、互換性情報を報告します。 デバイスが互換性があれば、アップデートを受け取ります。
  5. デバイスはアップデートをダウンロードしてインストールし、その結果を報告します。 ジョブ実行中の進捗やデバイスレベルの結果を監視します。

ソフトウェア更新プログラム

ソフトウェアアップデートは、一緒にアップロードする2つのコンポーネントで構成されています。

  • アップデートファイル:デバイスがインストールするペイロードです。 ペイロードはファームウェアイメージ、ソフトウェアパッケージ、スクリプト、または複数の関連ファイルの場合があります。
  • インポートマニフェスト:更新を説明する拡張子 .importmanifest.json のJSONファイル。 輸入マニフェストには次のように記載されています:
    • 更新の識別情報: 更新を一意に識別するプロバイダー、名前、バージョン。 プロバイダーと名称を合わせて、1つのデバイスモデルのファームウェア全バージョンなど、 アップデートファミリーを識別します。
    • 互換性プロパティ:どのデバイスがアップデートをインストールできるかを決定するデバイスプロパティです。 詳細については、 デバイス互換性をご覧ください。
    • インストール手順: インストール手順、その順序、各ステップの ハンドラー。 ハンドラーは、パッケージのインストール、スクリプトの実行、イメージの書き込みなど、その手順をどのように適用するかをデバイスに指示します。
    • ファイルメタデータ:各更新ファイルの名前、サイズ、ハッシュ。 サービスはインポート時にファイルの整合性を検証するためにハッシュを使用し、デバイスはインストール前に各ファイルの検証にハッシュを利用できます。

ソフトウェア更新ごとにインポートマニフェストが必要です。 インポートマニフェストなしで更新ファイルをインポートしようとすると、インポートは失敗します。 インポート時に、更新ファイルをマルウェアスキャンすることもできます。 マルウェアスキャンは一部の地域で利用可能です。 手順は「 ソフトウェアアップデートのインポート」をご覧ください。

以下の例は、画像ベースの更新のためのインポートマニフェストを示しています:

{
  "updateId": {
    "provider": "Contoso",
    "name": "IrrigationControllerV2-Image",
    "version": "1.3.0"
  },
  "isDeployable": true,
  "compatibility": [
    {
      "manufacturer": "Contoso",
      "model": "IrrigationControllerV2"
    }
  ],
  "instructions": {
    "steps": [
      {
        "type": "inline",
        "description": "Update the device image to version 1.3.0",
        "handler": "microsoft/swupdate:1",
        "files": [
          "contoso-irrigation-controller-v2-1.3.0.swu"
        ],
        "handlerProperties": {
          "installedCriteria": "1.3.0"
        }
      }
    ]
  },
  "files": [
    {
      "filename": "contoso-irrigation-controller-v2-1.3.0.swu",
      "sizeInBytes": 112738816,
      "hashes": {
        "sha256": "wPdNKUSmWTZkR6Pum9oR/EIzdn5AvON4dsXME+/gHVw="
      }
    }
  ],
  "createdDateTime": "2026-10-01T06:56:51.2002204Z",
  "manifestVersion": "5.0"
}

ソフトウェアアップデートは、IoT HubのDevice Updateと同じインポートマニフェスト形式を使用します。 インポートマニフェストの作成方法を学びたい方は、以下をご覧ください:

デバイスの互換性

インポートマニフェスト内の互換性プロパティによって、どのデバイスがソフトウェアアップデートをインストールできるかが決定されます。 デバイスがアップデートを確認すると、自身の互換性プロパティを報告します。 Azureデバイスレジストリは、それらのプロパティとソフトウェアアップデートで宣言された互換性プロパティを比較します。

互換性プロパティを名前と値の組として定義します。 すべてのソフトウェアアップデートは、少なくとも1つの互換性プロパティを宣言しなければなりません。 manufacturer と model は一般的な選択肢ですが、必須ではありません。 region や environment など、フリートに適した任意のプロパティを使用します。

インポートマニフェストの compatibility セクションはプロパティセットの配列です。 例えば次が挙げられます。

"compatibility": [
  {
    "manufacturer": "Contoso",
    "model": "IrrigationControllerV2"
  }
]

マッチングは以下の通りです:

  • デバイスは集合内のすべての性質に一致しなければなりません。 前述のアップデートは、manufacturer が Contoso として、かつ model が IrrigationControllerV2 として報告されている両方の条件を満たすデバイスにのみ適用されます。 これはContosoの SoilSensorV1 デバイスや、異なるメーカーを報告する IrrigationControllerV2 デバイスには適用されません。
  • デバイスは1セットだけ一致すれば十分です。 複数のプロパティセットを宣言すると、単一のソフトウェアアップデートで複数のデバイスタイプに適用可能です。
  • 各プロパティセットは1つの更新ファミリーに属します。 同じ互換性プロパティを複数のプロバイダーや名前の組み合わせで使うことはできません。 更新ファミリーと互換性プロパティを一緒に計画しましょう。 詳細については、インポートの概念に関する記事を参照してください。

グループには異なる互換性特性を持つデバイスが含まれることがあります。 ソフトウェアアップデートジョブは、対象グループの互換性のあるデバイスにのみアップデートを適用します。 例えば、グループに18台の IrrigationControllerV2 デバイスと6台の SoilSensorV1 デバイスが含まれている場合、18台の互換デバイスに IrrigationControllerV2 デバイスのアップデートが適用されます。 その6台の SoilSensorV1 デバイスは影響を受けていません。

Tip

デバイスは互換性プロパティをAzureデバイスレジストリに報告するため、グループクエリでアップデート対象デバイスのみを含むグループを作成できます。

ジョブ、グループ、そしてロールアウトの挙動

名前空間内で ジョブ を作成することでソフトウェアアップデートをデプロイします。 ソフトウェア更新でサポートされるジョブの種類は2つです:

ジョブの種類 Target いつ使用するか
ソフトウェア更新 Azure Device Registry の グループ すでに稼働している登録済みデバイスを更新してください。 グループはジョブのスコープを定義し、互換性プロパティによってそのスコープ内のどのデバイスがアップデートをインストールするかが決まります。
オンボーディングアップデート Azure Device Registry 名前空間 デバイスが稼働を開始する前に、オンボーディング時に必要なソフトウェアバージョンにしてください。 例えば、ストレージに長期間保管され古いファームウェアを使用しているデバイスにはオンボーディングアップデートを導入します。

ソフトウェア更新ジョブは、開始時に互換性のあるデバイスに届いたからといって停止しません。 ジョブ実行がアクティブな間は、次の項目に更新を引き続き適用します:

  • 作業開始時にオフラインだったが、再接続して更新プログラムを確認したデバイス。
  • ターゲットグループに加わるデバイス。 グループメンバーシップは自動的に更新されません。次にメンバーシップを更新したときに新しいデバイスがグループに加わります。 詳細については、「キャッシュされたメンバーシップと更新」をご覧ください。
  • 例えば、報告された互換性プロパティが変化したことでアップデート対象となるデバイスなどです。

オンボーディングアップデートジョブは終了するまで有効なので、対応機器はオンボーディング中もアップデートを受け取り続けます。

ジョブの状態、スケジューリング、モニタリングについては、「ジョブの概念 (プレビュー)」をご覧ください。

デバイスSDKに関する考慮事項

デバイスは統合された Azure IoT SDK 群 (プレビュー)のソフトウェア更新クライアントを通じてソフトウェア更新を受け取ります。 デバイスソフトウェアを計画する際には、以下の点を念頭に置いてください:

  • 対応デバイス:このプレビューでは、ソフトウェアアップデートクライアントは主に32MB以上のメモリを持つLinuxベースのデバイス向けに設計されています。
  • 統合:SDKはすぐに実行できるエージェントではなくライブラリです。 お客様は、ソフトウェアアップデートクライアントをデバイスアプリケーションに統合し、デバイス上でアップデートをダウンロード、インストール、適用するロジックを提供します。 Microsoftは、始めるのに役立つサンプルを提供しています。
  • アップデートを確認する方法は2つあります。オンボーディング中のデバイスが登録前にオンボーディングアップデートをチェックします。 登録されたデバイスはソフトウェアアップデートジョブからのソフトウェアアップデートをチェックします。 デバイスアプリケーションがアップデートの確認タイミングを決めます。
  • 接続性:デバイスは更新をチェックし、デバイスプロビジョニングサービス接続を通じて結果を報告します。 更新を受け取るために別々のエンドポイントや認証情報は必要ありません。
  • セキュリティ:ソフトウェアアップデートクライアントは、アップデートファイルをダウンロードする前に、サービスから受け取った更新情報の署名を確認します。 デバイスは更新ファイルをHTTPS経由でのみダウンロードするため、更新コンテンツは転送中は常に暗号化されています。 デバイスがHTTPS接続でアウトバウンド接続を行って更新ファイルをダウンロードできるか確認してください。
  • ステータス報告: インストールを試行した後、デバイスは結果を報告し、インストールに失敗した場合はエラーコードを含む結果を報告します。 その結果はジョブ実行のデバイスレベルの結果に表示されます。
  • あなたの責任:自社環境での統合の検証、インストール失敗やアップデート中のデバイス再起動時の復旧動作の検証を担当します。

プレビューの制限事項

現在のプレビューには、次の制限があります。

  • ソフトウェア更新はIoT Hub接続デバイスに対応しています。 Azure IoT Operationsのデバイスおよび資産はこのプレビューではサポートされていません。
  • 既存の Device Update for IoT Hub インスタンスがある IoT hub では、ソフトウェアアップデートを使えません。
  • すべてのソフトウェアアップデートはインポートマニフェストが必要です。 Azureポータルでインポートマニフェストを作成することはできません。
  • ソフトウェアアップデートクライアントは現在、プロキシ更新や参照ステップ(親・子更新)を使うアップデートをサポートしていません。

インポートされたアップデートに適用される制限、例えば最大更新サイズについては、「Device Update for IoT Hub limits」を参照してください。 グループやジョブに適用される制限については、「グループ概念 (プレビュー)」および「ジョブ概念 (プレビュー)」を参照してください。