「AIエージェントを複数動かしたら、お互いの処理が衝突してカオスになった…」
そんな経験、ありませんか?😅 複数のAIエージェントを連携させるマルチエージェントシステムは、単体エージェントでは難しい複雑なタスクをこなせる反面、エージェント同士の「調整」がめちゃくちゃ難しいんですよね。
今、海外の開発者コミュニティで注目されているのが、メッセージバスパターン(Message-Bus Pattern)という設計手法です。この考え方を使うと、複数のエージェントがお互いに干渉せず、スッキリと協調動作できるようになります。
🤔 メッセージバスって何?
イメージとしては「社内の掲示板」に近い感覚です。各エージェントは直接やり取りするのではなく、共通のメッセージバス(バス=情報の通り道)に向けてメッセージを投げたり、受け取ったりします。
つまり、エージェントAがエージェントBを直接呼び出す「密結合」ではなく、バスを介した疎結合(loose coupling)の設計になるわけです。これがポイントです!
- ✅ 各エージェントは独立して動ける
- ✅ 新しいエージェントを追加しやすい
- ✅ 障害が発生しても他に波及しにくい
- ✅ デバッグ・トレースがしやすい
🐍 Pythonでメッセージバスを実装してみよう
シンプルなメッセージバスのサンプルを見てみましょう。asyncioとQueueを使って、エージェント間の非同期メッセージングを実現しています。
import asyncio
from dataclasses import dataclass
from typing import Callable, Dict, List
# メッセージの型定義
@dataclass
class Message:
topic: str # どのトピック宛か
payload: dict # 実際のデータ
sender: str # 送信元エージェント名
class MessageBus:
def __init__(self):
# トピックごとにサブスクライバー(購読者)を管理
self._subscribers: Dict[str, List[Callable]] = {}
def subscribe(self, topic: str, handler: Callable):





