ブログ一覧

AIエージェント基盤の選び方:Vertex AI・Bedrock AgentCore・LangGraphの役割を理解する

· 約18分で読めます

業務向けAIエージェントを初めて設計する人へ。AIが依頼を受けて外部の処理を呼び出す流れから、処理の組み立て方・実行環境・保存先の違いを整理し、Vertex AI系の基盤、Bedrock 、の役割を説明します。発注業務を例に構成を選び、承認待ちと再開まで設計します。

本文の点線の語を押すと、説明が開きます。

この記事の用語(43)
AgentCore
AWSの、AIエージェントを動かしたり、ツールへ接続したり、情報を保存したりするサービス群。必要な機能を組み合わせて使う。
LangGraph
処理を線でつないだ図のように、実行順序や分岐をコードで定義するための仕組み。保存先を組み合わせて中断と再開も扱う。
モデル
入力された文章やデータをもとに回答を作るAIの本体。この記事では、次に使うツールを選ぶ役割も担う。
API
別のプログラムに処理を依頼したり、データを受け取ったりするための窓口。たとえば注文APIには、商品と数量を送って発注する。
ツール
AIが使えるように用意した処理の窓口。在庫の照会や注文などを、アプリ側のコードやAPIで実行する。
引数
関数やツールに渡す入力値。在庫照会なら商品ID、注文なら商品IDや数量など。
ADK
Agent Development Kitの略。Googleが提供する、AIエージェントの処理やツールをコードで組み立てるための開発用の仕組み。
Runtime
プログラムを動かす仕組みや環境。この記事でクラウドの製品名に付く場合は、主にアプリの配置先・実行環境を指す。
Google Cloud Sessions
Google Cloudで、一つの会話のメッセージや操作の履歴を保存する機能。
AgentCore Memory
AgentCoreの文脈では、会話の履歴や、会話をまたいで使う情報を保存する機能。
Checkpointer
LangGraphで、途中の処理状態を再開用に保存する仕組み。停止後も再開するには、データが残る保存先を選ぶ。
Store
情報を保存する仕組みや保存先。LangGraphのStoreは、一連の実行をまたぐ情報を扱う。たとえば利用者が好む説明の詳しさを保存する。
認証
誰からの要求かを確認すること。ログインや署名の検証などがある。
Gateway
AgentCoreの文脈では、既存のAPIなどをエージェントのツールとして接続する窓口。
Identity
AgentCoreで、エージェントがサービスへアクセスするときの認証情報などを扱う機能。
DB
データベースの略。注文や利用者などの情報を保存し、検索・更新する仕組み。
グラフ
処理と処理のつながりを表したもの。この記事では、丸や箱にあたるノードが処理、線にあたるエッジが進み先を表す。
永続ストレージ
計算環境が停止しても必要な状態を保持する保存先。
フレームワーク
アプリを組み立てるための共通の部品と仕組み。この記事では、処理の順序や分岐をコードで作るために使う。
Memory Bank
Google Cloudで、会話をまたいで利用する情報を作成・保存・検索する機能。
Harness
モデル・指示・ツールを指定すると、モデルとツールを繰り返し呼ぶ処理をサービス側で管理するAgentCoreの機能。
ノード
グラフに含まれる一つの処理。在庫を調べる、入力を確かめる、承認を待つ、といった役割を持つ。
エッジ
グラフの中で、ある処理から次の処理へ進むためのつながり。
実行基盤
アプリを配置し、実行やスケーリングなどを管理する環境。
プロセス
起動して動いているプログラム。終了すると、その実行中のメモリにだけ置いた情報は失われる。
スレッド
LangGraphで、一連の実行と保存状態をまとめて識別する単位。CPUの処理単位という意味のスレッドとは異なる。
認可
その人やプログラムが、対象のデータに対してその操作をしてよいか判断すること。
JSON
項目名と値の組み合わせや配列で、データを表す形式。記事の例では、案件IDや承認状態を記録する。
JoinNode
ADKで、並列に進めた処理の出力を集め、次の処理へ渡すための合流点。集まった値が業務上有効かどうかは別に確認する。
チェックポイント
処理の途中の状態や、次に実行する位置を再開用に残した記録。注文先での受付結果と一致しているかは別に確認する。
InMemorySaver
LangGraphの保存用の部品の一つ。実行中のメモリだけに状態を置くため、プロセスの終了後には復元できない。
セッション
関連する会話や呼び出しをまとめて扱う単位。セッションのIDが同じでも、実行中のプログラムがずっと動き続けるとは限らない。
microVM
軽量な仮想マシン。AgentCoreでは、セッションごとの実行環境を分離するために使う。
runtimeSessionId
AgentCoreで、関連する呼び出しを同じセッションに結び付けるID。利用者との対応はアプリ側で管理する。
thread_id
LangGraphで、保存した状態をどのスレッドから読み出すか指定するID。ログイン情報ではないため、利用者がそのスレッドを使ってよいかは別に確認する。
バックエンド
画面からの要求を受け、データの確認や保存などを行うサーバー側の処理。
interrupt
LangGraphで、外部からの入力を待つために処理を中断する関数。再開すると、この関数を呼んだノードの先頭から実行される。
冪等性キー
同じ操作の再送だと接続先が判断するための識別子。注文APIが対応していれば、同じ注文を二重に受け付けることを防ぐために使える。
inbound
入口側という意味。この記事では、アプリからGatewayへ入る要求の確認を指す。
outbound
出口側という意味。この記事では、Gatewayから接続先へ出る要求で使う認証を指す。
サービスロール
サービスがAWSリソースへアクセスする際に使うIAMロール。
IAM
AWSの利用者やサービスに、どの操作を許可するか管理する仕組み。
OAuth
パスワードを接続先へ渡す代わりに、許可された範囲のアクセス権を委任するための仕組み。
AgentCore

