Chapter 10

UX 라이팅

시범 운영 둘째 주, 손님 한 명이 화면을 찍어 보냈다. 빨간 상자 안에 "요청 실패(code 409)"라고만 적혀 있었다. 다른 손님은 "작은아씨들"을 검색하고 "결과 없음"이라는 네 글자를 받았다. 그 책은 두 책방에 있었다. 띄어 쓰지 않았을 뿐이다. 화면의 글은 흔히 디자인이 끝난 뒤 빈칸에 채우는 것으로 여겨지지만, 손님이 화면에서 가장 먼저 읽는 것도, 막혔을 때 붙잡는 것도 글이다. 이 장은 버튼과 오류 메시지, 빈 화면, 알림의 문장을 하나씩 고쳐 보고, 네 책방이 저마다 다른 말투로 말하는 서비스를 한 목소리로 맞춘다.

화면의 말도 디자인이다

앱과 웹 서비스의 화면에 들어가는 짧은 글을 쓰고 다듬는 일을 UX 라이팅(UX writing)이라고 부른다. 버튼의 이름, 입력 칸의 라벨과 도움말, 오류 메시지, 아무것도 없을 때 보이는 문장, 확인을 묻는 대화상자, 휴대폰에 뜨는 알림이 모두 여기에 든다. 이런 짧은 글을 따로 마이크로카피(Microcopy)라고도 한다. 광고 문구가 사람을 서비스로 데려오는 글이라면, UX 라이팅은 이미 들어온 사람이 길을 잃지 않게 하는 글이다.

책 찾기 작은 아씨들 2곳에 있어요 작은 아씨들 헌책방 나무 · 1권 헌책 · 상태 좋음 맡아 두기 최대 3일 · 값은 책방에서 내요. 『작은 아씨들』 준비됐어요 헌책방 나무 · 6월 3일(토)까지 화면 제목 입력과 자리표시자 상태 요약 정보와 꼬리표 버튼: 동사 도움말 알림 잘리기 전에 핵심 보이지 않는 글도 있다: 오류 메시지, 빈 상태, 확인 대화상자, 화면 낭독기가 읽는 대체 텍스트
그림 1. 결과 화면 한 장 위의 글. "맡아 두기" 결과 화면(가상)에는 문장보다 짧은 글이 더 많다. 제목과 꼬리표는 훑는 사람을 위한 표지판이고, 버튼은 행동의 이름이며, 도움말은 망설이는 순간에 읽힌다. 일이 잘못됐을 때만 나타나는 오류와 빈 상태의 글은 시안에는 잘 그려지지 않아 가장 늦게, 가장 서둘러 쓰인다.

화면의 글을 쓸 때 가장 먼저 받아들일 전제는 사람들은 화면의 글을 읽지 않고 훑는다는 것이다. 손님은 책을 찾으러 왔지 안내문을 읽으러 오지 않았다. 버튼의 첫 두세 글자, 제목의 첫 어절, 빨간 상자의 첫 줄만 보고 다음 행동을 정한다. 그래서 UX 라이팅의 기술은 대부분 "훑어도 알 수 있게"로 모인다. 짧게, 앞에 핵심을, 같은 것은 같은 이름으로, 다음에 할 일을 분명하게.

또 하나의 전제는 글이 화면 구성과 따로 놀 수 없다는 것이다. 버튼의 폭은 문구의 길이를, 알림이 잘리는 자리는 문장의 순서를 정한다. 거꾸로 문구를 먼저 써 보면 화면에 빠진 상태(재고 없음, 기한 지남)가 드러나기도 한다. 7장의 종이 프로토타입에도 "가짜 글(로렘 입숨)" 대신 실제 문구를 적어 넣는 이유다.

목소리는 그대로, 어조는 상황에 따라 서비스가 말하는 사람이라면 어떤 사람인지를 정해 두는 것을 흔히 보이스(Voice), 상황에 따라 말의 온도를 바꾸는 것을 톤(Tone)이라고 나누어 말한다. "맡아 두기"의 목소리를 "동네 책방의 친절하고 담백한 점원"으로 정했다면, 책이 준비됐다는 알림은 조금 가볍게, 요청이 실패했다는 오류는 차분하고 분명하게, 맡긴 것을 취소하는 확인은 가장 건조하게 쓴다. 손님이 당황한 순간에 농담이나 느낌표는 가볍게 들린다. 사람이 한 명이듯 목소리도 하나이고, 그 사람이 상황에 따라 말투의 온도를 바꿀 뿐이다.

버튼은 동사로

버튼의 이름은 누르면 일어나는 일이다. 그래서 버튼 문구는 행동을 나타내는 말, 곧 동사나 동사에서 온 말("맡아 두기", "다른 책방 보기")로 쓰는 것이 원칙이다. 한국어 화면에서는 "맡아 두기"처럼 "-기"로 끝나는 명사형이나 "취소", "저장" 같은 한자어 명사를 버튼에 많이 쓰는데, 어느 쪽이든 그 말을 읽고 무슨 일이 일어날지 알 수 있으면 된다. 문제는 "확인", "예", "OK"처럼 무엇을 하는지 말하지 않는 버튼이다.

