그래픽 사용자 인터페이스

[섬네일|240px|다양한 요소(라디오 버튼, 확인란 등)를 보여주는 그래픽 사용자 인터페이스(GUI). 표시된 이미지는 [KDE 데스크톱 환경을 사용한다.]]
**그래픽 사용자 인터페이스**()}}는 그래픽 아이콘 및 보조 표기법과 같은 시각적 지표를 통해 사용자가 전자 장치와 상호 작용할 수 있도록 하는 사용자 인터페이스의 한 형태이다. 많은 응용 프로그램에서 GUI는 입력된 명령 레이블 또는 텍스트 탐색을 기반으로 하는 텍스트 기반 UI 대신 사용된다. GUI는 컴퓨터 자판에 명령을 입력해야 하는 명령줄 인터페이스(CLI)의 가파른 학습 곡선에 대한 반응으로 도입되었다.

GUI의 작업은 일반적으로 그래픽 요소의 직접 조작을 통해 수행된다. 컴퓨터 외에도 GUI는 MP3 플레이어, 휴대용 미디어 플레이어, 게임 장치, 스마트폰 및 더 작은 가전제품, 사무실, 산업용 제어 장치와 같은 많은 휴대용 모바일 장치에 사용된다. GUI라는 용어는 비디오 게임(HUD)과 같은 기타 낮은 해상도 유형의 인터페이스 또는 체적 디스플레이와 같이 평면 스크린을 포함하지 않는 인터페이스에는 적용되지 않는 경향이 있다. 이 용어는 팰로앨토 연구소의 컴퓨터 과학 연구 전통에서 일반적인 정보를 설명할 수 있는 2D 디스플레이 스크린의 범위로 제한되기 때문이다.

## GUI 및 상호 작용 설계
[섬네일|350px|GUI는 컴퓨터 화면에 표시된다. 이는 처리된 사용자 입력의 결과이며 일반적으로 인간-기계 상호 작용을 위한 기본 인터페이스이다. 소형 모바일 장치에서 인기 있는 [터치 사용자 인터페이스|터치 UI는 시각적 출력과 시각적 입력이 겹쳐진 형태이다.]]

GUI의 시각적 구성과 시간적 동작을 설계하는 것은 인간-컴퓨터 상호 작용 분야의 응용 소프트웨어 프로그래밍에서 중요한 부분이다. 그 목표는 저장된 컴퓨터 프로그램의 기본 논리적 설계에 대한 효율성과 사용 편의성을 높이는 것이며, 이러한 설계 분야를 사용성이라고 한다. 사용자 중심 설계 방법은 설계에 도입된 시각적 언어가 작업에 잘 맞도록 보장하는 데 사용된다.

응용 프로그램의 가시적인 그래픽 인터페이스 기능은 때때로 크롬 또는 GUI라고 불린다. 일반적으로 사용자는 데이터 종류에 적합한 상호 작용을 허용하는 시각적 위젯을 조작하여 정보와 상호 작용한다. 잘 설계된 인터페이스의 위젯은 사용자의 목표를 달성하는 데 필요한 작업을 지원하도록 선택된다. 모델-뷰-컨트롤러는 인터페이스가 응용 프로그램 기능과 독립적으로 간접적으로 연결되는 유연한 구조를 허용하므로 GUI를 쉽게 사용자 지정할 수 있다. 이를 통해 사용자는 원하는 대로 다른 스킨이나 테마를 선택하거나 디자인할 수 있으며, 사용자 요구가 진화함에 따라 디자이너의 인터페이스 변경 작업을 용이하게 한다. 좋은 GUI 디자인은 시스템 아키텍처보다 사용자와 더 관련이 있다.
창과 같은 큰 위젯은 일반적으로 웹 페이지, 이메일 메시지 또는 그림과 같은 주요 프레젠테이션 콘텐츠를 위한 프레임 또는 컨테이너를 제공한다. 작은 위젯은 일반적으로 사용자 입력 도구로 작동한다.

