モーダルダイアログが本当に必要なのはいつですか?。モーダルダイアログボックスが悪なのはなぜですか?とにかく人が読まないからなのか?それらはしばしばあまりにも不十分に実装されているので?他に何かありますか?
11 に答える
これまでの回答の約半分は、モーダルダイアログではなく、確認ダイアログの欠陥に対処しています。確認ダイアログの大部分はモーダルですが、これは2つの用語が同義であることを意味するものではありません。
モーダルダイアログは、プログラムを特定のモードにし、開いている間はそのモードに対応しないことを実行できないようにするダイアログです。最も一般的な実装では、これは他のウィンドウにアクセスできないことを意味します。
これは悪です。
名簿の申請を考えてみましょう。名簿に既存の人がいて、その人のルームメイトを追加したいとします。
- [ユーザーの追加]ダイアログがモーダルでない場合は、古いレコードと新しいレコードの間を行ったり来たりして、データをコピーして貼り付けることができます。
- 「人の追加」ダイアログがモーダルの場合、「追加」ダイアログが開いている間は、古いレコードに対して何もできません。「追加」を選択する前にコピーするものを選択できますが、1つだけです。他のすべては手動で再入力する必要があります。
まれに、ユーザーがタスクを完了するまでそのタスクから逸脱することを許可せずに、本当に1つのピースで実行する必要がある何かに遭遇することがあります。このような場合は、モーダルダイアログが適しています。 しかし、これらのケースは非常にまれです! これは基本的に、この質問で参照されている他のスレッドのポイントです。
人々はそれらを読まない、そしてそれは良いことだ。あなたは人々にあなたのUIの周りに習慣を形成させたいのですが、ポップアップで重要な選択をすることはユーザーをOKにするだけです。
それらはユーザーを妨害し、ユーザーが他のことをするのを防ぎます。
メインウィンドウから何かをコピーして貼り付けたい場合はどうなりますか?モーダルダイアログでメッセージをコピーしたい場合はどうなりますか?気にしない場合はどうなりますか。
IEの[検索]ダイアログとFirefoxを比較するだけです
IEの「このパスワードを覚えておいてほしいですか?」を比較してください。Firefoxへ
最高のUIはモーダルです。最悪です。
モーダルUIは、ダイアログボックス、ツールバーボタン、またはテキストプロンプトのいずれから構築されているかに関係なく、各モードがそれに移行するユーザーの期待に一致する場合にのみ望ましいものです。プログラムが予期せずモードに移行した場合...またはモードでユーザーがすぐに利用できない情報を所有している必要がある場合...それにより、ユーザーは以前のモードに戻るか、推測するのに苦労します。潜在的に望ましくない結果を伴う適切な行動。
非モーダルUIは、ツールの完全なセットです。手元の仕事に関連するものもあれば、そうでないものもあります。ユーザーは、正しいツールを選択し、それらを正しい方法で適用するための十分なスキルを持っている必要があります。したがって、非モーダルUIは、優れたモーダルUI(すでに手元にある現在のタスクに適したツール)ほど最適ではありませんが、悪いモーダルUI(あなたの不注意な指にぶつかる現在のタスク)。
優れたモーダルUIの設計は、重要なアプリケーション、特にさまざまなユーザーがさらに幅広い目的で使用することを目的とした汎用プログラムにとって、非常に困難な作業になる可能性があります。メニューシステムとダイアログボックスはギャップを埋めようとし、より大きな非モーダルアプリケーションで小さなタスク固有のモーダルセクションを可能にします。ただし、どちらも特にうまくスケーリングすることはできず、誤用や乱用により評判が悪くなり、怠惰なプログラマーの最初の避難所と見なされることがよくあります。特にダイアログボックスは、ユーザーにアプリケーションの使用方法に関するプログラマー(またはデザイナー)のアイデアを強制したり、ユーザーの名前のとおりの目標ではなく、ユーザーでの難しい設計上の決定やトリッキーなエラー処理を回避したりする手段としてよく使用されます。コミュニケーション。
実際、Webアプリケーションの台頭により、多くのフォーラム、ニュースグループ、およびこのようなQ&Aサイトでそのような傾向が表面化しています。プログラマーは、プログラムが必要なときではなく、必要なときにユーザーに入力を求める超線形ロジックの作成に慣れているためです。ユーザーが利用できる...ユーザーが非線形にナビゲートできるシステムに強制され、この自由を制限しようとする試みは、必要な悪ではなく、破壊される趣のある迷惑と見なす可能性があります。これらの貧弱なコーダーの悲惨な嘆きは、この粗雑なモーダルな振る舞いを非モーダルなシステムに強制しようとする彼らの試みが彼らの周りで崩壊するにつれて、ネットの周りに響き渡ります。残酷な「対話」で長い間苦しんできた私たちにとって、それは確かに素敵な曲です。
私の答えを読む前に、次のメッセージ全体を注意深く読む必要があります。すべてのプロセス、サブプロセス、タスク、およびスレッドは、回答が出るまで無期限に中断されます。そして、メッセージを完全に理解し、場合によってはいくつかの法的な事項に同意し、これらすべての影響をすべて理解したら、次に進むことができます。
コンシューマースタイルのアプリケーションでは、それらは多かれ少なかれ役に立たない。ユーザーはそれらを読んでおらず、それらを却下することを学び、それらを読んだときに、通常は混乱してしまいます。はい/いいえ/キャンセルダイアログはまったく怠惰なUIデザインだと思います。ユーザーはあまり読む必要がないため、「ボタンはボタンの機能を示す」ダイアログの方が少し優れています。
つまり、データクリティカルなイントラネット/「エンタープライズ」アプリケーションでは、破壊的なアクションを確認したり、許可されているが推奨されていない非標準のワークフローを健全性チェックしたりするために、多かれ少なかれ必要です。
ですから、それらが概念的に「悪」であるとは思いませんが、多くの場合、悪いUIデザインの結果です。
それらは、ユーザーがソフトウェアのアクションを指示できるはずであるという基本原則に違反しているため、悪です。モーダルダイアログ(一般に邪悪な形式のダイアログボックス)は、ユーザーを1つのアクションのみに制限します。
一部の回答は、ユーザーの確認などを求めるポップアップであると誤解しているようです。これは、アプリやコンピューター全体を拘束することなく実現できます。人々が反対するのはこの行動です。
一部の環境では、モーダルダイアログは、単一のアプリケーション(またはそれ以下)のコンテキストでのみユーザーを制約します。本当に悪いモーダルダイアログは、ユーザーがオペレーティングシステム全体(たとえば、Windows)で他のことを行うのを妨げます。
私がそれらを好きではない理由の1つは、情報をシリアル(一度に1ロットの情報)で表示し、パラレル(一度に表示する必要のあるすべての情報)ではなく、ユーザーが選択できるようにするためです。彼らが見たいものは、シリアルの場合と同じように、オプションを選択するように強制しているところです。
さらに、ユーザーの制御フローを壊す(たとえば、作業中のオブジェクトからフォーカスを盗む)という事実もありますが、これは私が本当にやりたくないことです。したがって、これにより、ユーザーは[OK]をクリックするだけで、元の状態に戻り、ダイアログボックスの情報を無視できます。
場合によっては、まだそれらが必要であることに注意してください。
ウィキペディアの記事には、苦情の要約があります。
これを最初にどこで見たのかは覚えていませんが、モーダルダイアログへのより良いアプローチは、多くの場合、「元に戻す」機能を簡単に見つけて使用できるようにすることです。Windowsエクスプローラーは、ファイルを削除するときに実際には両方を実行します。確認を求められ(モーダルダイアログ)、ファイルを削除した直後に、[編集]メニューに[削除を元に戻す]オプションがあります。確かに、ごみ箱にアクセスするための簡単な方法ですが、この場合、Microsoftはダイアログを廃止することができたはずです。
重要なのは、ダイアログなしで少し考えて、おそらく少し余分なコードを追加することでできることがよくありますが、怠惰な、またはおそらくもっと寛大な、時間に制約のある開発者にとっては簡単すぎるオプションです。
そうは言っても、本当にダイアログが必要な場合があります。一般的な印刷ダイアログのすべてのオプションについて考えてみてください。どのプリンター?すべてのページ、またはほんの数ページ?何部?ダイアログボックスなしでそれをどのように行うかわかりません...
誰もそれらを読まないので、プログラム フローが中断されます。多くの場合、エラー通知として使用される場合、それらはプログラム障害の前兆です。ユーザーが何が起こっているのかを理解する頃には、メッセージは消えており、できる限りメッセージを思い出すか、考え出す必要があります。
個人的には、それがどのように行われるかに完全に依存していると思います。
ターゲットディレクトリにすべてのファイルが存在する10個のファイルをコピーしてみてください。Windowsエクスプローラーを使用してコピーしてください。
このような操作では、ファイルごとに1つのモーダルダイアログが本当に正しい答えです。あなたが「すべてはい」を持っていることは知っていますが、ループシステム全体は別の方法で構築されるべきでした。存在するすべてのファイルを1つの大きなリストにまとめ、「これらのファイルで何をしたいのか」と尋ねたら、[OK]をクリックして操作を再開する前に、リストの下の各ファイルについて何をするかを決めさせてください。 。
また、多くの場合、ダイアログボックスは通常のワークフローを中断します。
そして、はい、人々はダイアログボックスを読みません。したがって、ダイアログボックスを使用する必要がある場合の黄金のヒントは、それを言い換えることです。
「データベース内のこの行を削除しますか?」の代わりに、「データベース内のこの行を削除しませんか?」と尋ねるように表現してみてください(ただし、これは正しく表現されていません)。このように、「はい」を押すと、それをやりたいだけのユーザーからの一般的な応答であり、何もしないことになります。