이런 버튼이 가장 위험한 곳이 확인 대화상자(Confirmation dialog)다. 되돌리기 어려운 일을 하기 직전에 한 번 더 묻는 상자인데, 사람들은 대화상자가 뜨면 질문을 읽지 않고 버튼부터 누르는 일이 많다. 아래 대화상자의 본문은 가려져 있다. 버튼만 보고 "맡아 둔 것을 그대로 두는" 쪽을 눌러 본다.

SIMULATOR

버튼만 보고 누르기

버튼을 누른다
누른 버튼—
일어난 일—
버튼만으로 알 수 있나—
해볼 것: ① "확인 / 취소"에서 맡아 둔 것을 지키려고 "취소"를 누른다. 대화상자를 취소한 것인지 맡긴 것을 취소한 것인지 버튼만으로는 알 수 없다. 본문 가리기를 끄고 질문을 읽어야 비로소 풀린다. ② "예 / 아니요"도 질문을 읽어야 뜻이 생긴다. "~을 취소하지 않을까요?"처럼 질문이 부정문이면 더 헷갈린다. ③ "하는 일"로 바꾼다. 본문을 가린 채로도 어느 쪽이 무엇인지 안다. 주인 화면의 거절 묻기로도 해 본다. (가상의 대화상자다. 오른쪽에 주 행동을 두는 배치를 두 화면에 똑같이 썼다.)

"하는 일"로 쓴 버튼은 본문을 가려도 뜻이 통한다. 버튼 이름이 스스로 설명하기 때문이다. 주요 플랫폼의 디자인 지침도 같은 방향을 권한다. 애플의 Human Interface Guidelines와 구글의 Material Design은 경고·대화상자의 버튼에 "확인"이나 "예" 대신 그 버튼이 하는 일을 적으라고 안내한다. 취소 대화상자에서는 특히 "취소"라는 말을 버튼에 쓰지 않는다. 손님이 하려는 일 자체가 취소라서, 대화상자를 닫는 "취소"와 겹친다. 닫는 쪽은 "계속 맡아 두기", "돌아가기"처럼 남는 상태를 말해 준다.

버튼 문구를 고를 때 따져 볼 것은 세 가지다. 첫째, 버튼만 읽고 결과를 알 수 있는가. 둘째, 같은 일을 하는 버튼은 화면마다 같은 이름인가("맡아 두기"가 어떤 화면에서는 "예약", 다른 화면에서는 "찜"이 되면 다른 기능으로 읽힌다. 8장에서 손님들이 "맡아 두기"와 "찜하기"를 헷갈린 것과 같은 일이다). 셋째, 되돌릴 수 없는 일이면 그 사실을 버튼 근처에 적었는가. 확인 대화상자는 되돌릴 수 없는 일에만 쓰고, 되돌릴 수 있는 일은 묻지 않고 실행한 뒤 "되돌리기"를 주는 편이 손님의 시간을 아낀다(5장).

오류 메시지: 무엇이, 왜, 어떻게

오류 메시지는 손님이 가장 곤란한 순간에 읽는 글이다. 그래서 가장 정성을 들여야 하는데, 실제로는 개발 중에 개발자가 임시로 넣은 문장이 그대로 남는 일이 흔하다. "요청 실패(code 409)"가 그런 예다. 409는 웹 서버가 "요청이 지금 상태와 충돌한다"는 뜻으로 돌려주는 번호(HTTP 상태 코드)인데, 이 서비스에서는 "다른 손님이 방금 그 책을 먼저 맡았다"는 뜻이었다. 손님에게는 아무 뜻도 없는 숫자다.

좋은 오류 메시지는 세 가지를 말한다. 무엇이 일어났는가(맡아 두지 못했다), 왜 그런가(다른 손님이 먼저 맡았고, 그 책은 한 권뿐이다), 이제 어떻게 하면 되는가(다른 책방에서 찾기). 제이콥 닐슨(Jakob Nielsen)의 사용성 휴리스틱(1994년 판) 아홉째 항목 "사용자가 오류를 알아보고, 진단하고, 회복하도록 도우라"도 같은 내용이다. 웹 접근성 지침 WCAG 2.2도 입력 오류가 생기면 무엇이 잘못됐는지 글로 알리고(성공 기준 3.3.1 오류 식별, A 수준), 고칠 방법을 알 수 있으면 그것도 알려 주라고(3.3.3 오류 수정 제안, AA 수준) 요구한다.

SIMULATOR

오류 메시지 고쳐 쓰기

