Windowsのスクロールバー:ショートカット機能の歴史を振り返る
A brief history of Windows scroll bar shortcuts
A brief history of Windows scroll bar shortcuts
Windowsにおけるスクロールバーのショートカット操作が、これまでどのように進化してきたのか。その歴史を簡単に紐解いていきます。
Raymond Chenが最近増えているUIの不一致や、かつてはどこにでもあった機能の廃止についてボヤき始めるのも、そろそろいい頃合いだな。(それとも、以前の記事を見逃していたかな。)
Linux/GTKだとスクロールバーの溝をクリックするとその位置まで飛ぶんだけど、さっきShift+クリックがPageUp/PageDownと同じ動きをすることを発見した。Firefoxの右クリックも同様にPageUp/PageDown相当っぽいけど、LibreOffice(Writerで毎秒6フレーム、1画面分に15秒かかる)やInkscape(1画面分に3秒、スムーズ)だとボタンを押している間ゆっくりスクロールする動きになる。あと、中クリックは「ほぼ」PageUp/PageDownなんだけど、Firefoxだと何も起きないな。普段スクロールバーがあるアプリを使っているのは、たぶんこの辺りくらいかな。
そうそう、もう一つQt製のBibleTimeもあって、これはかなりWindowsっぽい。クリックはPageUp/PageDown、右クリックはコンテキストメニューが出る(「ここにスクロール」、---、先頭、末尾、---、Page up、Page down、---、上にスクロール、下にスクロール)。Shift+クリックはただのクリックと同じで、中クリックは「ここにスクロール」になる。
(こういう挙動の差があるからこそ、ウェブページで独自のスクロールバーを実装すべきじゃないんだよね。プラットフォームごとに挙動が違うから、全部をまともに再現するなんて無理だし、そもそも不可能なこともあるし。)
残念ながら、今やWin32のスクロールバーを使っているアプリなんてほとんどない。みんな独自のカスタムスクロールバーを提供するフレームワークを使っているからね。
そうなんだよ。しかも悲しいことに、それらフレームワークの実装は、開発者の関心の低さや不注意のせいで、どれもこれも酷い状態になってる。酷いというのは、挙動がバラバラか、機能が制限されているかのどちらかってこと。
Windowsアプリ全体、あるいは他のOS上のアプリでも、UXが統一されていたあの頃が本当に恋しいよ。
アプリ独自の見た目を追求するのは構わないけど、ウィジェットが本来の挙動と違ったり、OS標準機能の単なる劣化版になっていたりするのは本当に勘弁してほしい。
MSがどんどん新しいUIフレームワークを投入して状況を複雑にしていく様子や、その後にCEFやElectronみたいな選択肢が出てきたのを見ていてずっとイライラしてた。WindowsのUI環境は2007年頃から特にカオスになり始めて、もう15年以上ひどい混乱状態が続いているよ。
正直、今Windowsのデスクトップアプリを作るなら何を使えばいいのか皆目見当がつかないし、どの選択肢も全く魅力を感じない。最近デスクトップアプリをいじる時は、仕事でメインに使っているわけじゃないのもあって、Rust + Qtで行くようにしてる。ネイティブのパフォーマンスが出るし、どちらの開発元からもハシゴを外される心配がなさそうだからね。
ウェブサイトでスクロールバーが細すぎる、あるいは稀に完全に非表示になるというトレンドは本当に困る。幸いなことに、Firefoxなら about:config で layout.css.scrollbar-width-thin.disabled=true に設定すればなんとかなるよ。
個人的には、スクロールバーをクリックした時のデフォルトアクションは「ここにスクロール」であるべきだと思う。PageUp/PageDownには既にキーボードショートカットがあるのに、「ここにスクロール」にはキーボードショートカットを割り当てられないからね。マウスしかできない独自機能を活かせる場面で、わざわざキーボードの機能を重複させるなんて無駄でしかない。
GTKはここがしっかりしてるけど、Qtはダメだな。
ホイールでスクロールせず、次のアイテムへ移動するだけのサイトを作ったことがあるよ。結果的にリストの半分(スライダー、前へ/次へボタン、Home/Endキー)を自分で実装する羽目になってひどい目を見た。Shift+クリックのことなんて今日まで知らなかったよ。
誰かが標準UIコントロールのこういった隠れた挙動をカタログ化して、再実装する人たちのためのリファレンスを用意すべきだよ。もちろん、みんなが同じ実装を使って統一感を出すなんてことは期待できないけれど、ドキュメントがあれば少なくとも「ここを見ろ」と言えるようになるはずだ。
Raymond ChenですらShift+クリックのことを知らなかったっていうのが面白いね。何年か前に適当に触ってたら見つけて、それ以来そのアプリが本物のWin32コントロールを使っているのか、それとも自作したのかを見分けるために使ってたよ。Qt[0]を含め、当時ほとんどのツールキットにはこの挙動がなかったからね :-P
[0] Qtはどこかの時点で対応したかもしれないけど、もう何年もWindowsをメインOSとして使ってないから確認してないな。
Shift+クリックで「ここにスクロール」ができるようになったのがWindows 7からだったっていうのも意外だ。ずっと前からあったと信じ込んでたよ、いつも使ってるからね。腹立たしいのは、よりによってMicrosoft Officeがこれに対応していないこと!あそここそ便利なのに、天下のMicrosoft製アプリでありながらWindowsの慣習に従う気がないなんてね。あと、Excelのスクロールバーは全般的に狂ってるよ。
古いバージョンのWindowsだと、スクロールバーのつまみをドラッグしたままマウスを遠くに離すとスクロールがキャンセルされて、元の状態に戻ったよね。
今のバージョンでは一貫性がない。Notepadではできなくなっているけど、ブラウザではまだサポートされている。