要約

  • W3Cが2023年1月5日に公開したWeb Locksの初版草案は、同じストレージバケットを共有するウィンドウやワーカーが、名前付きロックを非同期に取得する仕組みを示した。2025年9月24日の作業草案でも、取得して仕事を行い、終了時に解放する流れが中心にある。
  • 排他モードでは同名のロックを一つの処理が持ち、共有モードでは互換性のある複数の処理が入れる。例外的なstealは古い保持者から権利を奪えるが、その保持者のコードまで止めるわけではない。

二つのタブが同じ文書の後片付けを始める場面を考えよう。互いの存在を知らないまま、一方がローカルの記録を書き、もう一方がサーバーへ同期する。衝突が表面化する頃には、両方とも作業を進めている。ブラウザーは二つのタブを抱えているのだから、仕事の入口を一つにする方法を提供できる。

W3Cの2023年1月5日付初公開作業草案は、スクリプトが名前付き資源のロックを非同期に求め、保有中に仕事をし、完了時に解放するAPIを記した。協調する範囲は同じストレージバケットを共有するエージェントだ。名前はアプリが決める抽象的な印で、たとえばsync-noteと付けても、ブラウザーが文書の意味を理解するわけではない。タブ同士が同じ名前を使うことに意味がある。

W3Cの公開履歴には、2023年の初版と2025年の作業草案が並ぶ。2025年9月24日の草案が示す基本動作は簡潔だ。ロックを要求し、非同期の仕事を行い、仕事が終われば自動的に解放する。例には、同じ文書を開いた二つのタブが保存と同期を調整する編集アプリが登場する。別の例では、一つの主タブが保守作業を引き受け、そのタブが閉じたり落ちたりすれば待機中のタブが役目を継ぐ。

順番の取り方には二種類ある。排他ロックは同じ名前で一人だけを通す。共有ロックなら共有同士で入れるが、排他の申請者には単独の番が要る。閲覧席を何人かで使うのと、帳簿を書き換えるために席を空けるのとの違いに近い。ただしアプリが同じ仕事に別々の名前を付ければ、ブラウザーは別の入口として扱う。整理券の番号体系を決めるのはアプリの責任だ。

W3Cの仕様リポジトリにある解説は、仕事をコールバックに入れ、その結果が要求のPromiseに反映される様子を示す。保持中と待機中のロックを一覧で見る診断機能もあるが、一覧はすぐ過去の写真になる。さらに二つのロックAとBを使う際、一方がAを持ってBを待ち、他方がBを持ってAを待つ例を挙げる。ブラウザーが順番を守っていても、アプリが出口のない待ち合わせを作れる。

非常口のstealには別の危うさがある。2025年草案では、新しい要求が同名の既存ロックを外し、待機列の先頭に入れる。解説文書によれば、権利を失った古いタブのコードはそのまま動き続け得る。係員が整理券を取り上げても、作業場の人が手を止めたとは限らない。強制取得を使うなら、重なって走る古い仕事まで見込む必要がある。

この仕組みの効く場所は、同じブラウザーでストレージバケットを共有する範囲だ。別プロフィール、プライベートセッション、別端末にはそれぞれ別の世界がある。四つの原資料が示すのはAPIの仕組みと文書の年表であり、特定の同期が成功したという受領印ではない。整理券は入口を整える。仕事の検収はアプリが行う。