---
title: "Strands Agentsとは？読み方・意味とPython SDKの使い方【1.62対応・2026年10月】"
url: "https://www.issoh.co.jp/tech/details/7199/"
published: 2025-06-11
updated: 2026-10-30
categories: ["AIエージェント・MCP"]
publisher: "株式会社一創"
---

# Strands Agentsとは？読み方・意味とPython SDKの使い方【1.62対応・2026年10月】

Strands Agents（ストランズ・エージェンツ）は、AWSが2025年5月16日に公開したオープンソースのAIエージェント開発SDKです。処理の流れを人が組み立てる代わりに、計画とツール選択をLLMに任せる「モデル駆動」の設計で、システムプロンプトとツールの一覧を渡せば数行で動くエージェントになります。ライセンスはApache-2.0、PythonとTypeScriptの2言語で提供されています。この記事では読み方と名前の由来を押さえたうえで、2026年10月21日公開のPython SDK 1.62.0を基準に、インストール、モデルの切り替え、MCP連携、構造化出力とセッション、マルチエージェントの選び方までをコード付きで説明します。コードはPython SDK 1.62.0で、LLMの応答を台本どおりに返す検証用モデルに差し替えてSDKの処理を確認しています。モデル切り替え例はオブジェクトの生成までの確認で、Bedrock・OpenAI・Ollamaへの実推論リクエストは検証範囲に含みません。

## まとめ：Strands Agentsの要点

- **正体**：AWS製のオープンソースAIエージェントSDK。2025年5月16日公開、Apache-2.0。Python版は1.62.0（2026年10月21日）、TypeScript版は1.22.0が最新。
- **読み方と由来**：「ストランズ・エージェンツ」。DNAの2本の鎖（strand）のように、モデルとツールを結び付けるという命名。
- **仕組み**：LLMが考える、ツールを実行する、結果を見て再び考える、を終わるまで繰り返すエージェントループが中核。
- **導入**：`pip install strands-agents`（Python 3.10以上）。既定モデルはAmazon Bedrockの`global.anthropic.claude-sonnet-4-6`（us-west-2）。
- **モデル**：Bedrock、Anthropic、OpenAI（ネイティブ対応）、Gemini、Ollama、LiteLLMなどへ、`model=`の1行で切り替えられる。
- **注意点**：別パッケージ`strands-agents-tools`は2026年8月から段階的に非推奨化が進み、0.8.10では25本が非推奨。新規のコードはSDK本体の組込ツールか自作ツールで書く。
- **選び方**：手順をコードで固定したい業務はGraphやLangGraph、ツール呼び出し中心でモデルに判断を任せたい用途はStrands。

## Strands Agentsの読み方と「strand」の意味

### Strands Agentsの読み方と表記ゆれ

読み方は「ストランズ・エージェンツ」です。日本語の記事では「ストランズエージェント」「Strands Agent」と単数形で書かれることも多く、検索でもどちらの表記も使われています。公式の名称は複数形の「Strands Agents」で、製品群全体を指すときは単に「Strands」と呼ばれます。

### 英単語strandの意味とDNAに由来する名前

