Azure SDK documentation update解説:Go版Bot Service SDK v2 betaの変更点と移行注意点

Azure SDK documentation update: [Refresh sdk-resourcemanager/botservice/armbotservice]-generated-from-SDK Generation - Go-6034384 は、Azure Bot Service を Go から管理する開発者・運用担当者が確認すべき更新です。結論から言うと、これはボットの会話ロジックそのものを変える更新ではなく、Go 版 Azure SDK の管理プレーンライブラリ armbotservicev2.0.0-beta.1 として更新する内容です。特に、/v2 へのモジュールパス変更、2023-09-15-preview API への対応、Network Security Perimeter 構成クライアントの追加、既存コードに影響する型変更・削除が重要です。

この更新は 2026年5月19日に GitHub の Azure SDK for Go リポジトリで PR #26318 として main にマージされ、同日に github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/botservice/armbotservice/[email protected] のパッケージ公開も確認されています。PR の生成情報には、specification/botservice/resource-manager/Microsoft.BotService/BotService/tspconfig.yaml、API Version 2023-09-15-preview、SDK Release Type beta、SpecRepo の CommitSHA aa822c9c01b9e83fbc8ad8ec4c308203a3c29287 が記載されています。(GitHub)

目次

Azure SDK documentation updateでまず確認すべきポイント

今回の更新は「Azure SDK のドキュメント更新」という名前ですが、実務上は Go の管理SDK更新 として扱うべきです。README、CHANGELOG、生成コード、サンプル、fake server、テスト資産まで更新されているため、単なる説明文の差し替えではありません。公式READMEでも、Azure Bot Service module は Azure Bot Service を操作するための Go モジュールとして説明されています。(GitHub)

確認項目内容実務での判断
対象Azure SDK for Go の sdk/resourcemanager/botservice/armbotserviceGoでBot Serviceリソースを管理しているチームが対象
公開パッケージarmbotservice/[email protected]beta版として扱い、本番適用は慎重に判断
APIバージョン2023-09-15-previewpreview API前提のため、環境差・将来変更に注意
主な変更/v2 モジュール化、NSP構成クライアント追加、型変更import、go.mod、テスト、ラッパーコードを確認
影響しにくい範囲ボットの会話処理、Bot Framework のメッセージ処理管理プレーンSDKの更新であり、ランタイム処理とは分けて考える

注意したいのは、PR上では後続コメントとして spec commit 549e13fda6874099890b133b993217f8cd325946 に対する再生成と「swagger baseline に対する breaking changes は 0」と記載されている一方、公開CHANGELOGには Go SDK利用者向けの Breaking Changes が明記されている点です。つまり、「API仕様上の差分が小さい」ことと「既存Goコードが無修正でビルドできる」ことは別問題として扱う必要があります。(GitHub)

今回の更新は何を変えるのか

Goモジュールが/v2になる

最も分かりやすい変更は、Go の import path が v2 系になることです。README のインストール例でも、次のモジュールパスが示されています。(GitHub)

go get github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/botservice/armbotservice/v2

既存コードが v1 系を使っている場合、単に go get するだけではなく、import 文も更新する必要があります。

// 旧: v1系
import "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/botservice/armbotservice"

// 新: v2 beta
import armbotservice "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/botservice/armbotservice/v2"

本番環境で試す場合は、バージョンを固定して検証するのが安全です。

go get github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/botservice/armbotservice/[email protected]
go mod tidy
go test ./...

go.mod では module path が /v2 になっており、go 1.25.0azcore v1.21.0azidentity v1.13.1 などの依存関係も確認できます。CI環境のGoバージョンや依存関係の固定方法も合わせて見直してください。(GitHub)

Network Security Perimeter構成クライアントが追加される

今回の更新で、NetworkSecurityPerimeterConfigurationsClient が追加されています。pkg.go.dev のドキュメントにも、BeginReconcileGetNewListPager の各操作が掲載されています。(Go Packages)

生成コード上では、このクライアントは次のような操作を提供します。

操作用途注意点
GetBotに関連付けられたNetwork Security Perimeter構成を取得リソースグループ名、Botリソース名、構成名が必要
NewListPagerBotに関連付けられたNSP構成を一覧取得NextLink を考慮したページング処理が必要
BeginReconcile指定したNSP構成をreconcileLong-running operationとして扱い、Pollerの処理が必要

