リセットとキャンセルボタン

ウェブの入力フォームのユーザビリティは、リセットボタンを取り除くことで向上するはずだ。同様に、キャンセルボタンもウェブ上ではほとんど価値がない。

どんな状況からも脱出できるように「非常出口」を用意し、ユーザの主導権と自由を守ろうというのが、操作デザインにおける基本的発見のひとつである。アンドゥ(取り消し:元に戻す)は、ユーザビリティにおける真の偉大な進歩だった。

基本法則には、アンドゥできるようにせよ、とある。しかし、どのようにやればいいのか、についての指示はない。ユーザーインタフェースのタイプに合わせた具体的な法則が必要とされている。

  • ウィンドウを基本とするGUIアプリケーションでは、キャンセルボタンを用意して、どんなダイアログボックスでも、そこでユーザーが行ったあらゆる変更を無視して閉じられるようにしておくのが標準だ。あれこれ試してみながら学習するには、とても都合のよい方法である。いったん間違ったコマンドを起動したら、もう抜け道のなかった昔のシステムと比べてみればいい。
  • 編集用システムでは、アンドゥコマンドを用意して、ユーザーが直近に行った変更を取り消して、文書を元の状態に戻せるようにしておくのが普通である。中には、多段階のアンドゥやリドゥ(やり直し)をサポートしている場合もある。これはとても便利だが、混乱の元にもなる。

リセット、およびキャンセルボタンは、これらの機能をウェブ上で再現しようという試みである。が、望まない状態から抜け出そうというとき、ユーザーは、かわりにバック(戻る)ボタンを用いるのが普通だ。

リセット: 使うべからず

実質上すべてのリセットボタンを取り除くことで、ウェブはずいぶんと快適な場所になるだろう。このボタンがユーザーの役に立ったためしはほとんどない。そればかりか、彼らを傷つけることもまれではない。

リセットは、ユーザーがウェブのフォーム上に入力したものを帳消しにしてしまう。でも、そんなことをやりたい人がどこにいる?ウェブはページ間を頻繁に移動するのが特徴で、ユーザーが同じフォームに出会うことはめったにない。だから、ウェブフォームにユーザーが出会うとき、それはたいていいつも未記入なのだ。同一セッション中に再度同じフォームを訪れる場合でさえ、全部消して一からやりなおすよりは、古いデータを編集した方が早い。

リセットボタンがユーザーを傷つける場合は3つある。

  • リセットがもたらす最悪の問題は、ユーザーがサブミット(送信)と間違ってこれをクリックしてしまう場合だ。ドッカン。今までの苦労がすべて水の泡!
  • フォームの下にボタンが2つあると、インタフェースがゴチャゴチャして、ユーザーがとるべき次のステップがわかりにくくなる。必要のないボタンを読み取り、2つのうちどちらが正しいボタンかを見分けるために、ちょっとした無駄な時間が費やされることになる。
  • もしフォームに入力したデータを本当に消去したいとユーザーが考えたとしても、それ専用のボタンは邪魔なだけだ。余計なボタンが存在すると、選択肢が増えてしまうからだ。
    • 間違ったフィールドを編集して、古いテキストを新しいテキストに置き換える
    • リセットをクリックしてまっさらになったフィールドに、新しいテキストを書き込む

    余計な選択肢は、余計な思考を強いる。いくら理想的な対話技法を用いて時間を節約しても、ユーザーに少しでも頭を使わせてしまったら台無しだ。いつも利用されるものひとつだけに対話技法を絞るといった工夫で節約できる時間を上回ってしまう。選択可能な2つの対話手段のうち、いずれをとるか決定するには最低でも1秒、時には2秒かかる。だから、通常は選択肢を与えないほうがよいのだ。(1秒なんて、たいしたことはないと思うかもしれない。だが、全世界で失われる生産性に換算すれば、毎年約1億ドルに相当する)

すべてのフォーム入力はアンドゥできるようにしよう