英単語のstrandには由来の異なる2つの語があります。[Cambridge Dictionary](https://dictionary.cambridge.org/dictionary/english/strand)の語釈では、1つ目が「より合わせてひもやロープになる細い糸の1本」、2つ目が「岸・浜辺」で、後者の動詞形が「（交通手段やお金がなく）立ち往生させる」です。SDKの名前は1つ目の意味から来ています。

公開時の[AWSのブログ](https://aws.amazon.com/blogs/opensource/introducing-strands-agents-an-open-source-ai-agents-sdk/)は「Like the two strands of DNA, Strands connects two core pieces of the agent together: the model and the tools.」と説明しています。DNAが2本の鎖で1つの構造になるように、モデルとツールを結び付けるという意味です。「Strandという単位で状態とアクションの連鎖を定義する」という解説を見かけることがありますが、公式の定義ではありません。コードで扱う中心は`Agent`クラスで、Strandという名前のクラスは存在しません。

## モデル駆動のエージェントループで処理が進む仕組み

Strandsの中心は[エージェントループ（Agent Loop）](https://strandsagents.com/docs/user-guide/sdk/agents/agent-loop/)です。入力を受け取ると、SDKはシステムプロンプト、これまでの会話、使えるツールの説明をまとめてモデルに渡します。モデルが文章で答えればそこで終わり、ツールの呼び出しを返せばSDKがそのツールを実行し、結果を会話に足してもう一度モデルに渡します。これをモデルが文章の回答を返すまで繰り返します。

ツールを2回呼んでから回答する台本を検証用モデルに設定し、1.62.0で動かすと、モデルの呼び出しは3回、会話に積まれるメッセージは1件、3件、5件と増えていきました。分岐やループの制御をコードに書かず、どのツールをいつ使うかをモデルが決めるのがモデル駆動の意味です。裏を返すと、同じ入力でも手順が毎回同じになる保証はありません。処理順を必ず守らせたい業務には、後述のGraphで経路を固定するか、別のフレームワークを選ぶ判断が要ります。

ループの結果は`AgentResult`で返り、`stop_reason`（終了理由。通常は`end_turn`）、`metrics.cycle_count`（ループを回った回数）、ツールごとの呼び出し回数やトークン数を読めます。モデルが延々とツールを呼び続ける事態に備えて、1回の呼び出しごとに[上限](https://strandsagents.com/docs/user-guide/sdk/agents/lifecycle-controls/)を付けられます。

```
from strands import Agent

agent = Agent()
result = agent(
    "この資料を要約して",
    limits={"turns": 5, "total_tokens": 10000},
)
if result.stop_reason == "limit_turns":
    print("ループの上限に達した")
```

台本どおりにツールを呼び続ける検証用モデルで`turns=2`を指定すると、モデルの呼び出しは2回で止まり、`stop_reason`は`limit_turns`になりました。本番ではこの上限と終了理由をログに残すのが、費用と暴走を監視する出発点です。

## Strands AgentsのPython導入と最小実装

### Python 3.10以上の仮想環境とpip導入

PyPIの[strands-agents](https://pypi.org/project/strands-agents/)は`requires_python >=3.10`です。Python 3.9ではインストールできません。`python3 --version`で使用するPythonが3.10以上であることを確認してから、仮想環境を作成します。

```
python3 -m venv .venv
source .venv/bin/activate
pip install 'strands-agents==1.62.0'
```

既定のモデルはAmazon Bedrockです。1.62.0のソースでは既定のモデルIDが`global.anthropic.claude-sonnet-4-6`、リージョン未指定時の既定がus-west-2になっています。動かす前に、AWSの認証情報とモデル呼び出し権限を設定します。商用リージョンではモデルアクセスは自動で有効になりますが、Anthropicモデルの初回利用には用途情報の提出が必要です。初回のサブスクリプションに必要なAWS Marketplace権限も確認してください。

### @toolによる最小エージェントの実装

Python関数に`@tool`を付けるとツールになります。以下の天気ツールは接続方法を示すダミーで、都市にかかわらず「晴れ」を返します。実際の天気を取得する場合は、関数内を天気APIの呼び出しに置き換えます。型ヒントが入力の定義に、ドキュメント文字列がツールの説明としてモデルに渡るので、説明は具体的に書きます。

```
from strands import Agent, tool

@tool
def get_weather(city: str) -> str:
    """指定した都市の天気を返す。"""
    return f"{city}の天気は晴れです"

agent = Agent(
    system_prompt="あなたは天気を答えるアシスタントです。",
    tools=[get_weather],
)

result = agent("東京の天気は？")
print(result.stop_reason)          # end_turn
print(result.metrics.cycle_count)  # ループを回った回数
```

`agent(...)`は関数のように呼べます。既定では回答がストリーミングで標準出力に流れます。画面に出したくないときは`Agent(callback_handler=None)`にします。

### strands-agents-toolsの非推奨と組込ツールへの移行

2025年の入門記事の多くは`pip install strands-agents strands-agents-tools`で始まり、`from strands_tools import calculator`を使っています。このツール集は[2026年8月7日の0.8.6](https://github.com/strands-agents/tools/releases)から非推奨化が進み、最新の0.8.10では、手元で数えると`calculator`、`shell`、`http_request`、`python_repl`、`mcp_client`など25本が非推奨の警告を出します。`calculator`を実行すると「v0.9.0でエラーログになる」という警告が出ます。

代わりに使うのは、SDK本体に入った[組込ツール](https://strandsagents.com/docs/user-guide/sdk/tools/vended-tools/)（`from strands.vended_tools import shell, http_request`）です。2026年10月時点で`shell`、`file_editor`、`http_request`、`web_fetch`、`python_repl`、`a2a_client`、`handoff_to_user`、`swarm`などがあります。古い記事のコードを写して動かす場合は、まずここを置き換えます。なお`shell`は任意のコマンドを実行できるため、計算だけを許していた`calculator`より権限が広くなります。計算だけさせたいなら、上の例のように自作の`@tool`で必要な処理だけを渡すほうが安全です。

## Bedrock・OpenAI・Ollamaのモデル切り替え

モデルは`Agent(model=...)`に渡すプロバイダーで切り替えます。Bedrock以外は追加パッケージ（extras）が必要です。1.62.0のextrasと主な用途は次のとおりです。

| プロバイダー         | 導入                                                | 主な用途                           |
| -------------- | ------------------------------------------------- | ------------------------------ |
| Amazon Bedrock | 追加不要（既定）                                          | Claude・Llama・NovaなどをAWS上で      |
| Anthropic      | \[anthropic\]                                     | Claude APIを直接                  |
| OpenAI         | \[openai\]                                        | Chat Completions・Responses API |
| Gemini         | \[gemini\]                                        | Gemini APIを直接                  |
| Ollama         | \[ollama\]                                        | ローカルモデルで検証                     |
| LiteLLM        | \[litellm\]                                       | 多数のプロバイダーを横断                   |
| その他            | \[mistral\] \[writer\] \[sagemaker\] \[llamaapi\] | 各社API・SageMakerエンドポイント         |

```
from strands import Agent
from strands.models import BedrockModel
from strands.models.openai import OpenAIModel   # pip install 'strands-agents[openai]'
from strands.models.ollama import OllamaModel   # pip install 'strands-agents[ollama]'

bedrock = BedrockModel(model_id="global.anthropic.claude-sonnet-4-6", region_name="us-west-2")
openai_model = OpenAIModel(client_args={"api_key": "sk-..."}, model_id="gpt-5.6")
ollama = OllamaModel(host="http://localhost:11434", model_id="qwen3:8b")

agent = Agent(model=ollama)  # 差し替えるのはこの1行だけ
```

「StrandsでOpenAIは使えるか」という質問は多いですが、LiteLLMを挟まなくても[OpenAIModel](https://strandsagents.com/docs/user-guide/sdk/model-providers/openai/)で直接使えます。ツール定義やプロンプトはプロバイダーを替えてもそのまま使えるので、検証はOllama、本番はBedrockという使い分けもできます。複数のLLMを1つのAPIにまとめるプロキシを社内に置くなら、[LiteLLMとは？複数LLMを1つのAPIで呼ぶProxyの構築手順とフォールバック・予算設定](/tech/details/18663/)で構成を説明しています。

## MCPサーバーのツール接続と読み込み

[MCP（Model Context Protocol）](/tech/details/5736/)のサーバーは、`MCPClient`を`tools`に渡すだけで使えます。接続、ツール一覧の取得、終了時の切断は`Agent`が管理します（[公式のMCPツールの説明](https://strandsagents.com/docs/user-guide/sdk/tools/mcp-tools/)）。

```
import sys
from mcp import StdioServerParameters, stdio_client
from strands import Agent
from strands.tools.mcp import MCPClient

client = MCPClient(lambda: stdio_client(
    StdioServerParameters(command=sys.executable, args=["mcp_server.py"])
))

agent = Agent(tools=[client])  # 接続・ツール一覧の取得・切断はAgentが管理する
agent("2と3を足して")
```

次のコードを、クライアントを実行するディレクトリに`mcp_server.py`として保存します。接続先のMCPサーバーを自作するときは、使用するMCP SDKの版に注意してください。2026年10月時点でStrands 1.62.0と一緒に入る`mcp`パッケージは2.1.1で、2.xでは`FastMCP`が`MCPServer`に改称されています。`from mcp.server.fastmcp import FastMCP`と書いた古いサーバーは、起動時に`ModuleNotFoundError`で止まります。

```
from mcp.server.mcpserver import MCPServer  # mcp 2.x。1.x では from mcp.server.fastmcp import FastMCP

mcp = MCPServer("demo")

@mcp.tool()
def add(a: int, b: int) -> int:
    """2つの整数を足す"""
    return a + b

if __name__ == "__main__":
    mcp.run()
```

移行の判断は[MCP Python SDK v2 移行：FastMCPからMCPServerへの書き換え手順と据え置き判断](/tech/details/18273/)にまとめています。もう1つ、検証用のファイルを`mcp.py`という名前で置くと、同じフォルダで起動したサーバーが本物の`mcp`パッケージの代わりにそのファイルを読み込み、接続に失敗します。ファイル名はパッケージ名と重ねないでください。

## 本番運用に向けた構造化出力・会話履歴・フックの設定

### Pydanticモデルによる構造化出力の受け取り

回答をプログラムで扱うなら、文字列を解析せず[構造化出力](https://strandsagents.com/docs/user-guide/sdk/agents/structured-output/)を使います。`structured_output_model`にPydanticのクラスを渡すと、SDKがそのクラスをツールとしてモデルに見せ、検証済みのインスタンスを`result.structured_output`に入れて返します。

```
from pydantic import BaseModel
from strands import Agent

class Weather(BaseModel):
    city: str
    condition: str

agent = Agent(structured_output_model=Weather)
result = agent("次の架空の天気情報を構造化して：都市は東京、天気は晴れ")
print(result.structured_output.city)  # Weatherのインスタンスとして受け取れる
```

### 会話履歴の上限とセッションの永続化

会話が長くなるとモデルに渡すメッセージが増え続けます。`SlidingWindowConversationManager`は直近の一定件数だけを残し、`SummarizingConversationManager`は古い部分を要約して残します。プロセスを再起動しても会話を続けたい場合は、[セッションマネージャー](https://strandsagents.com/docs/user-guide/sdk/agents/session-management/)で保存先を指定します。

```
from strands import Agent
from strands.agent.conversation_manager import SlidingWindowConversationManager
from strands.session import SnapshotSessionManager
from strands.storage import LocalFileStorage

agent = Agent(
    conversation_manager=SlidingWindowConversationManager(window_size=20),
    session_manager=SnapshotSessionManager(
        session_id="user-1",
        storage=LocalFileStorage("./sessions/"),
    ),
)
agent("こんにちは")
# 同じsession_idでAgentを作り直すと、保存済みの会話が読み込まれる
```

1.62.0で試すと、同じ`session_id`で作り直したエージェントは前回の2件のメッセージを読み込んだ状態で始まりました。新しく書く単体エージェントでは、公式ガイドが推奨する`SnapshotSessionManager`に保存先（`LocalFileStorage`など）を渡します。以前からある`FileSessionManager`と`S3SessionManager`も引き続き使え、SwarmやGraphのセッションはこちらで保存します。

### フックによるツール呼び出しの記録・制止

[フック](https://strandsagents.com/docs/user-guide/sdk/agents/hooks/)を使うと、ループの各段階に処理を差し込めます。たとえば`BeforeToolCallEvent`で`cancel_tool`に理由を入れると、そのツールは実行されず、理由がエラーの結果としてモデルに返ります。

```
from strands import Agent, tool
from strands.hooks import BeforeToolCallEvent

@tool
def delete_file(path: str) -> str:
    """ファイルを削除する"""
    ...

BLOCKED = {"delete_file"}

def guard(event: BeforeToolCallEvent):
    if event.tool_use["name"] in BLOCKED:
        event.cancel_tool = "このツールは承認なしでは実行できません"

agent = Agent(tools=[delete_file])
agent.hooks.add_callback(BeforeToolCallEvent, guard)
```

モデル駆動のエージェントにファイル削除や送金のような戻せない操作を持たせるなら、プロンプトで「使うな」と頼むのではなく、このようにコードで止めます。人の承認を挟みたい場合は、組込の`handoff_to_user`ツールや、承認フローを提供する介入（interventions）の仕組みも用意されています。

## マルチエージェントの5パターンと選定基準

複数のエージェントを組み合わせる[パターン](https://strandsagents.com/docs/user-guide/sdk/multi-agent/multi-agent-patterns/)は、「次にどのエージェントが動くかを誰が決めるか」で選びます。

| パターン            | 次を決めるのは      | 向く用途                  |
| --------------- | ------------ | --------------------- |
| Agents as Tools | 親エージェント（モデル） | 翻訳・要約など専門役への委譲        |
| Swarm           | 各エージェント（モデル） | 担当を引き継ぎながら進む問い合わせ対応   |
| Graph           | 開発者のコード      | レビューと修正の反復など経路が決まった処理 |
| Workflow        | 開発者が定義したDAG  | 依存関係のあるタスクの並列実行       |
| A2A             | プロトコル越しの相手   | 別サービス・別実装のエージェント連携    |

Agents as Toolsは、子エージェントを呼ぶ関数を`@tool`にするだけで作れます。SwarmとGraphはSDKの`strands.multiagent`にあるクラスで、Workflowは`strands-agents-tools`の`workflow`ツールとして提供されています。

```
from strands import Agent
from strands.multiagent import Swarm, GraphBuilder

# Swarm：次に誰へ渡すかをモデルが handoff_to_agent ツールで決める
researcher = Agent(name="researcher", system_prompt="調査担当")
writer = Agent(name="writer", system_prompt="執筆担当")
swarm = Swarm([researcher, writer])  # 既定 max_handoffs=20・execution_timeout=900秒

# Graph：経路をコードで固定する
draft = Agent(name="draft", system_prompt="下書きを書く")
review = Agent(name="review", system_prompt="下書きをレビューする")
b = GraphBuilder()
b.add_node(draft, "draft")
b.add_node(review, "review")
b.add_edge("draft", "review")
b.set_entry_point("draft")
b.set_max_node_executions(10)  # 指定しないと上限なしの警告が出る
graph = b.build()
result = graph("Strands Agentsの紹介文を書く")
```

上限の設定は省かないでください。Swarmの既定値は`max_handoffs=20`、`max_iterations=20`、全体で900秒、1エージェント300秒です。Graphは`set_max_node_executions`や`set_execution_timeout`を指定しないと、1.62.0では「上限なしで実行される」という警告が出ます。経路にループを含むGraphでは、実行回数や時間の上限で処理量を制限できます。ただし、各ノード内のモデル呼び出し回数、トークン数、ツール利用料によって費用は変わるため、これだけで金額の上限は保証できません。サービスをまたいでエージェント同士をつなぐA2Aの仕様は[A2A（Agent2Agent）プロトコルとは？v1.0の仕組み・MCPとの違い・実装手順](/tech/details/6732/)で解説しています。

## LangGraph・LangChain・Mastraとの違いと選び方

違いの軸は、制御の流れを人が書くか、モデルに任せるかです。

| フレームワーク        | 言語                | 流れの決め方             |
| -------------- | ----------------- | ------------------ |
| Strands Agents | Python・TypeScript | モデルがループで決める        |
| LangGraph      | Python・JS         | 状態グラフをコードで定義       |
| LangChain      | Python・JS         | 部品をつないだチェーンとエージェント |
| Mastra         | TypeScript        | TS向けのエージェントとワークフロー |

分岐、人の承認、失敗時の巻き戻しを1ステップずつ制御したいなら、[LangGraphでAIエージェントを実装する手順](/tech/details/17447/)のように状態グラフで書くほうが挙動を説明しやすくなります。Bedrockを使い、ツール呼び出しが中心の調査・対話型エージェントを作るなら、既定のBedrockプロバイダーと`@tool`で構成できるStrandsを選びます。公式ドキュメントにもLangGraphからの移行ガイドがあり、StateGraphをStrandsのGraphへ、チェックポインターをセッションマネージャーへ置き換える対応が示されています。

TypeScriptで書くなら、Strandsの[Strands Agents TypeScript SDKの使い方](/tech/details/10146/)のほか、[Mastra](/tech/details/6062/)や[LangChain.js](/tech/details/3590/)も候補です。主要8種を同じ条件で並べた比較は[AIエージェントフレームワークとは？主要8種の比較・動作コード・選定基準](/tech/details/15367/)にあります。

## 本番デプロイの選択肢と採用を見送る場面

Strandsは公開時点で、Amazon Q Developer、AWS Glue、VPC Reachability AnalyzerなどAWS社内のチームが本番で使っていると公表されていました。[pypistats](https://pypistats.org/packages/strands-agents)では、2026年10月30日時点で直近1か月のダウンロードが約3,711万回です。GitHubのリポジトリは2026年に[strands-agents/harness-sdk](https://github.com/strands-agents/harness-sdk)へ集約され、Python版とTypeScript版、完成品のエージェント「Strands harness」が同じリポジトリで開発されています。harnessの導入は[Strands Harnessとは？pip導入から本番構成までPythonの実装手順を解説](/tech/details/18290/)を参照してください。

Strandsのエージェントは自分のプロセス内で動くため、置き場所は自分で選びます。[公式の本番運用ガイド](https://strandsagents.com/docs/user-guide/sdk/deploy/operating-agents-in-production/)はAmazon Bedrock AgentCore Runtime、AWS Lambda、Fargate、App Runner、EKS、EC2への手順を載せています。セッションの分離とスケールをマネージドに任せたいならAgentCore Runtime、短い単発の処理ならLambdaが候補です。AgentCoreの構成は[AgentCore Gatewayと AgentCore APIの使い方](/tech/details/8230/)と[Bedrock AgentCoreハーネスGAとは？仕組み・料金・導入判断を解説](/tech/details/12934/)で扱っています。トレースとメトリクスはOpenTelemetryで出せる（extrasは\[otel\]）ので、前述の`AgentResult`の値とあわせて監視に載せます。

採用を見送るべき場面もはっきりしています。1回のLLM呼び出しで済み、ツール連携やセッション管理も不要な要約・分類では、APIの直接呼び出しで十分です。Strandsでもモデルが最初の応答で終了すれば呼び出しは1回なので、SDKの導入だけで推論回数や費用が必ず増えるわけではありませんが、依存パッケージと版の追従が増える分、BedrockやOpenAIのAPIを直接呼ぶほうが保守は軽くなります。承認順や処理順を監査で説明する必要がある基幹業務は、モデル駆動のループを中心に据えず、Graphで経路を固定するか、LangGraphのような状態グラフで書きます。Strandsはリリースが週1回前後と速く、1.36.0（2026年4月）での`a2a_client_factory`の非推奨や、tools パッケージの非推奨化のように変更も続いているため、本番では`strands-agents==1.62.0`のように版を固定し、更新前にリリースノートを確認します。AWS上のエージェント開発を設計から相談したい場合は、一創の[AIエージェント開発](/service/ai/agent/)でも支援しています。

## よくある質問

### Strands Agentsの読み方は？

「ストランズ・エージェンツ」です。日本語では「ストランズエージェント」とも書かれます。名前はDNAの鎖（strand）に由来し、モデルとツールを結び付けるという意味です。

### Strands Agentsは無料で使えますか？

SDKはApache-2.0のオープンソースで無料です。モデルの利用料（BedrockやOpenAIのAPI料金）は別にかかります。Ollamaでローカルモデルを使えば、API料金なしで試せます。

### strands-agents-toolsは今もインストールが必要ですか？

新しく書くコードでは必須ではありません。0.8.10ではcalculatorやshellなど25本が非推奨で、移行先はSDK本体の組込ツール、メモリなどのSDK機能、各サービスの公式MCPサーバーなどに分かれます。置き換え後に権限や動作が変わるツールもあります。Workflowツールなど、まだtools側にしか無いものを使う場合だけ入れます。

### TypeScriptでも使えますか？

使えます。npmの`@strands-agents/sdk`が2026年4月30日に1.0になり、2026年10月時点の最新は1.22.0です。導入手順はTypeScript SDKの解説記事にまとめています。

### LangGraphとどちらを選ぶべきですか？

手順をコードで厳密に決めたいならLangGraph、ツール呼び出し中心で判断をモデルに任せたいならStrandsです。Strands側にもGraphがあるため、全体はモデル駆動にして一部だけ経路を固定する組み方もできます。

## 関連記事

- [Strands Agents TypeScript SDKの使い方：npm導入からsteering・AgentCoreデプロイまで【1.19対応】](/tech/details/10146/)
- [Strands Harnessとは？pip導入から本番構成までPythonの実装手順を解説【2026年10月時点】](/tech/details/18290/)
- [MCP（Model Context Protocol）とは？仕組み・APIとの違い・MCPサーバーの作り方](/tech/details/5736/)
- [LangGraphでAIエージェントを実装する手順：状態管理から承認フローまで](/tech/details/17447/)
- [AIエージェントフレームワークとは？主要8種の比較・動作コード・選定基準【2026年9月版】](/tech/details/15367/)

---

出典: [Strands Agentsとは？読み方・意味とPython SDKの使い方【1.62対応・2026年10月】](<https://www.issoh.co.jp/tech/details/7199/>)（株式会社一創）