세 요소—
손님이 할 수 있는 일—
글자 수—
해볼 것: ① 아무것도 켜지 않은 상태가 시범 운영의 실제 문구다. 손님은 다시 눌러 볼 수밖에 없다. ② "이제 어떻게 하나"만 켠다. 버튼은 생겼지만 왜 다른 책방으로 가야 하는지 모르니 망설이게 된다. ③ 셋을 모두 켠다. 글은 길어졌지만 손님이 다음에 할 일이 분명하다. 오류 번호는 지우지 않고 맨 아래 작게 남긴다. 책방에 물어볼 때 쓴다. 다른 두 상황에서도 해 본다. (가상의 화면과 문구다. 글자 수는 공백을 뺀 수다.)

세 요소를 모두 넣으면 글이 길어진다. 그래도 오류 메시지에서는 짧은 것보다 분명한 것이 먼저다. 손님은 이미 멈춰 서서 읽을 준비가 되어 있다. 대신 첫 문장은 짧게, 무엇이 일어났는지만 쓴다. 이유는 둘째 문장에, 다음 행동은 글이 아니라 버튼으로 준다. 버튼이 있으면 "다른 책방에서 찾아 주세요" 같은 지시문은 지워도 된다.

오류 메시지에서 피할 말투도 있다. "잘못 입력하셨습니다", "올바르지 않은 번호입니다"처럼 손님을 탓하는 말, "치명적 오류", "실패"처럼 겁주는 말, "알 수 없는 오류가 발생했습니다"처럼 아무것도 알려 주지 않는 말이다. 사실만 말한다. "인증 번호가 맞지 않아요"는 탓하지 않고도 무엇이 틀렸는지 알려 준다. 또 오류는 생긴 곳 가까이에 보여 준다. 화면 맨 위에 모아 둔 오류는 휴대폰에서 보이지 않는다. 입력 칸의 오류를 어디에 어떻게 보여 줄지는 WebBook 9장에서 다룬다.

상황고치기 전무엇이왜어떻게(버튼)
다른 손님이 먼저 맡음요청 실패(code 409)이 책을 맡아 두지 못했어요.방금 다른 손님이 먼저 맡았어요. 이 책방에는 한 권뿐이에요.다른 책방에서 찾기
연결 끊김Network Error요청을 보내지 못했어요.인터넷 연결이 끊긴 것 같아요. 책방에는 아직 요청이 가지 않았어요.다시 보내기
인증 번호인증 실패인증 번호가 맞지 않아요.번호가 다르거나, 받은 지 5분이 지났을 수 있어요.번호 다시 받기

빈 상태: 막다른 길을 길로

보여 줄 내용이 없을 때의 화면을 빈 상태(Empty state)라고 한다. 검색 결과가 없을 때, 처음 가입해 맡긴 책이 하나도 없을 때, 오늘 들어온 새 책이 없을 때다. 시안에서는 늘 내용이 가득 찬 화면만 그리기 때문에 빈 상태는 잊히기 쉽고, 결국 "결과 없음" 한 줄로 남는다. 그런데 손님에게 빈 화면은 막다른 길이다. 무엇이 없는지, 왜 없는지, 이제 어디로 가면 되는지 말해 주지 않으면 손님은 앱을 닫는다.

검색 결과의 빈 상태는 특히 중요하다. 결과가 없는 이유가 "정말 없어서"인지 "찾는 방법이 달라서"인지 구별해 줄 수 있기 때문이다. 아래에서 검색어를 바꾸며 "결과 없음"과 고친 빈 상태를 비교한다. 검색어를 문장에 끼워 넣을 때 생기는 한국어만의 문제도 함께 본다.

SIMULATOR

검색 결과가 없을 때

왜 없는지—
다음에 할 수 있는 일—
고른 조사—
해볼 것: ① "결과 없음"과 "고친 빈 상태"를 번갈아 본다. "작은아씨들"은 띄어쓰기만 다를 뿐 두 책방에 있다. 고친 화면은 그 사실을 알려 주고 버튼 하나로 다시 찾게 한다. ② "나무 위의 고양이"는 정말 없다. 없다는 것을 분명히 말하고, 어린이 책방에 직접 묻는 길을 건넨다. ③ 조사 자동 고르기를 켜고 검색어를 바꾼다. 받침이 있으면 "은", 없으면 "는"이다. "Momo"처럼 로마자는 읽는 법을 알 수 없어 "은(는)"으로 남는다. (가상의 재고 자료다. 받침 판단은 한글 음절과 숫자만 다룬다.)

"‘작은아씨들’은(는) 없어요"처럼 괄호로 두 조사를 다 적는 문장은 개발하기 쉽지만 읽기에는 걸린다. 한국어의 조사는 앞말의 받침에 따라 은/는, 이/가, 을/를, 와/과, 으로/로처럼 바뀐다. 사람 이름, 책 제목, 책방 이름처럼 문장에 끼워 넣는 말이 바뀌는 곳에는 받침을 보고 조사를 고르는 코드를 넣거나, 조사가 필요 없게 문장을 바꾼다. "검색어: 작은아씨들 · 네 책방에 없어요"처럼 끼워 넣는 말을 문장 밖으로 빼는 방법도 있다. 한글 음절은 유니코드에서 규칙적으로 배열되어 있어서, 음절 번호로 받침이 있는지를 계산할 수 있다.

