IRC互換の分散チャット「Parley」
原題: Parley: Federated, decentralised chat that speaks plain IRC
なぜ重要か
IRCという枯れた標準を活かしながら分散化を実現するアプローチは、既存クライアント資産を捨てない現実的な選択肢として注目に値する。
James Mills氏が開発するOSSプロジェクト「Parley」は、IRCプロトコルと互換性を持つフェデレーション型分散チャットシステムだ。irssiなど既存のIRCクライアントから「user@domain」形式でアドレスを指定し、異なるインスタンス間でも通話できる。2026年9月27日付けの最新コミットでは、複数インスタンスにまたがる通知の誤送信バグが修正された。
「Parley」はGo言語で実装されたフェデレーション型チャットサーバーで、既存のIRCクライアントをそのまま使って異なるドメインのユーザーと会話できる点が特徴だ。自分のドメインでインスタンスを立ち上げ、「alice@foo.com」が「bob@bar.com」と会話するといったユースケースを想定している。
最新コミット(2026年9月27日)では、メンション通知の誤送信問題が修正された。具体的には、「foo.com」と「bar.com」の両方に「bob」というニックネームのユーザーが存在する場合、「bob:bar.com: lunch?」と入力しても、foo.comのbobにも通知が届いてしまうバグがあった。また、bar.comからの「bob: lunch?」という発言でもfoo.comのbobが起こされてしまう問題も確認されていた。
修正では、メンションの解釈ルールを「送信者に見えていた形式通り」に変更した。「bob:bar.com」はbar.com上のbobを指し、裸の「bob」は送信者が所属するインスタンスのbobを指す、という原則を徹底している。これにより「bob:D」や「bob:10」のような絵文字・数字付き表記が誤ってメンションと解釈される問題も回避した。
修正の確認には統合テスト「TestOnlyTheBobThatWasMeantIsPushed」が追加され、5パターンの発言それぞれが意図したbobにのみ通知されることを検証。`make test`を`-race`フラグ付きで実行し、10回連続でパスしたことも確認されている。なお、コードの一部はClaude Codeを使って生成されており、David Collantes氏がレビューに参加している。