モーダルダイアログが本当に必要なのはいつですか? の最近の質問について。モーダルダイアログボックスが悪なのはなぜですか?とにかく人々がそれらを読まないからですか?それらはしばしばあまりにも不十分に実装されているので?他に何かありますか?
これまでの回答の約半分は、モーダルダイアログではなく、確認ダイアログの欠陥に対処しています。確認ダイアログの大部分はモーダルですが、これは2つの用語が同義であることを意味するものではありません。
mod alダイアログは、プログラムを特定のmodeにするダイアログであり、開いている間はそのモードに対応しないことはできません。最も一般的な実装では、これは他のウィンドウにアクセスできないことを意味します。
これは悪です。
アドレス帳アプリケーションについて考えてみましょう。アドレス帳に既存の人がいて、そのルームメイトを追加したいとします。
まれに、ユーザーがタスクを完了するまでそのタスクから逸脱することを許可せずに、本当に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はダイアログを廃止することができたはずです。
重要なのは、ダイアログがなくても、少し考えて、おそらく少し余分なコードを追加することで実行できることですが、怠惰な、またはおそらくもっと寛大な、時間に制約のある開発者にとっては簡単すぎるオプションです。
そうは言っても、時々あなたは本当に欲しいダイアログです。一般的な[印刷]ダイアログのすべてのオプションについて考えてみてください。どのプリンター?すべてのページ、またはほんの数ページ?何部?ダイアログボックスなしでそれを行う方法がわかりません...
Noboyはそれらを読み取り、プログラムフローを中断します。多くの場合、エラー通知として使用される場合、それらはプログラム障害の前兆です。ユーザーが何が起こっているのかを理解するまでに、メッセージは消え、可能な限りメッセージを思い出したり発明したりすることができます。
個人的には、それがどのように行われるかに完全に依存していると思います。
すべてのファイルがターゲットディレクトリに存在する10個のファイルをコピーしてみてください。Windowsエクスプローラーを使用してコピーしてください。
各ファイルの単一のモーダルダイアログは、このような操作で本当に正しい答えです。 「はい」とおっしゃっていますが、ループシステム全体を別の方法で構築する必要があります。存在するすべてのファイルを1つの大きなリストに集めて、「これらのファイルで何をしたいのか」と尋ねたら、[OK]をクリックして操作を再開する前に、リストの下の各ファイルについて何をするかを決めさせてください。 。
また、多くの場合、ダイアログボックスは通常のワークフローを中断するだけです。
そして、はい、人々はダイアログボックスを読みません。したがって、ダイアログボックスを使用する必要がある場合の黄金のヒントは、それを言い換えることです。
「データベース内のこの行を削除しますか?」の代わりに、「しませんかデータベースのこの行を削除しますか?」このように、「はい」を押した場合、これは単にそれをやりたいと思っているユーザーからの典型的な応答であり、結局何もしません。