AWSの、AIエージェントを動かしたり、ツールへ接続したり、情報を保存したりするサービス群。必要な機能を組み合わせて使う。

LangGraph

処理を線でつないだ図のように、実行順序や分岐をコードで定義するための仕組み。保存先を組み合わせて中断と再開も扱う。

モデル

入力された文章やデータをもとに回答を作るAIの本体。この記事では、次に使うツールを選ぶ役割も担う。

API

別のプログラムに処理を依頼したり、データを受け取ったりするための窓口。たとえば注文APIには、商品と数量を送って発注する。

ツール

AIが使えるように用意した処理の窓口。在庫の照会や注文などを、アプリ側のコードやAPIで実行する。

引数

関数やツールに渡す入力値。在庫照会なら商品ID、注文なら商品IDや数量など。

ADK

Agent Development Kitの略。Googleが提供する、AIエージェントの処理やツールをコードで組み立てるための開発用の仕組み。

Runtime

プログラムを動かす仕組みや環境。この記事でクラウドの製品名に付く場合は、主にアプリの配置先・実行環境を指す。

Google Cloud Sessions

Google Cloudで、一つの会話のメッセージや操作の履歴を保存する機能。

AgentCore Memory

AgentCoreの文脈では、会話の履歴や、会話をまたいで使う情報を保存する機能。

Checkpointer

LangGraphで、途中の処理状態を再開用に保存する仕組み。停止後も再開するには、データが残る保存先を選ぶ。

Store

情報を保存する仕組みや保存先。LangGraphのStoreは、一連の実行をまたぐ情報を扱う。たとえば利用者が好む説明の詳しさを保存する。

認証

誰からの要求かを確認すること。ログインや署名の検証などがある。

Gateway

AgentCoreの文脈では、既存のAPIなどをエージェントのツールとして接続する窓口。

Identity

AgentCoreで、エージェントがサービスへアクセスするときの認証情報などを扱う機能。

DB

データベースの略。注文や利用者などの情報を保存し、検索・更新する仕組み。

グラフ

処理と処理のつながりを表したもの。この記事では、丸や箱にあたるノードが処理、線にあたるエッジが進み先を表す。

永続ストレージ

計算環境が停止しても必要な状態を保持する保存先。

フレームワーク

アプリを組み立てるための共通の部品と仕組み。この記事では、処理の順序や分岐をコードで作るために使う。

Memory Bank

