컴퓨터가 생기면서 자연히 컴퓨터와 사용자간의 의사 소통에 대한 약속 또는 규약이 생기게 되었다. 이를 컴퓨터 입장에서 User Interface가 되고 이 단어가 키워드로서 컴퓨터 전반에 사용된다.
1. 1세대 UI
컴퓨터와 사용자간의 입력 도구인 키보드는 글자를 통해서 컴퓨터와 유저간의 의사 소통을 위한 도구이다. 컴퓨터가 글자를 알리가 없기에 키보드를 누를때 발생하는 전기 신호(Key Scan Code)를 컴퓨터가 인식해서 해당되는 글자로 인식하게 된다. 컴퓨터가 알고 있는 글자의 전체 셋을 규약으로 정할 필요가 자연히 생기는데, 이를 Code Set이라 한다. 처음 생긴게 아마도 ASCII Code이며 아직도 사용된다.
컴퓨터에서 프로그램 코드중 스캔코드를 받아 특정 코드셋을 통해 컴퓨터가 알아 먹는 방식으로 변환하는 부분을 쉘(Shell) 이라고 한다. 컴퓨터를 하나의 덩어리로 보고 외부와 접촉하는 껍질(Shell) 부분이라는 의미이다. 무슨 조개 껍데기도 아니고... 아무튼 용어는 사용하다 보면 익숙해 진다.
유닉스에서는 csh(C shell), bash(Bone Shell), tcsh 등이 있으며, DOS에서는 Command 창이 있다. 이 방식에는 프롬프트(Prompt)라는 개념이 있다. 컴퓨터가 "나 한가해용. 어서 명령을 내려 주세요"라는 의미로 사용자에게 나타내는 글자를 의미한다.
# --> 본쉘 프롬프트
> --> 씨쉘 프롬프트
c:\Foo> --> 도스 프롬프트
>>> --> 파이썬 프롬프트
이 쉘상에서 사용자가 생각하게 UI 개선에 대한 생각은 아래와 같다.
1) 자동 단어 완성 (Auto word Completion)
이전에 사용했던 명령이나 사전이라는 정보에 있는 단어라면 앞에 단어만 치고 특정키(탭을 많이 사용)를 치면 알아서 완성되도록 해주는 개념이다.
2) 단축키 (Short Key)
Shift나 Control 이라는 특정키를 치면 일일이 명령을 다 안쳐도 바로 실행되도록 하는 기능이다. 아직도 주로 사용한다.
이 텍스트에 기반한 사용자 인터페이스는 끝이 없다. 아직도 문서 작성에서는 이를 사용해야 하니까... 언제까지나 영원할 꺼 같다.
시간이 흘러서 쉘에서 한줄만 사용하는게 부담이 되서, 아니 불편해서 생긴게 윈도우 개념이다. 컴퓨터 발생시부터 컴퓨터가 사용자에게 보여주는 인터페이스는 모니터(CRT)였다. 2차원 평면인 것이다.
컴퓨터가 사용하는 정보의 2차원 평면이 있고 이를 애당초 다 보여줄 수 없기 때문에 조그만 박스를 통해 사용자에게 부분만 보여주도록 하는 개념이 윈도우(WIndow,창)라는 것이다.
창 위에는 메뉴라는 바를 두고 단축키를 통해 메뉴로 넘어가 사용자의 입력을 받게 하겠다는 개념이 생기고, 이를 편하게 하기 위해서 마우스라는 입력 장치도 발생을 한다.
2. 2세대 UI
평면과 평면의 정보 교환 시대를 의미한다. 컴퓨터는 윈도우 창을 통해 사용자에게 명령을 기다리게 되고, 사용자는 마우스와 단축키를 통해 평면으로 컴퓨터에게 명령을 내리게 된다.
아직도 이 시대에 있다. 3차원 입력이라는 방식이 아직 한참 개발중이기 때문이다.
그럼 이 2차원 평면 시대에 사용자와 유저간의 대화 방식을 살펴보자.
1) 윈도우
위에서 말한 것과 같이 입력을 위한 개념적인 사각형 평면을 의미한다.
2) 메뉴
2차원 평면이므로 컴퓨터는 사용자에게 "난 이런 명령을 받을 수 있소"라는 정보와 함께 입력을 받는 방식이기도 하다. 좌상단부터 쭉 명령들을 가로로 배열하는 방식이 흔히 사용되며 사용자에게 편한 모양이다.
3) 뷰(View)
윈도우는 하나의 평면만으로 사용자와 대화를 하다가 여러개로 나누어 받으면 어떨까하는 병렬 입력을 생각하게 된다. 그래서, VIew라는 작은 창들이 생겨난다. 하나의 프로그램에서 여러개의 View를 가지는 개념이 발생하는 것이다.
4) 버튼(button)
마우스로 특정 좌표에 입력을 받는 방식이다. 코드를 통한 대화 방식에서 윈도우를 가지면 자연히 발생하는 좌표계(픽셀을 위한)를 생각하게 되고, 평면 상에서 일상에서 보이는(계산기의 버튼) 입력 방식인 버튼을 통해 사용자와 의사 소통을 방식이다.
5) 컨트롤(Control)
버튼에서 확장한 방식이다. 뷰나 윈도우안에서 더 작은 2차원 평면을 통해 사용자와 대화하는 방식이다. 보여주고 입력을 받는 방식에 따라 버튼, 리스트, 콤보 박스 등의 다양한 형태의 이름이 붙는다.
6) 툴바(Toolbar)
입력 명령에 대해 쭉 글자로 나열해 보여주는 부분을 메뉴라고 하면, 위 컨트롤을 쭉 나열해 보여주는 2차원 평면을 툴바라고 한다.
7) 탭(Tab)
하나의 윈도우에 여러 개의 View가 돌아다니면 복잡하다. 하나로 모아서 필요할때만 앞으로 나타나게 한다는 개념에서 발생한 것이다. View간의 전환을 하기 위해 View 상단에 꼬리표를 붙이는 것이 탭이라는 것이다. 일상 세상에서 우리가 문서철을 보면 옆에 튀어나온 종이 부분이 있고 이와 유사한 개념이다. 정보에 좀 더 빨리 접근하기 위한 방식이다.
3. 2.5 세대 UI
요즘 애플 아이팟에서 손가락으로 화면을 넘기곤 한다. 손가락의 움직임을 화면 상의 터치패드에서 동작을 인식해 명령을 디코딩하는 것이다. 3차원 입력으로 가기 위한 과도기라고 보면 된다.
입력이나 디스플레이 둘 중 하나만 3차원이 된다면 2.5 세대라고 할 수 있지 않을까 생각해 본다. 아니면, 컴퓨터내의 UI 파트에서만 3차원이 구성이 되고, 이를 2차원 평면을 통해 명령을 내려도 2.5세대라고 할 수 있지 않을까? 이런 새로운 구성이 blend라는 3차원 모델링 도구에서 보이기 시작한다. 메뉴가 패닝(Panning)과 스크롤(Scroll)이 일어난다. 3차원 개념이다.
요즘 이런 생각을 해본다
메뉴가 좌에서 우로 2 차원으로 나열 되는 것이 아니라 앞뒤로 상하로 나열되고 사용자는 스크롤과 패닝으로 접근을 한다면... 장점은 2차원 평면상에서 나타내다 보니 공간의 한계가 생기게 된다. 물론 좌우에 화살표를 두어 더 접근이 가능하지만...
blend에서는 마우스를 이렇게 카테고리를 짓는다.
LMB : Cursor 이동 + 알파
MMB : Panning, Rotation
RMB : Selection, Grab
아래와 같이 기능을 생각해 볼 수도 있다.
LMB : Selection, Grab
RMB : Rotation
M.Scroll : Panning (앞뒤)
- Shift : Panning(상하)
- Ctrl : Panning(좌우)
방향은 UP Scroll은 중가 방향, DOWN Scroll은 감소 방향
3차원 입력 체계에서는 윈도우라는 단어보다는 HUD라는 단어를 사용한다. 안경식 디스플레이에서 사용자에게 보이는 방식이다. 그냥 2차원 평면을 보여주는 윈도우와는 별개의 개념이다. 컴퓨터와의 소통 단위는 3차원이고 그냥 2차원으로 보여주는 것 뿐인 것이다.