生成コードでは、これらの操作が 2023-09-15-preview API から生成されていることがコメントに明記されています。BeginReconcile200 OK または 202 Accepted を成功扱いにする実装で、失敗時は azcore.ResponseError 型のエラーを返す旨も確認できます。(GitHub)

また、Microsoft Learn のARM/Bicep/Terraformリファレンスでは、Microsoft.BotService/botServices/networkSecurityPerimeterConfigurations@2023-09-15-preview がリソース定義として掲載されています。IaCでBot Serviceのネットワーク境界を管理している場合は、SDK側だけでなくBicep、ARM template、Terraform AzAPI側の定義も合わせて確認しましょう。(Microsoft Learn)

生成元はTypeSpecベースの構成に沿っている

PRに記載された設定ファイル tspconfig.yaml では、Go向けに service-dir: sdk/resourcemanager/botserviceemitter-output-dirmodulegenerate-samples: truegenerate-fakes: trueinject-spans: true などが設定されています。つまり、今回の更新は手作業で個別APIを追加したものではなく、Azure REST API Specs 側のTypeSpec構成からSDK・サンプル・fakeを再生成した更新と見てよい内容です。(GitHub)

この性質上、レビュー時は「人が書いた差分を読む」よりも、次の観点で確認した方が実務的です。

観点確認内容
生成設定対象APIバージョン、対象サービス、beta/stable種別
公開パッケージpkg.go.devに公開されたバージョンとimport path
破壊的変更CHANGELOGのBreaking Changes
追加機能新しいclient、enum、struct、field
テスト影響fake server、recording assets、live testの更新

開発者に影響するBreaking Changes

CHANGELOGでは、v2.0.0-beta.1 の Breaking Changes として、EmailChannelAuthMethod の型変更や複数structの削除が記載されています。代表的には、EmailChannelAuthMethodfloat32 から int32 に変わり、ConnectionItemNameErrorErrorBodyPrivateLinkResourceBaseResource が削除されています。(GitHub)

既存コードで影響が出やすいのは、次のようなケースです。

影響箇所起きやすい症状対応
EmailChannelAuthMethod を数値として扱うコード型不一致でビルドエラーint32 前提に修正し、JSON/YAML設定値も確認
削除されたstructを直接参照undefined: armbotservice.Error などのエラーgrepで参照箇所を洗い出し、戻り値のerror処理へ寄せる
自社ラッパーの公開型v1/v2混在による型不一致ラッパーもv2専用に分けるか、移行ブランチで一括更新
switch文でenumを網羅新しいenum値でdefault処理に落ちるunknown値をログ化し、拒否ではなく安全側の処理にする
一覧取得処理1ページ目だけ取得して漏れが出るPagerNextLink を前提に実装する

特に、SDKの型をそのまま自社パッケージのpublic APIに露出している場合は注意が必要です。アプリケーション内部だけで使っている場合よりも、下流プロジェクトの修正範囲が広がります。移行時は go test ./... だけでなく、依存する社内モジュールを含めたビルド確認を行いましょう。

新しく追加・更新される機能

CHANGELOGでは、PublicNetworkAccessSecuredByPerimeter の追加、AccessModeCreatedByTypeNspAccessRuleDirectionProvisioningStateSeverity などのenum追加、Network Security Perimeter関連のstruct追加、BotProperties への NetworkSecurityPerimeterConfigurations 追加などが確認できます。(GitHub)

実務上の見どころは、次の3つです。

PublicNetworkAccessの状態判定を見直す

PublicNetworkAccessSecuredByPerimeter が追加されたことで、既存コードが Enabled / Disabled 程度の前提で分岐している場合、想定外の状態として扱われる可能性があります。

例えば、次のような実装は危険です。

switch *bot.Properties.PublicNetworkAccess {
case armbotservice.PublicNetworkAccessEnabled:
    // 公開アクセスあり
case armbotservice.PublicNetworkAccessDisabled:
    // 公開アクセスなし
default:
    return fmt.Errorf("unknown public network access")
}

preview APIやbeta SDKではenumが増えることがあります。未知の値を即エラーにするより、ログに残して安全側の処理に倒す設計が現実的です。

NSP関連の管理自動化がしやすくなる

