FIG-028

Pub/Sub — 1回の発行が全員に届く

分散システム 2026.06.18 公開 読了 約10分

お知らせを伝えたい相手が増えてくると、「誰に送るかを送り手が全部把握する」やり方は限界がきます。引っ越しのたびに全員へ住所変更を伝えるようなもので、相手が増えるほど送り手がパンクします。そこで送り手と受け手の間に仲介役(ブローカー)を置き、「トピック」を旗印にやりとりするのがPub/Sub(出版・購読)です。

送り手(Publisher)は宛先を知りません。ただ「スポーツ」というトピックに向けて1回放り込むだけ。すると、そのトピックを購読(Subscribe)している人全員に同時に配られます。下の図1で「配信」を押し、1回の発行が何人にも一斉に届くファンアウトを見てください。購読チップをON/OFFすると、届く相手が変わります。

BROADCAST — 1回の発行が、購読者全員へ枝分かれして届く
📣
発行者Publisher
🗂️
仲介役Broker
📱 スマホ速報 0
📺 スポーツ局 0
🏦 金融端末 0
トピックを選んで「配信」を押すと、そのトピックを購読中の人だけに一斉に届きます。
発行した回数 0
届いた総数 0
図1 — 発行者は宛先を知らない。トピックの購読者へ仲介役が一斉に配る

送り手と受け手が、互いを知らなくていい

Pub/Subの肝は疎結合(そけつごう)です。発行者は「誰が聞いているか」を一切知りません。購読者も「誰が言ったか」を気にしません。両者をつなぐのはトピックという名前だけ。だから購読者を後から増やしても、発行側のコードは1行も変わりません。新しい受け手は黙ってそのトピックを購読すればいいのです。

これはメッセージキュー(1対1)との大きな違いです。キューは「1つのメッセージを、待っている誰か1人が取り出して処理する」仕事の分配。対してPub/Subは「1つの発行を、購読者全員に複製して配る」一斉通知。前者は仕事をさばくため、後者は出来事を知らせるための仕組み、と覚えると混同しません。

トピックを増やせば、配信先を細かく仕分けできます(これをトピックフィルタリングと呼びます)。図1で購読チップをすべてOFFにしてから配信すると、発行は成功しているのに誰にも届かないのが分かります。発行者にはエラーすら起きません —— 聞いている人がいなければ、ただ静かに消えるだけです。

用語ミニ辞書
Publisher
トピックに向けてメッセージを発行する側。受け手が誰かを知らない。
Subscriber
関心のあるトピックを購読する側。そのトピックの発行を受け取る。
Broker / Topic
発行を受けて、購読者全員に配る仲介役。トピックという名前で配信先を仕分ける。
ファンアウト
1つの発行が複数の購読者へ枝分かれして同時に届くこと。Pub/Subの核。

まとめ

Pub/Subは、発行者と購読者の間にトピックという名前の旗を立て、1回の発行を購読者全員へ一斉に配る仕組みです。送り手と受け手がお互いを知らないからこそ、受け手を自由に足し引きでき、システムは大きくしなやかになります。「誰に送るか」を送り手から切り離す —— それがPub/Subの効きどころです。