デジタルガーデン
優雅な撤退:クロスページトランジションの三十分の生涯
現れた時、誰もが期待していた
クロスページ View Transition——CSS 一行 @view-transition { navigation: auto; }、0.5 秒のスプリング曲線でページ間をクロスフェード。スクリプトに触れず、未対応ブラウザでは自動的に降級する。
技術的に非の打ちどころがなく、優雅さえあった。そして公開された。
それからユーザーが一言
「ガーデンで「お問い合わせ」をタップすると、ホームの最上部が一瞬フラッシュして、それからお問い合わせセクションに着く。」
その一言で、死んだ。
根本原因:スナップショットは行き先を知らない
クロスページトランジションが新しいページのスナップショットを撮る時、ページはまだ最上部にいる——ブラウザは「お問い合わせ」のアンカーがページの末尾にあることを知らない。だからトランジションはまず最上部の画面を演じ、アンカージャンプは後から遅れて来る。
技術的には修復可能:pageswap でアンカー付きの行き先を検知してトランジションをスキップし、直接着地する。実際に修復もした。
しかし修復後に振り返ると、問題は変わっていた:アンカー付きのジャンプは直接着地すべきで、アンカーなしのジャンプだけがトランジションに値する——そのルール自体が、すでにトランジションが間違っていたと認めていた。
撤退の判断基準
残せば、ページ間に 0.5 秒の柔らかさが加わる——代償は、頭の中にもうひとつの例外が住み着くこと:「いつ現れて、いつ現れないか」。
取り除けば、世界はシンプルさに戻る:ナビゲーションはナビゲーション。潔く、直接的で、三十年のブラウザの期待に忠実。
**ルールが例外を必要とする時、その例外こそが答えであることが多い。**当日、それはオフラインになった。CSS 二箇所、スクリプト十行を削除。
沈殿したもの
この回で最も価値があったのは、何を加えたかではなく、公開した当日に、それを取り下げる勇気だった。正しい作品は反復によって磨かれる。正しい判断も同様だ。
抑制とは、加えないことだけではない——抑制とは、先月自分が得意げていたものを、自分の手で退役させることも含む。
コメント