Google Cloudで、会話をまたいで利用する情報を作成・保存・検索する機能。

Harness

モデル・指示・ツールを指定すると、モデルとツールを繰り返し呼ぶ処理をサービス側で管理するAgentCoreの機能。

ノード

グラフに含まれる一つの処理。在庫を調べる、入力を確かめる、承認を待つ、といった役割を持つ。

エッジ

グラフの中で、ある処理から次の処理へ進むためのつながり。

実行基盤

アプリを配置し、実行やスケーリングなどを管理する環境。

プロセス

起動して動いているプログラム。終了すると、その実行中のメモリにだけ置いた情報は失われる。

スレッド

LangGraphで、一連の実行と保存状態をまとめて識別する単位。CPUの処理単位という意味のスレッドとは異なる。

認可

その人やプログラムが、対象のデータに対してその操作をしてよいか判断すること。

JSON

項目名と値の組み合わせや配列で、データを表す形式。記事の例では、案件IDや承認状態を記録する。

JoinNode

ADKで、並列に進めた処理の出力を集め、次の処理へ渡すための合流点。集まった値が業務上有効かどうかは別に確認する。

チェックポイント

処理の途中の状態や、次に実行する位置を再開用に残した記録。注文先での受付結果と一致しているかは別に確認する。

InMemorySaver

LangGraphの保存用の部品の一つ。実行中のメモリだけに状態を置くため、プロセスの終了後には復元できない。

セッション

関連する会話や呼び出しをまとめて扱う単位。セッションのIDが同じでも、実行中のプログラムがずっと動き続けるとは限らない。

microVM

軽量な仮想マシン。AgentCoreでは、セッションごとの実行環境を分離するために使う。

runtimeSessionId

AgentCoreで、関連する呼び出しを同じセッションに結び付けるID。利用者との対応はアプリ側で管理する。

thread_id

LangGraphで、保存した状態をどのスレッドから読み出すか指定するID。ログイン情報ではないため、利用者がそのスレッドを使ってよいかは別に確認する。

バックエンド

画面からの要求を受け、データの確認や保存などを行うサーバー側の処理。

interrupt

LangGraphで、外部からの入力を待つために処理を中断する関数。再開すると、この関数を呼んだノードの先頭から実行される。

冪等性キー

同じ操作の再送だと接続先が判断するための識別子。注文APIが対応していれば、同じ注文を二重に受け付けることを防ぐために使える。

inbound

入口側という意味。この記事では、アプリからGatewayへ入る要求の確認を指す。

outbound

出口側という意味。この記事では、Gatewayから接続先へ出る要求で使う認証を指す。

サービスロール

サービスがAWSリソースへアクセスする際に使うIAMロール。

IAM

AWSの利用者やサービスに、どの操作を許可するか管理する仕組み。

OAuth

パスワードを接続先へ渡す代わりに、許可された範囲のアクセス権を委任するための仕組み。

この記事の目的と前提知識

目的: 、処理の制御、実行環境、保存先、業務の役割を理解し、どの処理を自分で実装し、どこを基盤へ任せるか判断できるようになります。

前提知識: Web で別の処理を呼び出し、データベースに情報を保存する基本を知っている方を想定します。AIエージェントの動作と各基盤の役割は、最初から説明します。

扱う範囲: 人の承認を待って発注する業務を例に、Vertex AI系の基盤、Bedrock 、を構成図へ結び付けます。承認待ちからの再開、重複発注の防止、権限の確認まで扱います。

AIエージェントの基本動作と

ここでは、依頼に応じてを選び、結果を見ながら処理を進めるエージェントを扱います。は入力された文章やデータから回答を生成し、ツール呼び出しに対応するモデルなら、必要なツール名とを出力できます。ツールは在庫照会のような処理を呼び出すために定義した関数やです。モデルへ渡す定義にはその用途と入力項目を記述します。

ツールをアプリ側で実行する基本例。必要に応じてモデル呼び出しと結果の返却を繰り返す

利用者の依頼を受ける → モデルへ依頼・ツール定義を渡す → ツール名と引数を受け取る → 権限と入力を検証してAPIを呼ぶ → 結果をモデルへ返し、回答か次の処理へ進む

