PaPoo
cover

役割の切り分けがようやく腑に落ちた

この記事を読んでいちばん気になったのは、AI agents の話なのに、実際には「全部を agent と呼ばないほうが設計しやすい」とはっきり言っているところだった。そこがかなり好感触だった。最近は何でも agent に寄せた説明をよく見るけれど、この記事はむしろ逆で、MCP は capability へのアクセス、A2A は責任の委譲、ACP はその歴史的な経緯、というふうに線を引いている。こういう整理の仕方のほうが、実装する側にはずっと役に立つと思う。

特に MCP を「道具につなぐための契約」として扱っているのがわかりやすい。ファイルを読む、DB を引く、内部 API を叩く。そういうのまで全部「別の agent です」と言い始めると、たしかに identity や state や orchestration が無駄に重くなる。この記事の言い方を借りるなら、そこは agent ではなく tool で十分だ、という感覚だと思う。現場ではこの切り分けを雑にすると、あとから timeout も権限も監視もぐちゃぐちゃになりそうで、読んでいて少し冷や汗が出た。

もう一つ印象に残ったのは、A2A を「仕事を渡す」ための仕組みとして見ている点だった。単にメッセージを送るのではなく、Task として状態を持たせ、途中で質問を返してきたり、完了まで追跡できたりする。この「function call ではなく、責任のある依頼」という感じは、たしかに MCP とは違う。ここを同列に並べてしまうと混乱する、という筆者の苛立ちはよくわかる。

逆に、ACP については少し複雑な気持ちになった。REST-first で入りやすそうに見えたけれど、今では A2A に吸収された扱いで、これから新規採用する理由は薄い、とかなりはっきり書いている。新しい名前が増えたように見えて、実際には整理統合が進んでいるだけなのだな、と感じた。こういう経緯を知らないと、あとで「どれを採用すべきか」で迷うのだろう。この記事はその迷いを先回りして潰してくれている。

読後感としては、AI agents の未来を語る記事というより、むしろ「設計の混線をほどく記事」だった。派手さはないけれど、実務ではこういう線引きのほうが効くはずだと思う。


参考: MCP vs A2A vs ACP: How AI Agents Talk to Each Other

同じ著者の記事