Azure REST API更新:Microsoft Discovery 2026-06-01 GAの変更点と移行確認

Azure REST APIのMicrosoft Discovery関連更新を見て、「自社のアプリやSDK生成に影響があるのか」「2026-06-01へ移行すべきなのか」と迷っている場合、まず押さえるべき結論はシンプルです。今回の更新は、Azure REST API全体ではなく、Microsoft DiscoveryのデータプレーンAPI、特にBookshelfとWorkspaceを直接呼び出す開発者・SDK生成担当者・API仕様をCIで取り込んでいるチームが確認すべき変更です。

2026年5月5日に公開されたPRでは、Microsoft Discovery Bookshelf / Workspace向けにデータプレーンの安定版APIバージョン2026-06-01を追加し、既存の2026-02-01-previewには説明文修正などの非破壊的な更新を加えています。既存のpreview利用者が即座に全面移行する必要があるとは限りませんが、api-versionを固定しているコード、AutoRestなどでクライアントを生成している環境、一覧APIのレスポンスを配列として処理している実装は、早めに差分確認を行うべきです。(GitHub)

目次

今回のAzure REST API更新で何が変わったのか

今回の「Azure REST API documentation update: [Microsoft Discovery] Add data-plane Discovery new GA version 2026-06-01 and 2026-02-01-preview non-breaking updates」は、Microsoft DiscoveryのデータプレーンAPI仕様に関する更新です。

主なポイントは次の3つです。

確認項目変更内容実務上の見方
新しい安定版API2026-06-01がBookshelf / WorkspaceのデータプレーンAPIに追加previewではなく安定版APIを前提に開発・検証したいチームは移行候補
previewの修正2026-02-01-previewに説明文修正、JSONスキーマ上のフィールド順序変更など通常はアプリの動作変更より、仕様生成・ドキュメント差分確認が中心
SDK生成への影響readmeの既定タグがpackage-2026-06-01に更新autorest readme.mdのようにタグ未指定で生成しているCIは出力差分を確認

Microsoft Discoveryは、研究者やエンジニアが知識探索、実験実行、検証を含むR&Dライフサイクルを管理するための統合環境として説明されています。Bookshelfは文書をナレッジグラフ化する機能、Workspaceはプロジェクト・調査・ツール実行などを扱う領域に関係します。(Microsoft Learn)

Azure REST APIでは、要求URI、HTTPメソッド、ヘッダー、本文、応答を組み合わせてリソースを操作します。多くのAzure APIではapi-versionをクエリ文字列で指定するため、今回のようなAPIバージョン追加では、アプリ側でどのバージョンを明示しているかを確認することが重要です。(Microsoft Learn)

まず確認すべき影響範囲

今回の更新は、Azure REST APIを使うすべての利用者に影響するものではありません。対象はMicrosoft DiscoveryのデータプレーンAPIを直接または間接的に扱うケースです。

利用状況対応優先度確認すべきこと
Microsoft Discovery Bookshelf / WorkspaceをRESTで直接呼び出している高api-version、レスポンスDTO、ページング処理、LRO処理
AutoRestやOpenAPI仕様からSDK・型定義を生成している高package-2026-06-01が生成対象になるか、CI差分が出るか
2026-02-01-previewを本番相当で使っている中preview修正は非破壊的とされるが、生成物の差分を確認
Azure SDKだけを使い、REST仕様を直接見ていない中利用SDKがどのREST APIバージョンを対象にしているか
Microsoft Discovery Studioやポータル中心でAPIを直接使っていない低すぐにコード修正が必要とは限らない
他のAzureサービスのREST APIだけを使っている低今回のPR単体では原則対象外

なお、PRページ上ではこのPRはOpenとして表示され、new-api-versionやdata-planeなどのラベルが付与されています。また、マージ後は顧客向けに出荷済みAPIと見なされる旨や、新しいAPIバージョンのためAPI stewardship board reviewが必要である旨も示されています。実装に取り込む前に、PRのマージ状況、Microsoft Learn側のAPIバージョン表示、利用SDKのリリース状況を必ず確認してください。(GitHub)

Bookshelf APIで確認すべき変更点

KnowledgeBaseモデルはインデックス状態の見え方が変わる