GUI는 특정 수직 시장의 요구 사항에 맞게 응용 프로그램별 GUI로 설계될 수 있다. 예로는 자동 현금 인출기(ATM), 식당의 판매 시점 정보 관리(POS) 터치스크린, 소매점에서 사용되는 셀프 서비스 계산대, 항공사 셀프 티켓 및 체크인, 기차역이나 박물관과 같은 공공 장소의 정보 키오스크, 실시간 운영체제 (RTOS)를 사용하는 내장형 산업 응용 프로그램의 모니터 또는 제어 화면이 있다.

휴대 전화 및 휴대용 게임 시스템 또한 응용 프로그램별 터치스크린 GUI를 사용한다. 최신 자동차는 내비게이션 시스템 및 멀티미디어 센터 또는 내비게이션 멀티미디어 센터 조합에 GUI를 사용한다.

## 예시

파일:GNOME Shell.png|그놈 셸
파일:KDE Plasma 6.3.6 screenshot.png|KDE 플라즈마 6
파일:Ubuntu Mate 18.04.1 with MATE 1.20.1.png|MATE
파일:Wayland demo 2.png|예시 웨이랜드 컴포지터의 창
파일:XFCE-4.12-Desktop-standard.png|Xfce
파일:E17 bw screenshot.png|인라이튼먼트
파일:Sugar-home-view-0.82.jpg|슈거
파일:X-Window-System.png|Twm X 윈도 시스템 환경
파일:Dwm-shot.png|Dwm 타일링 창 관리자
파일:Linux Mint 19.1 "Tessa" (Cinnamon).png|시나몬
파일:Phosh 0.14.0.png|포시


## 구성 요소
[섬네일|300px|[윈도 시스템 기반 GUI의 레이어]]

GUI는 사용자가 정보를 수집하고 생성하는 작업을 위해 상호 작용할 수 있는 플랫폼을 제공하기 위해 기술과 장치의 조합을 사용한다.

컴퓨터에 저장된 정보를 나타내기 위해 일련의 시각언어 요소가 발전해 왔다. 이를 통해 컴퓨터 기술이 부족한 사람들도 컴퓨터 소프트웨어를 더 쉽게 사용하고 작업할 수 있다. GUI에서 이러한 요소의 가장 일반적인 조합은 특히 개인용 컴퓨터에서 창, 아이콘, 텍스트 필드, 캔버스, 메뉴, 포인터(WIMP) 패러다임이다.

WIMP 상호 작용 스타일은 가상 입력 장치를 사용하여 포인팅 장치의 인터페이스(대부분 컴퓨터 마우스) 위치를 나타내고, 창으로 구성되고 아이콘으로 표현된 정보를 표시한다. 사용 가능한 명령은 메뉴에 함께 컴파일되며, 포인팅 장치로 제스처를 만들어서 작업이 수행된다. 창 관리자는 창, 응용 소프트웨어, 윈도 시스템 간의 상호 작용을 용이하게 한다. 윈도 시스템은 포인팅 장치, 그래픽 하드웨어, 포인터 위치 지정과 같은 하드웨어 장치를 처리한다.

개인용 컴퓨터에서는 이러한 모든 요소가 데스크톱 메타포를 통해 모델링되어 데스크톱 환경이라는 시뮬레이션을 생성하는데, 여기서는 디스플레이가 문서 및 문서 폴더를 놓을 수 있는 데스크톱을 나타낸다. 창 관리자 및 기타 소프트웨어는 다양한 현실성을 가지고 데스크톱 환경을 시뮬레이션한다.

항목은 텍스트 및 세부 정보를 위한 공간을 만들기 위해 목록으로 표시되거나, 텍스트를 위한 작은 공간과 함께 더 큰 아이콘으로 컴팩트하게 표시하기 위해 그리드로 표시될 수 있다.