たとえば「商品Aを10個、金曜までに届けたい」という依頼に、が在庫照会を選んだとします。モデルの出力を受けたアプリが入力と権限を確認し、在庫を呼びます。結果をモデルへ返すと、配送日を調べるか、条件に合わないと回答するかなど、次の処理を決められます。モデルが名を出力しただけでは、データベースの参照や注文は実行されません。管理されたサービスにツール実行を任せる構成もあります。

すべての手順をに選ばせる必要はありません。在庫と配送日の照会順序が決まっていればコードで制御し、依頼の解釈や発注案の説明をモデルへ任せられます。処理の繰り返しには回数・時間・費用の上限と、失敗時に保留する条件を設けます。これらをどの部品で制御するかが、基盤を選ぶときの論点です。

エージェントを構成する役割

「Vertex AI、Bedrock、のどれを使うか」という問いには、の提供元、処理の作り方、配置先という別々の選択が含まれます。まず、エージェントの動作に必要な役割を分けます。一つの製品が複数の役割を担う場合もあります。

役割担当すること構成要素の例
呼び出し文章の解釈、回答や呼び出しの生成Google CloudやAmazon Bedrockなどの
処理の制御次の処理、分岐、並列実行、承認待ちを決める、、管理されたエージェントループ
実行環境アプリを配置し、要求を受けて動かすGoogle Cloud Agent 、 Runtime、自分たちで用意する実行環境
情報の保存会話、再開に必要な状態、会話をまたぐ情報を残す、、、など
業務への接続を公開し、接続先への情報を扱う既存をとして使うための関数、、など

これらに加えて、注文や承認の現在状態を管理する業務とが必要です。会話履歴に「承認した」と残っていても、それだけでは現在の発注案に対する承認とは判断できません。また、実行環境が動いていることと、停止後に状態を復元できることは別の性質です。保存する内容と復元方法を設計します。

Google CloudのVertex AI系の基盤と

Vertex AIのエージェント基盤を調べると、現在の公式資料ではGemini Enterprise Agent Platformという名称が出てきます。Agent Engineの現在の名称はAgent です。旧名称と新名称を別製品として比較せず、どの機能を指す資料かを確認します。ここでは、コードで業務の制御を作ると、そのコードを配置するAgent Runtimeを中心に見ます。

Googleの(Agent Development Kit)は、エージェント、、処理のつながりをコードで組み立てるです。Agent はその実装を配置・実行する管理された環境で、ADK以外のフレームワークを使う構成もあります。つまり、ADKを選ぶことと、どこへ配置するかを決めることは別の判断です。

保存機能にも役割の違いがあります。は一つの会話で交わした履歴を扱い、は複数の会話をまたいで利用者に関する情報を扱います。「会話を覚えている」「処理を再開できる」「注文の現在状態が分かる」は同じではありません。独自の承認待ちを実装するなら、その再開に必要な値がどこへ保存されるかを別途確認します。

AWSのBedrockと

Amazon Bedrockにはを呼び出すがあります。一方、Bedrock は、エージェントの実行や接続などを支えるサービス群です。モデルAPIを呼べるようにしただけでは、業務アプリの配置先、承認待ちの保存先、注文APIへの権限までは決まりません。

は実行環境を提供し、は会話や長期的な情報を保存します。は既存などをとして接続し、は情報やサービスへのアクセスを扱います。これらは必要な機能を組み合わせて利用できます。Gatewayに接続したことだけを根拠に、利用者がすべての注文を操作できるようにはしません。

処理の制御にはやなどを組み合わせる構成も、管理されたエージェントループを使う もあります。自分でを実装するか、ループをサービスに任せるかで、アプリ側に書く処理が変わります。ここからの設計例はで制御を実装する構成を扱います。

のと状態

は、処理のつながりをで定義するです。は呼び出しや入力検証などの処理、は次にどのノードへ進むかという接続、状態(state)は各処理が参照・更新するデータです。たとえば、依頼内容、照会結果、発注案のバージョンを状態として持ち、承認が必要かどうかで進み先を変えます。すべてのノードがモデルを呼ぶ必要はありません。

