グラフィカルユーザインタフェース
テンプレート:OS グラフィカルユーザインタフェース(テンプレート:Lang-en、GUI)は、コンピュータグラフィックスとポインティングデバイスを用いて、直感的な操作を提供するユーザインタフェース。キャラクタユーザインタフェース (CUI) やテキストユーザインタフェース (TUI) と対比して語られることが多い。
グラフィカルユーザインタフェースは、視認性、操作性に優れ、直感的な操作が可能なため、広く普及し、2013年現在では主流のインタフェースになっている。
目次
歴史
世界初の実用となったGUIは1963年に完成したSAGEというアメリカ空軍の開発した防空管制システムである。これはCRTとライトガンを備えており、核爆弾を搭載した敵航空機を迎撃するために多数のレーダーからの情報を統合し、複数のオペレーターがライトガンで迎撃目標を指示するだけで全軍の適切な箇所に自動で指令が届き、その結果レーダー情報の膨大さを気にすることなく的確に敵機を迎撃できるというものであった。リアルタイムに膨大な情報から適切な選択を行うという点において、このシステムはGUIの本質を示すものである。CUIは軍用ではそれほど大きな需要が無く、むしろ冷戦構造下ではGUIの方が需要があり先に実現されていた。むろんタイプライタを利用したコンピュータの入出力も当時おこなわれていた。民生用で普及した技術に視点が限定されるためによる「CUIの方が先に普及し、後からGUIが現れた」と誤解がされがちである。[1] その次に登場した実用的といえるGUIはマウスの発明者であるダグラス・エンゲルバートにより開発されたNLSである。このシステムはエンゲルバートの提唱する「人間知性の拡大」という概念を実現するために作られており、ハイパーテキスト、ハイパーリンク、マルチウインドウなどの今日的なGUIには必須の概念を実装して見せたきわめて革新的なものである。またジャーナルと呼ばれるハイパーテキストベースの文書共有システムは正にWikiと同じ概念である文書によるコラボレーション・グループウェアを実装したものである。今日見られるGUIはこのとき確立された概念がより高性能の整備された環境で実装し直されているだけともとらえられる。
また、NLSの本質は単なるGUIの実装ではなく、GUIは会話・画像・文書をリアルタイムで共有する電子会議を通じた知的共有グループウェアを実現するための手段であった。さらに、後にWYSIWYGと呼ばれることになる機能もこのとき既に実装されていた。[2] エンゲルバートのNLSは今日のGUIの概念をほとんど実現していたが、あくまで研究レベルであったため習得の容易さという観点からは十分とは言えなかった。また、理念はかなりの程度実装はされていたが、ハードウェアの性能・価格が実用的とは言えなかった。その後のGUIの歴史は新機能が増えていったというよりむしろ、わかりやすくするために機能が削られ、ハードウェアの性能が上がり、価格が下がることで実用性が増していったという点に尽きる。 それらを参考にしたアラン・ケイにより、誰でも簡単に使えることを目指して暫定Dynabook環境が作られた。当初は標準システム的な位置づけで開発されたSmalltalk-72は、Data General社のNovaから、約5〜10倍の能力とビットマップディスプレイ、マウスを装備したAltoへと移植され、マシンパワーを得るとすぐにオーバーラップ可能なウインドウシステムの構築が試みられた。このマルチウインドウシステムを効率よく機能させるために後に考え出された BitBltは、現在も、ちらつきのない画面描写のために使われるアルゴリズムとして知られる。
1974年までには、後にMicrosoft Wordの前身と言われるようになるBravoを開発していた別グループとの情報交換を経てパロアルト研究所初のWYSIWYGエディタも実装される。70年代半ば過ぎにはマウスによる操作、メニューによる命令実行、オーバーラップマルチウインドウシステム、絵と文章の共存できるWYSIWYGのマルチフォントエディタ、アイコンによる機能やオブジェクトの簡易表現など、現在ごくふつうに見られるグラフィカルユーザインタフェースの主要な要素は固まっていた。Smalltalk-72の後継であるSmalltalk-76ではさらに洗練・整備され、それを1979年に見たスティーブ・ジョブズが策定中のLisaの仕様決定に役立てた。[3]
概要
GUIでは、コンピュータの画面上に、ウィンドウ、アイコン、ボタンといったグラフィックが表示され、ユーザはそれらの中から目的の動作を表すグラフィックスをマウスなどのポインティングデバイスで選択する。
基本的には「デスクトップ」「ウィンドウ」「メニュー」「アイコン」「ボタン」など要素を組み合わせて構成され、それらをポインティングデバイスによって操作されるカーソルを通じて指示を与える。
端的に言うと、画面上のボタンや画像などを選択する事でリアクションを発生させる仕組みを総称してGUIと言う。
構成要素
- デスクトップ
- 起動時に表示され、GUIの最下層に位置する画面のことだが、後述のウィンドウやファイルブラウザを含めた「デスクトップ環境」のことをさすこともある。この上にウィンドウを重ねることによってインタフェースはマルチタスクを実現する。一般的なインタフェースでは、ここにアプリケーションやデータのアイコンをおき、ここから作業を開始できるようにする。この画面は、既存のディレクトリ構成とは相容れない立場のため、特殊な位置におかれるディレクトリを参照する形でデータの内容を定義する。
- デスクトップの背景に画像や各種アクセサリを置いて、視覚的に楽しませる機能が提供される。また、アプリケーションの役割を果たすActive Desktopやガジェットなど(ウィジェットエンジン)を置くこともできる。
- 最近では、仮想デスクトップをキューブで表示する、アイコンの配置に立体感を着ける、ウィンドウを立体的に表示など、3D効果によって操作性を向上するデスクトップ環境が増えている。UNIX系ウィンドウマネージャのCompiz、Windows VistaのAero、サンマイクロシステムズのProject Looking Glassなどが例に挙げられる。
- ウィンドウ
- アプリケーションがデータを扱うためのグラフィカルインタフェースにおけるひとつの単位となるもの。ウィンドウ内においては、アプリケーションとデータは一体化する。ここにおいて、アプリケーションを操作し、データを管理、生成、編集する。通常はメニュー、アイコンなどを周辺に配置し、中央にデータをおく。
- ウィンドウには、データやアプリケーションに応じてタイトルが付けられ、ウィンドウの最上部にタイトルがおかれる。一般的には、ウィンドウをディスプレイ全体に表示する「最大化」、表示を隠す「最小化」、複数枚のウィンドウの最前面、タイトルだけを表示する「シェード」などがサポートされ、これにより、ウィンドウの操作を簡単に行うことが出来る。
- Single Document Interface (SDI)
- ウィンドウにおいて、ひとつのデータをひとつのウィンドウ内に完結させる方式。この場合は、データの数だけ、ウィンドウが出力される。他のアプリケーションのウィンドウと突き合わせて利用できるが、その分だけ、ウィンドウの数が多くなり、管理が繁雑になる。
- Multiple Document Interface (MDI)
- ひとつのウィンドウ内に入れ子状にウィンドウが表示され、複数のデータ管理を行う方式。この場合は、ウィンドウ管理が簡単になるが、作業の管理が二重になる。
- タブ
- MDIにおけるデータ管理方式のうち、データのタイトルをウィンドウ内に並べ、タイトルを選んで必要なデータだけを表示するもの。これにより、簡単にデータにアクセスできるようになる。
- メニュー
- アプリケーション、OSより指示できるコマンドを階層上に表現したもの。画面上部、または画面下部におかれ、そのアプリケーションから利用できるコマンドがほぼ全て配置される。通常は左に重要度の高いものがおかれ、右にいくにしたがって重要度は低くなる。コマンドの階層はアプリケーションにより異なるが、ファイル操作、編集の機能を重視して、それらのコマンドから左側からおかれ、右には、ヘルプなどがおかれる。マウスの第一ボタンによって操作する。
- コンテキスト・メニュー
- アプリケーションの用意した階層上のメニューとは別に、メニュー以外のところでマウスの第二ボタンなどを押した際に機能するメニューの事。ボタンが呼び出された位置に応じてメニューの内容が変化し、編集操作を簡単に行うことが出来るようになっている。
- アイコン
- データ管理アプリケーションにおいて、データ、アプリケーション、ディレクトリなど表現したもの。
- データ管理アプリケーション、すなわち、ディレクトリにおけるユーザーデータの管理や、特定のデータを管理を行うアプリケーションの場合、アイコンによりデータを表現する。通常は、データの中身や、拡張子などから関連づけられたアプリケーションを表現するが、ユーザーが自由に変更する場合もある。
- データのアイコンは開くことにより、関連づけられたアプリケーションの起動からサポートしてくれる。アプリケーションアイコンは、アプリケーションの起動だけを行う。
- ボタン
- メニューのうち、利用頻度の高いコマンドを絵で表現し、アプリケーション内に配置したもの。
- アプリケーション上におかれるボタンは、普通はメニューの代わりをする。利用頻度の高いものからおかれ、メニューの階層を辿らなくてもその機能が使えるようになっている。ただし、ユーザーによりコマンドの利用頻度は異なるので、この配置を編集できるようになっているのが普通である。
その他
- ごみ箱
- ファイル消去に対するフェイルセーフを果たすために、「ゴミ箱」などと呼ばれる機能を持つものがある。これは、ファイルの消去を行なう際に、一時的に別の場所に移すことで、誤ったファイル消去を未然に防ぐことが出来る。Macintoshでは、ゴミ箱はファイルだけでなく、さまざまなオブジェクトの削除の機能を持っている。
- アプリケーションランチャ
- GUI上からアプリケーションを呼び出す際に様々な方式があるが、いくつかのOSではメニュー形式のアプリケーションランチャを持っている。NEXTSTEPとMac OS Xでは、ドックと呼ばれるパレット型の機構を持ち、ファイルやアプリケーションの各種の情報を格納してクリックでそれらを呼び出せる。
GUIにおけるタスク管理
GUIにおいて、作業はウィンドウ単位に分割される。MDIとMac OS(Mac OS Xを含む)の場合を除いて、「ウィンドウの数 = タスクの数」であることが多い。このため、インタフェース全体で見た場合、どのようにしてタスク管理を行うかが重要になる。Windows 95以降のWindowsファミリをはじめとしていちばん多い方式は、タスクバーと呼ばれる棒状の領域をデスクトップ上に用意し、ここに、各ウィンドウのアイコンやタイトルを並べるものである。これにより、視認性、操作性を確保しながら、多くのウィンドウを管理することができる。他には、デスクトップ上のメニューに各ウィンドウを管理するメニューを追加する、デスクトップにタスクをアイコンで表示する(Windows 3.xまでのWindowsファミリの方式)、タスクの数だけ仮想デスクトップを用意する(Palm WebOSなどの方式)などの方法がある。Mac OS XはDockでタスク管理を行うが、Exposéというウィンドウ一覧表示モードも併用されている。
ポインティングデバイスによる操作
GUIの基本は、ポインティングデバイスによってカーソルを操作し、デバイスに付いたボタン(通常2〜3個)を押すことである。これにより、「位置」と「指示」を明確にし、視覚的な操作を行うことが出来る。
指示の内容は、カーソルの位置によって異なる。データ管理アプリケーションでは、第1ボタンは、カーソルの位置にあるデータを選択し、2回連続で押す(ダブルクリックする)ことよって、データに応じて適宜定義されたアプリケーションを呼び出し、処理を開始する。アプリケーションのメニュー、ボタン上では、そのコマンドを開始する。データ上では、データにおける操作の位置を指示する。
第2ボタンは、通常、どの場合でも、アプリケーションによって定義されたコンテキストメニューを出力する。このメニューを第一ボタンによって指示することで、そのコマンドを実行することができる。第3ボタンは、X Window Systemではよく使われる。
また、最近は第4ボタン、第5ボタンを装備したマウスや、第3ボタンがウィンドウに直接機能するホイール機能を兼ねているものがあり、適宜、アプリケーション又はOSによって定義された機能を提供する。
GUIとキーボード
GUIにおいても、キャラクタユーザインタフェースに劣らず、キーボードは重要なデバイスである。データの内容だけでなく、キーボードショートカットといった、インタフェース操作を向上させる機能と連動させることで、操作性の向上をはかることもある。
GUIと各種デバイス
上記にあげたデバイス以外にも、タブレットなどのペンデバイスによる操作もあり、特に画像データ操作や手書き入力において威力を発揮する。
タッチパネルによるGUI
タッチパネルに表示されたボタンやアイコンに直接指やペンで触れることで、各種の操作を行うデバイスもあり、ATMなどで一般化している。カーナビゲーションシステムやニンテンドーDSでも使われ、直感的な操作に優れる。2007年以降、パッドに接触する指の本数を認識し、その振る舞いを変えるマルチタッチ対応パネルを利用した機器が市場に出回るようになった。
GUIを採用しているオペレーティングシステム
- 現行のもの
- 過去のもの