웹에서 흔히 볼 수 있는 다중 행 및 다중 열 레이아웃은 "선반"과 "폭포"이다. 전자는 이미지 검색 엔진에서 발견되며, 이미지는 고정된 높이지만 가변 길이를 가지며 일반적으로 CSS 속성 및 매개변수 `display: inline-block;`으로 구현된다. Imgur 및 트윗덱에서 발견되는 폭포 레이아웃은 고정된 너비이지만 항목당 가변 높이를 가지며 일반적으로 `column-width:`를 지정하여 구현된다.

## 포스트-WIMP 인터페이스

PDA 및 스마트폰과 같은 작은 앱 모바일 장치는 일반적으로 공간 및 사용 가능한 입력 장치 제약으로 인해 다른 통합 메타포를 사용하여 WIMP 요소를 사용한다. WIMP에 적합하지 않은 응용 프로그램은 포스트-WIMP UI로 총칭되는 새로운 상호 작용 기술을 사용할 수 있다.

2011년 현재 Apple의 iOS (아이폰) 및 안드로이드와 같은 일부 터치스크린 기반 운영 체제는 포스트-WIMP라는 GUI 클래스를 사용한다. 이들은 디스플레이와 접촉하는 두 개 이상의 손가락을 사용하는 상호 작용 스타일을 지원하며, 이는 하나의 포인터와 마우스로는 지원되지 않는 핀칭 및 회전과 같은 동작을 허용한다.

## 상호 작용
GUI와 효율적으로 상호 작용하기 위한 인간 인터페이스 장치로는 컴퓨터 자판(특히 단축키와 함께 사용), 커서(또는 포인터) 제어를 위한 포인팅 장치: 마우스, 포인팅 스틱, 터치패드, 트랙볼, 조이스틱, 가상 키보드, 전방 시현기(눈높이의 반투명 정보 장치) 등이 있다.

GUI에 영향을 미치는 프로그램에 의해 수행되는 작업도 있다. 예를 들어, 컴퓨터 프로그램 간의 통신을 용이하게 하는 Inotify 또는 D-Bus와 같은 구성 요소가 있다.

## 역사

### 초기 노력
아이번 서덜랜드는 1963년에 최초의 그래픽 컴퓨터 지원 설계 프로그램으로 널리 알려진 스케치패드를 개발했다. 이것은 라이트 펜을 사용하여 실시간으로 엔지니어링 도면의 객체를 좌표 그래픽으로 생성하고 조작했다. 1960년대 후반, 더글러스 엥겔바트가 이끄는 스탠포드 연구소의 연구원들은 당시 새로운 장치인 마우스로 조작되는 텍스트 기반 하이퍼링크를 사용하는 온라인 시스템(NLS)을 개발했다. (1968년 NLS 시연은 "모든 데모의 어머니"로 알려지게 되었다.) 1970년대에 엥겔바트의 아이디어는 제록스 PARC의 연구원들, 특히 텍스트 기반 하이퍼링크를 넘어 1973년에 출시된 제록스 알토 컴퓨터에서 실행되는 스몰토크 프로그래밍 언어의 주요 인터페이스로 GUI를 사용한 앨런 케이에 의해 그래픽으로 더욱 정교화되고 확장되었다. 대부분의 현대 범용 GUI는 이 시스템에서 파생되었다.

제록스 PARC GUI는 창, 메뉴, 라디오 단추 및 확인란과 같은 그래픽 요소로 구성되었다. 아이콘 개념은 나중에 케이의 지도 아래 이 주제에 대한 논문을 썼던 데이비드 캔필드 스미스에 의해 도입되었다. PARC GUI는 키보드와 함께 포인팅 장치를 사용한다. 이러한 측면은 창, 아이콘, 메뉴, 포인팅 장치(WIMP)에 대한 대체 용어 및 약어를 사용하여 강조할 수 있다. 이러한 노력은 1973년 GUI를 갖춘 최초의 컴퓨터인 제록스 알토로 절정에 달했지만, 이 시스템은 상업적 생산에는 이르지 못했다.

