ダイアログボックス
ダイアログボックス(英: dialog box)とは、GUIにおける特殊なウィンドウの一種であり、ユーザーに情報を提示し、必要に応じてユーザーに応答してもらうもの。ユーザーに何かを伝えたり、ユーザーに何か入力してもらったりといった、ユーザーとコンピュータ間の対話 (dialog) に使われるため、このように呼ばれる。
ユーザーとのやり取りや選択肢の種類によって、それぞれ異なる種類のダイアログボックスが使われる。最も単純なダイアログボックスはメッセージボックスと呼ばれる種類のもので、さらに選択肢のボタンが1つしか用意されていない場合、単にメッセージを表示してそれをユーザーが読んだことを確認する(ダイアログボックス上に表示されたOKボタンを、マウスによるクリックやタッチ入力により押下してもらう)だけである。メッセージの種別によって警告やエラーなどを意味するアイコンが付与されることもある。ファイルの上書き保存など、何らかの不可逆な結果を伴う操作の前に確認するメッセージには一般的に警告アイコンが付与される。操作の失敗を通知するメッセージには通例エラーアイコンが付与される。プログラムのクラッシュによる強制終了が発生した場合に、オペレーティングシステムからエラーメッセージボックスが表示されることもある。メッセージボックスでは通常、ユーザーによる確認や選択が完了するまでは他のUI要素は操作できない。モーダルなダイアログではよくあるパターンだが、より良い代替手法がある場合にもこのパターンを使うことはしばしば批判の対象となる[1]。
Microsoft Windowsの技術文書では一般的なものを「ダイアログボックス」[2]と呼び、メッセージと選択肢を表示するだけの機能を持つ組み込みのダイアログを「メッセージボックス」[3]と呼んでいる。Androidの技術文書では「ダイアログ」と呼んでいる[4]。
ポップアップやポップアップウィンドウ、アラート[5][6]やアラートウィンドウなどと呼ばれることもある。
JavaScriptでは選択肢のボタンが1つしかないダイアログをアラートと呼び、他にも選択肢のボタンがあるダイアログとは区別している[7]。
モードレス
[編集]「ノンモーダル」または「モードレス」のダイアログボックスは、要求している情報が処理の継続に必須ではなく、他のウィンドウを開いたまま処理を続行できる場合に使われる。モードレスのダイアログボックスの一種としてツールバーがある。これは、アプリケーション本体のウィンドウ(メインウィンドウ)とは分離されていたり、結合/分離可能となっていたりするもので、ツールバー上に表示されているアイテムを操作することでアプリケーションの特定の機能を使うことができる。
一般に優れた設計のソフトウェアでは、モードレスの方がユーザーにとって扱いやすい(ユーザーにモード操作を強制しない)ため、可能な限りこの種のダイアログボックスを使う。例えば、現在の文書のプロパティ(背景色や文字色など)を設定するダイアログボックスはモードレスとされていることがある。ユーザーが主ウィンドウにテキストを追加するのは、色の設定がどうであっても継続可能であり、好きなときにそのダイアログボックスを使って色を変更できる。なお、それがこの場合の最善のインタフェースだというわけではない。同様の機能はツールバーやリボンでも実現できる。
モーダル
[編集]「モーダル」なダイアログボックスでは、それがクローズされるまでプログラム本体の操作ができなくなる。再開するために追加情報を必要としている場合や、何らかの危険性のある操作を続行することをユーザーに確認する場合などに使われる。モーダルなダイアログボックスはいわゆるモードエラー[要説明]を引き起こしやすいことから、悪い設計として批判されることが多い。危険な操作は全くできないようにしておくべきだし、不意に出現するダイアログボックスや馴化によって中身に注目されずに消されてしまうダイアログボックスは、危険な操作への警告として役に立たない。
これまで[いつ?]モーダルなダイアログボックスは、システム全体のモーダルかアプリケーション単位のモーダルであった。すなわち、それが消されるまでシステム全体の制御を奪うか、対応するアプリケーションの制御だけを奪う。最近[いつ?]ではMac OS Xで特によく見られるように、文書単位のモーダルが登場している。この場合、ダイアログボックスは親ウィンドウに付属するシートとして表示され、同じアプリケーションでも別ウィンドウであれば制御が奪われず、操作を続行可能である。
脚注
[編集]- ^ Aza Raskin, A List Apart: Never Use a Warning When you Mean Undo
- ^ Dialog Boxes (Dialog Boxes) - Win32 apps | Microsoft Learn
- ^ MessageBoxW function (winuser.h) - Win32 apps | Microsoft Learn
- ^ ダイアログ | Android デベロッパー | Android Developers
- ^ NSAlert | Apple Developer Documentation
- ^ UIAlertController | Apple Developer Documentation
- ^ window.alert - Web API | MDN