
グラフィカルユーザーインターフェース、またはGUI [ a ]は、グラフィカルアイコンや補助表記などの視覚的な表示によってユーザーが電子機器と対話できるようにするユーザーインターフェースの一種です。多くのアプリケーションでは、入力されたコマンドラベルやテキストナビゲーションに基づくテキストベースの UIの代わりに GUI が使用されます。GUI は、コンピュータのキーボードでコマンドを入力する必要があるコマンドラインインターフェース(CLI) [ 4 ] [ 5 ] [ 6 ]の学習曲線が急峻であると認識されたことへの対応として導入されました。
GUI の操作は通常、グラフィカル要素を直接操作することによって行われます。 [ 7 ] [ 8 ] [ 9 ]コンピュータ以外にも、GUI はMP3プレーヤー、ポータブル メディア プレーヤー、ゲーム デバイス、スマートフォン、小型の家庭用、オフィス用、産業用制御装置など、多くの携帯型モバイル デバイスで使用されています。GUI という用語は、ビデオゲーム(ヘッドアップ ディスプレイ( HUD ) [ 10 ]が好まれる)などの他の低解像度のディスプレイインターフェースには適用されない傾向があり、ボリューム ディスプレイ[ 11 ]のようなフラット スクリーンは含まれません。これは、この用語が、ゼロックス パロ アルト研究所のコンピュータ サイエンス研究の伝統に従って、一般的な情報を記述できる2Dディスプレイ スクリーンの範囲に限定されているためです。

GUIの視覚的な構成と時間的な動作を設計することは、ヒューマンコンピュータインタラクションの分野におけるソフトウェアアプリケーションプログラミングの重要な部分です。その目的は、格納されたプログラムの基盤となる論理設計の効率性と使いやすさを向上させることであり、これはユーザビリティと呼ばれる設計分野です。ユーザー中心設計の手法を用いることで、設計に導入される視覚言語がタスクに適切に適合するようにします。
アプリケーションの目に見えるグラフィカルインターフェイス機能は、クロームまたはGUIと呼ばれることがあります。[ 12 ] [ 13 ] [ 14 ]通常、ユーザーは、保持しているデータの種類に適した操作を可能にする視覚ウィジェットを操作することによって情報とやり取りします。適切に設計されたインターフェイスのウィジェットは、ユーザーの目標を達成するために必要なアクションをサポートするように選択されます。モデル ビュー コントローラは、インターフェイスがアプリケーション機能から独立し、間接的にリンクされている柔軟な構造を可能にし、GUI を簡単にカスタマイズできます。これにより、ユーザーは自由に異なるスキンまたはテーマを選択または設計でき、ユーザーのニーズが変化するにつれてインターフェイスを変更するデザイナーの作業が容易になります。優れた GUI デザインは、システム アーキテクチャよりもユーザーに関係しています。ウィンドウなどの大きなウィジェットは通常、Web ページ、電子メール メッセージ、または描画などのメインのプレゼンテーション コンテンツのフレームまたはコンテナを提供します。小さなウィジェットは通常、ユーザー入力ツールとして機能します。
GUIは、アプリケーション固有のGUIとして、垂直市場の要件に合わせて設計される場合があります。例としては、ATM(現金自動預け払い機)、レストランのPOS(販売時点情報管理)タッチスクリーン、 [ 15 ]小売店で使用されるセルフサービスチェックアウト、航空会社のセルフチケットおよびチェックイン、駅や博物館などの公共スペースの情報キオスク、リアルタイムオペレーティングシステム(RTOS)を使用する組み込み産業用アプリケーションのモニターまたは制御画面などがあります。
携帯電話や携帯ゲーム機も、アプリケーション固有のタッチスクリーンGUIを採用している。最新の自動車では、ナビゲーションシステムやマルチメディアセンター、あるいはナビゲーションとマルチメディアセンターを組み合わせたシステムにGUIが使用されている。

