Azure SDK documentation update JS-5978864とは?Azure Stack HCI SDKの変更点と対応手順

Azure SDK documentation update: [AutoPR @azure-arm-azurestackhci]-generated-from-SDK Generation - JS-5978864 は、Azure SDK全体の一括変更ではなく、JavaScript/TypeScript向けの @azure/arm-azurestackhci、つまりAzure Stack HCIの管理用SDKに関する自動生成PRです。影響を受けるのは、Azure Stack HCIをこのSDKで操作しているアプリ、運用スクリプト、管理ツールで、特に3.x系から4.x系またはbeta版へ移行する場合は、型定義・戻り値・プロパティ階層の確認が必要です。PR上ではAPI Version 2026-03-01-preview、SDK Release Type beta、構成ファイル tspconfig.yaml を使った生成として記録されています。(GitHub)

結論から言うと、今すぐ全Azure SDK利用者が対応する必要はありません。ただし、@azure/arm-azurestackhci を使って ArcSettingClusterExtension、一覧取得、長時間実行操作を扱っている場合は、ビルドが通っていても実行時の扱いが変わる可能性があります。まずは package.json ではなくロックファイルまで含めて、実際に入っている @azure/arm-azurestackhci のバージョンを確認してください。

目次

Azure SDK documentation update: JS-5978864で何が更新されたのか

この更新は、PR名から分かるようにAzure SDKの自動生成パイプラインに関連するものです。対象は azure-sdk-for-js リポジトリ内の @azure/arm-azurestackhci で、Azure Stack HCIのResource Manager、つまり管理プレーン向けライブラリです。Azure SDK for JavaScriptの管理ライブラリは、Azureリソースのプロビジョニングや管理に使う @azure/arm- 系パッケージとして説明されています。(GitHub)

PRの初期コメントでは、生成元の構成として specification/azurestackhci/resource-manager/Microsoft.AzureStackHCI/StackHCI/tspconfig.yaml、API Version 2026-03-01-preview、SDK Release Type beta、SpecRepoのCommitSHAが示されています。つまり、単なるREADMEの文言修正ではなく、API仕様からSDKを再生成した結果を含む更新として見るべきです。(GitHub)

一方で、このPRは最終的に「Closed」となっており、コメントでは「modular SDK has already been released」としてクローズされたことが確認できます。また、2026年5月3日には自動生成ブランチの削除履歴が残っています。したがって、2026年5月3日の情報として参照する場合は、「この日に新しい安定版が出た」と短絡せず、PR履歴・ドキュメント更新・既存リリース状況を合わせて確認するのが安全です。(GitHub)

対応が必要な人・不要な人

@azure/arm-azurestackhci を使っていない場合、この更新による直接的なコード修正は基本的に不要です。Azure Storage、Azure OpenAI、Azure Functions、Azure Key Vaultなど別サービスのSDKだけを使っているプロジェクトには直接関係しません。

利用状況影響度確認すべきこと
@azure/arm-azurestackhci を使っていない対応不要。Azure SDK全体の更新と誤解しない
パッケージは入っているが、コードで呼び出していない低〜中不要な依存関係なら削除を検討
Azure Stack HCIのCluster、ArcSetting、Extensionを取得・更新している型変更、戻り値、プロパティ階層を確認
3.1.0 以前から4.x系へ移行する破壊的変更を前提に検証環境で移行
beta版を本番で使っている安定版へ寄せるか、beta継続理由を明文化

Azure SDK for JavaScriptのリリース一覧では、Azure Stack HCI向け @azure/arm-azurestackhci について、安定版 4.0.0 とbeta版 4.1.0-beta.1 が掲載されています。PR上の分析対象は 4.0.0-beta.4 ですが、実際に採用するバージョンはnpm、Azure SDK Releases、ロックファイルを照合して決める必要があります。(Azure)

重要な変更点は「型」「戻り値」「プロパティの場所」

PR内のBreaking Change Analysisでは、旧SDKが Swagger / AutoRest、API version 2024-04-01、package 3.1.0、新SDKが TypeSpec / @azure-tools/typespec-ts emitter、API version 2026-03-01-preview、package 4.0.0-beta.4 と整理されています。つまり、APIバージョンの更新だけでなく、SDK生成方式の移行も含まれています。(GitHub)

connectivityProperties が自由なオブジェクトから型付きモデルへ

ArcSetting.connectivityPropertiesArcSettingsPatch.connectivityProperties は、従来の Record<string, unknown> から ArcConnectivityProperties へ変更されたと説明されています。これにより、何でも入れられる自由なオブジェクトではなく、enabledserviceConfigurations など、定義された構造を前提にした扱いになります。(GitHub)

実務上は、次のようなコードを確認してください。

