サポートに連絡

メールでご返信します。通常は2日以内です。

不正利用を防ぐため、Google reCAPTCHA がこの送信を確認します。その際データが Google に送られます。スクリプトはこのフォームを開いたときにだけ読み込まれます。

← すべての記事

2012 年に予告した「いま誰がいるか」の一覧が動き出した

2012年8月25日、当ブログの投稿で、統計欄が自動的に更新されるようになったと発表され、その投稿はこの一文で締めくくられていた——「計画している機能、『Who is online』リストも近日公開予定です!」

その投稿は今も残っている。そこで予告された一覧は、届くまでに十四年かかった。いまは存在し、あの投稿が指していたカウンターは、その間ずっと動き続けていた。

何が表示されるか

統計ページにはライブパネルがある。今この瞬間に何人がサイトにいるか、そして直近の訪問者が一覧で表示される——接続元の国、判明していればその都市、今どのページを見ているか、最後に確認されたのがどれくらい前かがわかる。一度に12件、新しい順に表示される。

「今この瞬間」とは、直近5分間を意味する。1時間が経過すると、行そのものが完全に削除される。

0560ライブ一覧に載る行は保たれる削除最後に見えてからの分

「誰が」が意味しないこと

そのリストにいる誰も、身元が特定されることはない。クッキーを使わずに数える方法についての投稿で説明した、同じ16バイトの日次ハッシュから作られている——どの行の裏にも、名前もアカウントもクッキーも、保存されたIPアドレスも存在しない。

また、保持されるのはページの完全なアドレスではなくパスのみである。/shop/bootsのように、検索エンジンやニュースレターが末尾に付け加えたものを含む完全なリンクではない。

そして、同じ都市にいる二人が同じページを見ていれば、それは単に二つの行になる。それが二人の読者なのか、一人の読者がスマートフォンとノートパソコンの両方を使っているだけなのか、システム側では判別できない。これは後のバージョンで整理されるべき見落としではない。これが設計そのものであり、このカウンターがほかのあらゆる場面で行っているのと同じ取引だ。役に立つ程度には十分だが、誰かを追いかけ回せるほどではない、という取引である。

接続を開いたままにせずにライブを実現する

これを実現する今どきの方法はWebSocket、あるいはサーバー送信イベントだろう——ブラウザが一本の接続を開いたままにし、サーバーは更新が起きるたびにそこへ流し込む。エレガントな答えだが、ここでは間違った選択になっていただろう。

当サイトのウェブサーバーは、開いている接続一本につきプロセスを一つ使う方式であり、その本来の仕事は数千件のウェブサイト分のカウンターリクエストに応答することだ。接続を開いたままにするということは、他の誰にも応答できないプロセスを一つ抱えるということになる。50人が自分のライブページを見ていれば、数分ごとにしか変わらない数字を届けるためだけに、50個のプロセスが遊休状態で待機することになる。

そこでこのページは、その代わりに15秒ごとに問い合わせを行い、小さなJSONの塊を取得する。この間隔そのものより重要な、三つの判断がその周りにある。

  • リクエストが失敗し始めたら、1分に1回まで頻度を落とす——明らかにすでに苦しい状態にあるサーバーを叩き続けるようなことはしない。
  • バックグラウンドタブでは問い合わせを完全に止め、タブに戻った瞬間に更新する。隠れたタブを見ている人はいないし、そのリクエストにかかるコストは、役に立つリクエストとまったく同じだけかかってしまう。
  • updated N seconds agoという表示は、ローカルで1秒ごとに加算されるだけで、コストは一切かからない。データを更新するのにはリクエストが必要だが、経過時間を進めるのには必要ない。

どれも気の利いたものではない。これは釣り合いが取れているということであり、小さなサーバーにおいては、二つの美点のうちこちらのほうが価値が高い。ライブビューは、それが見ている対象より運用コストがかかるものであってはならない。

戻ってこなかった部分が一つある

2015年9月には、Usersタブがページを積極的に読んでいる人と、バックグラウンドタブで開いたまま存在を忘れられている人を区別できるようになったという投稿があった。

その区別は戻っていない。現在のリストは訪問者が最後に確認された時刻はわかるが、実際に見ているかどうかはわからない。これは知る価値が本当にある情報だ——どんなサイトでも「訪問者」のかなりの割合は放置されたタブなのだから——というわけで、今後作るものリストに載っている。

今度は14年もかからないことを願う。

試してみる

2012年の投稿はライブ実例へのリンクで締めくくられていた。今回も同じように締めくくるのがふさわしいだろう。ちなみに、そのときのリンクは今もそのまま機能する。その先にあるカウンターはずっと動き続けており、130万訪問を超えた。

ライブ実例はこちら。見るのにアカウントは不要だ。

広告