Network Security Perimeter構成の取得、一覧、reconcileをSDKから扱えるようになるため、次のような運用自動化に使いやすくなります。

  • Bot ServiceリソースにNSP構成が関連付いているかを棚卸しする
  • ガバナンスチェックで、対象Botのネットワーク境界設定を確認する
  • reconcileが必要な構成を検出し、手動作業を減らす
  • IaCで定義した状態と実際のAzureリソース状態を照合する

ただし、2023-09-15-preview APIを使うため、すべての本番環境で即時採用できるとは限りません。リージョン、テナント設定、Azure Policy、RBAC、組織のpreview API利用ルールを確認したうえで展開してください。

fake serverとサンプル更新によりテストしやすくなる

READMEでは、fake パッケージがライブサービスに接続せず成功・失敗条件をテストするためのin-memory fake serverを提供すると説明されています。今回のPRでも、NSP構成操作のfake server追加や既存fakeの更新が含まれています。(GitHub)

CIでAzure実環境に接続するテストだけに依存していると、認証、権限、課金、リージョン差分の影響を受けやすくなります。SDK更新時は、fakeを使う単体テストと、検証用サブスクリプションでの統合テストを分けるのがおすすめです。

管理者と開発者で確認すべき範囲は違う

この更新はAzure Bot Service関連ですが、全員が同じ作業をする必要はありません。役割ごとに見るべきポイントを分けると、確認漏れを減らせます。

役割確認すべきこと優先度
Go開発者import path、go.mod、Breaking Changes、テスト修正
プラットフォームエンジニアNSP構成、Private Link、PublicNetworkAccessの扱い
Azure管理者preview API利用可否、RBAC、Azure Policy、監査ログ中〜高
SRE/運用担当CI/CDでのSDK更新、ロールバック手順、監視項目
ボットアプリ開発者Bot Frameworkや会話処理への影響有無低〜中

混同しやすい点として、Azure SDK for Go の armbotservice は、Azure上のBot Serviceリソースを管理するためのSDKです。一方、ユーザーとの会話処理を実装するBot Framework SDKとは役割が異なります。Microsoft Learnでは、Bot Framework SDKとBot Framework EmulatorはGitHubでアーカイブされ、更新・保守されなくなったこと、Bot Framework SDKのサポートチケット提供が2025年12月31日時点で終了することも案内されています。既存ボットの将来方針を検討する場合は、管理SDK更新とは別に、Bot Framework SDK側のロードマップも確認してください。(Microsoft Learn)

移行前に行うべきチェック手順

既存利用状況を棚卸しする

まず、対象リポジトリで armbotservice をどこで使っているか確認します。

grep -R "armbotservice" .
go list -m all | grep armbotservice

特に、次のファイルは優先的に確認してください。

ファイル・場所理由
go.modv1系とv2系の依存関係を確認するため
go.sum間接依存の変化を確認するため
Azure管理CLIやバッチ処理Bot Serviceリソース操作に直接影響するため
社内SDKラッパー下流プロジェクトに影響が広がるため
テストコードfake serverや型変更の影響が出やすいため
CI設定Goバージョン、認証方式、環境変数の差分が出るため

beta版を採用する理由を明確にする

v2.0.0-beta.1 はbeta版です。pkg.go.dev上でも、バージョンは v2.0.0-beta.1、公開日は2026年5月19日と表示され、Stable versionではない扱いになっています。(Go Packages)

次の判断基準で採用可否を決めるとよいでしょう。

状況推奨判断
NSP構成の取得・一覧・reconcileをGo SDKから扱いたい検証環境でv2 betaを試す価値がある
既存のBot Service作成・更新・削除だけで困っていない安定版のまま様子を見る
自社管理ツールで将来のpreview API対応を検証したいブランチを分けてPoCする
本番自動化で即時採用したいpreview APIとbeta SDKの利用ルールを確認してから判断
SDKの型を社内ライブラリで公開している影響範囲が広いため、移行計画を作ってから対応

「新しいから入れる」ではなく、「NSP関連の管理やpreview API対応が必要だから入れる」という理由がある場合に限定するのが現実的です。

import更新後はコンパイルエラーを先に直す

v2移行では、実行時エラーよりも先にコンパイルエラーが出る可能性が高いです。まずは以下の順で対応します。

手順作業
1go get .../armbotservice/[email protected] でバージョン固定
2import pathを /v2 に変更
3go mod tidy を実行
4go test ./... で型エラーを確認
5EmailChannelAuthMethod や削除structの参照を修正
6統合テストでAzure認証・権限・API応答を確認
7CI/CDでGoバージョンと依存キャッシュを更新

