|
오늘 Joel Spolsky 블로그에 "Don't hide or disable menu items"라는 글을 보고 소개하고자.. 1. 윈도우 프로그래밍이나 아니면 다른 플랫폼이라도 GUI를 다루는 코딩을 하다보면 풀다운 메뉴 아이템을 조작하는 방법을 배울 것이다. Win32 API라면 ModifyMenu 같은 API로 풀다운 메뉴 아이템의 문자열을 바꾸거나, 체크 표시를 하거나, 라디오 버튼을 조작하거나, 아니면 비활성화 시킬 수 있다. ![]() 프로그램을 짜다보면 이렇게 특정 문맥에 맞게 특정 메뉴 아이템을 비활성화 시키거나 감추는 것이 더 나은 사용자 경험을 준다고 생각한다. 실제로 뭔가 이렇게 다이나믹하게 코딩하면 재미있고 그럴싸하게 보이는 것이 사실이다. 그러나 조엘 스폴스키는 오늘 포스팅에서 이것이 바람직하지 못한 방법이라고 한다. 그 이유로 사용자들이 이렇게 비활성화 된 메뉴 아이템을 봤을 때, 이 아이템을 어떻게 하면 다시 사용할 수 있게 되는지 전혀 알 수 없기 때문이라고 말한다. 대신에 메뉴 아이템을 그냥 활성화 시킨 채로 놔두고 그걸 클릭했을 때 왜 안 되는지를 설명하도록 하라고 한다. 만약, 조엘이 '모든' 메뉴 아이템에 대해서 비활성화 대신에 '활성화+안되는 이유설명'으로 하라고 한다면 난 동의할 수 없다. 그러나 경우에 따라서는 조엘의 조언은 매우 적절하다. 나도 예전에 이런 문제를 절감해서 몇몇 메뉴 항목들은 일부러 가능하게 하고 사용자가 그것을 시도하였을 때, 메세지를 띄어주도록 고친 적이 있었다. 그 때 그렇게 바꾼 이유도 "왜 이 기능을 실행시킬 수 없지?" 라는 물음에 쉽게 답할 수 없을 경우를 발견했기 때문이다. 그러나 모든 경우를 이렇게 하는 것은 overkill 삽질이다. 만약 워드나 노트패드 같은 편집 프로그램에서 선택된 문자열이 없을 경우 잘라내기와 복사를 할 수 없다. 혹시 에디터 프로그램 짜보셨다면 당연한 상식이다. ![]() 그래서 위와 같이 키보드 캐럿이 그냥 선택된 영역이 없을 때는 잘라내기와 복사는 비활성화 되어있고 여기에 연결된 단축키 (키보드 가속기) 역시 눌러도 아무런 반응이 없이 조용히 끝나게 된다. 여기서 컴퓨터 사용자 수준을 어떻게 가정하느냐에 따라 해법이 달라진다. 정말 사용자가 컴퓨터 초보자라면 "왜 복사와 잘라내기가 되지 않을까?" 라고 의문을 가질 수 있다. 그럴 경우 조엘의 조언에 따라 Cut/Copy를 활성화 시켜주고 친절히 "선택된 텍스트가 없어서 잘라내기를 할 수 없습니다"와 같이 띄어줄 수도 있다. 내 생각에 이 정도는 매우 자명한 수준이라 생각한다. 그래서 딱 메뉴만 열어봐도 비활성화된 메뉴 항목이 나오면 "지금 이 상황에선 저게 안되는군!" 이라고 바로 인지할 수 있다. 만약 모든 아이템이 활성화 되어있다면 이 경우 직접 이 메뉴를 실행시키지 않은 이상 알 수 없는 맹점이 있다. 그래서 정말로 "적절하게" 잘 따져서 바로 비활성화를 할 것인지 아니면 조엘의 조언을 따른지 고민해보자.
2. 이번엔 메뉴 아이템 문자열 바꾸기에 대해. 미디어 플레이어 프로그램에서 "재생" 메뉴를 선택하면 보통 이 "재생" 메뉴 아이템은 "멈추기"로 바뀌는 것이 일반적이다. 아이콘 역시 재생을 뜻하는 ▶ 에서 || 로 바뀐다. 이 정도는 워낙 익숙한 사용자 경험이라 괜찮다. ![]() 그런데 이것도 지나치면 사용자를 삽질시킨다. 아이튠스에는 중복 제목을 가진 항목을 보여주는 "Show Duplicates"라는 기능이 있다. ![]() 얼마 전 노래 정리를 하다 삽질을 해서 난리가 나서 중복된 것을 지우고자 이걸 클릭했다. 클릭했더니 정말 중복된 노래들만 쫙 보여준다. 작업을 다 끝냈다. 이제 원 상태로 돌아가고 싶었다. 나는 "Show Duplicates" 메뉴 앞에 체크 표시가 되어있겠지 라고 추측하고 "√ Show Duplicates"을 찾기 시작했다. 그런데 한참을 헤메었는대도 못 찾았다. 만약 이 기능이 매우 익숙해서 View 라는 하위 항목에 있었다는 것을 기억했으면 다행인데 자주 쓰지 않은 기능이다보니 어디에 이 항목이 있었는지 까맣게 잊고 계속 풀다운 메뉴를 헤맸다. 겨우 "Show Duplicates" 항목이 "Show All"로 바뀌어 있다는 걸 알았다. ![]() 내가 바보같은 삽질을 했다고 볼 수 있다. 그런데 이렇게 "Play/Pause", "Disable/Enable" 과 같이 명확하지 않은 쌍에 대해서는 쉽게 이것을 인지하기 어려울 수도 있다. 여기서 나도 조엘 스폴스키처럼 조언을 하나 하자면 "마음대로 메뉴 항목의 문자열을 바꾸지 마라
3. 길다. 또 한 마디만 더 해보자. 윈도우 프로그램을 짜면서 메뉴 UI를 유심히 보신 분이라면 메뉴 항목 문자열 뒤에 "..."이 있는 경우와 없는 경우를 발견했을 것이다. ![]() 위 그림에서 보듯이 New는 그냥 New로 끝나는데 Open과 Save As, Page Setup은 뒤에 "..."가 따라 붙는다. 크게 어렵지 않게 이 "..."가 무슨 뜻을 내포하는지 알아낼 수 있을 것이다. 바로 이 명령을 완료하기 위해서는 추가적인 행동이 더 필요하다는 것을 "..."으로 표현하고 있는 것이다. "Open..."을 누르면 바로 Open이 되는 것이 아니라 파일을 선택하는 대화상자가 뜨고 거기서 파일을 선택해야지만 비로서 Open이 완료된다. "..."은 그냥 심심해서 붙여놓은 것이 아니라 이런 의미가 있는 것이다. New, Save, Exit는 이런 추가적인 과정이 필요없이 누르자마자 바로 해당 명령이 실행될 것이다. 또 하나. 상위 메뉴인 "File | Edit | Format | View | Help"를 잘 보자. 풀 다운 메뉴에서 File이나 Edit를 누르면 여기에 해당하는 하위 메뉴가 뜰 것을 예측할 수 있다. 그런데 요즘에는 드물지만 이 풀 다운 줄에 있는 항목을 클릭하면 하위 메뉴가 뜨는 것이 아니라 바로 해당 기능이 실행되는 경우도 있다. 이럴 경우에는 문자열 끝에 느낌표를 붙여서 사용자에게 알려준다. ![]() 파일 질라를 보면 "New version available!" 이라는 항목을 볼 수 있다. 이 느낌표는 바로 이 항목을 클릭하자마자 하위 메뉴가 뜨는 것이 아니라 바로 이 기능이 실행됨을 말한다. 그렇다면 우리의 네이트온 메신저를 한번 살펴볼까? ![]() 보다시피 "환경 설정(S)" 뒤에 "..."이 없다. 분명 환경 설정은 추가 대화상자가 필요한 행위인데 무시하고 있다. 키보드 가속기 (S) 까지는 잘 넣어줬는데 아쉽다. 사소하다고 할 수 있다. 메뉴 아이템 문자열 뒤의 "..."과 "!"이 모든 운영체제를 아우르는 법칙이 아닐 수도 있다. 그래도 이런 점도 모르고 디자인했다는 사실은 다른 부분에서도 저런 미비한 점이 많이 나올 것이라는 불안감을 주기에 충분하다. ![]() 여전히 균형이 잡혀있지 않은 설정화면. "1단계: 스피커 설", ".. 적당한지 확인" 반말하는거야?
결론: 별 생각없이 리소스 편집기에서 뚝딱 만드는 풀 다운 메뉴에도 복잡 미묘한 것이 많다. 헛.. 프로그램을 외모로 평가하고 있...
최근 등록된 덧글
개발자 입장에서의 수많은 ..
by Jiyoon at 02/04 저도 아들 돌잔치때 돌잡이 .. by 박상욱 at 01/18 미국 대학원 원서 작성중에 p.. by 태클사이야 at 01/13 TO: 박PD 로그인 하지 않아.. by 박응용 at 01/10 http://gigglehd.com/zbx.. by dhunter at 12/28 우와.. 좋네요. 태반이 .. by 윤광배 at 12/17 항상 좋은 글 잘 보고 있습니.. by y2k at 11/23 글이 좋아서 제 블로그에 담.. by 쏭섭 at 11/23 최근 등록된 트랙백
메뉴릿
이글루 파인더
|