web-dev-qa-db-ja.com

禁止されているアクションを防止するか、エラー/説明メッセージを表示する方が良いですか?

複数の例があるので、質問に焦点を当てるために特定の例を選びます。

ユーザーが特定の特性(または権限)を持つことができるとしましょう:
管理、仮想、外部、財務など.

さらに、ユーザーには、プレミアム、レギュラー、リミテッドなど、さまざまなライセンスがあります。

あなたはおそらくこれがどこに向かっているのかを見ることができます:
制限付きのライセンスを持つユーザーは、管理者になることも、財務上の権限を持つこともできないとします。

可能性:

  • 管理者は、ザックのプロファイルに行き、ザックが彼に彼に経済的な許可を与えることを許可できないことを確認しよう。
    問題は、その理由が管理者に明確ではないことです(ライセンス情報と権限が同じ場所に表示されず、たとえ表示されたとしても、管理者は、 「制限付きユーザーには金銭的許可がない」)
  • 管理者は、すべての権限(チェックボックスを介して実装されていると想定)が有効であり、クリックしたときにのみ、操作が拒否された理由を通知するエラーメッセージが表示されます。
    これで理由は明らかですが、管理者はそれを見つけるためにクリックを「無駄」にする必要がありました。

行動を防止し、その理由を説明する方法はありますか?ツールチップ付きの無効化されたコントロールは機能しますか?より良いアイデアはありますか?

他の例を簡単に説明すると、インタラクティブなグラフがあり、グラフ上のほとんどのポイントを移動できますが、一部は静止している必要があります。それらを移動して移動できないことを示すために(理由を説明せずに)別の方法で描画することも、ユーザーにドラッグしてからエラーメッセージを表示させることもできます。

27
Dan Barak

アプリケーションによっては、ユーザーがアクセスできないページの部分を表示しないことがよくあります。ユーザーが他のユーザーの権限を変更しているようですので、この方法は機能しない可能性があります。無効な入力要素を表示するときは常にエラーメッセージを表示することをお勧めします。ユーザーが実行できると期待するアクションを実行できない場合、ユーザーは不満を感じることがあります。それが単に無効にされている場合、彼らはおそらく理由を理解せず、プログラムでそれを削除するだけです。同様に、メッセージができるだけシンプルで要点を明確にする必要があります。多くの場合、長いエラーメッセージは無視されます。

12
LoganGoesPlaces

ユーザーがアクセスできない機能のUIの一部を完全に非表示にする前に、次のことを考慮してください。

  1. ユーザーはその機能について知っていますか?
  2. 彼らはそれのために狩りに多くの時間を費やしますか?
  3. ツールチップやその他のインジケーターと一緒に、ある種の「無効」な状態でそれを保持して、なぜそれが利用できないのかを学習できるようにした方がよいでしょうか?

簡単な例を示します。アプリケーションに印刷するオプションが含まれているとします。利用できるプリンターがない場合、印刷メニューコマンドを完全に非表示にする必要がありますか?ユーザーがすべてのメニューを探し回って、最後にテクニカルサポートチームに連絡して「print」コマンドを見つけようとすると、混乱が生じて時間の無駄になりますか?テクニカルサポートチームは、このユーザーに「印刷」コマンドが表示されないことを理解していますか?たとえば、プリンターが接続されているが、電力を節約するために電源がオフになっている場合、意図しない副作用が発生しますか?

原則として、多くの場合、特にオプションが利用可能な場合は特に、無効にされたオプションまたは有効にされたオプションによってユーザーに最善のサービスが提供され、オプションがない理由を説明するエラーメッセージが表示されると思います現在利用可能です。

35
Joel Spolsky

私には2つの異なるアプローチがあります。

securityのためにアクションが無効になっている場合、可能であれば実際に削除しようとします。メニュー項目またはほとんどのツールバーボタンで簡単。

より安価なバージョンのソフトウェアを使用しているためにアクションが無効になっている場合は、そのままにして無効にします。これにより、ユーザーは「もっと支払えばこれができる」ことをユーザーに知らせますが、それが削除された場合、何が欠けているのかわかりません。 「ライセンスが原因でこれを行うことはできません」ポップアップは、ユーザーが実際にアクションを実行することなくアクションを実行できるかどうかを判断できないため、UIが悪いと思います。

8
shemnon

別のアプローチは、アクションをまったく表示しないことです。

Stack Exchangeはこの良い例です。他のユーザーの投稿に対する「編集」権限がない場合、「編集」リンクが表示されませんまったく。つまり、私はそれをクリックしようとせず、なぜそれが機能しないのか疑問に思っています。

これはすべての状況で機能するわけではありませんが、例では、「admin」および「financial」オプション/リンクは、限られたユーザーに対しては表示されません-それらのユーザーの管理画面でさえ。ユーザーが「通常」または「プレミアム」ユーザーに変更された場合、それらのオプション/リンクが表示されます。

次に、ユーザーのタイプを半ば目立つ場所に表示して、管理者が特定のオプション/リンクが表示されない理由を思い出せるようにすることを検討してください。

