「GUI」はこの項目へ転送されています。(曖昧さ回避)」をご覧ください。Interface、略称:GUI(ジーユーアイ))は、コンピュータグラフィックスとポインティングデバイスなどを用いる、グラフィカル(ビジュアル)であることを特徴とするユーザインタフェース。対比して語られることが多い(「対義語」として語られることが多いが、対義語ではない。歴史[編集]SAGE制御室。スクリーンにはアメリカ東海岸が表示されている。二つのターゲットが追跡されているところ世界初の実用となったGUIは1963年に完成したSAGEというアメリカ空軍の開発した防空管制システムである。これはCRTとライトガンを備えており、核爆弾を搭載した敵航空機を迎撃するために多数のレーダーからの情報を統合し、複数のオペレーターがライトガンで迎撃目標を指示するだけで全軍の適切な箇所に自動で指令が届き、その結果レーダー情報の膨大さを気にすることなく的確に敵機を迎撃できるというものであった。リアルタイムに膨大な情報から適切な選択を行うという点において、このシステムはGUIの本質を示すものである。コンピュータより前からある技術として、レーダーの表示などといったものを考えれば、テレタイプライタなどの(同様に、コンピュータ以前からある)CUIと、GUIは同時に発展してきたものと言える。軍事的にも、CUIによるシステムも同時に使われていた[1]。オシロスコープはテレビやディスプレイと同じ原理を使った装置だが、コンピュータの内部の信号を直接観察できる装置としても都合が良いため、初期のコンピュータではしばしばそのような目的でブラウン管が情報出力のために備えられていた。これはGUIとして扱うには機能的には足りないものだが、最初期のコンピュータの1基であるEDSACにも付いており、OXOというゲームに使われている。実用の目的で情報表示にブラウン管が使われた例としてはMARS-1(1960年、日本国有鉄道)がある。1960年代の米国において、サザランドのSketchpadや、マウスの発明者でもあるダグラス・エンゲルバートによるNLSなどといった、(軍用などの専用目的ではなく、汎用を意図した)初期のGUIシステムが開発された。NLSはエンゲルバートの提唱する「人間知性の拡大」という概念を実現するために作られており、ハイパーテキスト、ハイパーリンク、マルチウインドウなどの今日的なGUIには必須の概念を実装して見せたきわめて革新的なものである。ジャーナルと呼ばれるハイパーテキストベースの文書共有システムは正にWikiと同じ概念である文書によるコラボレーション・グループウェアを実装したものである。NLSの本質は単なるGUIの実装ではなく、GUIは会話・画像・文書をリアルタイムで共有する電子会議を通じた知的共有グループウェアを実現するための手段であった。後にWYSIWYGと呼ばれることになる機能もこのとき既に実装されていた[2]。AltoやNoteTakerで動作した暫定Dynabook環境(Smalltalk-76、同-78の頃)のGUI1970年代には、アラン・ケイにより、誰でも簡単に使えることを目指して暫定Dynabook環境が作られた。General社のNovaでスクリプト言語的な位置づけで開発されたSmalltalk-72だったが、約5〜10倍の能力とビットマップディスプレイ、マウスを装備したAltoへと移植され、マシンパワーを得るとすぐにオーバーラップ可能なウインドウシステムの構築が試みられた(Smalltalk-74)。このマルチウインドウシステムを効率よく機能させるために後に考え出されたダブルバッファリングおよびBitBltは、現在も、ちらつきのない画面描画のために使われるアルゴリズムおよびデータ操作/ハードウェア機能として知られる。Wordの前身と言われるようになるBravoを開発していた別グループとの情報交換を経てパロアルト研究所初のWYSIWYGエディタも実装される。70年代半ば過ぎにはマウスによる操作、メニューによる命令実行、オーバーラップマルチウインドウシステム、絵と文章の共存できるWYSIWYGのマルチフォントエディタ、アイコンによる機能やオブジェクトの簡易表現など、現在ごくふつうに見られるグラフィカルユーザインタフェースの主要な要素は固まっていた。Smalltalk-72、同-74の後継であるSmalltalk-76ではさらに洗練・整備され、それを1979年に見たスティーブ・ジョブズが策定中のLisaの仕様決定に役立てた[3]。概要[編集]GUIでは、コンピュータの画面上に、ウィンドウ、アイコン、ボタンといったグラフィックが表示され、ユーザはそれらの中から目的の動作を表すグラフィックスをマウスなどのポインティングデバイスで選択する。基本的には「デスクトップ」「ウィンドウ」「メニュー」「アイコン」「ボタン」など要素を組み合わせて構成され、それらをポインティングデバイスによって操作されるカーソルを通じて指示を与える。端的に言うと、画面上のボタンや画像などを選択する事でリアクションを発生させる仕組みを総称してGUIと言う。構成要素[編集]デスクトップ(1)「デスクトップメタファ」のこと。(2)ウインドウなどが表示される重なりの最下層に相当する「画面全体」のこと。Windows方言だが一般の用語だと思っている者も多い。ルートウィンドウと言う。(3)「デスクトップ環境」のこと。(4)以下は、以上のことについての混乱した説明である。この上にウィンドウを重ねることによってインタフェースはマルチタスクを実現する。一般的なインタフェースでは、ここにアプリケーションやデータのアイコンをおき、ここから作業を開始できるようにする。この画面は、既存のディレクトリ構成とは相容れない立場のため、特殊な位置におかれるディレクトリを参照する形でデータの内容を定義する。デスクトップの背景に画像や各種アクセサリを置いて、視覚的に楽しませる機能が提供される。Desktopやガジェットなど(ウィジェットエンジン)を置くこともできる。最近では、仮想デスクトップをキューブで表示する、アイコンの配置に立体感を着ける、ウィンドウを立体的に表示など、3D効果によって操作性を向上するデスクトップ環境が増えている。Glassなどが例に挙げられる。ウィンドウアプリケーションがデータを扱うためのグラフィカルインタフェースにおけるひとつの単位となるもの。ウィンドウ内においては、アプリケーションとデータは一体化する。ここにおいて、アプリケーションを操作し、データを管理、生成、編集する。通常はメニュー、アイコンなどを周辺に配置し、中央にデータをおく。ウィンドウには、データやアプリケーションに応じてタイトルが付けられ、ウィンドウの最上部にタイトルがおかれる。ウィンドウの最前面、タイトルだけを表示する「シェード」などがサポートされ、これにより、ウィンドウの操作を簡単に行うことが出来る。(SDI)ウィンドウにおいて、ひとつのデータをひとつのウィンドウ内に完結させる方式。この場合は、データの数だけ、ウィンドウが出力される。他のアプリケーションのウィンドウと突き合わせて利用できるが、その分だけ、ウィンドウの数が多くなり、管理が繁雑になる。(MDI)ひとつのウィンドウ内に入れ子状にウィンドウが表示され、複数のデータ管理を行う方式。この場合は、ウィンドウ管理が簡単になるが、作業の管理が二重になる。タブMDIにおけるデータ管理方式のうち、データのタイトルをウィンドウ内に並べ、タイトルを選んで必要なデータだけを表示するもの。これにより、簡単にデータにアクセスできるようになる。(OS)より指示できるコマンドを階層上に表現したもの。画面上部、または画面下部におかれ、そのアプリケーションから利用できるコマンドがほぼ全て配置される。通常は左に重要度の高いものがおかれ、右にいくにしたがって重要度は低くなる。コマンドの階層はアプリケーションにより異なるが、ファイル操作、編集の機能を重視して、それらのコマンドから左側からおかれ、右には、ヘルプなどがおかれる。マウスの第一ボタンによって操作する。コンテキストメニューアプリケーションの用意した階層上のメニューとは別に、メニュー以外のところでマウスの第二ボタンなどを押した際に機能するメニューの事。ボタンが呼び出された位置に応じてメニューの内容が変化し、編集操作を簡単に行うことが出来るようになっている。アイコンデータ管理アプリケーションにおいて、データ、アプリケーション、ディレクトリなど表現したもの。データ管理アプリケーション、すなわち、ディレクトリにおけるユーザーデータの管理や、特定のデータを管理を行うアプリケーションの場合、アイコンによりデータを表現する。通常は、データの中身や、拡張子などから関連づけられたアプリケーションを表現するが、ユーザーが自由に変更する場合もある。データのアイコンは開くことにより、関連づけられたアプリケーションの起動からサポートしてくれる。アプリケーションアイコンは、アプリケーションの起動だけを行う。ボタンメニューのうち、利用頻度の高いコマンドを絵で表現し、アプリケーション内に配置したもの。アプリケーション上におかれるボタンは、普通はメニューの代わりをする。利用頻度の高いものからおかれ、メニューの階層を辿らなくてもその機能が使えるようになっている。ユーザーによりコマンドの利用頻度は異なるので、この配置を編集できるようになっているのが普通である。その他[編集]ごみ箱ファイル消去に対するフェイルセーフを果たすために、「ゴミ箱」などと呼ばれる機能を持つものがある。これは、ファイルの消去を行なう際に、一時的に別の場所に移すことで、誤ったファイル消去を未然に防ぐことが出来る。Macintoshでは、ゴミ箱はファイルだけでなく、さまざまなオブジェクトの削除の機能を持っている。アプリケーションランチャGUI上からアプリケーションを呼び出す際に様々な方式があるが、いくつかのOSではメニュー形式のアプリケーションランチャを持っている。NEXTSTEPとmacOSでは、ドックと呼ばれるパレット型の機構を持ち、ファイルやアプリケーションの各種の情報を格納してクリックでそれらを呼び出せる。GUIにおけるタスク管理[編集]GUIにおいて、作業はウィンドウ単位に分割される。タスクの数」であることが多い。このため、インタフェース全体で見た場合、どのようにしてタスク管理を行うかが重要になる。95以降のWindowsファミリーをはじめとしていちばん多い方式は、タスクバーと呼ばれる棒状の領域をデスクトップ上に用意し、ここに、各ウィンドウのアイコンやタイトルを並べるものである。これにより、視認性、操作性を確保しながら、多くのウィンドウを管理することができる。WebOSなどの方式)などの方法がある。Controlというウィンドウ一覧表示モードも併用されている。ポインティングデバイスによる操作[編集]GUIの基本は、ポインティングデバイスによってカーソルを操作し、デバイスに付いたボタン(通常2〜3個)を押すことである。これにより、「位置」と「指示」を明確にし、視覚的な操作を行うことが出来る。指示の内容は、カーソルの位置によって異なる。データ管理アプリケーションでは、第1ボタンは、カーソルの位置にあるデータを選択し、2回連続で押す(ダブルクリックする)ことによって、データに応じて適宜定義されたアプリケーションを呼び出し、処理を開始する。アプリケーションのメニュー、ボタン上では、そのコマンドを開始する。データ上では、データにおける操作の位置を指示する。第2ボタンは、通常、どの場合でも、アプリケーションによって定義されたコンテキストメニューを出力する。このメニューを第一ボタンによって指示することで、そのコマンドを実行することができる。Systemではよく使われる。最近は第4ボタン、第5ボタンを装備したマウスや、第3ボタンがウィンドウに直接機能するホイール機能を兼ねているものがあり、適宜、アプリケーション又はOSによって定義された機能を提供する。GUIとキーボード[編集]GUIにおいても、キャラクタユーザインタフェースに劣らず、キーボードは重要なデバイスである。データの内容だけでなく、キーボードショートカットといった、インタフェース操作を向上させる機能と連動させることで、操作性の向上をはかることもある。GUIと各種デバイス[編集]上記にあげたデバイス以外にも、タブレットなどのペンデバイスによる操作もあり、特に画像データ操作や手書き入力において威力を発揮する。タッチパネルによるGUI[編集]タッチパネルに表示されたボタンやアイコンに直接指やペンで触れることで、各種の操作を行うデバイスもあり、ATMなどで一般化している。カーナビゲーションシステムやニンテンドーDSでも使われ、直感的な操作に優れる。2007年以降、パッドに接触する指の本数を認識し、その振る舞いを変えるマルチタッチ対応パネルを利用した機器が市場に出回るようになった。実装GUIは様々な方法・ライブラリを用いて生成される。ユーザーへ提示される視覚的要素はしばしばViewと呼ばれ、ユーザーからの入力を扱う内部要素はしばしばControllerと呼ばれる。宣言的UI[編集]宣言的UIは宣言型プログラミングを用いて構成されたGUI、それを実現する手法である。GUIの生成・更新を変更前状態に基づいた更新命令によってコーディングするのではなく、あるべき状態を宣言してコーディングする。状態を分離することでUIの状態をより予測しやすいものにできる。テンプレートエンジンは静的テンプレートと動的変数の関係を宣言しているとみなせるため、更新された状態とテンプレートからテンプレートエンジンによってUI生成をおこなってUIを更新する形は宣言的UIといえる。いった意味でも宣言的UI自体は古くから存在するGUI実装手法の1つである。2010年代中盤におけるWebアプリケーションの分野を皮切りに、様々なデバイスで宣言的UIを標榜するUIフレームワークが登場している。(マルチプラットフォーム)データバインディング[編集]詳細は「データバインディング」を参照データ(モデル)とUI(View)を結びつけ、片方の変更を暗示的に他方へ伝播する手法をデータバインディングという。宣言的UIと組み合わせることで、モデルの変更が自動的に宣言的UIの更新へと暗示的に反映されるようになる。ウィンドウ環境におけるターミナルエミュレータなどが「両方」である典型であろう。エンゲルバートによる1968年のプレゼンテーションの一部。SwiftUIは宣言型シンタックスを使用しているため、ユーザーインターフェイスの動作をシンプルに記述することができます。UI関連項目[編集]ウィキメディア・コモンズには、グラフィカルユーザインタフェースに関連するカテゴリがあります。(日時は個人設定で未設定ならばUTC)。表示-継承ライセンスの下で利用可能です。追加の条件が適用される場合があります。詳細は利用規約を参照してください。Cookieに関する声明モバイルビュ。