承認待ちで止め、後から再開するには、の状態を保存する仕組みも必要です。後半で説明するがその役割を担います。の制御を選んでも、の提供元や配置先は別に選べます。Google CloudのAgent やAWSの Runtimeと組み合わせる構成も候補になるため、クラウドのとLangGraphを同列の代替品として比べる必要はありません。

承認を待って発注する購買業務の設計例

架空の社内購買業務を考えます。担当者が依頼した商品について在庫と配送日を照会し、エージェントが発注案を作ります。承認者が翌日に内容を確認することもあります。承認後は既存の注文へ送信し、注文が受け付けられたことを確認して完了にします。発注案ができただけでは業務は完了しません。

架空の発注業務。承認待ちは実行プロセスの存続期間を超えることがある

依頼と利用者を確認 → 在庫・配送日を並列照会 → 結果を検証して発注案を保存 → 承認待ちから再開 → 注文APIの受付を確認

構成の一例は、Bedrockの、の制御、 の実行環境、永続的な、既存の注文・承認、経由の業務APIです。Google Cloudを使うなら、またはLangGraphをAgent Runtimeへ配置する構成を検討できます。以下のADKとLangGraphの説明は、同じ業務要件をそれぞれで考える例であり、両方の導入を求めるものではありません。

この例の構成担当することアプリ側で具体化すること
Bedrockの依頼の解釈と発注案の説明定義、入力する情報、呼び出しの上限
+永続的な処理の制御と再開用の保存分岐、承認待ち、と案件の対応
エージェントの配置・実行保存先への接続、停止後の復元
注文・承認の業務業務の現在状態の管理案のバージョン、承認記録、操作ID
経由の注文の接続と注文処理接続時の、顧客・対象・操作の

この例では、処理を進めてよい条件を先に決めます。在庫や配送日が未確定なら保留し、案が変わったら承認を取り直し、注文の結果が不明なら照会します。以降の、図、疑似コード、試験項目は独自の設計例で、製品の設定ファイルや導入効果の実測ではありません。

の並列処理とでの合流

2.xのなら、独立した在庫照会と配送日照会へ分岐し、という合流用ので結果をまとめる構成を考えられます。公式資料では、合流へ入る前段のノードに出力が必要とされています。前段の処理が終わることと、発注に必要な値が有効であることは分けて扱います。

分岐の状態(独自の例)後段へ渡す情報合流後の判断
照会成功対象ID、取得値、取得時点、出典対象が正しく、情報が十分に新しいか確かめる
取得できなかった対象ID、未確定状態、理由推測で補わず、再試行・確認・保留へ進む
が出力しなかった正常結果としては扱えない実装やエラー処理を調べ、発注案を確定しない

配送日を取得できなかった結果を空欄の正常データに変えると、後段のが「最短で届く」と補ってしまうかもしれません。取得できなかったことを状態として残し、発注案を作ってよいかはコードで検証します。一方の結果を他方の入力に必要とするなら、その2処理は同時に開始する対象から外します。

会話・実行状態・注文の保存先

で同じ流れを実装する場合、はごとの状態をとして保存します。スレッドは一連の実行と保存状態を識別する単位です。はスレッドをまたぐアプリの情報を扱います。たとえば承認待ちから処理を再開するための状態と、説明の好みのような情報は保存範囲が違います。注文が受け付けられたかは、注文や業務の現在状態で判断します。

保存するものこの例の保存先保存しただけでは分からないこと
会話と、次に実行する処理に必要な状態永続的な現在も同じ承認・権限で実行できるか
会話をまたぐ説明の好み顧客・利用者の範囲を定めた最新の注文状態や操作の許可
発注案のバージョンと承認記録業務外部の注文受付が実際に完了したか
送信した操作と注文受付結果業務と注文の照会結果応答を失った場合の結果。必要なら再照会する

本番の実行環境を自分たちで運用する場合、だけを使うと、が失われた後の復元には使えません。永続的な保存実装を用意します。Agent Serverのように保存を管理するサービスを使う場合は、その機能がどこまでを管理するか確認します。クラウドの会話履歴やメモリ機能を使う場合も、の再開に必要な情報まで保存・復元する連携なのかを確かめます。