7
ChrisF

他の回答で述べたように、ユーザーがシステム内でアクションを実行する権限を持っていない場合(編集/管理特権がない場合など)、アクションはまったく表示されません。

アプリケーションの状態が原因でアクションが無効になっている場合(読み取り専用ファイルを編集できない、テキストが選択されていない場合はコピー/貼り付けできない、ユーザーにいくつかの機能がないソフトウェアの試用版があるなど)アクションはdisplayedである必要があると考え、アクションを現在実行できないことを視覚的に示します。 「無効」とは言っていないことに注意してください。ユーザーtriesそのアクションを実行した場合、ユーザーはそのアクションが実行できない理由を見つけることができるはずです。このようにして、ユーザーはアクションが無効になっていることを確認できますが、理由を説明するメッセージを受け取ることもできます。

ユーザーが機能のないアプリの試用版/ライセンス不足バージョンを持っている場合は注意が必要です。たとえば、支払いを行わない限りCDを取り込めないISO読み取り/書き込みアプリがある場合は、「CDを取り込める」オプションを表示しても、ユーザーが実行できないようにすることができます。しかし、アプリケーションにそれらのハイエンドバージョン(たとえば、ビジュアルスタジオ)の機能に相当するスイート全体が含まれている場合、それらのすべてを表示することはできますが、ユーザーに不満を与える可能性があります。私がIDEを開いて、データベース、ネットワーキング、統合UML、テスト、プロファイリングなどのスイートを確認したくない。

6
Carson Myers

私の経験則では、許可のためにユーザーがアクションを使用できない場合、そのアクションは表示されません。一時的なコンテキストのためにアクションが使用できない場合(この「保存」ボタンは、ユーザーが保存するものを入力するまで意味がありません)、無効になります。

「権限」には、「管理者ユーザーと通常のユーザー」と「プレミアムライセンスと格安ライセンス」の両方が含まれます。使用できないUI要素は乱雑です-追加機能を宣伝する方法ではありません。

多くの回答がこれを正しく理解しているように見えますが、ニールセンのヒューリスティックスの1つで正確にこれを指し示して、すべてをまとめたいと思っています。それは述べています:

エラーの防止優れたエラーメッセージよりも優れているのは、最初から問題が発生しないようにする注意深い設計です。エラーが発生しやすい状態を解消するか、それらを確認して、アクションを実行する前に確認オプションをユーザーに提示します。

出典: http://www.useit.com/papers/heuristic/heuristic_list.html

4
Nacho

私は本当に好きです shemnon's 答え。私は彼の2番目のケースを拡張して、ignの参照されたニールセンの戒律を適用します。ユーザーが安価なライセンスを持っている場合は、オプションを無効にし、選択オブジェクトをアイコンで置き換えて、オプションの無効な状態をさらにわかりやすくします。

何かのようなもの

  • Oオプション1
  • Oオプション2
  • alt text オプション3
  • Oオプション4

この想定製品はまだ開発中であるため、同じページに少なくともユーザーのライセンスレベルの説明も含めます。このようにして、管理者は、ユーザーのライセンスレベルと同時に、そのライセンスの影響を受けるシステム変数を確認します。

ソフトウェアの美しさは、あなたがしなければならないすべては、情報を呼び出すことです。

編集:さらに、ロール中心のアクセス許可スキームを採用することもできます。この場合、アクセス許可は個々のユーザーではなくロールに割り当てることができます。これにより、個々のユーザー権限を細かく管理する必要があるため、多くのオーバーヘッドが軽減されます。

  1. 管理者が役割編集画面を開きます。
  2. 管理者は、役割が適用される最も低いライセンスのラジオボタンを選択する場合があります。
  3. 選択した役割で使用できない権限は無効になり、「x」が付けられます。
  4. 管理者は残りのアクティブなオプションから権限を選択します。
  5. その後、ユーザー管理画面またはユーザープロファイルで、管理者はライセンスに基づいてユーザーが持つことができる役割のリストを表示し、管理者は1つまたは複数を選択します。
1
Matt

一般的に、私の経験則は次のようになります(そして、私はそれを破る十分な理由が必要です):無効にされたコンポーネントの背後にある理由がコンテキストから流れている場合、または他の理由によりユーザーがそれを理解しやすい場合、次に、ブロッキングが推奨されるソリューションです。そうでなければ、ユーザーはなぜそれがこのようなものであるかを理解しようとしていらいらしているかもしれません。さらに悪いことに、次に遭遇したときにおそらくその理由を思い出せません(彼がそれを理解した場合)。

1
Assimiz

特定の質問に答えるには、ユーザーがクリックする前に制限を理解できるように十分な情報を表示する必要があります。あなたの例では、あなたのアクセス許可を設定するためのコントロールと視覚的に接続されている(近接など)読み取り専用フィールドとして、各ユーザーとそのライセンスを表示する必要があります。または、ライセンスフィールドを許可のラベルと動的に組み合わせることができます(例:「許可(制限付きライセンス):」)。

