はじめに
Strandsでマルチエージェントオーケストレーションをやってみたかったので、ローカルPC上に環境構築。
(Bedrockと外部サービスのAPIにはリクエストを飛ばす)
1. 構成
AWSでホストする場合はAgentCore RuntimeがmicroVMの割り当てや文脈の保持といったことをしてくれるんだけど、今回はローカルでモックサーバを立てている。(**/invocationsというHTTPインターフェースにリクエストを飛ばすのを再現)
ブラウザはSDKにバンドルされているAgentCore agent inspectorでチャット画面を利用。Bedrock APIと通信しているログを取ってきているのか、チャットを打つとどのエージェントが対応したのか、などの情報も確認できる。

今回は天気を教えてくれるツールを追加したのでOpen-Meteo APIも利用している。
2. エージェントのオーケストレーションパターン
Strandsでのマルチエージェントのパターンはいくつかあるけど、今回はSwarmとGraphを実装する。
2.1 Swarm と Graphの違い
| 観点 | Swarm | Graph |
|---|---|---|
| 実行順序の決め方 | 各エージェントがタスクを引き継ぐエージェントを判断 | 人間が事前定義した遷移に沿うが、経路は各エージェントによって決定される |
| トポロジー | フラット | 非巡回グラフ(DAG)と巡回グラフ |
| 向いているケース | 異なる専門性を持ったエージェントの知見を合わせたい | エージェント間の依存関係を明確に定義したい |
より詳細な比較は以下参照
3. エージェント作成
3.1 エージェントプロジェクト作成
今回はframeworkをstrands、model-providerをBedrockとしてプロジェクトのひな形を作成する
agentcore create ^
--project-name strandsdemo ^
--name strandsdemoagent ^
--framework Strands ^
--model-provider Bedrock ^
--language Python ^
--build CodeZip ^
--protocol HTTP ^
--memory none
以下のようなディレクトリができる
uv syncなどのuvのコマンドもよしなに実行されてそう
strandsdemo/
app/strandsdemoagent/ :: Strands SDKベースのPythonエージェントコード
main.py :: エージェントのメインロジック(ここを編集する)
model/load.py
mcp_client/client.py
skills/fetcher.py
pyproject.toml
uv.lock
agentcore/ :: AWS CDKなどのインフラ配置設定
3.2 Agent Serverの挙動のカスタマイズ
agentcore createを実行したときにmain.pyが自動で作られる。
main.pyでは主に外部MCPサーバ、システムプロンプト、ツール(後述)などを定義する。デフォルトでadd_numberツールが入っているのでmain.pyをいじらずそのまま実行することも可能。
今回は天気を教えてくれるget_weatherもツールとして足してみたりした。
システムプロンプトはエージェントのキャラクターだったり出力フォーマットについて定義し、ツールの使い分けは指定しない。
このツール使わないでっていう単純な指示であればシステムプロンプトで設定しても指示通りの挙動になったけど、SwarmもGraphもシステムプロンプトで定義しきれない複雑なオーケストレーションの定義ができるし、Swarmは各ターンで
You have access to swarm coordination tools if you need help from other agents.If you don't hand off to another agent, the swarm will consider the task complete. というcontext_textを注入しているようなので、ユーザがシステムプロンプトで定義するメリットは特に無いと考える)
ツール
@tool
def 関数名(引数: 型) -> 戻り値の型:
"""docstring"""
return 何か
tools.append(関数名)
docstringの内容を基にLLMがツールを選択するため、具体的に書くにこしたことは無い。
…が、手元で試したところ、
①明確に定義されたツールが同時に存在すれば曖昧なdocstring(なんにでも当てはまりそうな記述)のツールが誤って呼ばれることは無かった
②曖昧なdocstringのツールが1つだけ存在する場合、そのツールが誤って呼ばれたものの回答をそのまま提示せず、ユーザには「正確な情報を取得できなかった」と返してきた
ので、手元でエージェント同士のブレストをさせる分にはあまり気にしすぎなくてよいだろうけど、メール送付であったりDBの更新をするようなツールが混在している場合は気を付けたい。
ツールが増えてきたら定義は別ファイルに切り出したほうが管理しやすそう。
エントリーポイント
以下のentrypointはユーザでいじるところではないだろうけど、こんな感じ。stream_asyncとyieldでストリーミングレスポンスを実現している。
@app.entrypoint
async def invoke(payload, context):
session_id = getattr(context, 'session_id', 'default-session')
agent = get_or_create_agent(session_id)
prompt = _extract_prompt(payload)
async for event in agent.stream_async(prompt):
yield event
エラー処理
ツール呼び出し時の例外はStrands SDK側で処理されて自然言語で説明が返ってくるけど、ツール呼び出し中に起こった例外(モデルID不正など)は呼び出し元のmain.pyのinvokeまで戻ってくるので、
もしも例外時のフォールバックメッセージをいじりたい(エージェントのキャラ付けしたい、とか)であればmain.py側にちょっと追記が必要そう。
main.pyの呼び出しより前の段階の例外(JSONパースが壊れているなど)やmain.pyのtryブロックの外側の例外はBedrockAgentCoreAppで処理される。
3.3 ローカル開発環境実行
AgentCore CLIにはagentcore devというローカル開発用のコマンドがあり、実行するとhttp://localhost:8080/invocationsにuvicornサーバーが立ち上がり、ブラウザのチャットUI(AgentCore agent inspector)も自動で開く。
(--logsフラグを付けるとWeb UIサーバーの起動処理はスキップされる)
agentcore devを打ったときに起こっていること
Agentcore agent inspectorは@aws/agentcoreのCLIパッケージにバンドルされているReactベースのアプリ。
agentcore devを実行するとエージェントサーバ(Uvicorn)とWeb UIサーバ(React)の2つのサーバが起動する。
| サーバ | 役割 | 既定ポート | 実装 |
|---|---|---|---|
| エージェントサーバ |
main.pyのBedrockAgentCoreAppをuvicorn --reloadで起動。本物のAgentCore Runtimeと同じ/invocationsエンドポイントを再現 |
8080 | Python/uvicorn(ASGI) |
| Web UIサーバ (Agent Inspector) | チャットUI・トレースビューアの静的ファイル配信+/invocationsへのプロキシ転送 | 8081 | Node.js/http.createServer(フレームワーク不使用の素のHTTPサーバ) |
※Web UIサーバーは実行中のエージェントの情報やデプロイ履歴などのエンドポイントを自前でルーティングしており、ローカルのWebUIでもトレースなどの情報を見ることができる。
3.4 単発のツールを呼び出す
add_numbers
agentcore dev "3+5は?add_numbersツールを使って計算して。結果だけ日本語で一言"
# => 8です。
「東京」だとダメだったのでLLMが"Tokyo"にして再度実行してくれた