GUI를 갖춘 최초의 상업적으로 이용 가능한 컴퓨터는 Three Rivers Computer Corporation이 제조한 1979년 PERQ 워크스테이션이었다. 이 디자인은 제록스 PARC의 작업에 크게 영향을 받았다. 1981년, 제록스는 결국 알토의 아이디어를 새롭고 향상된 시스템인 제록스 8010 정보 시스템(일반적으로 제록스 스타로 알려짐)의 형태로 상업화했다. 이러한 초기 시스템은 심볼릭스 및 기타 제조업체의 리스프 머신, 1983년 메뉴 모음 및 창 제어 개념을 제시한 애플 리사, 1984년 애플 매킨토시 128K, 그리고 디지털 리서치의 GEM을 사용한 아타리 ST 및 1985년 아미가를 포함한 많은 다른 GUI 노력을 촉발했다. Visi On은 1983년 IBM PC 호환 컴퓨터용으로 출시되었지만 높은 하드웨어 요구 사항으로 인해 인기를 얻지 못했다. 그럼에도 불구하고, 이는 마이크로소프트 윈도우의 동시대 개발에 결정적인 영향을 미쳤다.

애플, 디지털 리서치, IBM 및 마이크로소프트는 제록스의 많은 아이디어를 제품 개발에 사용했으며, IBM의 공통 사용자 인터페이스 사양은 마이크로소프트 윈도우, IBM OS/2 프레젠테이션 관리자 및 유닉스 모티프 툴킷 및 창 관리자에 사용된 GUI의 기반을 형성했다. 이러한 아이디어는 현재 버전의 마이크로소프트 윈도우 및 MacOS와 리눅스와 같은 유닉스 계열 운영체제용 다양한 데스크톱 환경에서 발견되는 인터페이스를 만드는 데 발전했다. 따라서 대부분의 현재 GUI는 대체로 공통적인 관용구를 가지고 있다.
[섬네일|[애플 컴퓨터의 첫 상용 GUI를 특징으로 하는 Lisa Office System (LisaOS)을 시연하는 애플 리사(1983).]]

### 대중화
[섬네일|[HP 200LX에서 실행되는 HP LX 시스템 관리자.]]
1980년대 초반에는 GUI에 대한 관심이 커졌다. 애플 리사가 1983년에 출시되었고, 도스 운영 체제용으로 다양한 윈도 시스템이 존재했다(PC GEM 및 PC/GEOS 포함). 많은 플랫폼용 개별 응용 프로그램은 자체 GUI 변형을 제시했다. GUI의 장점에도 불구하고 많은 평론가들은 하드웨어 제한 및 호환 가능한 소프트웨어 찾기 문제점을 들어 전체 개념의 가치에 의문을 제기했다.

1984년에 애플은 CBS의 슈퍼볼 XVIII 중계 방송에서 애플 매킨토시를 소개하는 텔레비전 광고를 발표했다. 이 광고는 조지 오웰의 소설 1984를 암시하며 사람들이 컴퓨터에 대해 생각하도록 하는 것을 목표로 했다. 사용자 친화적인 인터페이스를 이전의 비즈니스 지향 시스템과 다른 개인용 컴퓨터로 식별하고 애플 제품의 특징적인 상징이 되었다.

1985년에 코모도어는 아미가 1000을 워크벤치 및 킥스타트 1.0 (인튜이션 포함)과 함께 출시했다. 이 인터페이스는 별도의 작업으로 실행되어 매우 반응성이 좋았고, 당시 다른 GUI와 달리 프로그램이 바쁠 때 멈추지 않았다. 또한 가상 데스크톱과 유사한 것을 처음으로 도입한 GUI였다.

광범위한 마케팅 캠페인을 동반한 윈도우 95는 출시 당시 시장에서 큰 성공을 거두었으며 곧 가장 인기 있는 데스크톱 운영 체제가 되었다.