該当しない権限は、おそらく無効にして有効にせず、非表示にしないでください。混乱を招く価値がある場合は、インラインテキスト、ホバーテキスト/ツールチップ、またはライセンスで許可されていないアクセス許可の理由を説明するリンクを含めます(アクセス許可がリストされている場合、インラインテキストが無効なコントロールに取って代わることがあります。 、制限付きユーザーには金銭的許可はありません」)。

一般的なルールは、ユーザーがUIでコマンドを有効にするために何かできる場合は無効にすることです。無効とは、「このコマンドを実行できるが、今のところはそうではない」という意味です。 「ありのまま」には、現在の選択が含まれます。無効化を使用する場合は常に、関連するコマンドが一部のオブジェクトに対して無効化されている理由をユーザーが理解できるように、明確な表示が必要です。

no wayがある場合は無効にする代わりにメッセージボックスを使用して、ドメインの平均的な知識があると想定して無効にする理由をユーザーに明確にしてください。無効化されたコントロールのツールチップは素晴らしいアイデアですが、すべての場合にそれだけでは十分ではない場合があります。

ユーザーが組織での現在の位置を考慮して、UIで何をしてもコマンドにアクセスできない場合は、非表示を使用します。たとえば、権限が与えられているにもかかわらずユーザーによって承認されていないアクションは表示されません。この場合、無効化ボックスまたはメッセージボックスを使用するのは煩雑でイライラします。ユーザーに関する限り、ユーザーが権限を持たないアクションは自分の仕事ではありません(そうでない場合はアクセス権があります)。したがって、関連付けられたコントロールは単にUIに存在しないはずです。ドキュメントまたは組織の手順マニュアルは、そのようなアクションがどのように実行されるかをユーザーに伝える場合があります(たとえば、「上司があなたのために新しい顧客アカウントを作成する」または「アカウントを編集するには財務権限が必要です。権限をアップグレードするための承認を得るための手順については、管理者に問い合わせてください。 」)。

詳細は Controlling Your Controls にあります。

1

上記のポイントのいくつかは素晴らしいので、繰り返し説明したくありませんが...

この場合、使用可能なすべてのオプションが表示されます。ルールに適用されなかったオプションは無効にしてください(グレー表示)。インターフェースのユーザーが何かがグレー表示されている場合、それは通常、進行中のある種のルールセットには適用できないことを認識することは一般的な知識です。

ツールチップは無効なボタンと完全に一致します。上記のようなライセンスを使用した特別で高度なケースでは、適切なライセンスを持たないユーザーがより高いライセンスを必要とする領域を表示していた場合、ボタンのアートを「今すぐアップグレード!」のようなものに完全に変更します。淡色表示する代わりに、製品の宣伝を改善し、全体の要点をつかむことができます。

管理ユーザーがそれを表示している場合は、財務オプションが灰色で表示され、その理由を説明するツールチップが表示されます。

私はあなたの問題のコンテキストを完全には知りません、関連する製品がないかもしれません。しかし、私が理解したことに基づいて、それはそれに対する私の反応です。

1
user708

Windows UXGuideには、エラーを表示するか無効な入力を防ぐかを決定するのに役立つリソースがかなりあります。具体的には、uiについて以下のステートメントを作成する a section があります。

メッセージの結果としてユーザーがアクションを実行したり、動作を変更したりする可能性が低い場合は、エラーメッセージを表示しないでください。ユーザーが実行できるアクションがない場合、または問題が重大でない場合は、エラーメッセージを抑制します。

また、このディスカッションでは、カールシフレットが ブログ投稿 で「フォートノックスビジネスオブジェクト(yes/no)」とタイトルを付けていることを少し思い出します。ビジネスオブジェクトの入力を許可するかどうかの長所と短所を検討します。無効な状態かどうか、およびこの決定がユーザーの操作にどのように影響するか。

個人的には、ユーザーが無効な入力をしたり、ボタンなどのアクションを実行するコントロールを無効にしたりするのを防ぐ傾向がありますが、複雑なテキスト入力を含む一部のコントロールでは、メッセージボックスほど目立たないインライン警告を表示する傾向がありますが、全体のポイント。

0
jpierson

両方実行:バックエンドとUI

これは実際にはどちらの状況でもありません。他の回答には、使用できないオプションを表示するための適切な理由と、それらを表示しないための適切な理由がリストされています。ただし、どちらにしても、バックエンドで適切に処理する必要があります。ユーザーが提供できる唯一の入力が適切なものであると考えている場合でも、ユーザーの入力と権限を適切に確認する必要があります。

これは、無効にされたコントロール/オプション/入力をユーザーが人工的に有効にできるWebベースのアプリケーションにも当てはまります。 Firebugを使用して、私ができることを制御するアプリの機能を無効にしないでください。また、利用できないはずのオプションを使用しようとする場合は、必ずイベントをログに記録してください。

0
Jeffrey Blake