要約

  • 2012年7月3日のW3C作業草案は、要素による全画面表示の要求、文書による終了、最前面への配置、利用者の指示による退出を定めた。
  • W3Cは2014年にその文書の作業を終了し、WHATWGを参照先に示した。現行標準は通常の要求に利用者の一時的な操作を求め、埋め込み内容の権限と確実な出口も規定する。

ウェブページが劇場を経営すると考えてみよう。動画は照明を落としたい。ゲームは壁いっぱいの映像を欲しがる。スライドはブラウザーの枠を邪魔者扱いする。どれも理解できる要求だ。そこで劇場の管理人が「非常口はどこですか」と尋ねる。表示方法の仕様が、急に権限の仕様になる。

2012年7月3日に公開されたW3Cの最初の作業草案には、簡潔な操作が並ぶ。要素のrequestFullscreen()で全画面表示を求め、文書のexitFullscreen()で終える。fullscreenElementで現在表示中の要素も分かる。当時のメソッドの戻り値はvoidだった。この文書は作業草案であり、完成したW3C勧告でも、特定のブラウザーが機能を出した日の記録でもない。

画面をただ大きくするだけなら、CSSでも巨大な長方形を描ける。草案が扱ったのは、その先だ。全画面の要素は文書のスタックに入り、描画順では利用者に最も近いトップレイヤーに置かれる。ページ内の一角を広げる仕事と、ブラウザーの表示領域全体を借りる仕事では、関係者が違う。自信満々のdivにモニターの所有権証書は付いてこない。

要求が必ず通るわけでもない。草案は、要素が文書内にあるか、関連する文書で全画面が許可されているか、入れ子の状態に矛盾がないかを調べた。当時のポップアップ許可に関する条件や、既存の利用者設定、安全上の懸念、プラットフォームの制約も判定に入る。ページは申請書を出せる。判を押す側はブラウザーだ。

出口は後付けの気休めではなかった。利用者が全画面表示を終えるようブラウザーへ指示した場合、草案は完全な退出を定めている。退出方法を知らせる表示も想定した。fullscreenchangeがあれば、ページは状態の変更を知り、再生や操作部の配置を調整できる。映写機の係は幕が下りたことを知る必要があるが、客が帰るのを拒む権利はない。

次の節目は文書の肩書にある。2014年11月18日のW3C作業部会ノートは、この文書の作業を打ち切ったと明記し、WHATWGの仕様を参照するよう案内した。W3Cの草案がそのまま勧告に昇格した、という年表にはならない。一方で、文書が止まったことは全画面という機能が消えたことも示さない。仕様を育てる場所が移ったのだ。

WHATWGの現行Living Standardを読むと、入口はさらに細かい。今のrequestFullscreen()とexitFullscreen()はPromiseを返す。通常の要求には短時間だけ有効な利用者の操作が必要で、利用者による画面回転という特定の例外も記されている。要求が通るとその操作の効力は消費される。ページが読み込まれた途端に勝手に客席の照明を落とすことと、客が再生ボタンを押すことは、同じ扱いにならない。

表示中の要素は今もトップレイヤーの全画面フラグで定まる。:fullscreenは見た目を整える手掛かりになり、fullscreenchangeとfullscreenerrorは成功と失敗を伝える。ここで2012年のvoidメソッドと今日のPromiseを混ぜると、歴史を一枚の古びないパンフレットにしてしまう。仕様には版があり、条件は変わってきた。

他人の内容を埋め込む場面では、この権限の線引きがいっそう重要になる。第三者の動画がiframeの中にあるとき、その動画が独断で全画面を取ってよいのか。現行標準のfullscreen権限ポリシーは既定の許可対象を'self'とし、埋め込み先にはallowfullscreen、allow、または適切なポリシーヘッダーによる明示的な許可を求める。劇場が舞台を外部の演者に貸すとしても、鍵まで渡す義務はない。

肝心の出口について、現行標準はブラウザーが全画面状態を利用者に分かるよう示し、常に使える退出手段を用意して知らせるべきだと書く。全画面のページは、ブラウザーやOSの画面まで偽装できるからだ。ブラウザーは必要なら自ら会期を終わらせられる。これが全画面を単なる映像効果ではなく、信頼を伴う表示モードにしている。

ウェブは映画館にも教室にも遊び場にもなれる。その自由を支えるのは、スクリーンをいっぱいにする命令だけではない。明かりを落としても、出口の小さなランプだけは消さないという約束である。