2007년 아이폰과 2010년 아이패드 도입 이후 애플은 멀티터치 화면용 포스트-WIMP 스타일 상호 작용을 대중화했으며, 이 장치들은 모바일 장치 개발의 이정표로 간주되었다.

2010년대 중후반 현재 대부분의 사람들에게 익숙한 GUI는 데스크톱 및 노트북 컴퓨터용 마이크로소프트 윈도우, MacOS, X 윈도 시스템 인터페이스이며, 휴대용 (스마트폰) 장치용으로는 안드로이드, 애플의 iOS, 심비안, 블랙베리 OS, 윈도우 폰/윈도우 10 모바일, 타이젠, 웹OS, 파이어폭스 OS가 있다.

## 다른 인터페이스와의 비교

### 명령줄 인터페이스
섬네일|현대적인 명령줄 인터페이스(CLI)
명령줄 인터페이스에서 사용 가능한 명령은 많을 수 있으므로 짧은 단어와 기호 시퀀스를 사용하여 복잡한 작업을 수행할 수 있다. 사용자 정의 기능을 사용하여 자주 사용하는 작업에 쉽게 접근할 수 있다.
명령줄 인터페이스는 작업에 필요한 정보만 호출하므로 웹 페이지의 미리 보기 축소판이나 그래픽 렌더링이 없는 등 경량이다. 이를 통해 많은 명령을 학습하면 효율성과 생산성이 향상된다. 그러나 명령어가 쉽게 찾기 어렵거나 기억하기 어려울 수 있으므로 이 수준에 도달하는 데는 시간이 걸린다. 또한 사용자가 많은 매개변수나 여러 개의 다른 파일 이름을 한 번에 포함하는 긴 명령을 입력해야 할 때 명령줄 사용은 느려지고 오류가 발생하기 쉽다. 그러나 창, 아이콘, 메뉴, 포인터(WIMP) 인터페이스는 사용자에게 시스템에서 사용 가능한 명령 중 일부를 나타내고 트리거할 수 있는 많은 GUI 위젯을 제공한다.

GUI는 대화 상자가 시스템 깊숙이 묻혀 있거나 재설계 중에 다른 위치로 이동될 때 매우 어려워질 수 있다. 또한 아이콘 및 대화 상자는 일반적으로 사용자가 스크립트 작성하기 더 어렵다.

WIMP는 모드를 광범위하게 사용하며, 화면의 특정 위치에 있는 모든 키와 클릭의 의미는 항상 재정의된다. 명령줄 인터페이스는 현재 디렉토리 및 환경 변수와 같은 제한된 형태로만 모드를 사용한다.

대부분의 최신 운영체제는 GUI와 어느 정도의 CLI를 모두 제공하지만, GUI가 일반적으로 더 많은 관심을 받는다.

### GUI 래퍼
GUI 래퍼는 (일반적으로) 리눅스 및 유닉스 계열 소프트웨어 애플리케이션의 명령줄 인터페이스(CLI) 버전과 텍스트 기반 UI 또는 입력된 명령 레이블을 우회하는 방법을 찾는다. 명령줄 또는 텍스트 기반 애플리케이션을 사용하면 사용자가 프로그램을 비대화식으로 실행할 수 있지만, 그 위에 있는 GUI 래퍼는 컴퓨터 자판에 명령을 입력해야 하는 명령줄의 가파른 학습 곡선을 피한다. GUI 래퍼를 시작함으로써 사용자는 예를 들어 데스크톱 환경의 그래픽 아이콘과 시각적 지표를 통해 직관적으로 상호 작용하고, 시작하고, 중지하고, 작동 매개변수를 변경할 수 있다. 애플리케이션은 두 인터페이스를 모두 제공할 수 있으며, 이 경우 GUI는 일반적으로 명령줄 버전 주위에 WIMP 래퍼이다. 이는 유닉스 계열 운영 체제용으로 설계된 애플리케이션에서 특히 흔하다. 후자는 개발자가 아이콘 디자인 및 버튼 배치와 같은 인터페이스 세부 사항에 신경 쓰지 않고 제품의 기능에만 집중할 수 있도록 먼저 구현되었다. 이러한 방식으로 프로그램을 설계하면 사용자가 셸 스크립트에서도 프로그램을 실행할 수 있다.