// 旧SDKでありがちな扱い
const raw = arcSetting.connectivityProperties as Record<string, unknown>;
const enabled = raw["enabled"];

// 新SDKでは型付きモデルとして扱う
const enabled = arcSetting.connectivityProperties?.enabled;
const services = arcSetting.connectivityProperties?.serviceConfigurations;

型付きになること自体は保守性の向上につながります。ただし、旧コードで任意キーを読み書きしていた場合、TypeScriptのコンパイルエラーや、想定外のプロパティが無視されるリスクがあります。

systemData 系のプロパティはトップレベルではなくネストを確認

Breaking Change Analysisでは、ArcSettingClusterExtension から createdAtcreatedBycreatedByTypelastModifiedAtlastModifiedBylastModifiedByType といったトップレベルの重複プロパティがなくなり、Resource.systemData 側で参照する形に変わったと整理されています。(GitHub)

移行時は、以下のように参照先を変えます。

// 旧SDK
const createdAt = cluster.createdAt;
const createdBy = arcSetting.createdBy;

// 新SDK
const createdAt = cluster.systemData?.createdAt;
const createdBy = arcSetting.systemData?.createdBy;

ここで失敗しやすいのは、画面表示や監査ログ出力のコードです。リソース作成者や更新日時はUIの端に表示されるだけの項目になりがちなので、主要なCRUD処理だけをテストしていると見落とします。管理画面、CSV出力、監査ログ、通知テンプレートまで検索してください。

Extension の一部プロパティが extensionParameters 配下へ移動

Extension では、publishersettingsprotectedSettingsautoUpgradeMinorVersionforceUpdateTagtypeHandlerVersion などがトップレベルではなく extensionParameters 配下に移動したと説明されています。(GitHub)

// 旧SDK
const publisher = extension.publisher;
const settings = extension.settings;
const autoUpgrade = extension.autoUpgradeMinorVersion;

// 新SDK
const publisher = extension.extensionParameters?.publisher;
const settings = extension.extensionParameters?.settings;
const autoUpgrade = extension.extensionParameters?.autoUpgradeMinorVersion;

この変更は、単純な型エラーだけでなく、undefined の扱いにも注意が必要です。たとえば、旧コードで extension.publisher! のように非nullアサーションを使っていた場合、新SDKでは extension.extensionParameters 自体が未定義になり得るため、画面表示やログ出力で空文字フォールバックを用意した方が安全です。

const publisher =
  extension.extensionParameters?.publisher ?? "(publisher未設定)";

一覧取得と長時間実行操作の戻り値も確認する

PRの分析では、ArcSettings.createArcSettings.getArcSettings.updateExtensions.beginUpdateExtensions.beginUpdateAndWaitOperations.list などで操作シグネチャや戻り値パターンの変更が示されています。また、ArcSettingListClusterListExtensionList のようなリスト用インターフェースがエクスポートされず、一覧操作は PagedAsyncIterableIterator を返す方向に整理されたとされています。(GitHub)

一覧処理は、配列のように扱っていたコードを見直します。

// 新しいページング形式を前提にした例
for await (const cluster of client.clusters.listByResourceGroup(resourceGroupName)) {
  console.log(cluster.name, cluster.systemData?.createdAt);
}

長時間実行操作、いわゆるLROは、戻り値の型が変わるとテストコードも壊れやすい箇所です。response.body や独自のレスポンスラッパーを前提にしている場合は、最終的に返るモデル型を確認してください。

const poller = await client.extensions.beginUpdate(
  resourceGroupName,
  clusterName,
  arcSettingName,
  extensionName,
  parameters
);

const result = await poller.pollUntilDone();
console.log(result.id);

ドキュメント上の変更も確認する

このPRのFiles changedでは、CHANGELOG.mdREADME.mdpnpm-lock.yaml などが変更対象として表示されています。特に CHANGELOG.md は多数の追加・削除があり、READMEにもリンクや説明文の調整が入っています。(GitHub)

READMEの差分では、APIリファレンスのリンクが azure-node-preview を含む参照へ変わり、サンプルへのリンクもパッケージ配下のsamplesへ向けられています。開発チーム内で古いサンプルや外部メモを参照している場合は、公式README・API reference・サンプルのリンクを更新しておくと、移行時の混乱を減らせます。(GitHub)

Microsoft LearnのAzureStackHCI client library for JavaScriptページでは、このパッケージがNode.jsとブラウザの両方で動作する同型SDKであり、npm install @azure/arm-azurestackhci で導入できること、認証には @azure/identityDefaultAzureCredentialInteractiveBrowserCredential を使う例が示されています。(Microsoft Learn)

移行前に必ず確認する設定

実際に入っているバージョンを確認する