Bookshelfでは、KnowledgeBase周辺のモデルが整理されています。2026-06-01では、従来のトップレベルのversionやstatusが削除対象となり、代わりにcreatedByApiVersion、lastIndexingRun、errorなどが追加されています。lastIndexingRunには、直近のインデックス実行ID、状態、エラー、メトリクスを持たせる形です。(GitHub)

実務では、次のようなコードがある場合に注意が必要です。

// 旧バージョン前提の例
if (knowledgeBase.status === "Succeeded") {
  console.log(knowledgeBase.version);
}

2026-06-01へ移行する場合は、直近のインデックス状態をlastIndexingRun.statusで見る設計に変えるなど、レスポンスモデルの前提を見直す必要があります。

// 2026-06-01を意識した例
const run = knowledgeBase.lastIndexingRun;

if (run?.status === "Succeeded") {
  console.log({
    createdByApiVersion: knowledgeBase.createdByApiVersion,
    documentsProcessed: run.indexingMetrics?.documentsProcessed,
    documentsFailed: run.indexingMetrics?.documentsFailed,
  });
}

IndexingMetricsで処理件数と進捗を監視しやすくなる

IndexingMetricsには、処理済みドキュメント数、失敗ドキュメント数、総ドキュメント数、インデックス完了率、enrichmentとindexingの開始・終了時刻が含まれます。これにより、単に「成功・失敗」を見るだけでなく、どの段階で止まったのか、どれくらいの文書が処理されたのかを監視しやすくなります。(GitHub)

運用で活用するなら、次のようなメトリクスをダッシュボード化すると実用的です。

監視項目見るべきフィールド使いどころ
インデックス進捗indexingPercentageComplete長時間処理の進捗確認
失敗率documentsFailed / documentsTotalデータ品質や取り込み失敗の検知
処理対象数documentsTotal想定したファイル群が対象になっているか
enrichment時間enrichmentStartTimeUtc / enrichmentEndTimeUtc前処理に時間がかかるケースの切り分け
indexing時間indexingStartTimeUtc / indexingEndTimeUtc実インデックス処理のボトルネック確認

KnowledgeBaseの操作ステータスはoperationTypeで分かりやすくなる

KnowledgeBaseOperationTypeが追加され、Indexing、CancelIndexing、Search、Deleteといった操作種別を型として扱えるようになります。さらに、操作ステータスにはindexingResultやsearchResultが追加され、インデックス操作や検索操作の結果を区別して扱える形になります。(GitHub)

特に、複数の長時間実行操作を同じ監視ジョブでポーリングしている場合は、operationTypeを使って処理を分岐すると、ログやエラー通知が読みやすくなります。

switch (operation.operationType) {
  case "Indexing":
    console.log(operation.indexingResult?.metrics);
    break;
  case "Search":
    console.log(operation.searchResult?.searchResults);
    break;
  case "Delete":
    console.log("KnowledgeBase delete operation");
    break;
}

KnowledgeBase検索は非同期処理として扱う前提で確認する

Bookshelfのsearch操作は、/knowledgeBases/{knowledgeBaseName}:searchに対するPOSTとして定義され、202レスポンスとOperation-Locationヘッダーを返す形が示されています。つまり、検索要求を投げて即座に最終結果を受け取る前提ではなく、操作ステータスをポーリングして結果を確認する設計を意識する必要があります。(GitHub)

失敗しやすいのは、HTTPステータス202を「まだ結果がないから失敗」と誤判定する実装です。202 Acceptedを正常な受付として扱い、Operation-Locationを保存して後続確認に使うようにしましょう。

Workspace APIで確認すべき変更点

ConversationsとInvestigationsの一覧レスポンスがページ形式になる

Workspaceで最も実装影響が出やすいのは、一覧APIのレスポンス形状です。Conversations.listとInvestigations.listは、従来の裸の配列レスポンスから、CustomPageを返すページング形式に変わります。PR本文でも、skip、top、maxPageSizeクエリパラメーターを伴うページング操作へ変更されることが示されています。(GitHub)

2026-06-01のOpenAPIでは、PagedConversationやPagedInvestigationがvalue配列とnextLinkを持つオブジェクトとして定義されています。(GitHub)

旧実装で次のように配列を直接処理している場合は、移行時に失敗しやすいポイントです。

// 旧レスポンスが配列である前提の例
const conversations = await listConversations();

for (const conversation of conversations) {
  console.log(conversation.name);
}

ページ形式では、まずvalueを取り出し、必要に応じてnextLinkを追跡する処理に変える必要があります。

