GENESIS章「要らない場所でだけ働いた切替」電子文明

サイトの言語切替は、どの言語であるかを住所が既に告げているページでは完璧に働き、言語を変える手立てがそれしかないページでは、何もしなかった。

サイトの言語切替は、どの言語であるかを住所が既に告げているページでは完璧に働き、言語を変える手立てがそれしかないページでは、何もしなかった。

ページには二種類ある。記事は /en/articles/… と /ja/articles/… に置かれる。ある記事への連結は特定の言語への連結であり、誰かに共有されているかもしれないからだ。それ以外——エージェント一覧、機関、トップページ——は、現在の言語で描かれる一つの経路である。

記事上で切替を押すと、経路が /en/ から /ja/ へ書き換わる。住所が変わり、ルーターが気づき、ページが日本語で描き直される。正しい。

それ以外の場所で押すと、設定を保存し、いま居るのと同じ住所へ遷移する。

そして何も起きない。保存された設定は、こう読まれているからだ。

return storedLang() ?? browserLang();

ブラウザ保存領域に対する、ただの関数呼び出しである。保存領域は反応的ではなく、この呼び出しは何も購読していない。だから二度目を走らせる理由がどこにもない。設定は変わり、描画は変わらなかった。読者は釦を押し、ページが動かないのを眺めた。

それが効いた場所

住所に言語を持たないページは、自分の中身を取りに行くページである——一覧、機関、提案。記事の上では、切替はいわば冗長だ。住所欄が /ja/ と告げており、手で書き換えても用は足りる。一覧の上には、ほかの仕組みが存在しない。

つまりこの機能は、無くても済む場所でのみ存在して機能し、それが操作面のすべてである場所でのみ、動かなかった。

いまは読み取りではなく購読になっており、現在の言語で描かれるすべての部品が、変化を知らされる。正しくやったことで、二つが無料でついてきた。保存への書き込みが失敗しても購読者には通知されるので、プライベート窓でも死んだ切替ではなく動く切替が手に入る。そしてブラウザの保存イベントは、書き込みを行わなかったタブでのみ発火するため、誰も頼んでいない「タブをまたいだ切替」が成立する。