リセットボタンをなくすには、その代わりになる脱出口を用意して、間違ったフォーム入力をユーザーが取り消せるようにする必要が出てくる。テキストフィールドやチェックボックスなら、ユーザーはいつでも入力を取り消して元の状態に戻ることができる。

悪いことに、ウェブフォームの中には、ラジオボタンやプルダウンメニューを標準的でないやり方で使って、中間的な選択を許さないものがある。あらかじめ何も選択されていないラジオボタンを用いるというのは、ウェブでは古典的なデザインミスだ。既定値を選択した状態のラジオボタンをはっきりと入れておくべきだ。

例外:くりかえしのフォーム入力にはリセットを

以下の条件に両方とも該当する場合は、リセットも役に立つだろう:

  • そのフォームは、同じユーザーが繰り返し埋める
  • 入力するデータは、毎回かなり異なっている

ユーザーがフォームを繰り返し利用するとしても、毎回入力するデータがほとんど同じ場合、リセットボタンはやはり必要ない。この場合、消去してゼロからやり直すよりは、古いデータを編集した方がユーザーは楽だからだ。

キャンセル: 利用は控えめに

ウェブはアプリケーション環境ではないから、ダイアログボックスはないのが普通だ。むしろ、ウェブはナビゲーション環境であって、そこでは、ユーザーは情報ページの間を動き回っている。ユーザーが主にとっている行動はハイパーテキストナビゲーションなので、好ましくない状況から抜け出すのにバックボタンを使うことが身についてしまっている。望まないページが出てきたら、ユーザーはいつでもバックボタンの上でマウスを叩くのだ。

戻るというのはウェブ上で強い習慣となっているので、通常、あらためてキャンセルボタンを設けるまでもない。ユーザーの要求に対して期待外のものが出てきたら、まさにバックボタンの出番だ。

ユーザーが本当に取り消したい何かがあるようなら、キャンセルボタンを設けよう。はっきりとキャンセルする手段を用意すれば、ただたんにその場を立ち去るだけでは得られない、より大きな安心感を得ることができるだろう。

キャンセルは、もっぱら多段階のダイアログで有効な手段であり、そこではユーザーは何らかの行動をとりながらページを進んでくるのである。このような場合、バックボタンを押しても、一連の行動を取り消したことにはならない。むしろ、ユーザーがキャンセルボタンを押すことができれば、その方がいいだろう。

もちろん、キャンセルを用意するにしても、これをユーザーがクリックしてくれると期待してばかりもいられない。ユーザーがバックボタンを使ってどこかへ行ってしまい、多段階のダイアログが途中で放棄される場合のことを考慮して、バックエンドのロジックを組み立てておかなくてはならない。ウェブブラウザの中で高度なアプリケーションを実現しようという試みに私があまり賛成できないのは、こういった余計な複雑さがからむせいでもある。

ショッピングカートにおける破棄ボタン

ショッピングカートには、商品を取り除くための専用ボタンが必要だ。注文個数をゼロに設定すれば購入をキャンセルできるなんていっても、ユーザーは納得してくれそうにない。(とはいえ、この手法もサポートしておくべきだ。自分から使いたいと思わない限り、ユーザーの邪魔になるわけではないのだから)

解説: キャンセルが必要な場合

Lisa Padolからの質問だ:

キャンセルとリセットボタンの話というのは、ストップ(例えば「ページの読み込みをストップする」というような)、あるいはリセット/再読み込みボタンの話とは違うんですよね?

私は、キャンセルボタンの存在は理にかなっているだけでなく、欠かせないものだと思います。ファイルのダウンロードをしている時なんかには。

彼女の仮定はどちらも正しい。ブラウザのストップボタンは、ダイアログに対するユーザーのコントロールを補助するテクニックとしては、非常によい例だ。同様のことが、ファイル転送や、その他、数秒の範囲では収まらないアクションを中止する際にも当てはまる。どんなアプレット、あるいは、その他のデザイン要素であっても、それが時間のかかるものであるなら、デザイナーはこのような機能を組み込んでおかなくてはならない。