のと状態の復元

の(軽量な仮想マシン)はごとの実行環境を分離します。しかし、既定の計算環境のメモリとディスクは一時的です。停止後に同じで呼び出しても、新しい計算環境で動く場合があります。設定したセッションストレージでファイルを残せても、の変数まで自動で復元されるわけではありません。この説明を、保存方式の異なるRuntime Instancesへそのまま広げないようにします。

識別子対応させる対象再開時の確認
case_id業務の案件顧客と案件の現在状態
で保存した実行状態その案件・利用者が参照できるか
の実行が管理する利用者・会話との対応
operation_id発注する同一の操作再送・結果照会でも同じ操作か

これらは同じ値にそろえるためのIDではありません。が対応を管理し、利用者から渡されたIDを信用して別案件の状態を読み出さないようにします。AWSも、がと利用者の対応を強制しないため、アプリ側で関係を管理すると説明しています。

アプリ側で保持する対応の例。特定製品の設定ではない
{
  "tenant_id": "tenant-A",
  "case_id": "case-42",
  "thread_id": "thread-case-42",
  "runtimeSessionId": "a88003d1-7216-48ef-91bc-aee70370b77f",
  "proposal_revision": 3,
  "approval_status": "pending",
  "operation_id": "order-case-42-rev-3",
  "order_status": "not_submitted"
}

翌日に新しい計算環境で動くなら、保存先からの状態を読み、業務で発注案のバージョンと承認の有効性を確かめます。古い会話に「承認した」と書かれていても、発注案が更新されていれば現在の案の承認として使いません。

の承認待ちと再開時の再実行

では、関数で処理を止めて入力を待ちます。再開するときは、同じ処理を識別するを指定し、Commandにresume(再開用の入力値)を渡します。このとき、interruptを呼んだは先頭から実行されます。停止した行の次から、Pythonの続きをそのまま動かす方式ではありません。

再開すると通知も繰り返す例。Python風疑似コードで、notify_reviewerはアプリ側の未実装関数
def approval_node(state):
    notify_reviewer(state["case_id"])
    decision = interrupt(state["proposal"])
    return {"decision": decision}

この形では、承認者への通知が再送され得ます。通知を同じ通知IDで繰り返しても1回の結果になる処理にするか、通知と承認待ちを別のへ分けます。ノードを分けたことだけで通知先の処理と保存が一体になるわけではないため、通知の再送にも重複対策は必要です。

承認待ちの役割だけを持つPython風疑似コード。登録・保存先・後段の処理は省略
def approval_node(state):
    decision = interrupt({
        "case_id": state["case_id"],
        "proposal_revision": state["proposal_revision"],
        "proposal": state["proposal"],
    })
    return {"decision": decision}

後続の処理は、decision(再開時に受け取った判断)の文字列や、承認を表す真偽値だけを信じて発注しません。した承認者、案件、対象の発注案のバージョン、期限、現在の権限を業務の承認記録と照合します。承認が有効なら操作へ進み、案が変わっていれば改めて確認します。待機中のを変更する場合も、保存済み状態との並びに互換性があるかを確かめます。

注文の応答を失ったときの結果照会

承認後の操作を別へ移しても、外部が注文を受け付けた直後にが停止すれば、側へ結果を保存できない場合があります。には「送信前」と残り、注文先には注文が存在するというずれです。ノードを再実行するだけでは、このずれは解決しません。

独自の障害例:同じoperation_idで結果を照会する。再送できる条件は注文APIの契約による
  1. 承認者: 発注案のバージョンを指定して承認
  2. 業務バックエンド: 承認・権限・現在状態を検証
  3. グラフ実行: 同じoperation_idで注文APIを呼ぶ
  4. 注文API: 注文は受付済みだが応答を失う
  5. グラフ実行: 再開時、未保存の結果を成功と決めつけない
  6. 業務バックエンド: 同じoperation_idで照会し、確認できなければ保留

アプリは発注する意図と操作IDを先に記録し、同じ操作の重複受付を条件付き更新などで管理します。ただし、その記録の保存と外部での注文受付を、まとめて成功・取り消しできるわけではありません。注文APIがと結果照会に対応しているなら、その仕様と保持期間の中で同じ操作IDを使います。

