직접적 조작

Ben Schneiderman이 정의한 개념. HCI 스타일로, 사용자에게 제시된 객체들을 물리 세계에 대응되는 액션을 통해 마치 직접 조작하듯이 할 수 있는 것을 말합니다. 예를 들자면 옆에 앉은 할아바지가 컴퓨터를 잘하는 손자에게 화면에 보이는 윈도우를 가리키며 "이거 좀 크게 늘려봐"라고 말할 때, 일련의 암호 같은 키 배열을 입력하는 것이 아니고 마우스를 움직여 윈도우의 경계선을 드래깅 해서 직접 "늘림으로써" 화면을 늘리는 동작을 할 때, 우리는 DM을 보는 것이죠. 할아버지왈, "어, 그냥 잡아 늘이면 되네".
제가 여기서 하려는 이야기는 이 DM 개념은 아니고 좀 다른 차원/개념의 DM입니다. 그 UI가 어떤 스타일로 되어 있건 간에, 즉 DM 스타일이건 아니건 상관없이, 우리가 어떤 사용자를 구경할 때 흡사 화면의 물체를 직접 손으로 조물딱 거리고 있는 것처럼 느껴지는 경우가 있습니다.

군대에서 워드프로세서를 다뤄본 사람이라면 이게 어떤 느낌인지 잘 압니다. 이등병 때 상병이나 병장 쯤 되는 사수가 자기 앞에서 고색창연한 워드프로세서로 현란한 쇼를 보이는 걸 목격하고는 엄청난 충격을 받아봤을 겁니다. 마치 화면상의 글자를 직접 손으로 만지는 것 같습니다. UI가 얼마나 구린가는 아무런 의미가 없습니다. 그 고참은 일견 워드프로세서 자체와 한 몸으로 연결되어 있는 것 같습니다. 맥루한은 기술이 인간 몸의 연장(延長, extension)이라고 했습니다. 그 현시를 보는 것입니다.

프로그래머라면 VI(텍스트 에디터) 고수를 보고는 이런 충격을 받았을 것입니다. 저기 여기 글자 지워야 되고요 전체적으로 오른쪽으로 좀 움직여주시고 이 단어는 여기로 옮기고, 이런 말을 요청하면 바로 그자리에서 해결을 해버립니다. 그 사람의 생각의 속도와 화면에서 벌어지는 이벤트의 연속은 거의 일치합니다. 이렇게 해야지 생각하면 그렇게 되어 버립니다.

저는 라면이라는 디자이너가 작업하는 걸 곁에서 보고 이런 DM의 느낌을 받았습니다. 아아아, 그 날의 충격을 어찌 말로 다 옮기리오. 그녀는 더글라스 엥겔바트가 주장했듯이 한 손은 키보드 한 손은 마우스(사실은 타블렛 펜)를 사용했는데 제가 느끼기에는 두 손을 모니터 속으로 집어넣어서 화면속의 그림 조각들을 찰흙 만지듯 주무르는 것 같았습니다. 저는 감동해서 그녀에게 절이라도 하고 싶었습니다. 백전불패의 검객 미야모토 무사시가 수년을 산에서 수련하고 이쯤이면 무적이다 생각해서 하산하며 내려오다가 기름장수가 기름을 공중에 띄워서 호리병으로 골인시키는 모습을 보고는 다시 입산했다고 하는데, 그는 이런 DM을 본 것입니다.

이 정도 수준에서는 원래 UI에서 DM을 제공하냐 아니냐가 관건이 되진 않는 것 같습니다. 그보다도 나와 시스템을 한 몸으로 만들어 DM처럼 보이게 하는 데에 장애가 되는 요소가 있냐 없냐가 중요할 것입니다.

저는 최근에 프로그래밍에서 DM이 가능하다는 것을 느꼈습니다. JayLanguage라는 언어인데, 고객이 옆자리에 앉아서 말하는 속도로 코딩을 하는 일화로 유명합니다. 저는 한가지 예만 보이겠습니다.

다음은 본인이 만든, Sierpinski Triangle이라는 프랙탈 도형을 그려주는 프로그램입니다.

   (,,.~)^:5,'*'   

실행하면 다음 결과가 나옵니다.


그래픽으로 바꾸고, 좀 더 많은 삼각형을 보려면 다음과 같이 바꿔줍니다.

   load 'graph'
viewmat (,,.~)^:10,1

결과는 다음과 같습니다.


이 언어에서는 프로그램 크기를 논할 때 라인보다 글자를 셉니다. 강규영군과 이야기하다가, 그가 다른 언어에서는 타이핑 속도가 병목이 되는 경우가 많은데, 이 언어에서는 생각의 속도가 병목이 된다는 말을 했습니다. 공감합니다.

위 프랙탈 삼각형을 그리고 싶은대로 그냥 표현한 것이 저 짧은 한 줄, 아니 13글자입니다. 옆 사람이 느끼기에는 DM을 하는 듯 보일 것입니다.

--김창준