저는 목요일 검토를 열었는데, 페이지가 이미 완성된 것처럼 보였습니다. 사이드 패널에는 히어로의 무료 초안이 있었습니다. 그곳은 대비가 통과했고 대체 텍스트도 작성했다고 주장했습니다.
저는 누가 실제 화면에서 색상 쌍을 측정했는지 물었습니다. 아무도 대답하지 않았고, 게시 버튼은 여전히 활성화된 상태였습니다. 추적할 수 없는 문장에 대해 당신이 그것을 누르시겠습니까?
그 침묵이야말로 제가 오늘 신경 쓰는 결정입니다. 저는 호출권을 가지고 있고, 키보드 사용자는 접촉을 놓칠 수 있습니다. 저는 공개되기 전에 URL을 붙잡아 둘 수 있습니다.
사람들은 생성된 페이지와 실제 게이트에 대해 다시 논쟁하고 있습니다. 저는 슬로건으로 여기서 그 논쟁을 해결하지 않을 것입니다. 증거가 누락된 순간에 머무를 것입니다.
이것은 제가 게이트를 가르치는 데 사용하는 시나리오입니다. 이것은 고객 연구가 아니며, 성공률도 없습니다. 아래 각 단계에는 실패할 수 있는 확인 사항이 있습니다.
초안이 말하기 전에 결정을 보류하세요
저는 모델의 출력물을 읽기 전에 한 줄을 작성합니다. 그 문장은 이 페이지가 오늘 공개될 수 있는지 여부를 말합니다. 저는 소유자, 피해(harm), 그리고 마지막 되돌릴 수 있는 순간을 명시합니다.
{
"decision": "publish_page",
"owner": "design_reviewer",
...
저는 모든 필드를 소리 내어 읽으며 카드를 확인합니다. 소유자는 검토에 참여하고 있는 사람이어야 합니다. 되돌릴 수 있는 순간은 실제 페이지 상태를 명시해야 합니다.
만약 소유자 필드가 비어 있다면, 저는 검토를 중단합니다. 만약 되돌릴 수 있는 순간이 나중에라고만 말한다면, 저는 중단합니다. 팔레트에 대한 분위기 메모는 노이즈만 추가할 것입니다.
누가 상태를 '차단됨(blocked)'에서 '준비됨(ready)'으로 이동하는 것이 허용됩니까? 그들을 이름 지을 수 없다면, 당신에게는 게이트가 없습니다. 해당 필드의 도구 이름은 소유자가 아닙니다.
사람이 본 쌍을 포착하세요
저는 모델의 대비 문장을 증거인 양 거부합니다. 저는 전경(foreground), 배경(background), 비율(ratio), 도구(tool), 그리고 사람을 기록합니다. 또한 대체 출처와 초점 기록도 표시합니다.
아래 숫자는 튜토리얼을 위한 고정 데이터입니다. 이것은 배포된 페이지의 실험실 결과가 아닙니다. 발견 사항이 아니라 복사할 모양으로 취급하세요.
pair: hero_heading
fg: "#1A1A1A"
bg: "#F7F4EF"
...
파일을 seen_by 필드를 주의 깊게 확인하여 검증합니다. 이 이름은 초안 작성 모델이 아니라 사람이어야 합니다. 비율(ratio)은 사람이 실행한 도구에서 나와야 합니다.
크림색 용지에 대한 차분한 언급은 단지 가설일 뿐입니다. 저장된 비율이야말로 제가 방어할 의향이 있는 증거입니다. 감정은 메모에 남을 수 있지만, 출판(publish)을 열 수는 없습니다.
저는 W3C 대비(contrast)와 대체 텍스트(text-alternative) 지침 쪽으로 시선을 돌립니다. 저는 모델에게 기준을 기억해 달라고 요청하는 것이 아닙니다. 만약 귀하의 팀이 더 엄격한 기준을 사용한다면, 그 기준을 명시하십시오.
이 파일에서 두 개의 잠금장치(lock)가 이미 보이나요? 대체 소스(alt source)가 누락되었고, 포커스 경로(focus path)도 표시되지 않았습니다. 이 잠금장치들은 매끄러운 히어로 문구보다 더 중요합니다.
어떤 간격이 당신을 막는지 말해주세요
누군가 카피를 칭찬하기 전에 저는 하나의 연구 질문을 던집니다. 이번 검토에서 출판을 막아야 할 누락된 필드는 무엇일까요? 오늘 의도적으로 무시해야 할 추가 메모는 무엇일까요?
이 시나리오에서 저는 세 가지 간격을 하드 스톱(hard stop)으로 선택합니다. 측정된 쌍에 사람이 기록한 비율이 없으면 멈춥니다. 본 이미지와 연결된 대체 소스가 없으면 멈춥니다.
아무도 키보드 경로를 아직 기록하지 않았다면 멈춥니다. 동일한 히어로 문구의 두 번째 의역은 무시합니다. 작성된 대체 텍스트 옆에 있는 신뢰 점수(confidence score)는 무시합니다.
새로운 사실을 추가하지 않는 더 긴 근거(rationale)는 무시합니다. 두 가지 장치(fixtures)가 이 분할을 반복 가능한 것으로 만듭니다. 스톱 장치는 의도적으로 기록된 포커스 경로를 생략합니다.
패스 장치는 소유자, 비율, 사람 대체 텍스트, 그리고 경로를 포함합니다. 우리는 만나기 전에 두 장치를 모두 점수화하여 프로토콜을 검증합니다. 만약 스톱 장치가 여전히 출판할 수 있다면, 그 질문은 연극이었습니다.
성공이란 검토 후에도 스톱 장치가 차단된 상태로 유지되는 것을 의미합니다. 이것이 페이지가 접근 감사(access audit)를 통과했다는 것을 의미하지는 않습니다. 패스 장치는 메모가 존재한다는 것만 보여줄 뿐, 그것들이 사실이라는 것은 아닙니다.
피해가 발생하는 순서대로 흐름을 걸어보세요
저는 우리가 곧바로 카피로 건너뛰지 않도록 흐름(flow)을 서술합니다. 한 사람이 페이지를 열고 연락처 컨트롤 쪽으로 탭 이동을 합니다. 포커스가 도중에 사라지거나, 이미지 대체 텍스트가 거짓말을 합니다.
그들이 떠나고 나면, 우리는 그 방문을 나중에 되돌릴 수 없습니다. 복구 지점은 공개 URL보다 앞에 위치해야 합니다. 게시된 후에는 수정 흐름이 더 느리고 차가워집니다.
open page -> contact 페이지로 이동 -> 포커스가 사라지거나 Alt 키를 누름 -> 방문자가 떠남
how the URL을 공개되기 전에 유지하기
공개됨 -> 비게시 -> 사람 버전 복원 -> 소유자에게 알림 -> 게이트 재실행
저는 각 단계(beat)마다 포인트를 찍으며 흐름을 검증합니다. 만약 어떤 단계에 화면 상태가 없다면, 그것은 단지 이야기일 뿐입니다. 현재의 목업이 그러한 포인트 테스트를 견딜 수 있을까요?
단어만 무료 초안 사용하기
저는 좁은 도우미(helper)를 사용하므로 먼저 관계를 보여줍니다. 공개합니다: 이 기사는 MonkeyCode의 제품 홍보의 일환으로 준비되었습니다. 저는 체험판에 초안을 위한 무료 모델 접근이 포함된다고 들었습니다.
또한 샌드박스를 위한 무료 서버 옵션이 존재한다고 들었습니다. 저는 토큰 할당량이나 머신 크기를 인증하지 않을 것입니다. 그 무료 옵션이 얼마나 오랫동안 이용 가능할지 약속하지도 않습니다.
연구를 계획하기 전에 실제 제품 페이지를 읽으십시오. 저 역시 라이선스나 저장소 상태를 여기서 확정된 것으로 취급하지 않을 것입니다. 저는 단지 증거 파일만 그 무료 서버 샌드박스에 배치합니다.
저는 개인 참가자 메모를 무료 호스팅 환경에 두지 않습니다. 저는 무료 모델에게 후보 대체 텍스트(alt text)만을 요청할 뿐입니다.
task: draft_alt_words
input: evidence_file_only
forbid: new_ratios, pass_or_fail, unseen_claims
...
저는 일반 텍스트 검색으로 모델의 응답을 검증합니다. 파일에 없었던 비율이 있는지 찾습니다. 또한 통과(passes), 준수(compliant), 그리고 접근 가능한 단어(word accessible)를 찾습니다.
'히트(hit)'는 제가 초안을 폐기하고 파일을 유지한다는 의미입니다. 샌드박스는 제가 출력을 버릴 수 있을 때만 도움이 됩니다. 무료 초안이 언젠가 카드 상태를 '준비됨(ready)'으로 바꿀까요?
저는 아니라고 말합니다. 왜냐하면 그 화면을 본 사람이 소유하기 때문입니다. 공식적인 적합성 감사(formal conformance audit)가 필요할 때는 이 단계를 건너뛰십시오. 페이지가 이미 공개 URL에 놓여 있을 때도 건너뛰십시오.
팀이 무료 옵션을 가동 시간(uptime)으로 간주할 때 건너뛰세요. 무료 도우미는 잠금장치가 보이는 후에 단어를 제안할 수 있습니다. 하지만 이 잠금장치가 누락되었다는 증거가 될 수는 없습니다.
두 장치에 중지 스크립트 실행하기
저는 명확하게 실패할 수 있는 검사의 지루함을 원합니다. 이 스크립트는 제가 여러분을 위해 아직 실행하지 않은 제안입니다. 이것은 파일에 필수 노트가 존재하는지만 확인합니다.
저장된 비율이 사실인지 판단하지는 않습니다. 시작 게이트처럼 복사한 다음, 여러분의 장치들을 가리키세요. 만약 파일 이름이 다르다면, 중지 규칙이 아니라 명령을 변경하세요.
import json, sys
card = json.load(open(sys.argv[1]))
...
저는 두 개의 명령어와 두 개의 예상 결과로 이 단계를 확인합니다. 중지 장치는 STOP을 출력하고 종료 코드 2를 반환해야 합니다. 통과 장치는 EVIDENCE_PRESENT를 출력한 다음 깨끗하게 종료해야 합니다.
python3 gate.py stop_card.json stop_evidence.json
python3 gate.py pass_card.json pass_evidence.json
첫 번째 명령어가 EVIDENCE_PRESENT를 출력하면, 게이트는 작동합니다(theater). 두 번째 명령어가 STOP을 출력하면, 통과 장치가 불완전하다는 의미입니다. 톤에 대해 논의하기 전에 파일이나 스크립트를 수정하겠습니다.
녹색 결과가 아직 접근성 연구 결과를 의미하지는 않습니다. 저는 이것을 소리 내어 말함으로써 제안이 결코 증거로 제출되지 않도록 합니다. 이 스크립트는 필드 확인으로서만 권장 사항을 지원합니다.
모델에게 묻지 않고 접근성 확인하기
저는 초안을 닫고 키보드로 페이지를 탐색합니다. 연락처 컨트롤에 도달할 때까지 Tab 키를 누릅니다. 각 중지 지점에서 포커스 링이 계속 보이는지 관찰합니다.
실제로 볼 수 있는 이미지와 대체 텍스트(alt text)를 비교합니다. 분위기를 추측한 초안은 저에게는 일치하지 않습니다. 장식용 이미지는 시가 아니라 빈 대체 텍스트가 필요합니다.
저는 파일 옆에 경로 노트를 작성하여 통과 여부를 확인합니다. 이 노트에는 순서대로 컨트롤이 나열되고 보이는 링이 있음을 확인합니다. 만약 제가 그 노트를 작성할 수 없다면, 상태는 차단된(blocked) 채로 유지됩니다.
색상만으로는 카드에 차단된 상태를 표시해서는 안 됩니다. '차단됨(blocked)'이라는 단어는 보이는 레이블 옆에 텍스트로 나타나야 합니다. 우리 자체 게이트도 색상으로 추측하지 않고 읽을 수 있어야 합니다.
제 탭 패스는 죽은 경로(dead path)를 잡아낼 수는 있지만, 그것이 전부입니다. 이는 시각 장애인 사용자가 자신의 도구로 테스트하는 것을 대체할 수 없습니다. 만약 우리가 완전한 접근성 검토(full access review)를 주장한다면, 우리는 과도하게 나가는 것입니다.
내가 페이지에 대해 들어보지 못했기 때문에 놓친 것은 무엇일까요? 조용한 제어 이름(quiet control name)만으로도 스크린 리더 사용자에게 차단될 수 있습니다. 그래서 저는 이 한계를 검토에 기록하여 주장이 작게 유지되도록 합니다.
누군가 배포했을 때 페이지를 되돌리기
때로는 제가 검토를 시작할 때 이미 URL이 활성화되어 있는 경우가 있습니다. 저는 모델의 alt 텍스트를 다듬는 것부터 시작하지 않습니다. 먼저 페이지를 비게시(unpublish)하거나 깨진 블록을 숨깁니다.
저는 사람이 실제로 승인했던 마지막 버전을 복원합니다. 누락된 부분이 기록에 남도록 나쁜 초안은 보관합니다. 누가 차단되었는지, 그리고 그들이 어떻게 재시도했는지를 명명합니다.
사건이 완전히 종료되었다고 아무도 부르기 전에 저는 복구(recovery)를 검증합니다. 공개 URL은 초안이 아니라 유지된 상태(held state)를 보여야 합니다. 아카이브에는 폐기된 모델의 문구도 여전히 포함되어야 합니다.
새로운 증거 파일이 완성될 때까지 게이트는 실패해야 합니다. 초안을 삭제하는 것이 오늘 팀에게 더 깨끗하게 느껴지게 할까요? 그것은 우리가 기억해야 할 정확한 누락 부분을 숨길 것입니다.
이 게이트가 하지 않을 것들
이 튜토리얼만으로는 생성된 페이지를 스스로 접근 가능하게 만들 수 없습니다. 이는 W3C 가이드라인이나 보조 기술 테스트를 대체하지 못합니다. 또한 인간이 게시했다는 이유로 포트폴리오가 중요하다는 것을 증명할 수도 없습니다.
저는 이 게이트를 법적 준수 주장(legal conformance claim)에 사용하지 않을 것입니다. 아무도 빌드된 화면을 볼 수 없을 때도 사용하지 않을 것입니다. 무료 서버에 개인 연구 노트를 저장하지도 않을 것입니다.
권장 사항은 오늘 지적할 수 있는 증거에 근거합니다. 페이지를 게시 승인하기 전에 측정된 쌍(measured pair)을 보여주세요. 보이는 alt 소스(seen alt source)와 기록된 키보드 경로(recorded keyboard path)도 보여주세요.
저 세 가지 공백이 회의에서의 승인을 막아야 합니다. 더 매끄러운 의역은 여기서 출판 결정을 풀지 못할 것입니다. 누락된 증거가 논의를 중단시키고, 추가적인 문구는 그저 잡음일 뿐입니다.
만약 아직 게시되지 않은 화면이 있다면, 먼저 카드를 실행하세요. 무료 초안이 글을 쓰기 전에 나쁜 장치가 실패하게 만드세요. 그런 다음, 소유자가 여전히 명시된 상태에서 이것이 출하될 수 있을지 결정하세요.