처음 쓰는 사람의 빈 상태 검색 결과가 아닌 빈 상태도 있다. 처음 들어온 손님의 "맡긴 책" 목록은 비어 있다. 여기에 "맡긴 책이 없습니다"만 두면 손님은 이 화면이 무엇을 하는 곳인지 배울 기회를 잃는다. 처음의 빈 상태는 짧은 안내서다. 이곳에 무엇이 쌓일지("맡아 둔 책과 찾아갈 기한이 여기 보여요"), 그것을 만드는 첫 행동(책 찾기 버튼)을 둔다. 다만 그림과 설명을 너무 크게 넣으면, 두 번째로 들어왔을 때부터는 방해가 된다. 처음의 빈 상태와 "다 찾아가서 비어 있는" 상태는 다른 문장이 어울린다. 후자라면 "맡긴 책을 모두 찾아갔어요"가 맞다.

중요한 말을 앞에

화면의 글은 잘린다. 휴대폰 잠금 화면의 알림은 한두 줄에서, 목록의 제목은 한 줄에서, 문자 미리보기는 몇십 자에서 끝나고 "…"이 붙는다. 사람들은 잘린 앞부분만 보고 열지 말지를 정한다. 그러니 앞부분에 인사말이나 서비스 이름이 오면, 정작 손님이 알아야 할 말은 잘린 뒤에 숨는다. 신문 기사가 가장 중요한 사실을 첫 문장에 두는 것과 같은 원리다.

아래는 책이 준비됐다는 알림이다. 알림 상자의 오른쪽 끝을 끌어 폭을 바꾸고, 문장 순서와 보이는 줄 수를 바꿔 본다. 손님이 알아야 할 것은 세 가지다. 어떤 책인지, 어느 책방인지, 언제까지인지.

SIMULATOR

알림은 어디서 잘리나

알림 상자의 오른쪽 끝을 끈다
보이는 글자—
보이는 핵심(책·책방·기한)—
핵심이 모두 보이는 최소 폭—
해볼 것: ① "인사 먼저", 2줄, 폭 300px. 기한이 잘린다. "1줄"을 누르면 핵심이 하나도 보이지 않는다. 첫 줄을 인사와 서비스 이름이 모두 쓴다. ② "핵심 먼저"로 바꾼다. 같은 폭, 같은 줄 수에서 핵심이 더 많이 보이고, 1줄에서도 책 제목은 남는다. ③ 두 순서의 "핵심이 모두 보이는 최소 폭"을 비교한다. 서비스 이름은 알림의 머리에 이미 앱 이름으로 붙어 있으니 본문에서 되풀이할 필요가 없다. (가상의 잠금 화면 알림이다. 실제로 몇 줄, 몇 자에서 잘리는지는 운영체제와 기기, 글자 크기 설정마다 다르다.)

앞에 놓을 말을 고르는 기준은 "이 글만 보고 손님이 무엇을 결정하는가"다. 알림이라면 열어 볼지, 오늘 찾으러 갈지를 정한다. 그러니 책 제목, 책방, 기한이 앞에 와야 한다. 목록의 항목 제목이라면 서로를 구별하는 말이 앞에 와야 한다. "맡아 두기 요청 – 작은 아씨들", "맡아 두기 요청 – 어린 왕자"처럼 같은 말로 시작하는 목록은 앞부분이 모두 같아 훑을 수 없다. "작은 아씨들 · 요청됨"이 낫다.

높임과 어조: 한 서비스, 한 목소리

한국어로 화면의 글을 쓸 때 영어에는 없는 결정이 하나 더 있다. 듣는 사람을 얼마나 높일지를 문장 끝(종결 어미)으로 표시해야 한다. 이것을 상대 높임법(Speech level, 청자 높임)이라고 한다. 학교 문법에서는 보통 여섯 단계로 나눈다.

단계성격예(맡아 두다)화면에서의 쓰임
하십시오체(합니다체)격식, 아주 높임맡아 두었습니다 · 맡아 두십시오공지, 약관, 공공기관과 금융 서비스의 안내. 정중하지만 멀게 들린다.
하오체격식, 예사 높임맡아 두었소요즘 화면에서는 거의 쓰지 않는다.
하게체격식, 예사 낮춤맡아 두었네거의 쓰지 않는다.
해라체격식, 아주 낮춤맡아 두었다 · 맡아 두어라책과 기사의 평서문(이 책의 본문). 화면에서 손님에게 쓰면 딱딱하거나 명령조로 들린다.
해요체비격식, 두루 높임맡아 두었어요 · 맡아 두세요많은 소비자 서비스가 고르는 말투. 정중하면서 가깝다.
해체(반말)비격식, 두루 낮춤맡아 두었어 · 맡아 둬친구 같은 서비스를 일부러 고른 경우에만. 어른 손님에게는 무례하게 들릴 수 있다.

