のびる一本
世界にたった一本だけの、みんなで継ぐ止まらない線。できるのは『いまのペン先の次に点をひとつ足す』ことだけ——別の場所から描き始めることも、線を分岐させることも、消すこともできません。サーバが本当の最後の点から継ぐので同時に足しても線は決して枝分かれせず、常にただ一本。線分は置いた人の色で塗られ、履歴スライダーで最初の一継ぎから育つ様子を辿れます。
アプリを試す
別タブで開く ↗ユーザーが投稿した外部アプリを埋め込み表示しています。表示されない場合は「別タブで開く」からご利用ください。
世界にたった一本だけの、みんなで継ぐ止まらない線です。あなたにできるのは「いまのペン先の次に点をひとつ足す」ことだけ。別の場所から描き始めることも、線を分岐させることも、消すこともできません。知らない誰かの続きに、あなたの一継ぎが残ります。
こんなときに使う
- 共同キャンバスに参加したいが、上書き合戦にはしたくないとき
- 自分の一手が全体の形をどう変えるかを、一筆書きの制約下で試したいとき
- 見知らぬ人たちの手で線が育っていく過程を、最初から再生して眺めたいとき
- 何を描くか決めていない状態で、通りすがりの一手だけ残したいとき
使い方
- キャンバスに脈打つ丸が出ています。これが現在のペン先です。
- 行きたい場所をタップすると、ペン先からそこへ点線のプレビューが引かれます。
- 「ここに継ぐ」を押すと確定します。線分はあなたの色で塗られます。
- 下の「線が育つのを再生」スライダーを動かすと、最初の一継ぎからの成り立ちを辿れます。
- 履歴を見ているあいだは継げません。「いまに戻る」で描画に戻ります。
仕様と機能
| 項目 | 値 |
|---|---|
| 座標空間 | 1000 × 1000(正方形) |
| 一度にできること | 点を1つ継ぐ |
| 表示する点 | 新しい側から6,000点まで |
| 更新間隔 | 5秒ごとに他の人の継ぎを取り込む |
| 統計 | 総手数・線の長さ(画面幅の何倍か)・あなたの継ぎ数 |
線は点の並びとして保存され、連番の昇順に結んだものが「一本の線」です。継ぎのリクエストではクライアントが「いまのペン先はここ」と主張しますが、サーバはそれを一切信用せず、必ずデータベース上の最後の点から継ぎます。ふたりが同時に継いでも、後から入ったほうは先に入った点の次に繋がるだけで、線は決して枝分かれしません。ペン先とほぼ同じ位置(2px未満)への継ぎはゼロ長の線分になるので弾いています。
線分の色は、その終点を置いた人の色です。色相はブラウザごとに一度だけ乱数で決めて端末のlocalStorageに保存するので、同じ端末から何度継いでも同じ色になります。うすいグレーの部分は、誰も居ないときに線が見えないと困るので最初に置いた種線です。
作るときに決めたこと
「唯一・不可分・不可逆・追記のみ」という4つを全部守ることに決めて、それを崩す機能は入れませんでした。消しゴム、分岐、途中への挿入、自分の継ぎだけを取り消す機能——どれも作るのは簡単ですが、ひとつでも入れると「みんなで一本を伸ばしている」という前提が消えます。
分岐を防ぐ方法として、クライアントに現在のペン先を送らせて一致したときだけ受け付ける(楽観ロック)やり方も考えましたが、やめました。それだと混んでいるときに継ぎが失敗し続け、遅い回線の人ほど参加できなくなります。サーバ側で常に最新のペン先に継ぐ方式なら、失敗はゼロで、代わりに「狙った場所から少しずれた線が引かれる」ことがあります。この方式のほうが、線が生き物のように予測不能になって面白いと判断しました。
表示を新しい側6,000点までにしているのは、無限に伸びたときの描画負荷を抑えるためです。古い点も消えてはおらず、総手数の集計には入っています。
注意点
- 継いだ点は取り消せません。消去や編集の機能はありません。
- 履歴の再生は、いま表示している範囲(新しい側6,000点)のなかでの再生です。
- あなたの色と継ぎ数は端末のlocalStorageにだけ保存されます。ブラウザを変えると色も変わります。