// 2026-06-01のページ形式を意識した例
let page = await listConversations({ top: 50 });

for (const conversation of page.value) {
  console.log(conversation.name);
}

while (page.nextLink) {
  page = await fetchNextPage(page.nextLink);
  for (const conversation of page.value) {
    console.log(conversation.name);
  }
}

大量のConversationやInvestigationを扱う環境では、ページング対応は単なる型修正ではありません。API呼び出し回数、再試行、nextLink保存、途中失敗時の再開位置まで設計しておくと、運用時のトラブルを減らせます。

skip、top、maxPageSizeは一覧取得の負荷制御に使える

ListPaginationParametersとして、skip、top、maxPageSizeが追加されています。skipはスキップ件数、topは返す最大件数、maxPageSizeは1ページあたりの最大件数を指定するためのパラメーターです。(GitHub)

実装時は、次のように使い分けると分かりやすくなります。

パラメーター役割使い方の例
top取得したい総件数の上限管理画面で最新50件だけ表示
maxPageSize1回のレスポンスで返す件数の上限APIレスポンスが重くならないよう100件単位で取得
skip先頭から読み飛ばす件数単純なページ送りや再取得時の位置調整

ただし、nextLinkが返る場合は、独自にskipを増やして再計算するより、基本的にはnextLinkを使う実装のほうが安全です。サーバー側のページング仕様が変わっても追従しやすくなります。

StorageMountProtocolでマウント方式を明示できる

Workspaceのツール実行まわりでは、StorageMountProtocolが追加され、値としてNFSとBlobfuseCachingが定義されています。また、InputDataMountとOutputDataMountにmountProtocolを指定できるようになります。(GitHub)

これは、ツールコンテナに入力データや出力先をマウントする際の挙動に関わります。たとえば、読み取り性能を重視する処理、キャッシュの有無で結果や速度が変わる処理、大量ファイルを扱うバッチ処理では、マウント方式の違いが実行時間や安定性に影響する可能性があります。

確認すべきポイントは次のとおりです。

確認箇所判断基準
既存のツール実行定義inputDataやoutputDataでマウントを使っているか
ストレージ種別NFS前提のパス操作やファイルロックを使っていないか
パフォーマンス要件小さなファイル多数か、大容量ファイル少数か
再現性キャッシュ利用時に古いデータを参照するリスクがないか

特に、ツール内でファイルの存在確認、ディレクトリ走査、ロックファイル作成を行う場合は、NFSとBlobfuseCachingのどちらを使うかで挙動確認が必要です。

InfraOverridesで最大CPU・RAM・GPUを制御できる

InfraOverridesには、従来のcpu、ram、gpu、replicaCount、imageUriに加えて、maxCpu、maxRam、maxGpuが追加されています。これはツール実行時のリソース上限を制御するための項目です。(GitHub)

実務では、次のようなケースで役立ちます。

利用シーン使い方
コスト上限を守りたいGPU数やCPU上限を明示して過剰利用を防ぐ
共有環境で暴走を防ぎたい特定ツールだけ最大RAMを制限する
実験ごとの差を比較したい同じツールを異なる上限で実行し、処理時間や精度を比較
本番運用前の検証低めの上限で失敗条件を確認する

注意点は、maxCpuやmaxRamは「その分のリソースが必ず確保される」という意味ではなく、実行時の上限指定として扱うべき点です。実際の利用可否は、環境のノードプール、クォータ、スケジューリング状況にも左右されます。

WorkingMemoryEntryTypeの値がthoughtからThoughtへ変わる

WorkingMemoryEntryTypeでは、thoughtが2026-06-01で削除対象となり、Thoughtが追加されています。小さな差に見えますが、文字列比較やenum変換を厳密に行っているコードでは影響が出ます。(GitHub)

次のような実装は移行時に確認が必要です。

// 旧バージョン前提
if (entry.type === "thought") {
  renderThought(entry.content);
}

2026-06-01を使う場合は、新しい値に対応しつつ、移行期間は両方を許容する実装にしておくと安全です。

if (entry.type === "Thought" || entry.type === "thought") {
  renderThought(entry.content);
}

ただし、最終的には利用APIバージョンに合わせて、許容値を整理してください。いつまでも旧値を残すと、データ不整合を見逃しやすくなります。

DiscoveryEngineUpdateからdiscoveryEngineStatusが外れる

