Azure SDK ComputeSchedule更新まとめ:2026-04-15-preview対応と移行確認ポイント

Azure SDK の「Azure SDK documentation update: [AutoPR Azure.ResourceManager.ComputeSchedule]-generated-from-SDK Generation – .NET-6207979」は、.NET 向けの管理ライブラリ Azure.ResourceManager.ComputeSchedule を使っている開発者が確認すべき更新です。結論から言うと、最初に見るべきポイントは、API Version が 2026-04-15-preview に進んだこと、VM 関連モデルが再生成されていること、baseProfile や resourceOverrides 周辺の型・命名変更をビルドとリクエスト payload の両面で確認することです。ComputeSchedule は VM の Start、Deallocate、Hibernate などの操作をスケジュールまたは即時実行する用途で使われるため、該当する運用コードや自動化処理がある場合は、早めに差分確認を行いましょう。(GitHub)

目次

Azure SDK documentation updateの要点

今回の更新は、Azure.ResourceManager.ComputeSchedule の SDK 生成に関する AutoPR です。PR #58666 は main ブランチへマージされ、PR 本文では specification/computeschedule/ComputeSchedule.Management/tspconfig.yaml、API Version 2026-04-15-preview、SDK Release Type beta、生成元 CommitSHA f12c7de832ff09ca5a6a1fbcd5c9b49b09c10903 が示されています。CHANGELOG では 1.2.0-beta.3 の Release History として、ComputeSchedule RP の api-version 更新と、baseProfile、resourceOverrides の型変更が記載されています。(GitHub)

確認項目内容実務での見方
対象SDKAzure.ResourceManager.ComputeSchedule.NET で ComputeSchedule の管理 API を使うプロジェクトが対象
更新種別SDK 生成による beta 更新GA 前のため、型名・プロパティ名が今後変わる可能性を見込む
API Version2026-04-15-preview既存テストが 2026-03-01-preview などを前提にしていないか確認
設定ファイルspecification/computeschedule/ComputeSchedule.Management/tspconfig.yamlSDK 生成元の TypeSpec 設定として確認
主な変更VM 関連モデル、プロパティ名、プロパティ型コンパイルエラーだけでなく、送信される JSON の差分も見る
リリース履歴上の版1.2.0-beta.3NuGet や社内フィードで実際に取得できる版は別途確認

何が変わったのか

API Versionが2026-04-15-previewへ更新された

大きな変更点は、ComputeSchedule の既定 API Version が 2026-04-15-preview に進んだことです。PR のレビュー概要では、生成クライアントと metadata の既定 API Version が 2026-04-15-preview に更新され、VM 関連のモデルが広く追加されたことが説明されています。metadata 側でも Microsoft.ComputeSchedule の API Version は 2026-04-15-preview として記録されています。(GitHub)

実務上は、SDK のバージョンを上げるだけで終わらせず、次の点を確認してください。

  • 結合テストで期待している api-version が変わるか
  • Azure 側に送信されるリクエスト payload が既存の検証ルールと合うか
  • 既存のログ、監査、アラートが旧 API Version を前提にしていないか
  • プレビュー API を本番運用に使う場合、ロールバック手順を用意しているか

特に、API Version の変更は「C# のコンパイルが通るか」だけでは判断できません。REST API 側の受け取り方、必須項目、既定値、バリデーションが変わる可能性があるため、実際の VM 操作を検証環境で流すことが重要です。

baseProfileとresourceOverridesの扱いが変わる

CHANGELOG では、baseProfile が virtualMachineBaseProfile に、resourceOverrides が virtualMachineOverrides に変更され、検証のために強く型付けされたモデルへ更新されたと説明されています。関連する Azure REST API specs 側の PR でも、virtualMachineBaseProfile と virtualMachineOverrides について、従来のメッセージ形式を模倣するための flatten や、HardwareProfile などのモデル追加が触れられています。(GitHub)

この変更で注意したいのは、単純な文字列置換では不十分な可能性があることです。たとえば、従来は匿名オブジェクトや BinaryData、独自 DTO で payload を組み立てていた場合、新しい SDK モデルに合わせて初期化方法を見直す必要があります。

旧来の確認ポイント新しい確認ポイント
baseProfile を直接組み立てていないかvirtualMachineBaseProfile 相当のモデルで表現できているか
resourceOverrides に任意の JSON を渡していないかvirtualMachineOverrides の型に合う値を渡しているか
payload 比較をしていないかSDK 更新前後で送信 JSON を比較する
既存テストがプロパティ名だけを見ていないか型、ネスト、必須項目、null の扱いまで見る

プロパティ名と型変更で確認すべきコード

