Chapter 12

다크 패턴과 윤리

5월 시범 운영이 끝난 날, 작은 숲 주인이 두 가지를 부탁했다. 맡기기 화면의 "신간 소식 문자 받기"를 처음부터 체크해 두면 좋겠다는 것, 그리고 "3일이 지나면 다음 손님에게 넘어가요"라는 문장은 너무 딱딱하니 작게 줄이거나 빼자는 것. 둘 다 악의는 없었다. 아이를 키우는 부모들에게 새 그림책 소식을 꼭 전하고 싶었고, 손님을 재촉하는 것처럼 보이기 싫었다. 그러나 두 부탁을 그대로 들어주면 손님은 원하지 않은 문자를 받고, 모르는 규칙 때문에 맡긴 책을 잃는다. 이 장은 화면이 사람의 선택을 어떻게 몰래 기울이는지, 그것을 어떻게 알아보고 고치는지, 그리고 손님의 전화번호처럼 맡겨진 것을 얼마나, 얼마 동안 가질지를 본다.

속이는 설계

영국의 UX 디자이너 해리 브리그널(Harry Brignull)은 2010년, 사용자가 원하지 않는 일을 하도록 일부러 짠 인터페이스에 다크 패턴(Dark pattern)이라는 이름을 붙이고 사례를 모으는 웹사이트를 열었다. 이름이 붙자 흩어져 있던 불평들이 하나의 문제로 보이기 시작했다. 자동으로 넘어가는 유료 구독, 찾을 수 없는 탈퇴 버튼, 결제 직전에 붙는 수수료. 브리그널은 뒤에 이 말을 기만적 패턴(Deceptive pattern)으로 바꿔 부르기 시작했고, 2023년에 그동안의 사례와 분류를 『기만적 패턴』(Deceptive Patterns: Exposing the Tricks Tech Companies Use to Control You)이라는 책으로 냈다. 이름을 바꾼 이유로 그는 "다크"라는 말이 문제의 본질(속임)을 정확히 말하지 못하고 불필요한 연상을 남긴다는 점을 들었다. 이 장에서는 널리 쓰이는 "다크 패턴"과 "기만적 설계"를 함께 쓴다.

학계도 이 주제를 다룬다. 콜린 그레이(Colin M. Gray) 등은 「UX 디자인의 어두운 (패턴) 면」(The Dark (Patterns) Side of UX Design, CHI 2018)에서 실무자들이 모은 사례를 분석해 유형을 다시 묶었고, 아루니시 마투르(Arunesh Mathur) 등은 「대규모로 본 다크 패턴」(Dark Patterns at Scale, CSCW 2019)에서 쇼핑 웹사이트 약 1만 1천 곳을 자동으로 훑어 이런 설계가 드물지 않다는 것을 보였다. 이 장은 그 연구들의 수치를 옮기지 않는다. 대신 그들이 공통으로 쓰는 판단 기준을 빌린다.

알리기 권하기 기울이기 속이기 "2권 있어요" "이 책도 있어요" 미리 체크한 칸 가짜 "5명이 보는 중" 설득 조작·기만 숨기는가 알아야 할 것이 작게, 늦게, 멀리 거짓인가 없는 마감, 없는 경쟁자 다른 길을 막는가 거절·취소가 훨씬 어렵다 기본값이 불리한가 가만있으면 원치 않는 쪽으로
그림 1. 설득에서 기만까지. 모든 화면은 무언가를 권한다. 문제는 권하는 방식이다. 아래 네 질문 가운데 하나라도 "예"이면 그 화면은 사용자의 판단을 돕는 것이 아니라 우회하고 있을 가능성이 크다. 띠의 경계는 칼로 자른 듯 분명하지 않으며, 같은 장치도 맥락에 따라 자리가 달라진다.

다크 패턴을 판단할 때 흔히 빠지는 함정은 의도를 묻는 것이다. "속이려던 게 아니에요." 작은 숲 주인도 그랬다. 그러나 손님이 보는 것은 의도가 아니라 화면이다. 미리 체크된 칸은 체크한 사람의 마음과 상관없이 "가만있으면 동의"라는 구조를 만든다. 그래서 이 장은 의도 대신 구조를 묻는다. 그 화면에서 사용자가 알아야 할 것이 보이는가, 사실인가, 다른 선택이 같은 무게로 열려 있는가, 아무것도 안 하면 누구에게 유리한 쪽으로 가는가.