CIで依存キャッシュを使っている場合、go.sum の更新だけでなく、モジュールキャッシュのキーも更新が必要になることがあります。古いキャッシュが残ると、ローカルでは通るのにCIだけ失敗する原因になります。

展開時に失敗しやすいポイント

失敗しやすいポイント典型的な症状対策
/v2 importを忘れるno required module provides packageimport pathとgo.modを同時に更新
v1型とv2型を混在させる関数引数や戻り値で型不一致移行対象をリポジトリ単位で統一
beta版をlatest相当で扱う後続更新で予期せぬ差分が入る@v2.0.0-beta.1 のように固定
preview APIの利用条件を確認しない403、404、未対応リージョンのような失敗検証サブスクリプションで事前確認
BeginReconcileを同期処理扱いする処理完了前に後続処理が走るPollerで完了確認し、タイムアウトを設計
一覧取得でページングを無視する一部のNSP構成しか取得できないNewListPagerを最後まで処理
enum追加を想定していない新しい値でエラー終了default処理を安全側に設計
削除structを使っているビルド不能grepで参照を洗い出し、エラー処理を見直す

管理系SDKの更新では、コードのコンパイルが通っても、権限不足やAzure Policyによって本番実行時に失敗することがあります。特にNSPやPrivate Link関連の操作は、ネットワーク管理・セキュリティ管理の権限と密接に関わります。アプリ開発チームだけで完結させず、Azure管理者やセキュリティ担当者にも確認してもらうのが安全です。

Bot ServiceのIaC管理にも影響する可能性がある

今回のSDK更新はGo向けですが、Network Security Perimeter構成を管理する場合、Bicep、ARM template、Terraform AzAPI の定義とも整合を取る必要があります。Microsoft Learnでは、Microsoft.BotService/botServices/networkSecurityPerimeterConfigurations@2023-09-15-preview のBicep、ARM template、Terraform AzAPIのリソース形式が示されています。(Microsoft Learn)

たとえば、Go SDKで実リソースを取得し、BicepやTerraformで望ましい状態を管理している場合、次のような確認が必要です。

確認項目理由
IaCのAPIバージョンSDKとIaCで見えるプロパティがずれる可能性がある
parent / parent_id の指定子リソースとしてBot Serviceに紐づくため
リソース名の命名規則SDK操作時の networkSecurityPerimeterConfigurationName と一致させるため
差分検出の方法SDK取得結果とIaCの状態を比較する場合に必要
rollback手順preview API利用時の変更戻しを明確にするため

SDKで取得できるからといって、すべての変更を手動スクリプトで上書きするのは避けた方がよいです。ガバナンス対象のリソースは、IaCを正とし、SDKは検査・補助・一時的なreconcile用途に限定する方が、後から状態を追跡しやすくなります。

すぐに実施すべきアクション

今回の Azure SDK documentation update を受けて、まず実施すべきことは次の3つです。

優先度アクション対象
armbotservice の利用有無をリポジトリ全体で確認Go開発者
v2.0.0-beta.1 が必要か、安定版継続でよいか判断開発責任者・SRE
NSP構成を使う予定がある場合、検証環境でSDKとIaCを照合Azure管理者
Breaking Changesに該当する型・struct参照を洗い出すGo開発者
CIのGoバージョン、依存キャッシュ、認証情報を確認DevOps担当
低〜中Bot Framework SDKの将来方針と混同していないか確認ボット開発チーム

既存システムがAzure Bot ServiceリソースをGoで管理していないなら、今回の更新による直接影響は限定的です。一方、社内ポータル、管理CLI、ガバナンスチェック、IaC補助ツールで armbotservice を使っている場合は、v2 betaを採用しない場合でも、CHANGELOGと新しいAPIの方向性は把握しておく価値があります。

今回の更新は、Azure Bot Serviceの管理機能、とくにNetwork Security Perimeter関連の自動化を進めたいチームにとって重要です。ただし、v2.0.0-beta.12023-09-15-preview の組み合わせである以上、本番適用は「必要性」「影響範囲」「戻し方」を決めてから進めるべきです。まずは利用中のimportを棚卸しし、NSP機能が必要なプロジェクトだけ検証ブランチでv2 betaを試すところから始めてください。

この記事を書いた人

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

コメント

コメントする

目次