GUIは、様々な技術とデバイスを組み合わせて、ユーザーが情報収集や情報生成といった作業を行うためのプラットフォームを提供する。
コンピュータに保存されている情報を表現するために、視覚言語を構成する一連の要素が進化してきた。これにより、コンピュータのスキルが低い人でもコンピュータソフトウェアを扱いやすくなり、使いやすくなる。GUIにおけるこうした要素の最も一般的な組み合わせは、特にパーソナルコンピュータにおいて、ウィンドウ、アイコン、テキストフィールド、キャンバス、メニュー、ポインタ(WIMP)パラダイムである。[ 16 ]
WIMP方式のインタラクションでは、仮想入力デバイスを使用してポインティングデバイス(多くの場合マウス)のインターフェースの位置を表し、ウィンドウに整理された情報をアイコンで表示します。利用可能なコマンドはメニューにまとめられ、ポインティングデバイスを使ったジェスチャーで操作を実行します。ウィンドウマネージャは、ウィンドウ、アプリケーション、およびウィンドウシステム間のインタラクションを円滑にします。ウィンドウシステムは、ポインティングデバイス、グラフィックスハードウェア、ポインタの位置などのハードウェアデバイスを処理します。
パーソナルコンピュータでは、これらの要素すべてがデスクトップメタファーを通してモデル化され、デスクトップ環境と呼ばれるシミュレーションが生成されます。この環境では、ディスプレイがデスクトップを表し、その上に文書や文書フォルダを配置できます。ウィンドウマネージャなどのソフトウェアが組み合わさって、さまざまなレベルのリアリティでデスクトップ環境をシミュレートします。
項目は、テキストや詳細のためのスペースを確保するためにリスト形式で表示される場合もあれば、コンパクトさと大きなアイコンのためにグリッド形式で表示され、その下にテキストのためのスペースがほとんどない場合もあります。その中間には、複数の列の項目を持つリストや、アイコンから横方向にテキストの行が伸びる項目のグリッドなど、さまざまなバリエーションが存在します。[ 17 ]
ウェブ上でよく見られる複数行・複数列のレイアウトには、「シェルフ」と「ウォーターフォール」があります。前者は画像検索エンジンでよく見られ、画像は高さは固定ですが長さは可変で表示され、通常はCSSプロパティとパラメータを使用して実装されます。ImgurやTweetDeckdisplay: inline-block;で見られるウォーターフォールレイアウトは、アイテムごとに幅は固定ですが高さは可変で、通常は を指定することで実装されます。column-width:
パーソナルデジタルアシスタント(PDA)やスマートフォンなどの小型アプリモバイルデバイスは、スペースや利用可能な入力デバイスの制約のため、通常、異なる統一メタファーを使用してWIMP要素を使用します。WIMPが適していないアプリケーションは、ポストWIMP UIと呼ばれる新しいインタラクション技術を使用する場合があります。[ 18 ]
2011年現在、AppleのiOS(iPhone)やAndroidなどのタッチスクリーンベースのオペレーティングシステムの一部は、ポストWIMPと呼ばれるクラスのGUIを使用しています。これらは、ディスプレイに複数の指を接触させて操作するスタイルをサポートしており、1つのポインタとマウスではサポートされていないピンチや回転などのアクションを可能にします。[ 19 ]
GUIとの効率的なインタラクションを実現するヒューマンインターフェースデバイスには、特にキーボードショートカットと組み合わせて使用されるコンピュータキーボード、カーソル(またはポインタ)を制御するためのポインティングデバイス(マウス、ポインティングスティック、タッチパッド、トラックボール、ジョイスティック)、仮想キーボード、ヘッドアップディスプレイ(目の高さにある半透明の情報デバイス)などがあります。
プログラムによって実行される動作の中には、GUIに影響を与えるものもあります。例えば、inotifyやD-Busといったコンポーネントは、コンピュータプログラム間の通信を容易にする役割を果たします。
1963年、アイバン・サザーランドは、最初のグラフィカルなコンピュータ支援設計プログラムとして広く知られるSketchpadを開発しました。これは、ライトペンを使用して、リアルタイムで調整されたグラフィックスでエンジニアリング図面内のオブジェクトを作成および操作するものでした。1960年代後半、ダグラス・エンゲルバート率いるスタンフォード研究所の研究者たちは、当時新しかったデバイスであるマウスで操作するテキストベースのハイパーリンクを使用するオンラインシステム(NLS)を開発しました。(1968年のNLSのデモンストレーションは「すべてのデモの母」として知られるようになりました。)1970年代には、ゼロックスPARCの研究者、特にアラン・ケイによって、エンゲルバートのアイデアがさらに洗練され、グラフィックスに拡張されました。彼らはテキストベースのハイパーリンクを超え、 1973年に発売されたゼロックスAltoコンピュータ上で動作するSmalltalkプログラミング言語のメインインターフェースとしてGUIを使用しました。現代の汎用GUIのほとんどは、このシステムから派生しています。
Xerox PARC GUI は、ウィンドウ、メニュー、ラジオ ボタン、チェックボックスなどのグラフィカル要素で構成されていました。アイコンの概念は、後にKay の指導の下でこのテーマに関する論文を書いたDavid Canfield Smithによって導入されました。 [ 20 ] [ 21 ] [ 22 ] PARC GUI は、キーボードとともにポインティング デバイスを使用します。これらの側面は、ウィンドウ、アイコン、メニュー、ポインティング デバイス( WIMP )の代替用語および頭字語を使用することで強調できます。この取り組みは、GUI を搭載した最初のコンピュータである 1973 年のXerox Altoで最高潮に達しましたが、このシステムは商用生産には至りませんでした。
GUIを搭載した最初の市販コンピュータは、Three Rivers Computer Corporationが製造した1979年のPERQワークステーションでした。その設計は、Xerox PARCでの研究に大きく影響を受けていました。1981年、Xeroxは最終的にAltoのアイデアを新しい強化システム、Xerox 8010 Information System(より一般的にはXerox Starとして知られる)の形で商業化しました。[ 23 ] [ 24 ]これらの初期のシステムは、Symbolicsや他のメーカーによるLispマシン、 1983年のApple Lisa (メニューバーとウィンドウコントロールの概念を提示)、1984年のApple Macintosh 128K、Digital ResearchのGEMを搭載したAtari ST、1985年のCommodore Amigaなど、他の多くのGUI開発の取り組みを刺激しました。Visi Onは1983年にIBM PC互換コンピュータ向けにリリースされましたが、ハードウェア要求が高かったため人気が出ませんでした。[ 25 ]それにもかかわらず、それは現代のMicrosoft Windowsの開発に決定的な影響を与えた。[ 26 ]
Apple、Digital Research、IBM、Microsoftは、Xeroxの多くのアイデアを製品開発に活用し、IBMの共通ユーザーアクセス仕様は、Microsoft Windows、IBM OS/2 Presentation Manager、Unix Motifツールキットおよびウィンドウマネージャで使用されるGUIの基礎となった。これらのアイデアは進化を遂げ、現在のMicrosoft Windowsのバージョンや、macOSやLinuxなどのUnix系オペレーティングシステムの様々なデスクトップ環境に見られるインターフェースを生み出した。そのため、現在のほとんどのGUIは、共通の慣用表現を多く用いている。


