ui
Multiplayer cursors / Live cursors / Collaborator cursors / Cursor chat
01Demo触って、数値を決める
カーソルの束が漂う最大の振れ幅。観察元は右に7px・上に9px。6〜12pxで「手を置いたまま考えている人」に見え、20pxを超えると何かを指し示しているように見えて文字を読む目を奪う。
漂いの1周の時間。観察元は5s ease-in-out。4〜7sが人の手の揺れに近く、2sを切るとそわそわして見える。
1人のカーソルが次の発言・道具に替わるまでの時間で、吹き出し1回の長さも同じ。観察元は4.2s。短い一言なら3.5〜5sで読み切れる。2人目は半周期ずらして交互に話させる。
道具の絵が scale(0.5)・-20°から元の大きさへ戻る時間。観察元は0.45s。0.3〜0.5sで「持ち替えた」と分かり、0.8sを超えると絵がもたついて見える。
02Prompt数値はスライダーと連動
03 Vocab この動きを構成する語彙
マルチプレイヤーカーソル(multiplayer cursors) — 共同編集で他の参加者のポインタ位置を名札付きで表示するもの。Figma・Miro・Liveblocks などの呼び名で、live cursors とも言う。
プレゼンス(presence) — 「いま誰がここにいるか」を伝える表示の総称。カーソルのほか、右上に並ぶ参加者のアバターや、選択中の枠の色もプレゼンスに含まれる。
カーソルチャット(cursor chat) — カーソルの横に吹き出しを出して一言しゃべる機能。Figma ではスラッシュキーで呼び出す。この項目の吹き出しはその見た目を借りた演出。
アイドルドリフト(idle drift) — 止まっていると死んで見える要素を、数px・数秒周期で漂わせて「生きている」ことを示す揺れ。ambient float と同じ考え方を小さく使う。
key による再マウント — React で key を変えると要素が作り直され、CSS アニメーションが頭から再生される。吹き出し・道具を1回ずつ再生し直すのに使う。兄弟の key は line-/tool- のように接頭辞で分ける。
04 NG → OK 伝え方の差分
NG
言い方: 「Figmaみたいに他の人のカーソルが動いてる感じを出して」
なぜNG: 画面の端から端へカーソルが滑っていく実装や、ランダムな座標へ毎秒ワープする実装が返ってきやすい。大きく動くカーソルは読み手の目を奪うだけで「そこに人がいる」感じにはならない。吹き出しの出し方も決まらないので、フェードの切り替えだけで文字が入れ替わり、いつ話したのかが伝わらない。
OK
言い方: 「名札付きカーソル2本を置き、束ごとtranslateで最大9pxだけ5s ease-in-outで漂わせる。4.2sごとに吹き出しと道具を作り直し、吹き出しは0〜8%非表示→18〜84%表示→96%で上へ抜けて消える1回再生、道具はscale(0.5) rotate(-20deg)から0.45sで戻す。2人目は半周期ずらす。reduced-motionでは静止」
なぜOK: 「その場で小さく漂う」と「発言ごとに1回きりの出入り」を数値で分けて書いているので、ワープも常時点滅も起きない。2人目を半周期ずらす指定で、2人が同時にしゃべって画面が騒がしくなるのを防げる。