DiscoveryEngineUpdateでは、discoveryEngineStatusが2026-06-01で削除対象となっています。Discovery Engineの状態を更新リクエストで直接書き換えるような実装がある場合は、systemPromptやconfigurationなど、実際に更新可能なフィールドだけを送るように見直しましょう。(GitHub)

ありがちな失敗は、既存オブジェクトをそのままPATCH本文に流用することです。読み取り用モデルと更新用モデルを分けていない場合、削除されたフィールドや読み取り専用のフィールドを送ってしまい、400系エラーや予期しない無視につながる可能性があります。

2026-02-01-preview利用者は何をすべきか

今回のPRでは、2026-02-01-previewに対して「Resources for indexing operation」から「Parameters for indexing operation」への説明文修正、KnowledgeBase操作ステータス説明の修正、JSONスキーマ上のstatusフィールド位置の並べ替えが含まれています。PRではこれらが非破壊的な修正として説明されています。(GitHub)

preview利用者がまず行うべきことは、アプリの大規模改修ではなく、生成物とテストの差分確認です。

確認対象やること
OpenAPIから生成した型説明文やフィールド順序変更で差分が出るか確認
スナップショットテストJSONスキーマの順序差分だけで失敗していないか確認
APIドキュメント生成表示文言の変更が利用者向けドキュメントに反映されるか確認
CIのlint / validationwarningやsuppressionの差分が出ないか確認

非破壊的とされる変更でも、コード生成やスナップショット比較では差分として検出されることがあります。特に、API仕様ファイルを取り込んで社内SDKを自動生成しているチームは、PR反映後の生成結果を一度レビューするのがおすすめです。

SDK生成・CIで特に注意したいポイント

BookshelfとWorkspaceのreadmeでは、openapi-type: data-planeが指定され、既定のtagがpackage-2026-06-01になっています。つまり、タグを明示せずにAutoRestを実行している場合、これまでpreview仕様を前提としていた生成結果が、安定版2026-06-01仕様へ切り替わる可能性があります。(GitHub)

次のようなCI設定は確認してください。

# タグ未指定の場合、readme側の既定tagに依存する
autorest readme.md

preview仕様で生成を続けたい場合は、明示的にタグを指定します。

autorest readme.md --tag=package-2026-02-01-preview

安定版へ切り替える場合は、次の順序で進めると安全です。

手順作業内容失敗しやすい点
1生成対象タグを明示するreadmeの既定変更に気づかず生成結果が変わる
2生成コードの差分を見る型名変更だけでなくレスポンス形状の変更を見落とす
3REST統合テストを実行するmockが旧レスポンス配列のままで通ってしまう
4ページングとLROを重点確認するvalue、nextLink、Operation-Locationの扱い漏れ
5本番前に小さくカナリア実行するDiscovery環境やテナント側の利用可否を確認しないまま展開する

PR上ではAPIViewがSwagger、TypeSpec、Python、C#、JavaScript、Java向けのAPIレビューを作成していることも示されています。ただし、APIViewのレビュー作成はSDKパッケージが利用可能になったことを意味するわけではありません。実際に使うSDKのリリースノート、パッケージバージョン、対応REST APIバージョンは別途確認が必要です。(GitHub)

移行前に検索すべきコードパターン

まずはコードベース内で、旧バージョンや変更対象フィールドを洗い出しましょう。

grep -R \
  -e "2026-02-01-preview" \
  -e "package-2026-02-01-preview" \
  -e "KnowledgeBaseVersion" \
  -e "knowledgeBase.version" \
  -e "knowledgeBase.status" \
  -e "Conversations_List" \
  -e "Investigations_List" \
  -e "discoveryEngineStatus" \
  -e '"thought"' \
  ./src ./tests

見つかった箇所は、次の観点で分類します。

検出された文字列確認内容
2026-02-01-previewGAへ移行する対象か、preview継続か
KnowledgeBaseVersion2026-06-01で不要または構造変更になる処理か
knowledgeBase.versioncreatedByApiVersionやlastIndexingRunで代替できるか
knowledgeBase.statuslastIndexingRun.statusへ変更すべきか
Conversations_List配列ではなくページ形式に対応しているか
Investigations_ListvalueとnextLinkを処理しているか
discoveryEngineStatus更新リクエストに含めていないか
"thought"Thoughtにも対応しているか