3.5 マルチエージェント(Swarm)
idea_generator, critic, refinerの3エージェントを作ってブレストしてもらう
(ブレストっていうよりidea_generator → critic → refinerの順番でアイディアをまとめた感じになってしまったが、Swarmとしてはきちんと機能していた)
from strands import Agent
from strands.multiagent import Swarm
idea_generator = Agent(
name="idea_generator",
system_prompt=(
"あなたはブレストに参加している、自由な発想が得意なアイデアマンです。"
"他の参加者として、critic(現実的な批評担当)とrefiner(意見をまとめる担当)がいます。"
"自分の視点で貢献してください。"
),
)
critic = Agent(
name="critic",
system_prompt=(
"あなたはブレストに参加している、現実的な視点を持つ批評家です。"
"他の参加者として、idea_generator(自由発想担当)とrefiner(意見をまとめる担当)がいます。"
"自分の視点で貢献してください。"
),
)
refiner = Agent(
name="refiner",
system_prompt=(
"あなたはブレストに参加している、意見をまとめるのが得意なファシリテーターです。"
"他の参加者として、idea_generator(自由発想担当)とcritic(現実的な批評担当)がいます。"
"自分の視点で貢献してください。"
),
)
brainstorm_swarm = Swarm(
[idea_generator, critic, refiner],
max_handoffs=8,
repetitive_handoff_detection_window=4,
repetitive_handoff_min_unique_agents=2,
)
result = brainstorm_swarm("在宅勤務の生産性を上げるアイデアについてブレストしてください")
結果
🚀 アイデアマンとして、自由にブレスト開始!
テーマ:在宅勤務の生産性を上げるアイデア
---
💡 ひらめきアイデア一覧(制限なし!)
🏠 空間・環境系
- 「仕事モード部屋」の完全再現 → オフィスの匂い(コーヒー、文具の香り)を家でも再現して脳をスイッチオン!
- バーチャル"通勤"ルーティン → 実際に外に出て5分歩いて戻ってくるだけで「出社した気分」を演出
- 光の色で時間帯管理 → 午前は青白い光(集中モード)、午後は暖色(クリエイティブモード)、夕方は赤(終業モード)
🤝 コミュニケーション・チーム系
- バーチャルオフィス常時接続 → Discordなどで「雑談チャンネル」を常時オープン、孤独感を解消
- "偶発的な出会い"を設計 → ランダムに別部署の人と5分ペアリングする「デジタル立ち話」システム
- 感情ステータス共有 → Slackに「今日のやる気メーター🌡️」を毎朝投稿するカルチャー
⏱️ 時間管理・集中系
- AIコーチによるポモドーロ → 自分の作業ログをAIが分析して最適な休憩タイミングを自動提案
- "集中ゾーン入り"宣言システム → チームに「今から90分集中タイム🔕」を通知するボタン一発仕組み
- 逆算タイムブロッキング → 終業時刻から逆算してタスクを割り当て、「終わり」を先に設計
🎮 ゲーミフィケーション系
- タスク完了でポイントが貯まるアプリ → 週末に家族でポイントを使えるご褒美システム
- チームで「生産性レース」 → KPIじゃなく「今日の集中時間合計」をチームでシェアして競い合う
- ボス(難タスク)を倒すRPG風TODO管理 → 大きなタスクを「ラスボス」に見立てて攻略する感覚で進める
🧠 メンタル・ウェルネス系
- 午後2時の強制「脳休憩」 → 15分間スマホ・PC完全オフのルールをチーム全員で実施
- 「今日の小さな勝利」日記 → 就業前にその日の"小さな達成"を3つ書くことでモチベーションを維持
- 自然音・バイノーラルビートの会社公式プレイリスト → 集中・リラックス・クリエイティブの3種類を用意
---
✨ 超トガったアイデア(ぶっ飛び枠)
| アイデア | 概要 |
|---------|------|
| 🌍 タイムゾーン活用「24時間チーム」 | 世界中のメンバーとバトンリレー式で仕事し、誰かが常に動いている状態を作る |
| 🤖 デジタルツイン上司 | 自分の仕事スタイルを学習したAIが「次これやったほうがいいよ」とリアルタイム提案 |
| 🎵 BGMで集中度をデータ化 | ヘッドフォンの心拍センサーと連動し、集中度が下がったら自動でBGMが変わる |
| 🏆 家族を巻き込む「生産性ミッション」 | 家族も参加できるミッション形式で、子どもが「お父さん/お母さんの応援団長」になる |
---
これらのアイデアを出しました!次は critic(批評担当)に現実性チェックをしてもらい、その後 refiner(まとめ担当)に整理してもらいましょう!🎯
Tool #1: handoff_to_agent
critic エージェントへのハンドオフを開始しました!🎯
---
進行状況:
| ステップ | 担当 | 状態 |
|---------|------|------|
| 💡 アイデア出し | アイデアマン(私) | ✅ 完了 |
| 🔍 現実性チェック | critic | 🔄 進行中... |
| 📋 意見まとめ | refiner | ⏳ 待機中 |
critcが批評を終えたら、refinerが最終的な実践プランとしてまとめてくれます!# 🔍 批評家の視点:在宅勤務アイデア評価レポート
では、現実的な眼で各アイデアをバッサリ&フェアに評価していきます。
---
■ 空間・環境系
| アイデア | 評価 | コメント |
|---------|------|---------|
| オフィスの匂い再現 | ⭐⭐⭐ 中 | アロマディフューザーで即実践可能。ただし「オフィスの匂い=コーヒーと印刷機」は人によって不快感も。個人差が大きいのが弱点。科学的根拠もまだ限定的。 |
| バーチャル"通勤"ルーティン | ⭐⭐⭐⭐ 高 | 最もコスパが高い。 コスト:ゼロ。効果:ON/OFFの切り替えとして心理学的にも支持されている。唯一の問題は「雨の日」と「継続意欲」。習慣化のハードルは低くない。 |
| 光の色で時間帯管理 | ⭐⭐⭐ 中 | スマート電球(Philips Hueなど)で実現可。初期コスト数千円。ただし赤い照明での作業は目が疲れる可能性あり。ブルーライトとの混同も注意。 |
■ コミュニケーション・チーム系
| アイデア | 評価 | コメント |
|---------|------|---------|
| バーチャルオフィス常時接続 | ⭐⭐ 低〜中 | 「監視されてる感」の副作用が最大のリスク。 一部の人には安心感になるが、内向型や集中重視タイプには地獄。Discordはゲームツールとして認識されており、導入に文化的抵抗も。任意参加が必須条件。 |
| ランダムペアリング立ち話 | ⭐⭐⭐ 中 | アイデアは良いが、予定外の時間拘束が問題。集中ゾーンにいる人が突然呼ばれるとむしろ逆効果。オプトインシステム+非同期対応が必要。 |
| 感情ステータス投稿 | ⭐⭐ 低〜中 | 心理的安全性が整っていないチームでは完全に機能しない。 「やる気ない」と正直に言えない文化では形骸化するか、逆に同調圧力になる。マネージャーの目が怖い人には負担。 |
■ 時間管理・集中系
| アイデア | 評価 | コメント |
|---------|------|---------|
| AIコーチによるポモドーロ | ⭐⭐⭐⭐ 高 | 最も将来性があるアイデア。 作業ログ分析による個人最適化は理にかなっている。課題はプライバシーとデータ収集への抵抗感。まずはシンプルなポモドーロアプリから始めて段階的に導入するのが現実的。 |
| 「集中ゾーン入り」宣言システム | ⭐⭐⭐⭐ 高 | SlackのDND機能で今すぐ実現可能。 仕組みがシンプルで運用コストゼロ。チーム全体でルール化することが鍵。宣言することで自己責任感も生まれる効果あり。 |
| 逆算タイムブロッキング | ⭐⭐⭐⭐ 高 | 効果が科学的にも実証されている手法。 ただし「計画倒れ」が最大の敵。特に割り込みタスクが多い職種では実践が難しい。ツール(Googleカレンダー等)との組み合わせで習慣化のサポートを。 |
■ ゲーミフィケーション系
| アイデア | 評価 | コメント |
|---------|------|---------|
| タスク完了ポイント(家族ご褒美) | ⭐⭐⭐ 中 | ユニークで面白い発想。 家族を巻き込む動機づけは新鮮。ただし独身者・単身赴任者は完全に除外される設計。また「ご褒美のインフレ」問題(だんだん効かなくなる)は心理学的に既知の課題。 |
| チームで「生産性レース」 | ⭐⭐ 低 | これは危険。 集中時間の「量」を競うと、質より量に走る。残業美化・疲弊競争になるリスク大。「長く働いた人が勝つ」という本末転倒な結果になりかねない。設計を誤ると逆効果の最有力候補。 |
| RPG風TODO管理 | ⭐⭐⭐ 中 | Habiticaなど既存アプリで実現可。継続率が問題 — ゲーム的な新鮮さは数週間で薄れる傾向がある。ゲーマー気質の人には刺さるが、万人向けではない。 |
■ メンタル・ウェルネス系
| アイデア | 評価 | コメント |
|---------|------|---------|
| 午後2時の強制全員休憩 | ⭐⭐⭐⭐ 高 | 実は非常に現実的で効果が見込める。 昼食後の認知パフォーマンス低下は科学的事実。「強制」という言葉が引っかかるが、「全員同時オフ」にすることで逆にチャット通知プレッシャーがなくなる利点がある。タイムゾーン問題さえ解決すれば◎。 |
| 「今日の小さな勝利」日記 | ⭐⭐⭐⭐⭐ 最高 | 最も低コストで副作用が少なく、効果が高いアイデア。 ポジティブ心理学の「達成記録」と完全に一致。個人で今日から始められる。唯一の課題は「3日坊主」をどう防ぐか。 |
| 自然音・バイノーラルビート公式プレイリスト | ⭐⭐⭐⭐ 高 | YouTubeやSpotifyで無料実践可能。会社公式化することで「業務中に音楽を聴いていい」という心理的許可が得られる副次効果が大きい。バイノーラルビートの効果にはまだ議論があるが、害はない。 |
■ ぶっ飛びアイデア(現実的視点でバッサリ)
| アイデア | 評価 | コメント |
|---------|------|---------|
| タイムゾーン活用「24時間チーム」 | ⭐ 要注意 | 個人の生活リズム破壊リスクが高すぎる。 グローバルチームでは既存の課題であり、解決より問題を作る側面が大きい。「フォロー・ザ・サン」モデルとして大企業では存在するが、在宅勤務の文脈とは別問題。 |
| デジタルツイン上司(AI) | ⭐⭐ 低 | SF的ビジョンとしては面白い。現実的にはAIの提案に対する信頼形成コストが莫大。実際の上司との関係も複雑になる。10年後には議論になるかもしれないが、今は時期尚早。 |
| BGMで集中度データ化(心拍センサー連動) | ⭐⭐⭐ 中 | 技術的には可能(スマートウォッチ活用)。ただしプライバシー問題が致命的。会社が従業員の生体データを取得する倫理的・法的ハードルは非常に高い。個人の自己管理用途に限定すれば価値あり。 |
| 家族を巻き込む「生産性ミッション」 | ⭐⭐⭐ 中 | 在宅勤務の最大の障害「家族からの干渉」を逆手に取る発想は秀逸。ただし強制できないし、子どもの年齢・家庭環境に大きく依存する。「家族との境界線設定のゲーミフィケーション」と再解釈すると実用的になる。 |
📊 総合評価サマリー
🏆 すぐに実行できる・効果大(即採用推奨)
1. 「今日の小さな勝利」日記 — コストゼロ、副作用なし、効果実証済み
2. バーチャル通勤ルーティン — コストゼロ、ON/OFFの切り替えに効果的
3. 「集中ゾーン入り」宣言 — 既存ツールで即日導入可能
4. 午後2時の強制休憩 — チーム合意が取れれば非常に効果的
🔧 改善・条件付きで有望
5. AIポモドーロコーチ — 段階的導入が鍵
6. 逆算タイムブロッキング — ツール連携と習慣化サポートが必要
7. 自然音プレイリスト — 会社公式化による心理的許可効果に注目
⚠️ 設計に注意が必要
8. ランダムペアリング立ち話 → オプトイン制に変更
9. 感情ステータス → 心理的安全性の確保が前提条件
10. ゲーミフィケーション系 → 競争より協力設計に
❌ リスクが高い・再設計が必要
11. 生産性レース → 健康・文化リスク大
12. 心拍センサー連動 → プライバシー問題
13. 常時接続バーチャルオフィス → 監視感の副作用注意
---
批評は以上です。「今日の小さな勝利日記」「バーチャル通勤」「集中ゾーン宣言」の三点は費用対効果が特に優れており、即日チーム展開可能というのが私の結論です。
これをrefinerに渡して、実行計画にまとめてもらいましょう!
Tool #1: handoff_to_agent
批評フェーズ完了です!✅
私の役割まとめ
批評家として、アイデア20件以上を以下の観点で評価しました:
- 💰 コスト — 導入・運用費用は現実的か
- 🧪 科学的根拠 — 効果に裏付けはあるか
- ⚠️ 副作用リスク — 逆効果・文化的摩擦はないか
- 🔧 実現可能性 — 今すぐ使えるツールで実現できるか
- 👥 人への影響 — 個人差・プライバシー・心理的負担はどうか
特に「生産性レース」と「常時接続バーチャルオフィス」については強く警告しました。良さそうに見えて設計を誤ると逆効果・職場文化の毒になりうるアイデアは、ブレストにおいてこそ厳しくフィルタリングすべきと考えます。
次はrefinerが最終的な実行提案にまとめてくれます!# 🎯 ファシリテーターによる最終統合レポート
## 在宅勤務の生産性向上アイデア — 実行提案リスト
---
皆さん、idea_generatorさんの豊かな発想と、criticさんの鋭い現実評価、本当にお疲れ様でした。では私の役割として、これらを「実際に動ける形」に整理・統合します。
---
📋 フェーズ × 導入軸マトリクス
✅ Phase 1|すぐできる(今日〜今週中)
| アイデア | 個人導入 | チーム導入 | アクション例 |
|---------|---------|---------|------------|
| 🏆「今日の小さな勝利」日記 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | 個人:就業後3分でメモアプリに記録。チーム:週次slackチャンネル「#今週の勝利」を開設 |
| 🚶バーチャル通勤ルーティン(5分外出) | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | 個人:始業前の5分散歩を習慣化。チーム:「通勤代わり散歩してきた!」投稿を推奨 |
| 📢「集中ゾーン入り」宣言システム | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | SlackのステータスやDND機能を即日ルール化。チームで共通アイコンを決める |
| 🎵 自然音・公式プレイリスト | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ | 個人:Spotify/YouTubeで即活用。チーム:「おすすめプレイリスト共有チャンネル」を作成 |
💡 これら4つはコストゼロ・心理的ハードルも低い。まず個人が試して「効いた!」という声をチームに共有することが、チーム導入への最短ルートです。
🔨 Phase 2|短期(1〜4週間、小さな設計が必要)
| アイデア | 個人導入 | チーム導入 | アクション例 |
|---------|---------|---------|------------|
| ☕ 午後2時の強制全員休憩 | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | チーム合意を先に取る。カレンダーに週3回から試験導入。「強制」ではなく「推奨」から始める |
| 🗓️ 逆算タイムブロッキング | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | 個人:GoogleカレンダーやNotionで締め切りから逆算ブロック設定。チーム:週初めに共有カレンダーで集中時間帯を可視化 |
| 💬 感情ステータス投稿(条件付き) | ⭐⭐⭐ | ⭐⭐⭐⭐ | 心理的安全性ガイドラインを先に策定。絵文字のみのシンプルな形式からスタート(例:🔋高い・🔋普通・🔋低い) |
| 🤝 ランダムペアリング立ち話(条件付き) | — | ⭐⭐⭐⭐ | 完全オプトイン制で実施。強制ではなく「希望者マッチング」として週1回程度運用 |
💡 このフェーズは「チームの合意形成」が肝。特に午後2時の休憩と感情ステータスは、マネージャーが率先して使うことで心理的障壁が下がります。
🚀 Phase 3|中長期(1〜3ヶ月、仕組み化・ツール整備)
| アイデア | 個人導入 | チーム導入 | アクション例 |
|---------|---------|---------|------------|
| 🤖 AIコーチによるポモドーロ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | 個人:Forest/Focusmate等の無料ツールで試験運用 → チーム標準ツールとして採用検討 |
| 🎮 ゲーミフィケーション(協力型・条件付き) | ⭐⭐⭐ | ⭐⭐⭐⭐ | 競争ではなく「チーム目標達成型」に再設計。例:チーム全体の集中時間が週XX時間超えたら全員でランチ補助 |
| 🏠 家族巻き込みミッション(再解釈版) | ⭐⭐⭐⭐ | ⭐⭐ | 「境界線設定の可視化」として再解釈。家族と一緒に「仕事時間サイン」を作るワークショップ的アプローチ |
💡 AIポモドーロは「個人で慣れてからチームへ展開」の順序が成功の鍵。ゲーミフィケーションは設計段階でチームメンバーの意見を取り入れることで当事者意識が生まれます。
🚫 採用しないアイデア(合意事項として明示)
| アイデア | 理由 |
|---------|------|
| 生産性レース | 健康・文化リスク。協力関係を壊す可能性 |
| 心拍センサー連動 | プライバシー侵害・信頼関係の毀損 |
| 常時接続バーチャルオフィス | 監視感が逆効果。自律性を阻害 |
| タイムゾーン24時間チーム | 生活リズムの破壊。持続不可能 |
| デジタルツイン上司 | 技術的・倫理的に時期尚早 |
💡 「やらないことを決める」のも重要な合意です。これを明文化することで、チームが将来的に同様の提案に悩まされる時間を節約できます。
🗺️ 推奨ロードマップ(全体像)
Week 1(今すぐ)
├── 個人:小さな勝利日記 + バーチャル通勤 + 自然音プレイリスト
└── チーム:集中ゾーン宣言ルールをSlackで合意
Week 2〜3(短期)
├── チーム:午後2時休憩を週3回試験導入(合意形成)
├── 個人:逆算タイムブロッキング開始
└── チーム:感情ステータスの安全なガイドライン策定
Month 1(短期終盤)
├── チーム:ランダムペアリング(オプトイン)開始
└── 個人:AIポモドーロツールを試用開始
Month 2〜3(中長期)
├── チーム:AIポモドーロの標準化検討
├── チーム:協力型ゲーミフィケーション設計・試験運用
└── 個人:家族巻き込み境界線設定の実践
💬 ファシリテーターからの総括コメント
今回のブレストで特に印象的だったのは、「コストゼロで始められる高効果アイデアが複数存在する」という点です。
1. 「個人」から始めて「チーム」に広げる順序を守る — トップダウンで全員に強制するより、早期採用者の成功体験が口コミになる方が定着率が高い
2. 「やめること」の合意も生産性向上に直結する — 採用非推奨リストを明示することで、不健全な方向への誘惑を組織として断ち切れる
3. 2週間後にミニ振り返りを設ける — Phase 1の取り組みについて「何が効いたか・何が合わなかったか」を短時間で共有するだけで、Phase 2以降の成功確率が大幅に上がります
---
idea_generatorさん、criticさん、素晴らしいブレストをありがとうございました!このリストが皆さんのチームにとって実際に使えるものになることを願っています 🙌
=== 実際に発生したhandoffの順序 ===
idea_generator → critic → refiner
完了ステータス: Status.COMPLETED
=== 各エージェントの発言 ===
--- idea_generator ---
(critic への引き継ぎメッセージ、上記と同内容)
--- critic ---
(refiner への引き継ぎメッセージ、上記と同内容)
--- refiner ---
(最終統合レポート、上記と同内容)
3.6 SwarmをGraphに組み込む
Swarmでブレスト→Reporterエージェントにまとめてもらう流れをGraphで定義。
Swarmだけだと「次は〇〇(エージェント)さんお願いします」等ちょっとメタい発言があったり(プロンプトで制御できるかもしれないけど)、
最終出力に会話ログ感があるのでそれを別フォーマットに整形しなおすにはGraphで別のエージェントを足したほうがいいかなと思った。
from strands import Agent
from strands.multiagent import GraphBuilder, Swarm
# Swarm(役割説明のみ、handoff指示なし)
brainstorm_swarm = Swarm(
[idea_generator, critic, refiner],
max_handoffs=8,
repetitive_handoff_detection_window=4,
repetitive_handoff_min_unique_agents=2,
)
# Graphの後段ノード
reporter = Agent(
name="reporter",
system_prompt="ブレストの結果を、日本語で見出し付きの簡潔なレポートとして整形してください。",
)
# Graphの定義
builder = GraphBuilder()
builder.add_node(brainstorm_swarm, "brainstorm") # Swarmをそのままノードとして登録
builder.add_node(reporter, "reporter")
builder.add_edge("brainstorm", "reporter") # brainstorm → reporter の依存関係
graph = builder.build()
# 実行
result = graph("在宅勤務の生産性を上げるアイデアについてブレストしてください")
おわりに
SwarmとかGraphとか定義複雑だろうなと思ったけど、(コーディング自体はAIにやってもらったけど)実際組んでみると感覚的に理解しやすい構文だと思った。
毎回親エージェントが子エージェントを呼び出すようなオーケストレーションをよく見かけるけど、多対多や(今回はやらなかったけど)条件分岐を取り入れると、より人間同士っぽいプロセスに近づけるとかアウトプットの品質向上ができそう。
参考