어느 단계를 고를지는 서비스의 목소리와 손님에 따라 정할 일이고, 정답은 없다. 정할 것은 하나로 맞추는 것이다. 한 화면 안에서 "요청했어요"와 "취소되었습니다"가 섞이면 두 사람이 번갈아 말하는 것처럼 들린다. 여러 사람이 각자 문구를 쓰는 서비스에서 이 일은 아주 흔하다. "맡아 두기"는 네 책방 주인이 각자 안내문을 써 넣으면서 해요체, 합니다체, 해라체, 반말이 한 화면에 모였다.

문장이 아닌 글에는 다른 규칙을 둔다. 버튼과 메뉴, 탭, 제목처럼 짧은 이름은 "맡아 두기", "맡긴 책", "책방 정보"처럼 명사나 "-기" 명사형으로 쓰는 것이 흔한 관례이고, 이것은 말투가 섞인 것이 아니다. "기한 경과 시 자동 취소됨"처럼 "-음/-함/-됨"으로 끝내는 개조식은 보고서와 공문의 말투라, 손님에게 하는 문장으로는 딱딱하다. 아래 점검기에 문구를 넣으면 문장마다 끝을 보고 말투를 가려낸다.

SIMULATOR

말투 점검기

기준 말투—
기준과 다른 문장—
살펴볼 표현—
해볼 것: ① "네 책방 원래 문구"를 본다. 여덟 문장에 말투가 다섯 가지다. 빨간 테두리가 기준과 다른 문장이다. ② "해요체 기준"을 누르고 글상자의 빨간 문장을 하나씩 해요체로 고쳐 쓴다. 고칠 때마다 바로 다시 점검한다. ③ "주인 화면"은 주인에게 하는 말이다. 주인 화면을 합니다체로 할지 해요체로 할지는 선택이지만, 한 화면 안에서는 하나로 맞춘다. (교육용 점검기: 문장의 끝 몇 글자만 보고 규칙으로 가려낸다. "-기"로 끝나거나 짧은 명사 문구는 버튼·제목 같은 이름으로 보고 말투 판정에서 뺀다. 문맥을 이해하지 못하므로 틀리게 가려낼 수도 있다.)

점검기가 노란색으로 따로 표시하는 표현이 있다. 하나는 "주문하신 책이 나오셨습니다"처럼 높일 사람이 아닌 사물을 높이는 말이다. "-시-"는 문장의 주어를 높이는 말인데(주체 높임), 주어가 책이면 책을 높이는 셈이 된다. 손님을 높이려는 마음이 넘친 것이지만, "주문하신 책이 나왔어요"로 충분하다. "주문하신"의 "-시-"는 주문한 사람이 손님이라 맞다. 다른 하나는 "잠시만 기다리실게요" 같은 말이다. "-ㄹ게요"는 말하는 사람이 자기가 하겠다고 약속할 때 쓰는 어미라, 손님에게 무언가를 하라고 할 때 붙이면 어색하다. "잠시만 기다려 주세요"가 맞다. 둘 다 서비스 현장에서 널리 들리지만, 어법에 맞지 않는다는 지적을 오래 받아 온 표현이다.

번역투와 외래어도 말투다 "요청이 성공적으로 완료되었습니다"는 해요체로 바꾸어도 "요청이 성공적으로 완료되었어요"가 되어 여전히 길고 멀다. "요청했어요"면 된다. "~에 의해", "~을 진행하다", "~하시기 바랍니다" 같은 번역투와 공문투, "리퀘스트", "컨펌" 같은 업계 말은 손님에게 낯설다. 같은 기능을 가리키는 말도 하나로 정한다. "맡아 두기"를 어떤 화면에서는 "예약", 어떤 화면에서는 "보관"이라고 쓰면 손님은 세 가지 다른 기능이 있다고 생각한다. 그래서 문구 원칙과 함께 용어 목록(쓰는 말과 쓰지 않는 말)을 만들어 둔다.

문구의 길이와 좁은 화면

문구는 화면의 폭 안에 들어가야 한다. 시안의 버튼은 디자이너의 화면 폭과 기본 글자 크기에서만 맞춰 그려진다. 그런데 손님의 휴대폰은 더 좁을 수 있고, 손님이 글자 크기를 키워 쓰고 있을 수 있다. 서비스를 다른 언어로 옮기면 같은 뜻의 문구가 훨씬 길어지기도 한다. WCAG 2.2의 성공 기준 1.4.4(글자 크기 조절, AA 수준)는 보조 기술 없이 글자를 200%까지 키워도 내용과 기능을 잃지 않게 하라고 요구한다. 버튼 문구가 말줄임표로 잘려 "다른 책방…"이 되면 기능을 잃은 것이다.

아래는 결과 화면의 아래쪽(행동 버튼 두 개와 탭 막대)이다. 가상 화면의 오른쪽 끝을 끌어 폭을 바꾸고, 글자 크기와 언어, 넘칠 때의 처리를 바꿔 본다.