注文に重複防止や照会の機能がなければ、結果不明のまま新しい操作IDで再発注する設計は避けます。この業務では保留して担当者へ渡し、注文先の記録と突き合わせます。どのを使っても、外部サービスが提供しない保証をから作り出すことはできません。

のと業務の

を通してへ接続する場合、入口側()ではGatewayへ入る要求を確認し、出口側()では接続先へのを扱います。対応する接続ではGatewayの、呼び出し元のAWSの認証情報()、などを選べますが、接続先によって使える方式が異なります。inboundで認証した利用者の権限が、すべてのoutbound方式でそのまま伝わるとは考えません。

確認する場所この例での確認混同しないこと
への要求呼び出し元と、設定した方式に応じたアクセス条件署名やログインの成功だけで全業務操作を許可しない
接続先への要求利用者の委任権限か、共有のサービス権限か共有の接続権限を利用者本人の権限と扱わない
発注する業務顧客、商品、数量、発注案のバージョン、承認、現在の権限が一覧に出ることを実行許可の証拠にしない

特にAUTHENTICATE_ONLYは、署名を検証しても自身で判断をしない方式です。認可を別の構成要素へ委ねるなら、その構成要素で検証する必要があります。共有接続を使うこの発注例では、信頼できる呼び出し元の情報を業務まで結び付け、別顧客の商品や注文を更新しないようにします。

停止と再開を含む導入前の検証

次の表はこの発注業務の試験計画です。文章が自然かを確認する評価とは別に、保存状態と業務結果を照合します。これは実製品で実行済みの試験結果ではありません。

試す状況期待する動作確認する記録
配送日を取得できず並列処理が合流未確定として保留し、値を推測しない分岐の結果・出典・保留理由
承認待ちの間に計算環境が停止正しいを復元し、現在の承認を再確認案件・・利用者の対応と
同じ承認通知や再開要求が重複同じ承認を照合し、同一操作の重複実行を防ぐ承認記録・操作ID・外部の受付結果
待機中に発注案が更新古いバージョンの承認では実行しない承認対象のバージョンと現在のバージョン
注文受付後に応答を失う同じ操作を照会し、不明なら保留する注文の記録とローカルの操作状態
別利用者のや顧客IDを指定読み出し・再開・実行を拒否する誰からの要求かと、サーバー側で判定した操作対象
待機中のを更新保存済み状態を互換性のあるバージョンで扱うか移行するコードのバージョン・状態の形式・再開の検証結果

少なくとも、どの案件を再開したか、どの発注案が承認されたか、どの権限で何を実行したか、注文先でどう受け付けられたかを追えるようにします。会話の回答だけを見て「復旧できた」と判断せず、結果不明の案件と、人が処理する残件も確認します。

構成図に残す判断

  1. まず業務の完了条件と保留条件を決める。発注案のバージョン、承認、操作ID、受付結果のどれをどこに保存するかを明記する。
  2. 次に制御を選ぶ。依存関係が決まる処理はにし、独立した照会だけを並列化する。を使うならとの範囲、中断・再開の単位を決める。を使うなら対象バージョンの合流と出力の扱いを確認する。
  3. その実装を動かす基盤と接続方法を選ぶ。Agent やの対応バージョン、保存先へ接続できること、計算環境の停止、・を、同じ案件の試験で確かめる。

自分の構成図には、各役割の製品名に加え、保存する情報、権限を検証する場所、停止後の復元方法を追記します。たとえば「を で動かす」という選定は、処理の制御と配置先を決めた段階です。永続的な、承認記録、注文の重複対策まで具体化して、発注業務としての構成が決まります。

一次資料と確認範囲

製品の挙動は以下の公式資料で確認しました。2026年10月29日時点の説明で、提供地域・開発用の部品・連携先などの対応条件は採用時に再確認してください。この記事の発注処理、復旧手順、疑似コードと試験計画は設計を説明するための例で、クラウドへの配置、実の品質・費用、障害復旧の実測は行っていません。

この記事で深掘りしたTips