こういうの、「ちゃんと」主張したいとずっと思ってはいるんだけれども。
ときおり Google な UI に色々ケチ付けたりしてる通りで、特に「ワタシが中の人」であることもあって、ちょっとしたユーザインターフェイスの「マズさ」について、毎度気になって気になってしょうがなかったりする。
実際「ユーザインターフェイス設計ガイド」みたいなちゃんとした文書があればいいなと思うし、事実あるんじゃないかとも思うけれど、仮にあればあったで「ほんとか?」を検証する必要があるだろうから、どっちみち「オレが思うには」の切り口で言いたいわけだわ。
けどなんかそういうちゃんとしたの見つけたら、それにコメントしてくのが簡単なので、いつかやりたいなぁ。
ほんとにそれこそ「10年前、20年前、からずっと」考えてきてることなので、だったらいい加減「まとまったもの」を書けるんじゃねーの、とさえ思うんだけれど、そうやって「まとめようとしたこと」が結局ないので、なので「今思い出せる範囲で」乱雑に書いてみる。
今まさに「このブログを書いている」という行為中にまさしく気になっている「ダメ」なユーザインターフェイスがあったりする。これ:
この場合は WordPress ということになるが、何を問題にしているかというと、「hover でメニューが開いてしまう」という「親切」に関して。
これはとりわけ「タッチデバイス」全盛の現代ではおそらくちゃんと問題意識を持たれているんじゃないかと想像してるけど、要するに「オレはブラウザのアドレスバーを触りたいんだ」という際に、ユーザ(ワタシ)は、この「hover に反応しないように」マウスを「回りこませて触れないように頑張る」必要がある、ということである。
昔から何の疑問も持たれずに採用されてきている「きゃーすてきぃ」な親切だが、こんなもんは「自分で使ってみれば」すぐに気付くことである。なぜ今でも当たり前のように「頑張って実現」されてしまうのか。こういうのを「共感力がない」という。
どうすればいいのかって? そりゃ「頼むまでは開くな」てだけの話。つまり「明なユーザアクションにだけ反応せよ」つー話。タッチデバイスならタップ、そうでないならクリック。当たり前の話。
次に一番気になる、の「バージョン1」。「コンテキスト依存症候群」の「その壱」である。「今この文脈ではこのメニューは使えません」というヤツである。
実際この取捨選択が「正しい」うちはいいのだが、これが「正しくない」場合に凄まじく使いにくいものとなることがある。簡単に言えば「初心者に優しくしたつもりが、初心者が全く手も足も出ないものになる」ということが起こる。
実際にいくつも見たことがあるのだが、何か設定を行えるダイアログがあるとして、「今は設定してはいけません」という文脈で「ダイアログを開くメニューが無効になる」。「今は設定してはいけません」の事情は様々あるが、典型的なのは「何かの絶賛処理中」な場合だ。プログラムの都合「今これを触られると困る!」というわけである。
ところがユーザ、特に初心者は、何か振る舞いをカスタマイズしたいと思う場合に、「絶賛試行錯誤しながら情報収集をぐーぐるさん頼み」することが非常に多い。つまり、「プログラムが絶賛処理中」に、インターネット検索で「設定ダイアログを開いて…」という情報を目にする機会が多いのだ。その情報に画像があれば別だがテキストのみの情報の場合、「う、今、開けない(これが「どうして開けないんですか」の質問をトリガーしてしまうことすらある)」として、「情報収集だけ先に進める」とか、「考えを先読みする」という行為を阻害してしまう。つまり「今は出来ないけど、あとでこうすればいいのか」を先に知ることが出来ない。
どうすればいいのか? 無論「根っこから使えないようにするのではなく、葉の方で措置せよ」ということ。disable は「起動出来ない」という措置ではなく「読み取り専用モードで起動する」ことで措置せよ、ということである。
でこれの派生、つまり「バージョン2」。本質は同じだがよりストレスフルな、「コンテキストに依存して使えるものが変化する」という「賢いインターフェイス」である。
Google の狂ったインターフェイスで十分理解していると思うが、Google は「際立ってヒドイ」だけのことであって、実際はあちこちで観察出来る。
ワタシが持ってる DIGA (ハードディスクレコーダ) を例にしてみたい。
「毎週予約」機能、これはすぐわかるだろう。この機能で毎週予約してある番組について、(特にワタシのは 3ch 同録しかできないので)「今回はこっちはいらない、特番のこっちの方を録画したい」ということがしょっちゅう発生する。もしくは、例えば「特定のコーナーだけに興味があって、番組そのものを毎週録画したいわけではない」ということもある。ワタシの場合はテレビ東京の「日曜ビッグバラエティ」がそうで、「池の水」だけでいい。それ以外の回は「今回は録画しなくていい」と思いたい。
ところがワタシが持ってる DIGA はこのユーザインターフェイスが非常に設計不全の「コンテキスト依存症候群」に陥っていて、まず第一に、「今回は中断」は「録画開始しないことには」選べない。予め番組情報で「今回はいらんなぁ」と一週間前から既に思っていたとしても、「番組管理」のインターフェイスは「予約を削除する」か、「ずっと毎週予約を中断する」の二択しかない。つまり「今回だけが特別で、次回以降はやっぱりそのまんま毎週録画よろしく」が出来ない。繰り返すがこのニーズに耐えるのは「録画開始してからの「実行中止」」だけである。
すなわち DIGA に関してのこれは、「録画開始してしまったかそうでないか」というコンテキストに過度に依存し過ぎている。(細かくはほかにもあるが、今思い出せないし、まぁいい。)
当たり前だが「お前、自分で使ってないだろ」が多くの場合そうしたバカなユーザインターフェイスを生むわけだが、その延長戦上で「ちゃんと考えたユースケースの想定そのものがぶっ壊れている」場合には、これは目も当てられないほど使いにくいものになることがある。
以前「line-by-line のビジュアル Merge ツールが欲しい」の中で、SourceGear DiffMerge のヒドさについて書いた。これがまさしくそうで、「思い込みに基くユースケース分析」(要するに「誤ったユースケース分析」)が、このツールの価値を著しく貶めているわけである。なんてのかなぁ、このタイプのって、「考え方が非常に幼稚」な感じがするんだよな。
「ホットキーが使いやすいに決まっている!」という幼稚な考え方については、以前まさに書いた。これは結局のところ何かといえば、「あんたのアプリケーションのユースケースしか分析しとらんやろ」てことだ。
「パーソナルコンピュータ」という「マルチタスク」の意味を理解してない、ということである。家電と全く同じに考えたらダメだ、という言い方でもいい。要するに「自分が作っているデバイスの性質」をちゃんと理解して設計しないと、こういう「自分だけよければいい」という設計をしてしまうことになる。いいだろうか、「PC はあんただけのものではない」という非常に当たり前のことなのだ。
SourceGear DiffMerge への文句として書いたもう一つのこと。それは、「異常時であれ正常時であれ」何かの報告が「うるさい」というタイプのユーザインターフェイスである。
「処理を完了しました!」という「モーダルダイアログ」がユーザの操作をいちいち邪魔をする。「問題が発生しました!」と問題の数ぶんだけ騒ぎ立て、ユーザの操作をいちいち邪魔をする。
こうした「凄まじい」ヤツは、思い出してみて欲しいが、「10年くらい前まではかなり多かった」。ちょっと前に単体テストの話で「本質が埋もれるのは本末顛倒、必要なときだけ騒ぐべし」という話を書いたが、それと実は完全に同じ話で、「いつどんな注意を引くべきなのか」ということにきちんと意識的に作らないと「狼少年ソフトウェア」を作ってしまうことになるわけだが、どういうわけだかこのことに考えが至らないアプリケーションは「非常に多かった」し、いや、むしろこれがちゃんとしたアプリケーションを見つける方が稀有だったとすら言ってよい。
ヘンな話だが商用製品ほどこれが多く、思い出すところでは「一太郎」がそうだ。「読み取り専用です! 開きますか?」。バカなのか? それは「編集出来ないモード」で「開ければ良い」だけだ。「印刷」という行為をしたいのに「読み取り専用です! 印刷しますか?」。印刷したいという行為と読み取り専用は何の関係があるのか? 今だと Adobe 製品がそうだろう。「読み上げ」のダイアログが必ず立ち上がり、いちいち確認を求めてくる。すなわち「読み上げ出来ないなんて、なんて日だ!」という、ただ普通に「目で読みたい」ユーザには一切関心のないことを「世界が破滅します!」と都度大騒ぎするわけである。Google Chrome の「翻訳」もそうだろう。「英語です! どうせ読めないでしょ、翻訳ボタンはこちら!!!!!!!!!!!!!」と毎度うるさい。
OSS の方がマシだ、というのは必ずしも真ではないけれど、たぶん「有償ユーザサポート」というフィルターがかかって真の文句を汲み取りにくい企業アプリケーションと、「いつでも文句大歓迎」として issue tracker を「パブリックに」運用する差は出やすいのかもしれない。
なんであれこうした「ヒド過ぎる」ものは、最近は確かに減ったという実感はあるものの、というかだからこそ、「今でもこういう化石が現在進行形で実在している」ということには、呆れるよりも先に「感心する」。「どこみてんのよ」と、古い一発ギャグでも叫びたくなる。
もう一つが、「コモンコントロール万能主義症候群」である。
「いつでも誰もが必要となることが知られていて、なおかつユーザの便宜が増す」というものが「コモンコントロール」として整備されていくわけだが、「使えば必ず使いやすくなる」のとは違うことなんか、「当たり前のこと」である。
まずは「カレンダコントロール」について言っておきたい。どうにも「month picker」がないことからもわかることなのだが、「そのものズバリの日付」を特定しなければならないこの「date picker」のインターフェイスが「そうなので」というだけの理由でカレンダコントロールが採用されてしまうことが多過ぎる。実際たとえアプリケーションのニーズが「月だけ指定させる」ので十分でも、なぜかその考えは却下され、「なんとかカレンダコントロールが使えるように」設計をしてしまいがちらしい。なんでだよ、バカなの?
つまりアプリケーションとそれが実現する「業務」、そうだな、たとえば「タイムカード管理」を考えてみたらいい。この「タイムカードの内容を見る業務」では、もちろん「ある特定の日付からある特定の日付までをみたい」という操作をさせるために「カレンダコントロール」を使うことはあるだろう。けれども、最も頻出のニーズ「今月と先月」をみたい、というユーザの操作をさせるのに、「カレンダコントロールで範囲指定すれば良くね?」というのは、これはあまりに怠慢過ぎる。実際そういうのを使ってみればわかるが、「まずは開始の 1日を選んで…、そして終了の31日も選んで、をっし、ポチっとな」と、たとえ毎回行う操作がこの定型操作であろうが、必ず「使いやすいカレンダコントロール」を経由しなければならないことになり、不便だ。なぜ「今月」「今月までの3ヶ月」という操作をダイレクトに許すように設計出来ないのか?
ワタシが知るなかで最もヒドい「コモンコントロール万能主義症候群」は、多分ダントツで TeraTerm に付属の collector である。
これはすなわち、「今ハヤリで、ブラウザでお馴染み「タブコントロール」が、使いにくいはずがない!」という思い込みだ。「太郎さんも花子さんも言ってる症候群」とでもいうか、「ブラウザが使ってるんだからみんな好きに決まってるでしょ、それ以外の考え方はありえないしあっても許さない」症候群だ。
これもホットキーの話にも通ずるのだが、「PC を皆がどう使いたがっているのか」の想像があまりにも欠けている。つまり「マルチウィンドウ」「マルチタスク」であることの恩恵を受けたい PC ユーザがほとんどなのだ、ということである。というか collector のようなバカなまねをされるまでは、あまりにこのことを当たり前に享受しているので、気付かないのが普通。
どういうことか? つまり、「セッション A は目一杯大きく使いたい」「セッション B は唯のログの tail なので、縦幅を目一杯小さくしてちょこっと見えてればいい」というような「当たり前の」ニーズは、これは「マルチウィンドウの PC」だからこそ享受できるわけである。Windows なら Windows そのもの、だし、Unix なら「ウィンドウマネージャそのもの」が持っている「使いやすさ」である。そしてウィンドウの切り替えは「ALT + TAB」で何らストレスを感じることなく行える。あるいは Windows なら「Win + TAB」が「かっちょいい」。
つまり collector の発想は「タブで切り替えられると使いやすいに決まっている」という思い込みが、こうした「当たり前過ぎる」こと全てを台無しにしているのである。
今のは知らないが collector を「無効にする」方法がなかったからこそここまで言っている。ワタシが初めてこれをみて怒りを覚えたときは、これはそれこそタスクマネージャで kill するしか無効に出来なかった。さすがに今のは文句が出て直ってたりする?
あとはあれだろうか。「デフォルトの選び方を間違えている」ケースでは特にストレスを感じるだろうか。
なんというか、「自分の方が少数派だろう」と自覚しているケースがデフォルトの考えと合致してないのは別になんとも思わないのだが、「そもそもあんたの好みだけ押し付けようとしてないか?」と感じるタイプのものが、結構多いと思う。
ワタシが一番感じたのはまさに「秀丸」だったのだが、とにかくワタシの好みと「全部逆」で困った。テキスト折り返しの戦略や、「警告などの扱い」。なんかね、「思い込みに溢れ、ユーザの感想には興味がなさそう」な感じがして、とにかくワタシはまったくいい印象を持てなかった。ただこれは20年前の感想。今どうかは知らない。(し、興味もない。)
それと、「デフォルト」というのは原則として「より安全な方」へ振る、というのが常識、ということはあらゆるエンジニアに知っておいて欲しい。「これを使って欲しい」という基準でデフォルトを選んではいけない。
思いつくところでは今はこんなところだが、日常的に色々あるはずなので、探せばもっとあるはず。
そして、「ユーザインターフェイス設計ガイド」みたいなのは、そのうちちゃんと探して評価してみたいなぁと思う。
ただ、もちろん「ものには優先度があ」り、その優先度が「開発コスト」にかかることが多いので、実際は「全部がパーフェクトであれ」なんてことはワタシは考えないし、実際自分が開発するものだって、「パーフェクトには出来ない」と感じながら作ってる。だからその「優先度」そのものの話、なんだよね。だいたい今文句を言ってきたようなものたちって、「そこ頑張ってもしょうがないじゃん」というような「クール過ぎてステキ過ぎていらないもの」というのがたんまり盛り込まれてるのが普通なんだから。
なんで唐突にこれを書いた? うん、最初の例の WordPress のメニューでちょっと火が付いてしまっただけだよ。あまりに鬱陶しく感じてな、さっき。それだけじゃなくて、「なってからじゃ手遅れ、「マウスクリックでウィンドウがアクティブにならない」からの復帰手段」で書いた事象が再現しちゃってたのも余計に怒り倍増しちゃってさ。
そのうちもっとちゃんとしたの書きたいなぁ。
すぐさま追記:
探せばある、かなりある、の証明。すぐに一つ思い出したわ。
「人間工学」にも通じる話かもしれないが、「スクロール」「ページング」、つまり、「目線」や「導線」に対する意識が欠けているもの、これは「とにかく使いにくい」。
「横スクロール」が、なぜ当たり前のように許容され、「特に悪とされていない」のかが、ワタシには理解出来ない。
そもそも「横書きのテキスト」は、左上から右下に向けて読むもの、なのはいいね? で、「人間が一度に目に取り込んで苦痛を感じない量」というものには限界がある、ことについても、異論ある? ないよね。というか「ディスプレイ」というサイズ制限があるわけだが。
そして、「スクロール」というのは、まぁ「スクロールゲーム」を思い出してもらってもいいし、原義の「巻き物」を思い出すんでもいいが、要するに「現代の書籍のページングとは異なる方法で、視野を区切る」手段である。
つまり「ページングとスクロール」というものは、元々「同じ問題「視野の限定」に対する異なるソリューション」を提供するものである。だから根本的に「共存していることそのものが奇異だ」という感覚が必要である。
そして「「横スクロール」が、なぜ当たり前のように許容され、「特に悪とされていない」のか」の理由なんぞ、ワタシは既に知っている。それは、「スクロールとは、見えない領域を隠しておいてもいいために使うものだ」と考えてしまうからである。つまり「目線」「導線」のことなど全く考慮が及ばずに、「隠れた領域はスクロールバーを使えば見えます」という「措置目線」で考えてしまうわけだ。
「左上から右下に向けて読む」という行為の最中に、「この特定の領域だけ読めないから巻物を横にめくる」というような操作が、そもそも「使いやすいわけがない」のだが、これは例えば「本物の紙媒体の書籍」にもしそんなものがあったなら、ということを想像してみればわかる。つまり、「普通の横書き、左開きの書籍を左のページから順に読み進めて行く」という行為の途中に、「ここだけ横の巻物になっているのでまわして読んで下さい」と言われるとして…? 「斬新だ」てことにはなるだろうが、「それが全部」そうなら、誰もそんなタイプの書籍、喜ばない。(逆でも同じだ。「巻き物」を右方向に手繰りながら読んでいく途中で唐突に「ここは左上から右下に、下に向かってめくって下さい」なんて、まぁ技術的にも無理だが、頑張って実現したって「使いやすいはずがない」。)
こういうのも「自分で使ってみる」ということをしないからこんなことになるんじゃないのか、とワタシは思うんだよね。だいたいのことは「自分で使ってストレスを感じてみれば」すぐにわかることだから。たとえワタシのように「分析的に評価」まで至らないとしても、「なんか使いにくく感じるんだけど、なんでだ?」くらいはすぐにわかるんじゃないのかなぁ、と思うんだよなぁ。(まぁ「技術が追いついてない」ことは多々あるんだけれど、そればっかでもないと思う。ほんとに単に共感力不足のもの、多いと思う。)