SIMULATOR

좁은 화면, 큰 글자, 긴 문구

화면의 오른쪽 끝을 끈다
가상 화면 폭—
잘린 문구—
버튼 문구가 다 들어가는 최소 폭—
해볼 것: ① 한국어, 100%, 폭 360px. 다 들어간다. 글자 크기를 200%로 키운다. "다른 책방 보기"가 "다른 책방…"으로 잘린다. 화면의 오른쪽 끝을 끌어 300px 아래로 좁히면 탭 이름도 잘린다. ② "줄바꿈"으로 바꾼다. 버튼이 두 줄로 높아지며 글은 모두 보인다. "세로로 쌓기"는 버튼을 한 줄에 하나씩 놓아 폭을 다 쓴다. ③ English로 바꾼다. 같은 뜻이지만 글자 수가 훨씬 많아, 100%, 360px에서도 벌써 버튼 하나가 잘린다. 한글은 한 자의 폭이 넓은 대신 같은 말을 적는 글자 수가 적다. (가상 화면의 글자는 이 책의 본문 글꼴로 그렸고, 기본 글자 크기를 15px로 두었다. 실제 폭은 글꼴과 기기에 따라 다르다. 영어 문구는 비교를 위해 이 책이 붙인 번역이다.)

세 가지 처리에는 각자 대가가 있다. 말줄임은 화면의 모양을 지키지만 글을 잃는다. 버튼 이름에는 쓰지 않는 것이 좋다. 줄바꿈은 글을 지키지만 버튼의 높이가 들쭉날쭉해진다. 세로로 쌓기는 가장 튼튼하지만 화면 아래를 더 많이 차지한다. 그래서 흔히 쓰는 방법은, 넓을 때는 나란히 두다가 문구가 들어가지 않으면 세로로 쌓도록 짜는 것이다. 디자이너가 할 일은 이 규칙을 시안에 적어 두고, 가장 좁은 폭(WebBook 2장에서 정한 320px)과 가장 큰 글자에서 가장 긴 문구로 한 번 그려 보는 것이다. 문구를 짧게 고치는 것은 그다음이다. 짧은 문구는 좋지만, 짧게 만들다가 뜻을 잃으면 안 된다.

내 휴대폰의 버튼 문구 모으기 자주 쓰는 앱 세 개를 열고, 대화상자와 오류 메시지를 일부러 만들어 본다(로그아웃, 삭제, 비행기 모드에서 새로 고침). 화면을 찍지 말고 손으로 공책에 옮겨 적는다. 문구마다 ① 버튼만 읽고 결과를 알 수 있는가, ② 오류는 무엇이·왜·어떻게 중 몇 개를 말하는가, ③ 문장의 끝은 어떤 말투인가를 적는다. 그다음 휴대폰의 글자 크기를 가장 크게 바꾸고 같은 화면을 다시 열어, 잘리거나 겹친 문구에 동그라미를 친다. 마지막으로 가장 나빴던 문구 하나를 이 장의 원칙으로 고쳐 써 본다. 고친 문장의 글자 수도 세어 본다.

문구 원칙과 문구 표

서비스의 문구는 한 사람이 다 쓰지 않는다. 디자이너, 개발자, 주인, 나중에 들어올 사람이 각자 쓴다. 그래서 문구를 하나하나 고치는 것만큼, 누가 써도 같은 목소리가 나오게 하는 장치가 중요하다. 흔히 쓰는 장치는 두 가지다. 하나는 짧은 문구 원칙이다. 다섯 줄 안팎으로, 외울 수 있을 만큼 짧아야 실제로 쓰인다. 다른 하나는 문구 표다. 화면과 상황마다 실제 문구를 한 칸씩 적은 표로, 개발자는 이 표의 문구를 그대로 가져다 쓰고, 문구를 바꿀 때는 표부터 고친다. 용어 목록(쓰는 말과 쓰지 않는 말)도 함께 둔다.

문구 표에는 문구만이 아니라 그 문구가 나오는 조건과 끼워 넣는 값(책 제목, 책방 이름, 날짜)을 함께 적는다. "{책 제목}" 같은 자리에 무엇이 들어오는지, 조사를 어떻게 고르는지, 가장 긴 값이 들어오면 어떻게 되는지를 적어 두어야 개발자가 같은 문장을 만든다. 이렇게 정한 문구와 용어는 다음 장의 디자인 시스템이 컴포넌트와 함께 관리하는 대상이 된다.

문구를 시험하는 법 문구도 시험할 수 있다. 가장 간단한 방법은 손님에게 화면을 보여 주고 "이 버튼을 누르면 무슨 일이 일어날 것 같아요?"라고 묻는 것이다. 답이 문구의 뜻과 다르면 문구를 고친다. 문장의 한 부분을 지우고 무슨 말이 들어갈지 묻는 방법도 있다. 문구를 놓고 A/B 테스트를 할 수도 있지만(9장), 숫자는 어느 문구가 더 많이 눌렸는지만 알려 주지 그 문구가 정확하게 이해됐는지는 알려 주지 않는다. 더 많이 눌렸지만 잘못 이해하고 누른 것일 수도 있다. 이해를 묻는 일은 사람을 만나서 한다.