今回の PR では、ComputeSchedule SDK の命名を Azure Compute SDK の慣例に寄せるため、TypeSpec の @clientName や @@alternateType による調整が説明されています。PR コメントには、C# プロパティ名の変更と、string から ResourceIdentifier や Uri への型変更が具体的に列挙されています。(GitHub)

C#プロパティ名の主な変更

以下のプロパティをコード内で使っている場合は、コンパイルエラーや IntelliSense の候補から変更後の名前へ置き換えます。

モデル旧C#プロパティ新C#プロパティ
AdditionalCapabilitiesUltraSSDEnabledUltraSsdEnabled
LinuxConfigurationProvisionVMAgentProvisionVmAgent
WindowsConfigurationProvisionVMAgentProvisionVmAgent
UefiSettingsSecureBootEnabledIsSecureBootEnabled
UefiSettingsVTpmEnabledIsVirtualTpmEnabled
LinuxConfigurationDisablePasswordAuthenticationIsPasswordAuthenticationDisabled
LinuxConfigurationEnableVMAgentPlatformUpdatesIsVmAgentPlatformUpdatesEnabled
WindowsConfigurationEnableAutomaticUpdatesIsAutomaticUpdatesEnabled
StorageProfileOsDiskOSDisk
OSDiskOsTypeOSType
ScheduledEventsProfileOsImageNotificationProfileOSImageNotificationProfile

検索するときは、古いプロパティ名だけでなく、VM と Vm、SSD と Ssd、OS と Os のような略語の揺れも見ると見落としを減らせます。

Get-ChildItem -Recurse -Filter *.cs |
  Select-String -Pattern 'UltraSSDEnabled|ProvisionVMAgent|VTpmEnabled|SecureBootEnabled|OsDisk|OsType|OsImageNotificationProfile'

stringからResourceIdentifierやUriへ変わる箇所

id や URL 系プロパティが string のままだと思っているコードは、型変更で修正が必要になる可能性があります。

モデルプロパティ旧型新型
ApiEntityReferenceidstringAzure.Core.ResourceIdentifier
SubResourceidstringAzure.Core.ResourceIdentifier
VirtualHardDiskuristringSystem.Uri
BootDiagnosticsstorageUristringSystem.Uri
KeyVaultSecretReferencesecretUrlstringSystem.Uri
KeyVaultKeyReferencekeyUrlstringSystem.Uri
WinRMListenercertificateUrlstringSystem.Uri
VaultCertificatecertificateUrlstringSystem.Uri

修正の考え方はシンプルです。ARM リソース ID は ResourceIdentifier、URL は Uri として扱います。ただし、値が null になり得る箇所や、相対 URL を渡していた箇所は、単純に new Uri(value) へ置き換えると実行時例外につながることがあります。

using Azure.Core;

ResourceIdentifier resourceId = new ResourceIdentifier(vmResourceId);
Uri storageUriValue = new Uri(storageUri, UriKind.Absolute);

この変更は、コードの安全性を高める一方で、既存のテストデータやモックが文字列前提だと失敗しやすいポイントです。特に単体テストで "id": "/subscriptions/..." のような文字列だけを比較している場合は、SDK モデルのシリアライズ結果まで確認してください。

影響を受けやすい開発者とシステム

対象影響度対応方針
Azure.ResourceManager.ComputeSchedule の beta 版を使っている高旧プロパティ名と型変更をすぐ確認
VM の即時実行、スケジュール実行、作成系処理を自動化している高検証環境で実操作を流し、payload と結果を比較
baseProfile、resourceOverrides を直接組み立てている高新しい強く型付けされたモデルへ移行できるか確認
安定版 1.1.0 のみを本番利用している中すぐ移行しなくてもよいが、GA 前の変更予定を追う
REST API や IaC のみを使っている低〜中SDK 由来の変更ではないが、API Version と payload 名は確認
社内ライブラリで ComputeSchedule の DTO をラップしている高ラッパー側の型定義、変換処理、テストデータを更新

PR のレビューでは ApiCompat が 1.1.0 に対して実行され、netstandard2.0、net8.0、net10.0 でエラー・警告なし、破壊的変更は検出されなかったとされています。ただし、これは「すべてのアプリケーションコードに修正が不要」という意味ではありません。beta 版や preview API を使っているコード、モデル初期化を細かく書いているコードでは、コンパイルや実行時の差分確認が必要です。(GitHub)

移行前に確認する手順

使用中のパッケージバージョンを確認する

まず、プロジェクトがどの版の Azure.ResourceManager.ComputeSchedule を参照しているか確認します。

dotnet list package --include-transitive

Central Package Management を使っている場合は、.csproj だけでなく Directory.Packages.props も確認します。