まず、ソースコード上の package.json だけで判断しないでください。CIや本番ビルドでは、package-lock.jsonpnpm-lock.yamlyarn.lock に固定されたバージョンが使われていることがあります。

npm list @azure/arm-azurestackhci

pnpmを使っている場合は次のように確認します。

pnpm list @azure/arm-azurestackhci

バージョンを明示して検証したい場合は、専用ブランチで固定して試します。

npm install @azure/[email protected]

preview機能を試す目的が明確な場合だけ、beta版を固定して検証します。

npm install @azure/[email protected]

MicrosoftのJavaScript向けAzure SDKインストールガイドでは、バージョンを指定しないインストールは最新バージョンを取得し、特定バージョンを指定すると依存関係がそのバージョンに固定されると説明されています。また、preview packageは早期アクセス用で、一般リリースほど安定しない可能性があるとされています。(Microsoft Learn)

beta版を本番で使うか判断する

Azure SDK for JavaScriptのREADMEでは、本番準備が必要なコードではstableな非betaパッケージを使うよう注意されています。Azure SDKのリリースポリシーでも、beta版は前のbetaから破壊的変更が入り得ると説明されています。(GitHub)

判断基準はシンプルです。

判断項目stable版を選ぶべきケースbeta版を検討するケース
本番運用業務システム、監視、課金・運用に関わる処理原則避ける
preview機能不要API preview機能が必須
変更許容度低い高い。破壊的変更を追える
テスト体制限定的型テスト・統合テスト・ロールバック手順がある

「betaの方が新しいから良い」と考えて導入すると、次のbetaやstable化で再修正が必要になることがあります。preview APIが必要な理由が説明できないなら、まずstable版を検証する方が堅実です。

認証と権限を再確認する

@azure/arm-azurestackhci は管理プレーン向けライブラリなので、認証だけでなく権限も重要です。Microsoft LearnのREADMEでは、Azureサブスクリプションが前提であり、@azure/identity を使った認証例が示されています。また、サービスプリンシパルへ適切なロールを割り当てる必要があり、Owner のようなロールだけでは必要な権限を与えない場合があると説明されています。(Microsoft Learn)

移行検証では、以下をセットで確認してください。

確認項目見る場所失敗しやすいポイント
サブスクリプションID環境変数、設定ファイル、CI secret検証環境と本番環境の取り違え
認証方式DefaultAzureCredential、サービスプリンシパル、Managed Identityローカルでは通るがCIで失敗する
ロール割り当てAzure Portal、Azure CLI、IaC定義Owner相当だと思い込む
テナントIDEntra ID設定、CI secret複数テナント環境で誤設定する
ブラウザ利用バンドラー、認証フローNode.js前提のコードをそのまま流用する

実務での移行手順

まずコード検索で影響箇所を洗い出す

型変更はコンパイルで見つかることが多いものの、表示ロジックや任意オブジェクト操作は見落とされがちです。移行前に、以下のような検索を行います。

grep -R "connectivityProperties" src
grep -R "createdAt\|createdBy\|lastModifiedAt\|lastModifiedBy" src
grep -R "publisher\|settings\|protectedSettings\|autoUpgradeMinorVersion" src
grep -R "ArcSettingList\|ClusterList\|ExtensionList" src
grep -R "beginUpdate\|begin.*AndWait\|Operations.list" src

Windows環境ならPowerShellで確認できます。

Select-String -Path .\src\**\*.ts -Pattern "connectivityProperties","createdAt","createdBy","publisher","ArcSettingList","ClusterList","ExtensionList"

TypeScriptの型チェックを先に通す

移行では、いきなり統合テストを走らせるより、まず型チェックで差分を拾う方が効率的です。

npx tsc --noEmit

型エラーが大量に出る場合は、ExtensionsystemData、一覧取得、LROの順に直すと進めやすくなります。理由は、これらが複数ファイルにまたがりやすく、後回しにすると同じ修正を何度も繰り返すことになるためです。

ログを有効にして実行時エラーを見る

Microsoft LearnのREADMEでは、HTTP要求と応答のログを確認するために AZURE_LOG_LEVELinfo に設定する方法や、@azure/loggersetLogLevel を使う方法が示されています。移行直後は、認証エラー、権限不足、APIバージョン由来のレスポンス差分を切り分けるためにログが役立ちます。(Microsoft Learn)

AZURE_LOG_LEVEL=info npm test

ただし、ログにはリソース名、サブスクリプション、リクエスト情報が含まれる可能性があります。CIログや障害調査ログに残す場合は、社内のログ管理ルールに従ってマスキングしてください。

PRレビューで指摘された注意点