## 3차원 그래픽 사용자 인터페이스

많은 환경과 게임은 3차원 그래픽스의 방법을 사용하여 3D GUI 객체를 화면에 투영한다. 3D 그래픽스의 사용은 주류 운영 체제(예: 윈도우 에어로 및 아쿠아 (macOS))에서 매력적인 인터페이스, 즉 눈요기(예를 들어 창 아래의 그림자 효과 및 커서 사용 포함)를 만들거나 3차원만으로 가능한 기능적 목적을 위해 점점 더 보편화되었다. 예를 들어 사용자 전환은 각 사용자의 작업 공간을 나타내는 면을 가진 큐브를 회전하여 표현되며, 창 관리는 윈도우 비스타에서 롤로덱스 스타일의 플립 메커니즘을 통해 표현된다(윈도우 플립 3D 참조). 두 경우 모두 운영 체제는 해당 창의 내용을 계속 업데이트하면서 창을 즉석에서 변환한다.

GUI는 일반적으로 WIMP 기반이지만, 때때로 마이크로소프트 밥, 3dwm, 파일 시스템 내비게이터, 파일 시스템 비주얼라이저, 3D 메일박스 및 고퍼VR에서 사용된 것과 같은 다른 메타포도 등장한다. 줌 인터페이스(ZUI)는 방향 문제 및 숨겨진 객체와 같은 3D 환경의 사용성 단점 없이 3D 환경의 표현 이점을 제공할 것을 약속하는 관련 기술이다. 2006년 힐크레스트 랩스는 텔레비전용 최초의 ZUI를 도입했다. 다른 혁신으로는 플레이스테이션 2의 메뉴, 엑스박스의 메뉴, 썬의 프로젝트 루킹 글래스, 프로젝트 루킹 글래스와 유사한 메티스, 사용자가 실제 문서처럼 사실적인 움직임과 물리학으로 문서와 창을 조작할 수 있는 범프톱, 협업을 위해 구축된 크로켓 OS, 인라이튼먼트 및 컴피즈와 같은 컴포지팅 창 관리자가 있다. 증강 현실 및 가상 현실도 3D GUI 요소를 사용한다.

### SF에서
3D GUI는 특정 기술이 실현 가능하거나 일반적으로 사용되기 전에도 SF 문학과 SF 영화에 등장했다.

* 산문 소설에서 3D GUI는 윌리엄 깁슨의 "가상 공간"과 닐 스티븐슨의 "메타버스" 및 "아바타"로 명명된 몰입형 환경으로 묘사되었다.
* 1993년 미국 영화 쥬라기 공원에는 실리콘 그래픽스의 3D 파일 관리자 파일 시스템 내비게이터(유닉스 운영 체제용 실제 파일 관리자)가 등장한다.
* 영화 마이너리티 리포트에는 경찰관들이 특수 3D 데이터 시스템을 사용하는 장면이 있다.

## 같이 보기
* 아이콘
* 인간공학
* 룩 앤드 필
* 내추럴 사용자 인터페이스
* Ncurses
* 리치 인터넷 애플리케이션
* 스큐어모피즘
* 테마 (컴퓨팅)
* 사용자 경험 디자인
* 사용자 인터페이스 디자인
* 벡터 기반 그래픽 사용자 인터페이스

## 각주

## 외부 링크
* 
* Evolution of Graphical User Interface in last 50 years by Raj Lal


분류:미국의 발명품
분류:소프트웨어 구조