서윤의 봄 서비스 노트

CASE 서윤서비스 노트 · 10장

네 사람의 말투, 한 서비스의 목소리

5월 넷째 주, A/B 테스트는 계획대로 조용히 돌고 있었다. 판정일인 28일까지 결과 화면의 버튼 문구는 손대지 않기로 했으니, 서윤은 그 밖의 문구를 모두 꺼내 보았다. 지후가 코드에서 화면에 나오는 문자열을 뽑아 표로 만들자 132줄이었다. 개발하며 임시로 넣은 문구, 네 주인이 각자 써 보낸 안내문, 서윤이 시안에 적은 문구가 섞여 있었다.

손님이 보낸 두 장의 화면부터 고쳤다. "요청 실패(code 409)"는 헌책방 나무의 한 권뿐인 헌책을 두 손님이 몇 초 차이로 맡으려 할 때 나왔다. 서윤은 무엇이·왜·어떻게로 다시 썼고, 지후는 버튼을 누르면 같은 책이 있는 다른 책방의 결과로 바로 가게 했다. "결과 없음"이 나온 "작은아씨들"은 띄어쓰기만 다른 검색어였다. 지후는 공백을 뺀 제목으로도 한 번 더 찾아 "‘작은 아씨들’로 찾으면 2곳에 있어요"라고 알려 주는 기능을 반나절에 붙였다. 조사는 받침을 보고 고르기로 했다.

말투는 더 어려웠다. 책방 E 주인은 "말씀해 주세요!"처럼 다정한 해요체를, 헌책방 나무 주인은 "본 도서는 1권 한정 판매합니다"처럼 공지문을, 작은 숲 주인은 "책이 너를 기다리고 있어~"처럼 아이에게 하는 반말을, 한 줄 주인은 "시집은 기다린다"처럼 시 같은 해라체를 썼다. 저마다 가게의 개성이었다. 하린은 손님 다섯 명에게 네 책방의 안내문을 섞어 보여 주고 같은 서비스 같으냐고 물었다(가상 자료). 다섯 명 모두 "앱이 아니라 가게마다 따로 만든 것 같다"고 했고, 그중 두 명은 작은 숲의 반말을 "어른한테 하는 말 같지 않다"고 했다. 작은 숲 주인은 웃으며 반말을 내려놓았다. 대신 책방마다 자기 말투를 쓸 수 있는 자리를 남겼다. 책방 소개 한 문단이다.

서윤의 선택은 서비스가 하는 말은 해요체 하나로, 책방이 하는 말은 책방 소개 안에서만 자유롭게였다. 주인 화면도 해요체로 맞췄다. 주인들은 처음에 "주인한테까지 해요체요?" 했지만, 거절 버튼 옆에 "손님에게 ‘책이 없어서 맡아 두지 못했어요’ 알림이 가요"라고 적힌 것을 보고 그게 편하다고 했다.

상황고치기 전고친 문구(버튼)
다른 손님이 먼저 맡음요청 실패(code 409)이 책을 맡아 두지 못했어요. 방금 다른 손님이 먼저 맡았어요. 이 책방에는 한 권뿐이에요. (다른 책방에서 찾기)
검색 결과 없음결과 없음‘{검색어}’{은/는} 지금 네 책방에 없어요. + 띄어쓰기·짧은 제목 제안 (‘{제안}’{으로/로} 찾기)
연결 끊김Network Error요청을 보내지 못했어요. 책방에는 아직 요청이 가지 않았어요. (다시 보내기)
맡김 취소취소하시겠습니까? (취소 / 확인)묻지 않고 바로 취소: 맡김을 취소했어요. (되돌리기) — 버튼 이름은 "맡김 취소"
준비 알림안녕하세요! 맡아 두기 서비스입니다. 요청하신…『{책 제목}』 준비됐어요 · {책방}에서 {날짜}까지 찾아가 주세요.
이 장에서 정한 것문구 원칙 다섯 줄. ① 서비스가 하는 말은 손님 화면과 주인 화면 모두 해요체(버튼·탭·제목은 명사나 "-기" 꼴). ② 버튼은 누르면 일어나는 일을 쓴다. "확인"·"예"는 쓰지 않고, 알림을 닫기만 하는 버튼은 "닫기". ③ 오류는 무엇이·왜·어떻게. 다음 행동은 버튼 하나로, 오류 번호는 맨 아래 작게, 손님을 탓하지 않는다. ④ 같은 것은 같은 이름: "맡아 두기"(찜·예약·보관은 쓰지 않음), "책방"(서점·매장은 쓰지 않음), 목록은 "내 맡김", 취소는 "맡김 취소". ⑤ 중요한 말을 앞에: 책 제목 → 책방 → 기한. 버튼은 320px 폭, 글자 200%에서 잘리지 않게(넘치면 세로로 쌓기). 위 문구 표(주요 다섯 줄, 전체 132줄)와 용어 목록.
아직 남은 문제A/B 테스트의 버튼 문구는 28일 판정 뒤에 정한다. 문구는 맞췄지만 네 책방 화면의 버튼 모양과 색이 아직 제각각이라 같은 문구도 다르게 보인다. 책방마다 자기 색을 쓰고 싶어 한다.
다음 단계11장: WebBook의 책방 E 토큰을 네 책방이 함께 쓰는 디자인 시스템으로 넓히고, 문구 표와 용어 목록도 그 안에 둔다.