このPRでは、管理SDKレビューにより3つの問題が指摘されています。内容は、package.jsonautoPublishtrue から false に変わったこと、AzureClouds enumが Known プレフィックスを欠き、メンバー名も UPPER_SNAKE_CASE になっていること、AzureSupportedClouds が閉じたtemplate literal typeになっていて拡張性を損ねることです。(GitHub)

これらは、アプリ開発者が直接直すものではありません。ただし、beta版の型名やenum名に強く依存したコードを書くと、後続リリースで修正が入ったときに再度壊れる可能性があります。

実務では、次の方針が安全です。

  • enum名やbeta特有の型名を広範囲に直接参照しない
  • SDK呼び出し部分を小さなラッパー関数に閉じ込める
  • 画面・バッチ・CIがSDK型を直接持たないようにする
  • beta版を使う場合は、破壊的変更を追う担当と手順を決める

たとえば、SDKの戻り値をそのまま画面コンポーネントへ渡すのではなく、アプリ内の安定した型へ変換してから使うと、SDK更新時の修正範囲を狭められます。

type ClusterSummary = {
  id?: string;
  name?: string;
  createdAt?: Date;
};

function toClusterSummary(cluster: Cluster): ClusterSummary {
  return {
    id: cluster.id,
    name: cluster.name,
    createdAt: cluster.systemData?.createdAt,
  };
}

よくある失敗と回避策

「ドキュメント更新だからコードに影響しない」と判断する

今回のAzure SDK documentation updateは、READMEだけでなくCHANGELOGや生成されたSDK表面の変更を含むPRです。Files changedでは大きな差分が表示されており、CHANGELOGにも多数の変更が含まれています。(GitHub)

ドキュメント更新という名前だけでスルーせず、利用中パッケージと一致するかを確認してください。

package.json だけ見て移行済みと判断する

package.json@azure/arm-azurestackhci が書かれていても、実際のインストールバージョンはロックファイルで決まることがあります。特にCIやコンテナビルドでは、ローカルと違うバージョンが入ると、型エラーや実行時エラーの再現が難しくなります。

移行作業では、以下の3点を同じブランチで確認します。

npm list @azure/arm-azurestackhci
npm list @azure/identity
npx tsc --noEmit

systemData の移動をUIだけで見落とす

createdAtlastModifiedBy は、CRUD処理の中心ではないため、テスト対象から漏れやすい項目です。運用画面、監査ログ、CSVエクスポート、通知メールで使っていないか確認してください。

beta版の型をアプリ全体へ広げる

beta版を使う場合、SDK型をそのままアプリ全体の型として広げると、次の更新で修正範囲が大きくなります。SDK呼び出し層でアプリ独自の型に変換し、画面や業務ロジックはその型だけを見る設計にすると、移行負荷を抑えられます。

確認チェックリスト

移行や設定確認では、次の順番で進めると手戻りを減らせます。

| 順番 | 作業 | 完了条件 |
| -: | ————– | —————————————————————– |
| 1 | 利用有無を確認 | @azure/arm-azurestackhci の実利用箇所が分かっている |
| 2 | 実バージョンを確認 | npm/pnpm/yarnのlist結果とロックファイルが一致している |
| 3 | stable/betaを選択 | 本番は原則stable、preview必須時のみbetaと判断できている |
| 4 | 型変更箇所を検索 | systemDataextensionParametersconnectivityProperties を確認済み |
| 5 | TypeScriptを通す | tsc --noEmit が通る |
| 6 | 統合テストを実施 | 認証、一覧取得、更新、LRO完了まで検証済み |
| 7 | ログと権限を確認 | CI・本番相当の認証で動作確認済み |
| 8 | ロールバックを準備 | 旧バージョンへ戻す手順と影響範囲が明確 |

次に取るべき行動

まず、リポジトリで @azure/arm-azurestackhci の利用有無を確認してください。使っていないなら、このAzure SDK documentation updateは情報として把握するだけで十分です。使っている場合は、npm list とロックファイルで実バージョンを確認し、3.x系から4.x系への移行に該当するかを判断します。

移行対象なら、最初に systemDataextensionParametersconnectivityProperties、一覧取得、LROの5点を検索してください。これらは今回の変更で実害が出やすい場所です。最後に、stable版で足りるか、preview APIのためにbeta版が必要かを決めます。本番運用では、理由なくbeta版へ寄せないことが最も重要です。

この記事を書いた人

実務の現場で詰まりがちなポイントを地図にするITブログ「IT trip」を運営。Windows/Office(Teams・Excel)からSQL、サーバ運用、ガジェットまで、再現性のある手順と“なぜそうなるか”を丁寧に解説します。読んだらすぐ試せること、そして迷った人の次の一歩が見えることを大切にしています。

コメント

コメントする

目次