소리 내어 읽어 보기 서윤과 하린이 화면을 점검할 때 쓰는 간단한 시험이 있다. 화면의 장치를 손님 앞에서 말로 설명한다고 상상한다. "이 칸은 손님이 문자를 원할 거라고 우리가 미리 정해 뒀어요. 원하지 않으시면 찾아서 끄세요." "이 숫자 10:00은 아무 의미 없는데, 서두르시라고 넣었어요." 말로 하면 민망한 설명이 필요한 장치라면, 화면에서도 하지 않는다. 체계적인 방법은 아니지만, 회의에서 "이건 괜찮지 않나요?"라는 말을 멈추게 하는 데는 꽤 쓸모 있다.

들어가기는 쉽게, 나가기는 어렵게

브리그널이 초기에 바퀴벌레 덫(Roach motel)이라고 불렀던 유형이 있다. 들어가기는 쉬운데 나오기는 어렵게 만든 구조다. 지금은 "해지 방해", "방해"로 부른다. 가입은 버튼 한 번으로 되는데 해지하려면 설정 메뉴 깊숙이 들어가야 하고, 이유를 길게 써야 하고, 혜택 안내를 몇 번 넘겨야 하고, 마지막에는 전화를 걸어야 하는 식이다. 이 구조는 비대칭으로 알아볼 수 있다. 같은 사람이 같은 서비스에서 반대 방향으로 가는 데 드는 수고를 세어 비교한다.

"맡아 두기"에는 구독이 없지만 같은 문제가 있다. 맡기기는 5장에서 정한 다섯 단계로 끝나는데, 취소는 어디서 하는가? 시범 운영 화면에서는 "내 맡김" 화면의 오른쪽 위 메뉴 안에 "취소"가 있었고, 누르면 확인 대화상자가 한 번 더 떴다. 아래에서 취소 흐름에 장애물을 하나씩 더해 본다. 장애물마다 취소하려던 손님의 일부가 포기한다고 가정한다.

SIMULATOR

맡기기 탭 수와 취소 탭 수

맡기기 · 취소 탭—
취소하려던 100명 중 포기—
헛되이 묶이는 책·날(가상)—
해볼 것: ① 처음 상태(메뉴 안의 취소)에서 두 사다리의 높이를 비교한다. ② 전화는 끄고 메뉴와 이유 고르기만 켠다. 취소가 일곱 탭으로 맡기기(다섯 탭)보다 높아진다. 이어서 전화까지 켠다. 탭 수는 다섯으로 맡기기와 같아지지만 마지막 두 칸이 화면 밖(전화)으로 나가고, 장애물이 가장 많아 포기하는 사람도 가장 많다. 탭 수가 같아도 화면에서 끝나지 않으면 대칭이 아니다. ③ 모두 끈다. "내 맡김"을 열고 상태 카드의 "맡김 취소"를 누르면 두 탭으로 끝난다. ④ 포기 비율을 0으로 내려 본다. 모두가 끝까지 취소해도 수고의 비대칭은 남는다. (모형의 가정: 맡기기는 5장의 다섯 단계를 다섯 탭으로 센다. 장애물 하나마다 남은 사람 중 같은 비율이 포기하고, 전화는 장애물 둘만큼으로 센다. 포기한 사람이 맡긴 책은 3일 기한이 끝날 때까지 평균 2일 더 묶인다고 두었다. 모두 가상 값이다.)

해지 방해는 보통 "떠나는 손님을 붙잡는" 장치로 정당화된다. 그러나 "맡아 두기"에서 취소를 어렵게 만들면 손해를 보는 것은 손님만이 아니다. 취소하지 못한 손님의 책은 3일 동안 서가에서 빠져 있고, 그 책을 찾던 다른 손님은 헛걸음을 한다. 3장에서 이 서비스가 풀려고 했던 바로 그 문제다. 숫자로 보면 붙잡은 것처럼 보이지만(취소 건수가 준다), 실제로는 아무도 찾아가지 않을 맡김이 늘어날 뿐이다. 이 이야기는 이 장의 마지막 절에서 지표의 문제로 다시 만난다.

