본문 바로가기

프로그래밍

GUI 와 NUI

GUI(Graphic User Interface)라는 개념은 이미 모르는 사람이 없을 정도로 널리 알려져 있죠. 애플에서 맥을 시작으로 GUI는 컴퓨터 환경의 대표적인 인터페이스로 자리잡게 되었습니다. GUI 이전의 CLI(Command-Line Interface) 환경에서는 수많은 명령어들로 컴퓨터를 조작했었죠. 명령어를 이용한 프로그램을 만들기에는 쉬웠지만 컴퓨터를 처음 접하는 사람들에게는 굉장히 사용하기 어려운 환경이였습니다. 여러 시각적인 물체들을 인지하고 살아가는 현실과 수많은 명령어들만 존재하는 CLI 환경은 엄청난 이질감이 존재할 수 밖에 없었죠. 그러다가 나온것이 GUI 환경이죠. GUI 환경은 보다 현실세계에 가깝에 디자인된 인터페이스라고 할 수 있습니다. 현실세계의 여러 장치들에 여러 버튼이 있는 것과 마찬가지로 컴퓨터 환경에도 버튼을 집어 넣게 되엇고, 책상에서 작업을 할때 며러 문서들이 흩어져 있는것과 비슷한 환경을 구현하기 위해 창(Window)라는 개념을 도입하게 되었죠.

하지만 GUI의 약자는 Graphic User Interface, 즉 그래픽이라는 시각적인 부분만을 컴퓨터 환경에서 구현한것입니다. 하지만 사람이 현실에서 살아갈때는 시각만 필요한 것이 아니지요. 촉각, 미각, 후각, 청각등 여러 감각들이 존재합니다. 또한 현실세계에서 손각락만을 이용하여 살아가는 것이 아니고 팔, 다리등 몸 전체를 활용하여 살아가게 되지요. 이렇게 실제 현실과 더 가깝게 다가기 위해서 나온 개념이 NUI(Natural User Interface)입니다.

NUI의 가장 큰 특징은 Intuitive, 즉 직감입니다. 지금은 돌아가신 애플의 스티브잡스는 '직감'이라는 것에 굉장히 심혈을 기울이셨죠. 컴퓨터 환경은 최대한 인간이 사용하기 쉽게 만들어져야 한다는 것이 그의 철학이였고, 그에 따라 사람의 직감에 최적화된 UI를 만들어 냈죠. 멀티터치를 이용한 줌인, 줌아웃, 핀치등 뿐만 아니라 손가락의 드래그를 통한 스크롤링등 사람이 생각하는 그대로 컴퓨터가 동작하도록 디자인 하였죠. 비단 스티브 잡스 뿐만 인간의 직감에 관심이 있었던것은 아닙니다. 닌텐도의 wii또한 위모콘을 이용하여 사람의 행동을 컴퓨터에 전송할 수 있었고, 이를 통해 손가락의 움직임 뿐만 아니라 몸 전체의 움직임을 컴퓨터가 인식하여 동작할 수 있는 시스템을 만들어 냈죠. 이에 자극을 받아 MS도 Kinetic을 만들어 내는 등 단순한 그래픽 출력과 마우스 클릭의 컴퓨터 환경에서 벗어나는것이 대세가 되고 있습니다. 그리고 실제로 그런 제품들이 성공하고 있죠.



이러한 GUI를 넘어선, 실제 환경과 비슷한 환경을 구현한 인터페이스들을 모두 NUI라고 부르게 됩니다. 예전에는 꿈에서만 볼 수 있었던 현실이죠. 제가 좀 어렸을때 봤었던 마이너리티 리포트가 생각나네요. 그 영화가 나온지 얼마 안된거 같은데, 마이너리티 리포트에서 나왔던 미래의 기술들 중 몇가지가 이미 현실화가 된것 같습니다. 대표적인것이 터치로 스크린을 조작하는 모습이였죠. 그런것을 사실상 현재에도 가능하니까요.

CLI 

GUI 

NUI 

텍스트 기반

 그래픽 기반

물체 기반

명령어를 기억해내어 사용

UI를 인식하여 사용 

 UI를 직감적으로 사용

 직접적

탐험적

맥락에 따라

 사용하기 어려움

비교적 사용이 쉬움 

누구나 쉽게 사용할 수 있음 

연결성이 없음

간접적으로 연결 

직접적으로 연결 


보다 강력한 NUI환경을 구현하기 위한 기업들의 경쟁은 치열해 지고 있습니다. MS같은 경우는 기존의 GUI의 대표적인 주자였던 윈도우 환경을 버리고 새로운 환경인 메트로로 옮겨가려고 노력하고 있죠. GUI는 점점 시대에 뒤떨어져 가고 있습니다. 물론 아직 데스크탑 환경에서는 GUI 환경이 대부분을 장악하고 있고, CLI 환경마저 꽤나 쓰이고 있습니다. 하지만 NUI 환경이 점점 강력해 지고, 시대가 NUI로 넘어가고 있는 것은 부정할 수 없는 현실인 듯 합니다.

하지만 NUI라는 것은 말은 좋지만 구현하기가 정말 까다롭습니다. 적당히 그래픽만 하면 GUI정도까지는 할 수 있겠는데, NUI를 구현하려고 하면 머리가 아파지는 거죠. 그래도 요즘에는 NUI에 관련된 프레임워크가 많이 나와서 다행인듯 합니다. 구현해야 할 것이 많아지니까 프로그래밍 환경은 점점 갈수록 프레임워크의 의존도가 높아지는듯 하네요. 단순 터치환경을 구현하려고 하면 안드로이드나 아이폰의 네이티브 UI를 사용하면 되겠죠. 하지만 그렇게 만들면 플랫폼 종속적이 되어버리니 뭔가 탐탐치 않습니다. 그리고 다가올 윈도우 8 또한 강력한 플래폼이 될지도 모르니까 이에대한 대비도 해놓지 않으면 안되죠. 일단 가장 먼저 생각할 수 있는 크로스 플랫폼은 웹 기반입니다. 웹 기반의 NUI 프레임워크라고 하면 jquerymobile, sench touch등을 들 수 있겠고, iscoll도 빠질 수 없겠죠. 그 외의 크로스플랫폼이라고 하면 파이썬 기반의 kivy와 C# 기반의 monotouch, 그리고 qt가 있겠습니다. 단순히 터치 기반의 UI 뿐만 아니라 MS에서 공개된 Kinetic SDK, 오픈소스 음성인식 프레임워크인 simon등도 NUI의 일종이라고 볼 수 있죠. 이렇게 NUI 프레임워크들이 많이 나온 상태에서 보다 인간에 맞게 소프트웨어를 만드는 것이 성공의 길이라고 생각됩니다.