モーダルウィンドウモーダルウィンドウ(英: modal window)は、コンピュータアプリケーションソフトウェアのユーザインタフェース設計において、何らかのウィンドウの子ウィンドウとして生成されるサブ要素のうち、ユーザーがそれに対して適切に応答しない限り、制御を親ウィンドウに戻さないもの。モーダルウィンドウはGUIシステムで、ユーザーに注意を促したり、選択肢を提示したり、緊急の状態を知らせたりする目的でよく使われる。モーダルダイアログやポップアップと呼ばれることもある[1][2]。 "modal"とは「モードを持つ」という意味であり、モーダルウィンドウが表示されている間はアプリケーションの状態が「ユーザーの応答待ちモード」になっている。対義語は"non-modal"(非モーダル)あるいは"modeless"(モードレス)である[3][4][5]。 ユースケース
モーダルウィンドウは以下のような状況でよく使われる。
内部的な仕組みモーダルウィンドウを表示すると、そのウィンドウが閉じられるまで呼び出し元に制御は返ってこない。しかしモーダルウィンドウを表示している間もイベントループ(メッセージループ)は回り続けるため、GUIがフリーズしてしまうことはない。モーダルウィンドウ表示中は通常のイベントループとは異なるモーダルループが回り、親のウィンドウに配送されるイベントが制限される。 類似要素Microsoft Windows では、Mac OS や X Window System ベースのUNIX系システムよりもモーダルウィンドウがよく使われる[要出典]。Windows でモーダルウィンドウが使われるような状況で、それ以外の環境ではトランジェントウィンドウ (transient window) が使われる。トランジェントウィンドウはモーダルウィンドウと似たような振る舞いをし、常に親ウィンドウの前面に表示され、ウィンドウリストには出現しないが、同じアプリケーションの他のウィンドウの使用を妨げない。 利点と問題点モーダルウィンドウは、クローズされるまでそのプログラムの他のワークフロー全体をブロックする。ユーザーはモーダルウィンドウが注意を喚起していることに気づかない場合もあり、主ウィンドウが反応しなくなったことで困惑したり、入力すべきデータが判らなくなったりするといった問題も発生する。モードの明確化という点に関しては、ダイアログ表示中に背景となる主ウィンドウの明るさを下げてコントラストをつけることで配慮している例もある(Windowsランタイムの モーダルウィンドウに対する意見は、初期のマンマシンインタフェースにおける基本原則を想起させる。例えば、マイクロソフトは Windows 95 でウィザードを多用した[10]。 今[いつ?]もモーダルウィンドウは多くのGUIツールキットの主要部品の1つであり、よく使われる。多数のモードのないダイアログが表示されるとユーザーが混乱すると考えられているためであり、モーダルウィンドウを擁護する立場からは、ある時間内にユーザーが入力しなければならない情報の量を制限することができるという意見もある[3]。また、モーダルウィンドウとの対話中はユーザーによって親ウィンドウを操作されることがないため、ワークフローの管理や画面遷移の実装の容易さの観点からも有用である。 一方で、そのような意見に対して、ユーザーにフラストレーションを与えてまで制限を加えるのは誤りだと指摘しているユーザインタフェースの専門家もいる[11]。ユーザーは1度に1つの入力しかできず、モーダルであろうとなかろうとユーザーは常に注意していなければならない。たとえ複雑な情報であっても、それがうまく構造化された論理的設計で表現されていれば、ユーザーはそれを処理できる[要説明]。この指摘はシングルスレッドやシングルプロセスにおける文脈であれば通用するかもしれないが、リアクティブプログラミングによる1対多の同時操作や、マルチスレッド、アドオンなどにおけるプロセスがアクセスを禁じたいウィジェットにアクセスできるのが当たり前になりつつあるリアルタイム・並行実行全盛期となった(少なくとも)2020年代では無意味な指摘である。[独自研究?] Webブラウザで使用されるJavaScriptには、ダイアログを表示するためのウィンドウオブジェクトに対するメソッドとして 脚注
例
関連項目 |