규제도 이 비대칭에 주목한다. 한국의 「전자상거래 등에서의 소비자보호에 관한 법률」(전자상거래법)은 온라인 거래에서 소비자를 속이거나 선택을 방해하는 행위를 다루며, 최근의 개정으로 숨은 갱신이나 취소·해지 방해 같은 일부 다크 패턴 유형을 직접 다루게 되었다. 유럽연합의 디지털 서비스법(Digital Services Act, 2022)도 온라인 플랫폼이 이용자의 자율적 선택을 왜곡하는 인터페이스를 쓰지 못하게 한다. 이 책은 법률 해설서가 아니므로 조항을 옮기지 않는다. 실제 서비스를 만든다면 그때의 법령 원문과 전문가의 확인을 거친다. 다만 방향은 분명하다. 들어오는 문과 나가는 문의 크기를 같게.

필요한 만큼만, 필요한 동안만

주인들이 처음 내민 기능 목록(1장)에는 모을 정보도 길게 적혀 있었다. 이름, 전화번호, 이메일, 생년월일(생일 쿠폰), 주소(배달할지도 몰라서), 성별, 관심 분야(추천에 쓰려고), 지금 위치. 하나하나는 "있으면 언젠가 쓸모 있을" 정보다. 그러나 모은 정보는 그 자체로 책임이다. 지켜야 하고, 유출되면 손님이 피해를 입고, 모은 목적이 사라진 뒤에도 남아 있으면 쓸모없이 위험만 남는다.

그래서 개인정보를 다루는 법과 지침은 거의 공통으로 최소 수집(Data minimization)을 원칙으로 둔다. 목적에 필요한 항목만, 그 목적에 필요한 기간만 모으고 가진다. 한국의 「개인정보 보호법」도 목적에 필요한 최소한의 정보를 모으고, 목적을 이루면 지체 없이 파기하는 원칙을 두고 있다. 아래 그림은 정보 한 조각의 일생이다.

모으기 쓰기 보관하기 지우기 이 목적에 꼭 필요한가 알린 목적 안에서만 누가 볼 수 있나 언제까지 두나 정말 지워지나 위험은 보관하는 동안 계속된다: 오래 둘수록, 많이 둘수록 커진다 보관 중인 정보의 양 ≈ 하루에 모으는 사람 수 × (쓰는 기간 + 보관 기간) × 항목 수
그림 2. 정보 한 조각의 일생. 모으는 순간보다 보관하는 기간이 훨씬 길다. 보관 중인 정보의 양은 대략 들어오는 속도와 머무는 시간의 곱이다(대기열 이론의 리틀의 법칙과 같은 꼴의 어림이다). 모으는 항목을 줄이거나 보관 기간을 줄이면 그만큼 줄어든다.

아래 시뮬레이터에서 주인들이 원한 여덟 항목 가운데 무엇을 모을지 화면 위의 칸을 눌러 고르고, 맡김이 끝난(찾아감·취소·기한 지남) 뒤 며칠 동안 보관할지 정한다. "맡아 두기"에는 하루 평균 10건의 맡김이 들어온다고 가정한다(가상 값).

SIMULATOR

수집 항목과 보관 기간

항목을 눌러 켜고 끈다
모으는 항목 · 목적 없는 항목—
1년 뒤 보관 중인 사람—
보관 중인 정보 조각(사람 × 항목)—
해볼 것: ① 처음 상태(여덟 항목 전부, 1년 보관)에서 정보 조각이 얼마나 쌓이는지 본다. ② "목적에 필요한 것만"을 누른다. 전화번호(확인과 준비 알림)와 받는 이름(가게에서 찾을 때, 선택)만 남는다. ③ 보관 기간을 30일로 줄인다. 그래프가 한 달 남짓에서 평평해진다. 사람이 계속 들어와도 오래된 기록이 같은 속도로 지워지기 때문이다. ④ 보관 기간을 0으로 내린다. 다툼이 생겼을 때(맡겼는데 책이 없었다) 확인할 기록조차 남지 않는다. 짧을수록 늘 좋은 것은 아니다. (모형의 가정: 하루 10건이 고르게 들어오고, 맡김은 평균 3일 동안 진행된다. 같은 손님이 여러 번 맡기는 경우는 따로 세지 않았다. "목적 없는 항목"은 첫 버전의 기능에 쓰이지 않는 항목이다. 모두 가상 값이다.)

