機能 #888
完了ふぁぼろうとした瞬間に別ツイートが滑りこんで誤ふぁぼする事故を防ぐ機能
0%
説明
概要¶
mikutter の TL の仕様として
「一番上に最新のツイートを表示している状態で新しいツイートを受信すると既存のTLが下にスクロールする」
という機能がある。
この機能とマウスオーバーアイコンが提供するUIの組み合わせにより生じる問題がある。
詳細¶
事象¶
ツイート受信時の TL自動スクロールとマウスオーバーアイコンによるふぁぼ・RT機能が複合することにより
- ふぁぼろうとしてマウスカーソルをアイコン上に持って行って照準を定める
- ここだっ!! とクリック
- → 上記 2アクションの間に新たなツイートを受信する
- → クリックする直前にクリックしようとした場所にTL上のひとつ上のツイートが滑り込む
- → 結果として意図していないツイートに対して誤ふぁぼあるいは誤RTする
- → クリックする直前にクリックしようとした場所にTL上のひとつ上のツイートが滑り込む
- → 上記 2アクションの間に新たなツイートを受信する
という事故が発生する。
影響¶
以下のような事例や報告が観測されている。- TL流速が速いとそもそもふぁぼが困難
- 取り消したいけれどあんふぁぼ通知でがっかりさせるのも申し訳ない
- 誤RTしたツイートに特殊な性癖の画像が添付されていて失われた信頼が戻ってこない
- 誤ふぁぼられた人から因縁をつけられ訴訟沙汰となる
報告事例¶
https://twitter.com/tsutsuii/status/268369800374407168
ふぁぼろうとしたらTLがスクロールしてRTになる事案が発生
https://twitter.com/tsutsuii/status/290473645338394624
ふぁぼろうとしたらTLが流れて次のツイートを誤爆する事案が発生
https://twitter.com/nonakap/status/686372302141796352
mikutter、ユーザアイコン上にマウスカーソルがある状態(ふぁぼなりリツイートしようとしている状態)ではTLをスクロールさせないで欲しい…
https://twitter.com/Akkiesoft/status/774828087187869696
@charsiuCat 別のをふぁぼろうとした瞬間にマルベリータが滑りこんできて誤ふぁぼした、訴訟
対策案¶
とりあえず安直に以下の2つの案が考えられる。
自動スクロール仕様に対する修正¶
「マウスオーバーアイコンを表示している間は自動スクロールをしない」という案がある。
懸念事項¶
ただし、この場合は「マウスオーバーアイコンを表示し終わったときにどうするか」という規定が必要になる。- RTもしくはふぁぼを実行し終わった場合
- マウスを動かしてマウスをアイコン外に移動した場合
- あらためて自動スクロールさせる
- 自動スクロール条件を外したままにする
のいずれかとするか決める必要があると考えられる。
自動スクロールする場合も、その仕様を規定する必要があると考えられる。- #304 の仕様でスクロールさせる
- 保留されているツイートの数に応じて早送りでスクロールさせる
マウスオーバーアイコン仕様に対する修正¶
現状のマウスオーバーアイコンは「マウスカーソルがアイコン上にある」という条件で表示される。
これを以下のように修正すると当チケットが問題として挙げている事故は防げると考えられる。
- マウスカーソルを動かしてアイコン上に入った場合にはマウスオーバーアイコンを表示する
- ツイートのほうが動いて止まっているマウスカーソル上に重なった場合はマウスオーバーアイコンを表示しない
懸念事項¶
#319-2 には以下のようなとしぁさんコメントが存在する。
ふぁぼは誤らないことより速度のほうが大事であり、自分をふぁぼることが間違いであるにせよ、そのためにモーダルダイアログによって操作を止められるよりは、誤ふぁぼを無視して次々ふぁぼっていくほうが建設的であり、オプションとして提供する必要もないと考えられる。
マウスオーバーアイコンに対する仕様変更はこの思想と相容れない可能性がある。
蛇足¶
現状のマウスオーバーアイコンの仕様として、以下のような挙動が観測されている。
- マウスオーバーアイコンを表示している最中に TL自動スクロールによりアイコンがマウスカーソルから外れても
アイコン上にマウスオーバーアイコンが表示されたままになっている
結果としてTLのアイコンすべてにマウスオーバーアイコンが表示されたままになっているというケースもある。
この挙動の是非についてもついでに考察する? これは別チケットで対処すべき?
ファイル
Izumi Tsutsui さんが約8年前に更新
Izumi Tsutsui さんは書きました:
「自動スクロールでツイートのほうがマウスカーソルに飛び込んできた場合」の挙動を
- マウスカーソルを動かしてアイコン上に入った場合にはマウスオーバーアイコンを表示する
- ツイートのほうが動いて止まっているマウスカーソル上に重なった場合はマウスオーバーアイコンを表示しない
としぁさんをふぁぼって確認したのですが
- ツイートのほうが飛び込んできたときはマウスオーバーアイコンは表示されない
- マウスオーバーアイコンが表示されていなくても、
マウスカーソルがアイコンのふぁぼ/RTの位置にある時にクリックすると
対応する動作が発動する
という動きでした。
マウスオーバーアイコンが表示されていない時は対応する動作をさせない、
というのが(可能かどうかわかりませんが)妥当なんですかね。
Izumi Tsutsui さんが7年以上前に更新
そういえばこんなツイートがありました
https://twitter.com/toshi_a/status/31566704467255296
まじでマウスカーソル乗ってる間はタイムラインをスクロールしないようにするべき
toshi_a 初音 さんが6年以上前に更新
- ステータス を 新規 から 実装待ち に変更
- 担当者 を cob odo にセット
- 対象バージョン を 3.7 にセット
良さそうですね。俺は今はアイコンボタン使ってないので評価できないのですが、シンプルで良いと思います。
atomicは、必要なければ単に重くなるだけなので外したほうがよさそうですが……
この部分は全てUIスレッドで動作するため排他制御は必要ないので、外してコミットしてください。
先程、金具さんのgithubに登録されているSSHキーをmikutterのリポジトリに登録し、コミット権限を付与しました。githubにpushするのに使っているキーで行けると思うので、以下のURLに書いてある情報を見てリモートを設定してください。
https://dev.mikutter.hachune.net/documents/2 (第三者が見ても問題ない情報しか書いてないですが、一応コミッタしか見れないようになっています)
リポジトリのブランチ名の規約 にあるルールに則って、topicブランチを作って添付してもらったパッチをpushしてください。
pushできたら、ステータスを「レビュー待ち」にし、担当者をつついさんにしてください。
Izumi Tsutsui さんが6年以上前に更新
- 担当者 を Izumi Tsutsui から cob odo に変更
Live Image 作成で力尽きていて遅くなってすいません。
NetBSD/i386 8.0_RC1 Live Image 上の 3.6.6 に 73055894 の差分を直接当てて試してみました。
意図通り動いている(マウスオーバーアイコン表示しているとスクロールしない)と思います。
- RTもしくはふぁぼを実行し終わった場合も、マウスカーソルを動かさない限りは自動スクロールは再開しない
(マウスオーバーアイコンは表示されたままなので) - マウスを動かしてマウスをアイコン外に移動した場合は、自動スクロールのフラグは真に戻すが、
すでに新しいツイートが受信されている場合はもう一つの自動スクロール条件
「ツリービューの一番上が表示されてる時」が外れるので、
結果としてマウスカーソル移動後も自動スクロールしない
トラッカーが「機能」なのでステータスに「マージ待ち」が無いですが、
いったん担当者を金具さんに戻しておきます。
対象バージョンが 3.7 なので develop にマージなんですかね。(そのへんは適宜としぁさんに相談で)
cob odo さんが6年以上前に更新
仕様としては以下ですよね。
そうなります。
トラッカーが「機能」なのでステータスに「マージ待ち」が無いですが、
いったん担当者を金具さんに戻しておきます。
対象バージョンが 3.7 なので develop にマージなんですかね。(そのへんは適宜としぁさんに相談で)
どうなんでしょう?>としぁさん
https://dev.mikutter.hachune.net/projects/mikutter/wiki/%E3%83%90%E3%82%B0%E5%A0%B1%E5%91%8A%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95 には、「バグ」トラッカーの場合については丁寧に書いてありますが、「機能」トラッカーの場合はどうなるのか……