ウィンドウ

ウィンドウ () とは、グラフィカルユーザーインターフェイス (GUI) を持つコンピュータのウィンドウシステムにおいて、ディスプレイなどのデバイス上で、各アプリケーションソフトウェアに与えられる視覚的領域のことである。個々のウィンドウは一般的に矩形または角丸矩形の形状を持つ。「ウインドウ」と表記されることもあるが、本記事では「ウィンドウ」で統一する。

 概要 
窓からアプリケーションを覗いているような様子からこの名前が付けられた。マルチタスクオペレーティングシステム (OS) では複数のアプリケーションが同時に動作するため、ウィンドウでそれぞれのアプリケーションに画面領域を割り当て、ユーザーの操作で切り替えることができる必要がある。一般的なウィンドウシステムでは、ディスプレイ領域を単純に分割して各領域にウィンドウを2次元的に表示するだけでなく、それぞれのウィンドウが上下関係（Zオーダー）を持ち、任意の順序で疑似3次元的に重ね合わせができるようになっている。ウィンドウは木構造によって階層的に管理され、一般的にデスクトップ自身のウィンドウが基底ノードとなる。各ウィンドウ内に、さらに1つ以上の子ウィンドウを持つこともできる。各アプリケーションのプロセスは、一般的にトップレベルウィンドウ（デスクトップをオーナーすなわち所有者とする最上位のウィンドウWindow (Java Platform SE 8 )About Windows - Win32 apps | Microsoft Docs）を1つだけ持つが、必要に応じて複数のトップレベルウィンドウを持つこともできる。

選択されている状態のウィンドウをアクティブウィンドウ ()、それ以外の全てのウィンドウは非アクティブウィンドウ () と呼ぶ。アクティブなウィンドウがZオーダーの最前面に表示されることが多いものの、必ずしもそうなるとは限らない。例えばデスクトップは特殊なウィンドウの1つとして実装されるが、デスクトップをアクティブにしても他のアプリケーションウィンドウは（最小化されていなければ）デスクトップよりも上にある状態となる。あるウィンドウに所有されている () ウィンドウのZオーダーは所有者 () ウィンドウよりも常に上に位置するため、モードレスウィンドウの場合は所有者ウィンドウをアクティブにしたとしても、所有者よりも前面に表示されるWindow Features - Win32 apps | Microsoft Learn。モーダルウィンドウの場合は表示中に所有者ウィンドウをアクティブにすることができないため、この逆転現象は起こらない。またWindowsでは、HWND_TOPMOSTを使うことで、ウィンドウが非アクティブであっても最前面に表示されるように設定することも可能であるSetWindowPos function (winuser.h) - Win32 apps | Microsoft Learn。Windows タスク マネージャーの「常に手前に表示」というオプションはこの機能を使用して実現されている。

ウィンドウはフォーカスを持つことができ、キーボード入力の情報はフォーカスを持つウィンドウに対して送られる。

主にパーソナルコンピュータ (PC) で使用されるデスクトップOSの場合、ほとんどのウィンドウシステムでは、トップレベルウィンドウを最小化することができ、デスクトップ領域から一時的にそれらのウィンドウを非表示にすることができる。ウィンドウが最小化されるとき、タスクバーに格納されるような遷移アニメーションが発生することが多い。ウィンドウに対応するタスクバー上のボタンやアイコンをクリックすることで、そのウィンドウを再表示することができる。

移動やリサイズ、最小化／最大化／クローズといったウィンドウの操作には、タイトルバーおよびその上に設けられたシステムコマンドボタンと、ウィンドウ枠（フレーム）を用いる。ウィンドウはキーボードでも操作できるように、通例ショートカットキーが用意されている。

一方モバイルOSの場合、マルチタスクであってもその多くは限定されたマルチウィンドウシステムとなっており、ウィンドウ最小化の操作ができない代わりに、利用していないアプリケーションはバックグラウンド状態になる。システム全体の負荷やバッテリー消費を抑えるなどの目的から、ユーザーに直接操作されておらず、画面にも表示されていないバックグラウンド状態のアプリケーションは、利用可能な機能や通信およびイベント受信などの動作に強い制限があるバックグラウンド実行制限  |  Android デベロッパー  |  Android DevelopersIntroduction to Backgrounding in iOS - Xamarin | Microsoft Learn。AndroidやChromeOSのように、ユーザーが自由にウィンドウサイズを変更することのできる、デスクトップOSに近いフリーフォームウィンドウモードをサポートするモバイル環境もあるマルチウィンドウのサポート  |  Android デベロッパー  |  Android DevelopersChrome OS 向けのアプリの最適化  |  Android デベロッパー  |  Android Developers。

 表記 
「規格票の様式及び作成方法の規格（JIS Z 8301）」の2008年版までは「3音以上の場合には、語尾に長音符を付けない」と定めていた。これに従うと、「ウィンドー」は「ウィンド」となる。例えばJASO D406では、パワーウィンドウ（）は「パワーウィンドー」から転じて「パワーウィンド」と表記されているJASO 自動車規格目録（2018年4月1日版）, 自動車技術会。なお、JASO D504では、フロントガラス（風防ガラス）を意味するは「ウインドスクリーン」と表記されている。しかし、「ウィンド」では「風」の意味を持つと紛らわしいということもあり、コンピュータ関連では「ウィンドウ」マルチウィンドウのサポート  |  Android デベロッパー  |  Android Developersまたは「ウインドウ」Macでアプリケーションウインドウを管理する - Apple サポート (日本)と表記されることが多い。「ウィンドー」や「ウインドー」と表記されることは少ない。

日本語では英語をそのままカナ表記した外来語として「ウィンドウ」と言うことが多いが、他の言語では「窓」を意味する固有語が用いられるのがほとんどである。なお、日本語でも複合語に限っては「窓」（例：別窓、対話窓）を用いることもある。

 Microsoft Windows 
マイクロソフトのオペレーティングシステムであるMicrosoft Windowsは、ウィンドウシステムにおけるウィンドウの複数形が名前の由来Where Did Microsoft Windows Get It's Name From?である。なお、伝統的なUser32サブシステムのGUI部品（ウィジェット）はすべてウィンドウハンドル (HWND) を持ち、例えばボタンやラベルさえもウィンドウの1つとして存在し、Windows APIを使用してウィンドウハンドル経由で統一的に扱われる仕組みになっている。このウィンドウハンドルはプロセス透過であり、あるプロセスの持つウィンドウに対して、別のプロセスからウィンドウハンドル経由でメッセージを送信することで、そのウィンドウを操作することもできる。

マイクロソフト製のC++用ライブラリであるMFCおよびATLでは、HWNDをラップし、各ウィンドウオブジェクトを抽象化するCWndクラスやCWindowクラスが定義されているRelationship Between a C++ Window Object and an HWND | Microsoft DocsIntroduction to ATL Window Classes | Microsoft Docs。

 脚注 
 出典 

 注釈 

 関連項目 
 操作関係 
タイトルバー
ドラッグ・アンド・ドロップ

 ウィンドウの親ノード 
ウィンドウシステム

 GUI関係 
 ダイアログボックス
 モーダルウィンドウ

ういんとう