보관 기간을 정하는 일은 두 위험 사이에서 고르는 일이다. 너무 길면 쓸모없는 정보가 쌓여 유출 때의 피해가 커지고, 너무 짧으면 "맡겼는데 가게에 책이 없었다" 같은 다툼을 확인할 수 없다. 서윤은 다툼이 생기면 대개 일주일 안에 연락이 온다는 시범 운영의 경험(가상)을 근거로, 맡김이 끝난 뒤 30일 보관을 제안했다. 법이 따로 보관을 요구하는 기록이 있는지는 실제 서비스라면 확인해야 한다. 그리고 지우는 것도 설계해야 한다. "30일 뒤 지운다"는 문장은 자동으로 지우는 기능이 있어야 사실이 된다. 지후는 매일 밤 한 번, 끝난 지 30일이 지난 기록의 전화번호를 지우는 작업을 만들기로 했다. 통계에는 전화번호 없는 집계만 남긴다.

내 정보의 목록 만들기 휴대폰에서 최근 한 달 동안 새로 가입하거나 정보를 입력한 앱과 웹사이트 다섯 곳을 떠올린다. 종이에 표를 그리고, 곳마다 내가 넘긴 정보를 적는다(이름, 전화번호, 생년월일, 주소, 위치 권한, 연락처 권한…). 그 옆 칸에 "그 서비스가 하는 일에 이것이 정말 필요했나"를 ○·△·×로 적는다. 마지막 칸에는 그 서비스가 내 정보를 언제 지운다고 했는지 찾아 적는다(개인정보 처리방침에 있다). 찾지 못하면 "모름"이라고 쓴다. 표를 다 채우면 ×와 "모름"이 생각보다 많다는 것을 알게 된다. 내가 만드는 서비스의 표도 같은 방식으로 그려 본다.

포용적 설계: 시간과 사람

속이려는 의도가 전혀 없어도 화면은 누군가를 떨어뜨릴 수 있다. "맡아 두기"의 전화번호 확인에는 문자로 받은 여섯 자리 번호를 3분 안에 넣어야 하는 제한이 있었다. 보안을 위한 흔한 설계다. 그런데 시범 운영에서 이 화면을 끝내지 못한 손님들이 있었다. 문자 앱과 브라우저를 오가는 것이 익숙하지 않은 사람, 글자를 크게 키워 쓰는 사람, 화면 낭독기로 쓰는 사람, 아이를 안고 한 손으로 쓰던 사람.

포용적 설계(Inclusive design)는 "평균적인 사용자"를 기준으로 삼지 않고, 제외되기 쉬운 사람에서 출발해 설계하는 태도다. 마이크로소프트의 포용적 디자인 지침(Inclusive Design, 2016)은 장애를 영구적인 것(한쪽 팔이 없는 사람), 일시적인 것(팔을 다친 사람), 상황적인 것(아이를 안고 있는 사람)으로 이어서 보는 그림으로 이 생각을 널리 알렸다. 한 손으로 쓰기 어려운 사람을 위해 고친 화면은 아이를 안은 부모에게도 쓸모 있다.

시간 제한에 대해서는 웹 접근성 지침이 분명한 기준을 둔다. WCAG 2.2의 2.2.1(시간 조절 가능)은 시간 제한이 있으면 사용자가 그것을 끄거나, 조절하거나, 끝나기 전에 알림을 받고 간단한 동작으로(최소 20초의 여유를 두고) 연장할 수 있어야 한다고 한다. 실시간 경매처럼 시간이 본질인 경우 등은 예외로 둔다. 같은 지침의 3.3.8(접근 가능한 인증, 최소)은 인증 과정에서 기억하거나 옮겨 적는 일 같은 인지 기능 시험을 요구할 때 붙여 넣기나 자동 입력 같은 다른 길을 함께 두라고 한다. 아래 모형에서 제한 시간과 연장 알림을 바꾸며, 손님 무리마다 몇 명이 시간 안에 끝내지 못하는지 본다.

SIMULATOR

인증번호 시간 제한은 누구를 떨어뜨리나