1980年代初頭にはGUIへの関心が高まった。 1983年にApple Lisaが発売されたが、高価で商業的に成功しなかった。多くのプラットフォーム向けの個々のアプリケーションは独自のGUIバリアントを提供した。[ 27 ] GUIの利点にもかかわらず、多くの評論家はハードウェアの制限や互換性のあるソフトウェアを見つけるのが難しいことを理由に、コンセプト全体の価値に疑問を呈した。 [ 28 ]
1984年、アップルはスーパーボウルXVIIIのテレビCM「1984」でMacintoshを発表した。[ 29 ]このCMはジョージ・オーウェルの小説『1984年』を暗示していた。CMの目的は、人々にコンピュータについて考えさせ、ユーザーフレンドリーなインターフェースを、それまでのビジネス向けシステムから脱却したパーソナルコンピュータとして認識させ、[ 30 ]アップル製品の象徴的な表現となるようにすることだった。[ 31 ]
1985年に発売されたAtari STには、 Digital Research社製のGEM GUIが搭載されており、これはMS-DOS版も発売されていた。同じ年にAmiga 1000も発売されたが、広く普及したのは1986年になってからで、 Workbenchというグラフィカルデスクトップが搭載されていた。このインターフェースは独立したタスクとして動作するため、非常に応答性が高く、当時の他のGUIとは異なり、プログラムがビジー状態のときにフリーズすることはなかった。
Windows 95は、大規模なマーケティングキャンペーンを伴い[ 32 ] 、発売当初から市場で大きな成功を収め、すぐに最も人気のあるデスクトップオペレーティングシステムとなった[ 33 ] 。
2007年にiPhone [ 34 ]、そして2010年にiPad [ 35 ]を発表したことで、 Appleはマルチタッチスクリーン 向けのポストWIMPスタイルのインタラクションを普及させ、これらのデバイスはモバイルデバイス開発のマイルストーンとみなされました。[ 36 ] [ 37 ]
2010年代半ばから後半にかけて、ほとんどの人が馴染みのある GUI は、デスクトップおよびラップトップ コンピュータ用のWindows、macOS、およびX Window Systemインターフェイスであり、ハンドヘルド (スマートフォン) デバイス用のAndroid、Apple のiOS、Symbian、BlackBerry OS、Windows Phone / Windows 10 Mobile、Tizen、WebOS、およびFirefox OSである。[ 38 ] [ 39 ]
人々は、これは右脳的な機械だなどと言いますが、確かにそういう側面もあると思います。グラフィカルインターフェースや、より動きのあるインターフェースを扱うことには、何か特別なものがあると思います。情報を実際に動かし、まるで実体があるかのように動くのを目にすることができるのです。これはPCでは見られない感覚です。PCは概念的な機械であり、数式や方程式の両辺の要素を動かすように情報を動かします。そこには違いがあると思います。
—アンドリュー・フルーゲルマン、マッキントッシュについて、1985年[ 40 ]

