カーソルの上下移動の思い出

突然ですが問題です. あなたは以下のテキストを編集していて, カーソルは一行目四列目 (_ の位置) にあります.

Jan_uary
February
March

下矢印 キーを一回押したとき, カーソルはどの位置に移動するでしょうか?

.
.
.

はい, カーソルは一つ下の行の同じ列, つまり二行目四列目に移動します. あくびが出ますね.

January
Feb_ruary
March

では次のような場合はどうでしょう. 次のテキストで, カーソルは一行目六列目にあります.

Novem_ber
and
December

ここで下矢印 キーを一回押すと, カーソルは一つ下の行の同じ列, つまり二行目六列目に移動する... と言いたいところですが, 二行目には三文字しかテキストがありません. したがってカーソルは行末, つまり二行目四列目に移動します.

November
and_
December

ここでもう一度下矢印 キーを押してみましょう. 一体何が起こるでしょうか?

.
.
.

ほとんどのテキストエディタでは, 三行目六列目にカーソルが移動すると思います.

November
and
Decem_ber

ここでは二つのステップに分けてカーソルを移動してみたので意外な挙動に思われるかもしれませんが, 実際にユーザーが二回下矢印 キーを押してカーソルを移動するときには「二行下に移動する」というまとまった操作として認識していて, 最初にいた列と最後にいる列が一致している方が想定通りと思うケースが多いはずです. (実際この挙動を無効化するとめちゃくちゃストレスが溜まります. お試しあれ (どうやって?))

開発者の視点では, 何も考えずシンプルに「今いる列と同じ列に移動する」という実装をしてしまいそうなところですが, そのままでは失敗してしまうという例でした.

話を少し抽象化すると, ユーザーインターフェースがユーザーにとって使いやすいと思われるためには「ユーザーの想像通りの挙動をする」ことが一般的には求められるということ, そしてそれは開発者が最初に想像した挙動とは異なるかもしれないということです. 実際の使いやすさ・使いにくさに注目して, 想像には疑ってかかりましょう.

.
.
.

といった良い感じのカーソルの移動やらなんやらを昔実装したなあとピクミン4を遊びながら思い出したのでした. これまでよりも格段にプレイヤーが思った通りの操作ができるような工夫がされていて感心します. 図鑑のカーソル上下移動は...まあそういうこともある.