시간 안에 못 끝낸 비율(전체)—
가장 많이 떨어지는 무리—
해볼 것: ① 처음 상태(3분)에서 무리마다 막대의 빨간 부분을 본다. 익숙한 손님은 거의 다 끝내지만 화면 낭독기 사용자는 셋 중 하나 넘게, 글자를 크게 쓰는 손님도 열에 하나 넘게 떨어진다. ② 제한 시간을 30초로 줄인다. 모든 무리가 떨어지지만, 떨어지는 순서는 그대로다. ③ 3분으로 되돌리고 "알리고 연장"을 켠다. 시간을 늘리지 않아도 떨어지는 사람이 크게 준다. ④ "자동 채우기"도 켠다. 번호를 옮겨 적는 일 자체가 줄어 모든 무리가 빨라진다. 가장 느린 무리를 위해 고친 것이 모두를 돕는다. (모형의 가정: 무리마다 걸리는 시간이 로그정규 분포를 따르며 가운데 값은 익숙한 손님 35초, 처음 쓰는 손님 80초, 글자 크게 쓰는 손님 95초, 화면 낭독기 150초, 한 손으로 쓰는 상황 70초다. 연장은 제한 시간을 한 번 더 주고, 자동 채우기는 걸리는 시간을 40% 줄인다고 두었다. 모두 가상 값이며 실제 측정이 아니다.)

모형의 수치는 지어낸 것이지만, 모양은 사용성 테스트에서 자주 보는 것이다(8장). 평균에 맞춘 제한은 꼬리에 있는 사람들을 잘라 낸다. 그리고 그 꼬리에는 늘 같은 사람들이 있다. 나이 든 손님, 장애가 있는 손님, 바쁜 상황에 있는 손님. WebBook의 첫 시험 사용자였던 도경은 휴대폰 글자를 가장 크게 키워 쓴다. 도경이 문자 앱에서 번호를 외워 돌아오는 사이 3분이 지나면, 그것은 도경의 실수가 아니라 화면의 설계다.

윤리는 접근성과 겹친다 다크 패턴과 접근성 문제는 출발점이 다르지만 결과가 겹친다. 흐린 글자의 거절 버튼은 시각 방해이자 대비 부족이다(WCAG 1.4.3). 다시 시작되는 가짜 타이머는 가짜 긴급이자 시간 제한 문제다(2.2.1). 해지 미로는 방해이자 인지 부담이다. 그래서 "속이지 않는가"를 점검할 때 접근성 점검표(WebBook 11장)를 함께 쓰면 놓치는 것이 준다. 반대로 접근성 기준을 모두 지키고도 기만적일 수 있다. 대비가 충분한 글자로 거짓말을 할 수도 있으니까.

지표가 사람을 해칠 때

9장에서 서윤은 "맡긴 뒤 실제로 찾아간 비율"을 지표로, "주인 확인 지연"을 가드레일로 정했다. 왜 더 단순한 숫자, 예를 들어 "맡아 두기 버튼을 누른 수"를 쓰지 않았을까. 버튼을 누른 수는 재기도 쉽고 매일 오르내려 보기에도 좋다. 문제는 그 숫자를 올리는 가장 쉬운 방법들이 이 장에서 본 장치들이라는 데 있다. 가짜 긴급 배너를 띄우고, 버튼을 깜빡이게 하고, 알림을 미리 체크해 다시 불러들이면 누른 수는 오른다. 그러나 찾아갈 생각이 없던 사람들의 맡김도 함께 늘어, 책은 서가에서 빠진 채 묶이고 다른 손님은 헛걸음을 한다.

