메뉴를 감추거나 비활성화 시키지 마세요?

오늘 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" 과 같이 명확하지 않은 쌍에 대해서는 쉽게 이것을 인지하기 어려울 수도 있다.

여기서 나도 조엘 스폴스키처럼 조언을 하나 하자면 "마음대로 메뉴 항목의 문자열을 바꾸지 마라
수정: 헛... 최신 버전 아이튠스에서는 중복보기를 했을 경우 아래에 큼지막하게 Show All 버튼을 다시 보여주네요... 오 애플 욕해서 죄송. 애플 쵝오!


 

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 object | 2008/07/02 11:38 | 컴퓨터 | 트랙백(3) | 핑백(1) | 덧글(11)
트랙백 주소 : http://minjang.egloos.com/tb/1959695
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
Tracked from Do Doubt! : .. at 2008/12/30 22:28

제목 : 무조건 메뉴를 비활성화시키니 너무 답답하다. - V..
코딩 트레이닝을 위해 ACM문제를 연습 삼아 꾸준히 풀어보기로 했다. http://algo.tistory.com/ 이렇게 풀이를 올릴 블로그도 따로 하나 만들었고말야. 코드를 제출하기 전 예제를 몇 개 만들어서 돌리고 눈으로 검증하곤 했는데, 그렇게 하지 말고 유닛 테스트(unit test) 프레임 워크를 사용해서 알고리즘을 검증하면 되겠다 싶어서 google test를 붙였다. 이렇게 세팅하고 나니 google test 라이브러리에 종속성이 ......more

Tracked from Codex praptor at 2009/01/09 17:40

제목 : Don't hide or disable menu i..
메뉴를 감추거나 비활성화 시키지 마세요? @ art.oriented메뉴를 숨기거나 비활성화시키지 말랍니다. 무슨 의미일까요? 조엘의 글을 읽었습니다. 페르마의 지하철 포스팅 같습니다. 부연설명을 듣고 싶으나, 찾지 못했습니다.역시 논쟁이 되었습니다. 숨기지 말기는 대부분 동의가, 비활성화는 반대가 많았습니다. 그러나 다들 사용자가 '그놈 어딨지?', '이놈 왜......more

Tracked from ohyecloudy&#.. at 2010/10/04 02:11

제목 : 무조건 메뉴를 비활성화시키니 너무 답답하다. &#8..
ACM문제 코드를 제출하기 전 예제를 몇 개 만들어서 돌리고 눈으로 검증하곤 했는데, 그렇게 하지 말고 유닛 테스트(unit test) 프레임 워크를 사용해서 알고리즘을 검증하면 되겠다 싶어서 google test를 붙였다. 이렇게 세팅하고 나니 google test 라이브러리에 종속성이 생겨서 프로젝트 세팅에서 빌드가 제대로 되도록 수정해야 했다. 것 참! 문제 풀 때마다 이거 매번 해주려니 짜증난다. 옳커니! 이럴 때 Project Temp......more

Linked at 무조건 메뉴를 비활성화시키니 .. at 2010/10/04 02:11

... 는다는 생각을 못 하게 된다. 이와 관련돼서 메뉴를 감추거나 비활성화 시키지 마세요? – art.oriented란 글을 읽었는데, 동의하는 내용이다. ... more

Commented by 백승우 at 2008/07/02 12:47
적절히 사용하는 것들이 잠재적인 버그를 줄이는 방법이 아닌가 생각해봅니다. ^^
(개발자 입장인가?)
Commented by sloth at 2008/07/02 13:08
역시 이것두 참 만만치않은 작업이에요,,,,
Commented by object at 2008/07/02 16:54
우리나라 개발자들이 종종 다이얼로그 박스 디자인이나 저런 메뉴를 너무 신경을 안 쓰는 경향이 있죠. 디자인팀에서도 저런 부분까지 캐치하는 경우도 솔직히 잘 없구요. 디자인 가이드라인 정도는 알고 있어야 하는데 아쉽습니다.
Commented by xeraph at 2008/07/02 14:19
마스터 볼~ -_-
Commented by object at 2008/07/02 16:53
왜 저런 현상이 나오는지 전 잘 아는데.. 저거 윈도우 플밍 좀만 해도 잡을 수 있는데.. 아쉽죠.
Commented by polarnara at 2008/07/02 16:21
사용할 수 없는 메뉴는 비활성화 시켜서 아예 진입을 못하게 하는 것이 옳다고만 생각했는데, 다른 쪽에서 생각해 볼 면도 있었군요. '사용도 못 할 메뉴, 왜 누를 수 있게 하느냐' 라는 불평이 나올 경우와 '어떻게 하면 누를 수 있게 되는 거냐' 라는 불평이 나올 경우를 잘 나눠야 하는데.. 물론 쉬운 일은 아니겠죠 ^^;
Commented by object at 2008/07/02 16:53
그러한 점에서 조엘 스폴스키의 오늘 포스팅은 의미가 있습니다. 이렇게도 생각해볼 수 있다라는 문제를 알려줬죠. 저도 어느 정도 수긍하구요.
Commented by tan at 2008/07/02 17:06
돈주는 것도 아닌데 저런 귀찮은 스크린 캡쳐를 포함한 벤치마킹(!)을 하고 있다니. 성격상 UX하면 딱 좋겠다.
Commented by mkk2 at 2008/07/03 09:13
기본폰트설정 문제로 네이트온 오디오/비디오 설정창이 제대로 출력되지 않는듯합니다.
한글윈도우에선 정확히 출력됩니다.
Commented by object at 2008/07/06 20:36
그점이 아쉬운 것입니다. 네이트온 정도로 많은 사람들이 쓰는 메신저는 당연히 한글윈도우 외에서도 돌아갈터인데 저것조차 고려하지 않은 것이 저는 너무 눈에 거슬립니다. 너무 신경을 안써요. 이건 프로그램 테스트 하는 쪽의 문제라고도 봐야겠죠. 다행히 유니코드여서 한글이 깨지는 참사까지는 안 일어나지만..
Commented by ohyecloudy at 2008/12/30 22:27
동감합니다. 전 최근 VC++ 2005에서 비활성화 된 Export Template 메뉴 때문에 인터넷에서 찾아본다고 시간 낭비했습니다. 이유를 알려줬으면 시간 낭비를 안 했을텐데 말이죠...

전 실행하도록 허용하는 것보다 비활성화된 상태로 놔둔채 툴팁만 띄어주는게 좋지 않을까 생각합니다. 메뉴가 비활성화되면 툴 팁까지 비활성화 시킬 것 같은데, 꼼수나 추가작업이 필요할 것 같지만 클릭하기 앞서 이유를 알 수 있기 때문에 더 낫지 않을까 생각해요.

:         :

:

비공개 덧글

<< 이전 페이지 다음 페이지 >>





by 김민장 2008 이글루스 TOP 100
최근 등록된 덧글
개발자 입장에서의 수많은 ..
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
최근 등록된 트랙백
조엘 스폴스키의 강연 (Sta..
by 인덕원칸타타
[Redis] sds.c를 분..
by 조급하지말고 천천히
메뉴릿
이글루 파인더

website counter

Add to Google

rss

skin by 이글루스