コマンドラインインターフェイスで使用できるコマンドは多数あるため、短い単語と記号のシーケンスを使用して複雑な操作を実行できます。カスタム関数を使用して、頻繁に使用するアクションへのアクセスを容易にすることができます。コマンドラインインターフェイスは、タスクに必要な情報のみを記憶するため、より軽量です。たとえば、プレビューサムネイルやウェブページのグラフィックレンダリングはありません。これにより、多くのコマンドを学習すると、効率と生産性が向上します。[ 4 ]しかし、コマンドの単語が簡単に発見または記憶 できるとは限らないため、このレベルに到達するには時間がかかります。また、ユーザーが多数のパラメータや複数の異なるファイル名を含む長いコマンドを一度に入力する必要がある場合、コマンドラインの使用は遅くなり、エラーが発生しやすくなります。ただし、ウィンドウ、アイコン、メニュー、ポインタ( WIMP ) インターフェイスは、システムの使用可能なコマンドの一部を表し、トリガーできる多くのウィジェットをユーザーに提供します。
ダイアログがシステム内部の奥深くに埋め込まれていたり、再設計の際に様々な場所に移動されたりすると、GUIは非常に使いにくくなることがあります。また、アイコンやダイアログボックスは、ユーザーにとってスクリプトを作成するのが難しい場合が多いです。
WIMPはモードを多用し、画面上の特定位置におけるすべてのキー操作やクリックの意味を常に再定義します。コマンドラインインターフェースは、現在のディレクトリや環境変数など、限られた形式でのみモードを使用します。
現代のほとんどのオペレーティングシステムは、 GUIとある程度のCLIの両方を提供しているが、通常はGUIの方がより注目されている。
GUIラッパーは、(一般的に) LinuxやUnix系ソフトウェアアプリケーションのコマンドラインインターフェース(CLI)バージョンや、テキストベースのUIまたは入力コマンドラベルを回避する方法を見つけます。コマンドラインまたはテキストベースのアプリケーションでは、ユーザーはプログラムを非対話的に実行できますが、その上に構築されたGUIラッパーは、キーボードでコマンドを入力する必要があるコマンドラインの急な学習曲線を回避します。GUIラッパーを起動すると、ユーザーは、たとえばデスクトップ環境のグラフィカルアイコンや視覚的なインジケーターを通して、直感的に操作、起動、停止、および動作パラメータの変更を行うことができます。アプリケーションは両方のインターフェースを提供する場合もあり、その場合、GUIは通常、コマンドラインバージョンのWIMPラッパーです。これは、Unix系オペレーティングシステム向けに設計されたアプリケーションで特に一般的です。後者は、開発者がアイコンのデザインやボタンの配置などのインターフェースの詳細を気にすることなく、製品の機能に専念できるため、以前は最初に実装されていました。このようにプログラムを設計すると、ユーザーはシェルスクリプトでプログラムを実行することもできます。
多くの環境やゲームでは、 3Dグラフィックスの手法を用いて3D GUIオブジェクトを画面上に投影しています。3Dグラフィックスは、主流のオペレーティングシステム(Windows AeroやmacOSのAquaなど)において、魅力的なインターフェース(例えば、ウィンドウやカーソルの下にドロップシャドウを表示するなど)を作成するため、あるいは3次元でしか実現できない機能的な目的のために、ますます一般的になっています。例えば、ユーザーの切り替えは、各ユーザーのワークスペースを表す面を持つ立方体を回転させることで表現され、ウィンドウ管理はWindows Vistaのローロデックス式フリップ機構によって表現されています(Windows Flip 3Dを参照)。どちらの場合も、オペレーティングシステムはウィンドウの内容を更新し続けながら、ウィンドウをリアルタイムで変換します。
GUI は通常 WIMP ベースですが、Microsoft Bob、3dwm、File System Navigator、File System Visualizer、3D Mailbox [ 41 ] [ 42 ]、GopherVRなどで使用されているような他のメタファーが現れることもあります。ズーム(ZUI) は関連技術で、3D 環境の表現上の利点を、方向の問題や隠れたオブジェクトといったユーザビリティ上の欠点なしに提供することを約束しています。2006 年に、Hillcrest Labs はテレビ向けの最初の ZUI を発表しました。[ 43 ]その他のイノベーションには、 PlayStation 2のメニュー、 Xboxのメニュー、Sun のProject Looking Glass、Project Looking Glass に似たMetisse [ 44 ] 、ユーザーが物理的な文書のようにリアルな動きと物理法則で文書やウィンドウを操作できるBumpTop 、コラボレーション用に構築されたCroquet OS [ 45 ]、EnlightenmentやCompizなどの合成ウィンドウマネージャがあります。拡張現実と仮想現実も3D GUI要素を利用している。[ 46 ]
3D GUIは、特定の技術が実現可能になる前や一般的に使用されるようになる前から、 SF文学や映画に登場していた。[ 47 ]
On製品は家庭用ユーザー向けではありませんでした。ハイエンドの企業向けワークステーション向けに設計され、価格設定されていました。必要なハードウェアは1983年当時としてはかなり高性能でした。最低でも512KBのRAMとハードドライブ(5MBの容量)が必要でした。
Xerox PARC で行われた、強力なビットマップ表示ベースのユーザー インターフェイスの開発を推進した取り組みが鍵でした。ある意味では、ここで行っていることは、このモデルを 3D に拡張し、新しい堅牢なオブジェクト コラボレーション モデルを追加することだけです。