경제학자 찰스 굿하트(Charles Goodhart)의 이름이 붙은 굿하트의 법칙(Goodhart's law)은 이 현상을 가리킨다. 1975년 굿하트가 통화 정책에 관해 지적한 것을, 인류학자 메릴린 스트래선(Marilyn Strathern)이 1997년 글에서 "측정값이 목표가 되면 좋은 측정값이기를 멈춘다"는 뜻으로 일반화한 표현이 널리 퍼졌다. 아래 모형에서 화면의 "압박 강도"를 올려 본다.

SIMULATOR

누른 수가 오를 때 일어나는 일

끌어서 압박 강도를 바꾼다
맡아 두기 누른 수—
찾아간 비율 · 찾아간 수—
헛되이 묶인 책—
해볼 것: ① 압박 0에서 출발해 천천히 올린다. 누른 수(보라)는 곧게 오른다. 대시보드에 이 선 하나만 있다면 압박을 끝까지 올리고 싶어진다. ② 찾아간 비율(초록)은 반대로 내려간다. 찾아간 수(점선)는 압박 0.3 근처까지 조금 오르다가 다시 떨어진다. ③ 헛되이 묶인 책(주황)이 가드레일 한도를 넘는 지점을 찾는다. 그 너머의 "성장"은 손님과 가게 모두에게 손해다. ④ 압박을 1까지 올리고 누른 수와 찾아간 수를 비교한다. (모형의 가정: 압박이 0일 때 하루 100건 누르고 82%가 찾아간다. 압박 1에서 누른 수는 60% 늘고 찾아간 비율은 47%까지 떨어진다. 가드레일 한도는 하루 30권이다. 모두 이 책이 지어낸 가상 모형이다.)

모형에서 "찾아간 수"가 압박 0.3 근처에서 조금 오르는 구간이 가장 위험하다. 짧은 실험이라면 그 구간에서 "압박이 효과가 있다"는 결론이 나올 수 있다. 그러나 그 작은 증가는 원하지 않던 맡김과 헛되이 묶인 책, 문자에 지친 손님을 대가로 얻은 것이고, 그 대가는 실험 기간에는 잘 보이지 않는다. 지표를 고를 때 "이 숫자를 올리는 가장 쉬운 방법은 무엇인가, 그 방법이 사람에게 해로운가"를 먼저 묻는 이유다. 해로운 방법으로도 올릴 수 있는 숫자라면 반드시 그 해를 재는 가드레일과 짝을 지운다.

윤리 점검을 절차에 넣기 좋은 뜻만으로는 다크 패턴을 막기 어렵다. 마감이 다가오고 숫자가 나쁘면 누구나 "이번만"을 말한다. 그래서 서윤과 하린은 점검을 사람의 양심이 아니라 절차에 넣었다. 화면이 공개되기 전에 네 가지를 묻는다. 그림 1의 네 질문(숨기는가, 거짓인가, 다른 길을 막는가, 기본값이 불리한가), 거절과 취소의 탭 수가 수락과 맡기기의 탭 수를 넘지 않는가, 새로 모으는 정보에 목적과 보관 기간이 적혀 있는가, 새 지표를 올리는 가장 쉬운 방법이 무엇인가. 질문 하나에 걸리면 공개를 미루고 고친다. 11장의 판단 나무 끝에 있던 "해가 없는가"라는 질문을 구체적으로 풀어 쓴 것이다.

서윤의 서비스 노트

CASE 서윤서비스 노트 · 12장

기본은 해제, 규칙은 크게, 취소는 두 탭

작은 숲 주인의 두 부탁을 받은 날 저녁, 서윤은 거절하는 대신 하린과 함께 주인에게 이 장의 시뮬레이터들을 보여 주었다. 동의 화면 시뮬레이터에서 미리 체크 하나만 켜도 "동의"는 72명이 되었지만 정말 원한 사람은 30명이었다. 하린이 물었다. "나머지 42명이 문자를 받고 나서 작은 숲을 어떻게 기억할까요?" 주인은 한참 화면을 보다가 말했다. "그림책을 기다리는 부모들은 30명이면 충분해요. 귀찮아하는 사람한테 보내 봐야 차단만 당하겠네요." 신간 소식 칸은 맡기기와 떨어진 자리, 맡기기가 끝난 뒤의 완료 화면에 기본 해제로 두었다. "(선택) 작은 숲의 신간 그림책 소식을 문자로 받을래요"라고 적고, 받기와 안 받기 버튼을 같은 크기로 놓았다. 수신은 "내 맡김" 화면에서 언제든 끌 수 있다.

"3일이 지나면 다음 손님에게 넘어가요"는 오히려 크게 했다. 맡기기 확인 화면에서 버튼 바로 위에 두고, 기한 하루 전에 문자로 한 번 더 알린다. 주인의 걱정(재촉하는 것처럼 보인다)은 문장으로 풀었다. 10장의 해요체 원칙대로, 8장에서 정한 날짜와 함께 "6월 3일(토)까지 맡아 둘게요. 그 뒤에는 기다리는 다른 손님에게 넘어가요." 하린은 이 규칙을 숨기면 가장 먼저 다치는 사람이 손님이고, 그다음이 그 손님에게 원망을 듣는 주인이라고 했다.

수집 항목은 주인들의 목록 여덟 개에서 둘로 줄였다. 지후가 "생년월일은 나중에 생일 쿠폰 할 때…"라고 하자 서윤은 "그때 그 기능과 함께 물어보면 돼요"라고 답했다. 취소는 "내 맡김"의 상태 카드마다 "맡김 취소" 버튼으로 꺼내 두었다. "내 맡김"을 열고 버튼을 누르면 두 탭으로 끝난다. 확인 대화상자는 두지 않고, 5장의 방식대로 바로 취소한 뒤 화면 아래에 "되돌리기"를 몇 초 띄운다. 이유는 묻되 고르지 않아도 된다. 인증번호 제한은 5분으로 늘리고, 끝나기 1분 전에 알려 한 번에 연장할 수 있게 했으며, 입력하던 번호는 지우지 않는다. 문자의 번호를 자동으로 채우는 입력 속성도 켰다(지원하는 기기에서).

항목서윤의 선택확인한 값
신간 소식 동의맡기기 완료 뒤 따로, 기본 해제, 받기·안 받기 같은 크기, 언제든 끄기동의 화면 네 조건 모두 통과
준비·기한 알림맡기기에 필요한 알림으로 안내(광고 문자와 분리)준비됨 1회, 기한 하루 전 1회
기한 규칙날짜와 "그 뒤에는 다음 손님에게"를 맡아 두기 버튼 바로 위에, 본문과 같은 크기로숨기지 않음
모으는 항목전화번호(필수: 확인·알림), 받는 이름(선택, 별칭 가능)8개 → 2개. 주인 화면에는 번호 뒤 네 자리만
보관 기간맡김이 끝난 날(찾아감·취소·기한 지남)부터 30일 뒤 전화번호 자동 삭제, 통계는 번호 없는 집계만하루 10건 가정 시 보관 약 330명(1년 보관이면 운영 1년 뒤 약 3,650명)
취소상태 카드마다 "맡김 취소", 대화상자 없이 바로 취소하고 "되돌리기", 이유는 선택맡기기 5탭 · 취소 2탭
인증번호 시간5분, 1분 전 알림과 한 번에 연장, 입력 유지, 번호 자동 채우기WCAG 2.2의 2.2.1 기준에 맞춤
지표9장의 지표(찾아간 비율)와 가드레일 유지, 동의율은 목표로 쓰지 않음공개 전 윤리 점검 질문 네 가지
이 장에서 정한 것동의는 기본 해제. 광고성 신간 소식은 맡기기와 분리해 완료 화면에서 따로 묻고, 받기와 안 받기를 같은 무게로 둔다. 수집 항목은 전화번호(필수)와 받는 이름(선택) 둘뿐이며, 맡김이 끝난 날부터 30일 뒤 전화번호를 자동으로 지운다(실제 서비스라면 법적 보관 의무를 확인한다). 기한 규칙(날짜와 "그 뒤에는 다음 손님에게")은 맡아 두기 버튼 바로 위에 크게 쓰고 하루 전 알린다. 취소 버튼은 숨기지 않는다: 상태 카드마다 "맡김 취소", "내 맡김"에서 2탭, 확인 대화상자 대신 되돌리기. 인증번호는 5분, 연장 가능, 입력 유지. 화면 공개 전에 네 가지 윤리 점검 질문을 거친다.
아직 남은 문제흐름, 퍼널, 사용성 테스트, A/B 결과, 시스템, 윤리 점검을 장마다 따로 정했다. 6월 말 정식 공개 전에 이것들이 한 서비스 위에서 서로 부딪히지 않는지, 어떤 결론이 얼마나 확실한지 한꺼번에 보고 싶다.
다음 단계13장: 제품 실험실에서 모든 것을 함께 조정해 본다.

핵심 정리

  1. 다크 패턴(기만적 패턴)은 사용자가 원하지 않는 선택을 하도록 짠 설계다. 해리 브리그널이 2010년에 이름을 붙였고, 2023년 책 『Deceptive Patterns』로 정리했다. 의도가 아니라 구조로 판단한다: 숨기는가, 거짓인가, 다른 길을 막는가, 기본값이 불리한가.
  2. 미리 선택, 확인 수치심, 숨은 비용, 가짜 긴급, 속임 문구, 시각 방해는 모두 같은 무게를 돌려주는 방식으로 고친다. 디자인 시스템의 부품은 중립이므로, 쓰지 않을 때를 문서에 적어 둔다.
  3. 들어오는 문과 나가는 문의 크기를 같게 한다. 맡기기와 취소, 가입과 해지의 수고를 세어 비교한다. 취소를 막으면 손님뿐 아니라 가게와 다른 손님도 손해를 본다.
  4. 동의는 자유롭고, 구체적이며, 분명한 행동으로, 거절이 수락만큼 쉬워야 한다. 미리 체크된 칸은 동의가 아니다. 동의율을 목표로 삼으면 동의 화면이 기울어진다.
  5. 목적에 필요한 항목만, 필요한 기간만 모은다. 보관 중인 정보의 양은 대략 들어오는 속도 × 머무는 기간 × 항목 수다. 지우는 것도 기능으로 설계한다.
  6. 평균에 맞춘 제한은 늘 같은 사람들을 떨어뜨린다. 시간 제한에는 알림과 연장을 둔다(WCAG 2.2의 2.2.1). 쉽게 올릴 수 있는 숫자를 목표로 삼으면 해로운 방법으로 올리게 된다(굿하트의 법칙). 그런 지표에는 해를 재는 가드레일을 짝지운다.

확인 퀴즈

1. 회원 가입 화면 맨 아래에 "이벤트·광고 문자 수신 동의" 칸이 미리 체크되어 있다. 이 장의 기준으로 가장 알맞은 판단은?

동의는 분명한 행동으로 이루어져야 한다. 미리 체크된 칸은 "가만있으면 동의"라는 구조이고, 유럽연합 사법재판소의 Planet49 판결(2019)도 미리 체크된 칸은 유효한 동의가 아니라고 보았다. 광고성 연락은 서비스 이용에 꼭 필요한 처리가 아니므로 따로 선택하게 한다. 칸을 더 작게 하는 것은 시각 방해를 더할 뿐이다.

2. 어떤 서비스는 버튼 하나로 정기 구독을 시작하지만, 해지하려면 설정 메뉴 세 단계, 해지 이유 설문, 혜택 안내 두 화면을 거친 뒤 고객센터에 전화해야 한다. 이 설계를 가리키는 말로 가장 알맞은 것은?

들어가기는 쉽고 나가기는 어렵게 만든 비대칭 구조다. 브리그널은 처음에 바퀴벌레 덫(Roach motel)이라고 불렀고 지금은 해지 방해, 방해로 부른다. 확인 수치심은 거절 문구를 부끄럽게 만드는 것, 숨은 비용은 마지막에 수수료를 붙이는 것, 가짜 희소성은 남은 수량을 지어내는 것이다.

3. 하루 평균 10명이 맡기고, 맡김은 평균 3일 동안 진행되며, 끝난 뒤 30일 동안 전화번호를 보관한다. 운영이 충분히 길어졌을 때 보관 중인 전화번호는 대략 몇 개인가?

보관 중인 양은 들어오는 속도 × 머무는 기간이다. 10명/일 × (3일 + 30일) = 330개. 오래된 기록이 들어오는 속도와 같은 속도로 지워지므로 일정한 수준에서 멈춘다. 3,650개는 1년(365일) 동안 지우지 않았을 때의 값이고, 30개는 보관 기간만 센 오답이다.

4. 팀이 "맡아 두기 버튼을 누른 수"를 핵심 목표로 삼자, 화면에 가짜 마감 배너와 깜빡이는 버튼이 늘었다. 누른 수는 올랐지만 실제로 찾아간 비율은 떨어졌다. 이 현상을 가장 잘 설명하는 것은?

굿하트의 법칙(스트래선의 일반화)이 말하는 현상이다. 누른 수를 올리는 가장 쉬운 방법이 압박 장치였고, 그로 인해 찾아갈 생각이 없는 맡김까지 늘어 찾아간 비율이 떨어졌다. 해로운 방법으로도 올릴 수 있는 지표에는 해를 재는 가드레일(예: 헛되이 묶인 책)을 짝지운다. 표본의 우연(9장)과는 다른 문제다.