この検索は、単なる文字列置換のためではありません。どの箇所が「APIバージョン固定」「レスポンス構造依存」「enum値依存」「更新リクエスト依存」なのかを分けることで、移行作業の優先順位が明確になります。

動作確認で見るべきテストケース

2026-06-01へ移行する場合は、通常の正常系テストだけでは不十分です。今回の変更点に合わせて、次のテストを追加してください。

テスト観点確認内容
APIバージョンapi-version=2026-06-01で呼び出しているか
認証Microsoft Entra IDのトークン取得・Authorizationヘッダー送信が継続して動くか
Bookshelf取得versionやstatusがなくても処理できるか
インデックス監視lastIndexingRunとIndexingMetricsを読めるか
Bookshelf検索202 AcceptedとOperation-Locationを正常処理できるか
Conversations一覧value配列とnextLinkを処理できるか
Investigations一覧大量データ時にページングが途切れないか
Storage mountmountProtocol指定時にツール実行が成功するか
InfraOverridesmaxCpu、maxRam、maxGpu指定時の挙動を確認する
enum値Thoughtを旧thoughtと混同していないか
更新リクエストdiscoveryEngineStatusなど削除対象フィールドを送っていないか

REST APIを直接呼び出す場合は、HTTPステータス、ヘッダー、レスポンス本文をログに残すと切り分けが速くなります。特に長時間実行操作では、最初のリクエストID、Operation-Location、ポーリング結果、最終ステータスをセットで記録しておくと、障害調査に役立ちます。

よくある誤解と注意点

「GAが追加された」だけで自動的に本番利用できるとは限らない

2026-06-01は安定版APIバージョンとして追加されていますが、実際に利用できるかは、PRのマージ状況、対象リージョン、テナント、サービス側の公開状態、SDKの対応状況に左右されます。API仕様ファイルに存在することと、自社環境でただちに呼び出せることは分けて考えてください。

「non-breaking」でもバージョンを変えればコード修正が必要になることがある

今回の2026-02-01-preview修正は非破壊的とされています。一方で、previewから2026-06-01へ自分で移行する場合は、一覧レスポンスのページング化、KnowledgeBaseモデルの整理、enum値変更など、コード上の対応が必要になる場合があります。non-breakingという表現を「どのAPIバージョンでも無修正で移行できる」という意味に広げて解釈しないようにしましょう。

生成SDKの差分をレビューせずに更新しない

AutoRestやOpenAPI Generatorで生成したコードは、仕様の小さな変更でも型やメソッドの戻り値が変わることがあります。特に、一覧APIの戻り値がConversation[]からPagedConversation相当へ変わる場合、コンパイルは通っても実行時の処理が漏れる可能性があります。

環境変数にシークレットを入れない

Workspaceのツール実行仕様では、環境変数にシークレットを含めない旨が記載されています。API移行とは別の観点ですが、ツール実行を自動化している場合は、接続文字列、APIキー、トークンを環境変数へ直接入れていないかも同時に確認しましょう。(GitHub)

次に取るべき行動

今回のAzure REST API更新に対して、最初にやるべきことは「移行するかどうか」を決めることではありません。まず、自社のコードやCIがMicrosoft DiscoveryのBookshelf / WorkspaceデータプレーンAPIにどの程度依存しているかを棚卸しすることです。

優先順位は次の順で進めると安全です。

  1. PRのマージ状況とMicrosoft Learn側のAPIバージョン表示を確認する
  2. コード内のapi-version、AutoRestタグ、旧レスポンス前提の処理を検索する
  3. Conversations.listとInvestigations.listのページング対応を先に確認する
  4. BookshelfのKnowledgeBase、lastIndexingRun、IndexingMetricsを使った監視へ移行できるか確認する
  5. SDK生成をしている場合は、package-2026-06-01とpackage-2026-02-01-previewの生成差分を比較する
  6. 本番反映前に、LRO、ページング、enum値、削除対象フィールドを含む統合テストを実行する

安定版2026-06-01は、Microsoft DiscoveryのデータプレーンAPIを本格利用するうえで重要な節目です。一方で、previewからの移行は単なるapi-versionの置き換えではありません。レスポンス形状、監視項目、ページング、ツール実行のリソース制御まで確認し、変更点を小さく分けて検証することが、トラブルの少ない移行につながります。

この記事を書いた人

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

コメント

コメントする

目次