要約

  • 2013年のW3C公開議論では、同じオリジンの複数の実行環境へ知らせを配る仕組みが検討された。2014年にはワーカーへの対応が記録され、2015年の公開書簡には実装作業が見える。
  • 現行のHTML標準では、ブラウザーがチャネル名とストレージキーの合う受信先を探し、メッセージを複製して配送する。受け取った画面の動きはサイトが決める。

読者が最初のタブでログアウトする。二つ目には保存記事、三つ目にはアカウント設定が開いたまま。机を並べて働く三人のうち、一人だけが閉店を知っているようなものだ。各画面が次にサーバーへ尋ねるまで待つ手もある。しかし隣の席で起きたことなら、ひと言伝えた方が早い。ブラウザーは席の配置を知っている。あとは伝言の規則が必要だった。

2013年に開かれたW3Cの公開議題には、方式を探る議論が残る。チャネル名を持つオブジェクトを作り、postMessage() でほかの同名・同一オリジンの聞き手に送る案が出た。細部はまだ提案段階。それでも、送信側がほかの全タブの窓を一本ずつ知らなくてよいという設計の輪郭は鮮やかだ。

内線は舞台裏にも伸びた。2014年1月の別のW3C議題はワーカーからの利用を求め、6月の更新にはHTML側の変更完了が記される。開いているページの裏で働く処理も、条件が整えば同じ名前の連絡網に参加できる。タブだけの立ち話が、ブラウザー内のもう少し広い仕事場へ届くようになった。

2015年1月のWHATWG公開メーリングリストには、Firefox Nightly へ向かう実装についてのやり取りがある。参照先はHTMLの仕様だ。同年10月の W3C HTML 5.1草案の索引にも BroadcastChannel が載り、定義はWHATWGへリンクされている。設計の会話と実装の動きが、同じ時代の記録として並んだ。

現在のHTML標準では配達係の仕事が細かい。送信時にデータを直列化し、チャネル名とストレージキーが同じで受信可能なオブジェクトを探す。送信元自身は除き、残りへ message イベントをキューに入れる。窓側の文書は十分に活動中でなければならず、ワーカーにも受信できる状態が必要だ。ストレージの区画が違えば、同じ看板を掲げた部屋でも別の建物になる。

標準の実例はログアウトだ。一つのタブが知らせを送り、別のタブが表示を直す。チャネルが運ぶのは出来事であり、画面をどう変えるかはサイトのプログラムが引き受ける。テーマの変更や複数画面にまたがる作業状況にも、この役割分担は使える。ブラウザーは電話交換手、編集部は受話器を取って仕事をする人だ。

仕事を終えたら回線を閉じる。標準は、メッセージの聞き手が残ったチャネルがメモリ上に生き続ける場合を説明している。便利な連絡網ほど、片づけも作法になる。三つのタブがようやく同じ机で働けるようになったのだから、帰るときは各自で電話を切ろう。