핵심 정리

  1. UX 라이팅은 버튼, 안내, 오류, 빈 상태, 확인 대화상자, 알림의 글을 쓰고 다듬는 일이다. 화면의 글은 읽히기보다 훑어진다.
  2. 버튼에는 누르면 일어나는 일을 쓴다. "확인/취소", "예/아니요"는 질문을 읽어야 뜻이 생긴다. 취소를 묻는 대화상자에서는 "취소"를 버튼 이름으로 쓰지 않는다.
  3. 오류 메시지는 무엇이 일어났는지, 왜 그런지, 이제 어떻게 하면 되는지를 말한다. 다음 행동은 버튼으로, 오류 번호는 작게, 손님을 탓하지 않는다(WCAG 2.2 SC 3.3.1, 3.3.3).
  4. 빈 상태는 막다른 길이 아니라 다음 행동으로 이어지는 화면이다. 끼워 넣는 말에는 받침에 맞는 조사를 고르거나 조사가 필요 없게 문장을 바꾼다.
  5. 글은 잘린다. 알림과 목록에서는 손님이 결정에 쓰는 말(책, 책방, 기한)을 앞에 둔다.
  6. 한국어 화면은 상대 높임의 단계를 하나로 맞춘다. 문장은 한 말투로, 버튼과 제목은 명사나 "-기" 꼴로. 사물을 높이는 "-시-"와 "-실게요"는 고쳐 쓴다.
  7. 문구는 가장 좁은 폭과 가장 큰 글자(200%), 가장 긴 언어에서 확인한다. 버튼 이름은 말줄임하지 않고, 넘치면 줄을 바꾸거나 세로로 쌓는다.
  8. 누가 써도 같은 목소리가 나도록 짧은 문구 원칙, 문구 표, 용어 목록을 둔다.

확인 퀴즈

1. 맡아 둔 책을 취소하려는 손님에게 "맡아 둔 책을 취소할까요?"라는 대화상자를 띄운다. 두 버튼의 이름으로 가장 알맞은 것은?

버튼에는 누르면 일어나는 일을 쓴다. "취소 / 확인"에서 "취소"는 대화상자를 취소하는지 맡긴 것을 취소하는지 모호하고, "예/아니요"와 "확인"은 질문을 읽어야 뜻이 생긴다. "계속 맡아 두기 / 맡김 취소"는 본문을 읽지 않아도 결과를 안다. (되돌릴 수 있는 취소라면 아예 묻지 않고 "되돌리기"를 주는 편이 낫다.)

2. 다음 오류 메시지 가운데 무엇이·왜·어떻게를 모두 갖춘 것은?

둘째 문구는 무엇이 일어났는지(맡지 못함), 왜 그런지(다른 손님이 먼저, 한 권뿐), 이제 어떻게 할지(다른 책방에서 찾기 버튼)를 모두 말한다. 첫째는 아무것도 알려 주지 않고, 셋째는 손님 탓처럼 들리며 다시 해도 같은 결과일 일을 시킨다. 넷째는 가벼운 어조에 이유도 다음 행동도 없다.

3. 해요체로 맞추기로 한 서비스의 문구 점검에서, 고칠 필요가 없는 것은?

버튼·탭·제목 같은 짧은 이름은 명사나 "-기" 꼴로 쓰는 것이 흔한 관례이고, 말투가 섞인 것이 아니다. 나머지는 고친다. "나오셨습니다"는 합니다체이면서 사물(책)을 높이고, "-실게요"는 말하는 사람의 약속에 쓰는 어미를 상대에게 시키는 말에 붙였고, "-됨"으로 끝나는 개조식은 손님에게 하는 문장으로 딱딱하다.

4. 책이 준비됐다는 잠금 화면 알림이 두 줄에서 잘린다. 다음 중 가장 알맞은 문장은?

알림은 잘리므로 손님이 결정에 쓰는 말(책 제목, 책방, 기한)을 앞에 둔다. 첫째는 인사와 서비스 이름이 앞을 차지해 기한이 잘리고 합니다체·해요체가 섞였다. 둘째는 핵심을 하나도 말하지 않고 앱을 열게 만든다. 넷째는 무엇이 준비됐는지 모르고 재촉만 한다.