<PackageVersion Include="Azure.ResourceManager.ComputeSchedule" Version="..." />

注意点として、GitHub の PR や CHANGELOG の更新と、NuGet や社内フィードで取得できるパッケージの反映タイミングは一致しないことがあります。NuGet のパッケージページにはバージョン一覧とプレリリースの表示があるため、実際にインストールできるバージョンを確認してから作業してください。([NuGet][3])

旧プロパティ名を検索する

次に、古い C# プロパティ名を検索します。特に ProvisionVMAgent、UltraSSDEnabled、VTpmEnabled、OsDisk のような略語を含む名前は、レビュー時に見落としやすい箇所です。

grep -R "UltraSSDEnabled\|ProvisionVMAgent\|VTpmEnabled\|OsDisk\|OsType\|baseProfile\|resourceOverrides" .

検索でヒットした箇所は、単に名前を置き換えるだけでなく、周辺の型も確認してください。string から Uri に変わった箇所では、テストデータの値が絶対 URI になっているかも確認します。

送信payloadを比較する

SDK 更新で最も見落としやすいのは、C# コード上の変更ではなく、実際に Azure に送信される JSON の差分です。次のような操作を検証環境で実行し、更新前後の payload を比較します。

検証対象確認内容
VM の Start、Deallocate、Hibernate既存操作が同じ対象 VM に対して成功するか
Submit 系操作予約日時、タイムゾーン、対象リソース ID が正しく送られるか
Execute 系操作即時実行時のレスポンスとステータス取得が変わらないか
VM 作成・Flex 作成系virtualMachineBaseProfile、virtualMachineOverrides の形が想定通りか
エラー取得・キャンセルOperation ID やエラー詳細の扱いが変わっていないか

ログを比較するときは、api-version、プロパティ名、ネスト構造、null の有無を見ます。特に preview API では、SDK 側のモデルが正しくても、サービス側のバリデーションで差分が出ることがあります。

本番適用の判断基準

今回の更新は beta 扱いです。PR のコメントでは、beta を早く出すために一部の重複名を維持し、GA 前に Azure.ResourceManager.Compute への依存や型名・パラメーター名の調整を検討すべきという趣旨のコメントも残されています。つまり、今すぐ全環境へ広げるより、必要なチームが検証目的で取り込むのが現実的です。(GitHub)

採用判断は次のように分けると安全です。

状況判断
2026-04-15-preview の新機能や検証が必要検証環境で導入し、バージョンを固定する
beta2 以前の ComputeSchedule を使っているコンパイルと payload の差分確認をしてから更新
本番で安定稼働しており、新 preview API が不要急いで更新せず、GA または次の安定版を待つ選択も妥当
パートナー連携や外部システム連携がある連携先と payload 名、API Version、ロールバック手順を共有する
社内共通 SDK ラッパーを提供しているラッパー側で新旧プロパティを吸収できるか検討する

よくある失敗と回避策

失敗しやすいポイント起きる問題回避策
PR の「No breaking changes」を見て無検証で更新するアプリ側の beta 利用コードでコンパイルエラーや実行時差分が出るApiCompat の結果とアプリ影響を分けて判断する
string から Uri への変更を機械的に置換する相対 URL や空文字で例外が出るUriKind.Absolute と null チェックを入れる
ResourceIdentifier に任意文字列を渡すARM ID として不正な値が混入する/subscriptions/... 形式の実データでテストする
C# プロパティ名と JSON フィールド名を混同するREST payload を誤って変更するSDK のシリアライズ結果を確認してから修正する
NuGet 反映前にバージョンを固定するCI で restore に失敗するNuGet または社内フィードで取得可能な版を確認する
preview API を本番だけで試すサービス側変更時に影響範囲が読めない検証環境、ステージング、本番の順に進める

次にやるべきこと

まず、コードベース内で Azure.ResourceManager.ComputeSchedule の利用箇所を洗い出します。次に、旧プロパティ名、baseProfile、resourceOverrides、URL 系文字列、ARM リソース ID 文字列を検索し、ビルドとテストを通します。最後に、実際の VM 操作で送信 payload とレスポンスを比較してください。

今回の Azure SDK documentation update は、単なるドキュメント追記ではなく、ComputeSchedule SDK の生成面、API Version、モデル型に関わる更新です。beta を取り込む価値があるチームほど、早い段階で検証しておくと、GA 前の命名変更や型変更にも落ち着いて対応できます。

[3]: https://www.nuget.org/packages/Azure.ResourceManager.ComputeSchedule/ “
NuGet Gallery
| Azure.ResourceManager.ComputeSchedule 1.1.0
“

この記事を書いた人

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

コメント

コメントする

目次