모든 시력표 앱은 동일하고 치명적인 실수를 범합니다. 바로 사용자에게 글자를 보여주기만 한다는 점입니다. 시력은 단순히 글자 크기의 문제가 아닙니다. 글자가 눈에서 이루는 시각(angle)의 문제입니다. 진료실 시력표의 20/20 라인은 시력표에서 20피트 떨어져 서 있을 때만 유효합니다. 5피트 앞으로 걸어가면 동일하게 인쇄된 글자라도 전혀 다른 시력을 테스트하게 됩니다. 시력표의 진정한 의미는 설계된 딱 그 거리에서 볼 때만 존재합니다. 그 시력표를 사진으로 찍어 휴대폰 화면에 띄우고, 휴대폰을 자기 마음대로 쥐고 보는 사람에게 건넨다면, 아무런 의미도 없는 수치만 만들어내는 도구를 준 것이나 다름없습니다.

따라서 휴대폰 버전의 검사는 기하학에서 출발합니다. 하나의 각도를 정의하려면 두 변의 길이를 측정해야 하며, 이 활동은 두 변을 모두 측정합니다.

첫 번째 변: 가정하지 않고 직접 측정한 화면

첫 번째 변은 화면에 표시되는 글자(시표)의 실제 물리적 크기입니다. 이 활동은 추측한 "일반적인 휴대폰 화면"이 아니라, 기기에서 디스플레이의 실제 기하학적 사양인 픽셀 피치(밀리미터당 픽셀 수)와 물리적 치수를 직접 읽어옵니다. 특정 각도를 이루도록 설계된 시표를 띄울 때, 화면 유리에 몇 밀리미터의 크기로 표시해야 하는지, 따라서 정확히 몇 픽셀이 필요한지를 계산해 냅니다.

두 번째 변: 줄자 역할을 하는 카메라 — 실시간으로 지속적인 측정

두 번째 변은 화면과의 거리입니다. 이 과정을 진정한 측정으로 만드는 비결은 바로 전면 카메라가 사용자의 얼굴을 관찰하여 검사가 진행되는 동안 계속해서 거리를 실시간으로 추적한다는 점입니다. 이때 카메라의 화각과 양 눈 사이의 거리를 기준 척도로 활용합니다.

지속 측정이 중요합니다. 몇 분씩 걸리는 테스트 동안 휴대폰을 가만히 들고 있을 수 있는 사람은 없습니다. 몸을 움직이거나 기울이거나 자세를 고쳐 잡게 마련이니까요. 테스트 시작 시점에 딱 한 번만 거리를 측정한다면 이 미세한 움직임이 왜곡(편향)으로 고스란히 누적됩니다. 대신, 모든 시표는 화면에 표시되는 순간의 실시간 측정 거리에 맞춰 크기가 재조정됩니다. 5 cm만 가까워져도 다음 글자가 더 작게 그려지므로, 테스트가 의도한 시각을 정확하게 유지할 수 있습니다. 이 미세한 움직임은 결과를 손상시키지 않으며, 해당 측정 실행의 안정성(즉, 사용자가 실제로 답변하는 동안 수집된 모든 거리 샘플의 편차)이라는 지표로 별도 기록됩니다. (자세를 잡기 전 준비 단계에서 측정된 샘플은 의도적으로 제외됩니다. 측정 자체를 설명해야 하는 분포 범위를 불필요하게 넓히기 때문입니다.)

사다리 방식, 그리고 우연 확률이 이를 결정하는 이유

실제 방식은 이렇습니다. 네 가지 방향 중 하나로 열려 있는 글자인 '스넬렌 E(Tumbling E)' 시표가 나타나면 위, 오른쪽, 아래, 왼쪽 중 어느 방향을 가리키는지 답합니다. 선택지가 네 개라는 것은 아무렇게나 찍어도 맞출 확률이 4분의 1이라는 뜻이며, 이 25%의 우연 확률을 고려하여 설계된 것이 바로 2-down/1-up 계단법 규칙입니다. 두 번 연속 맞추면 글자가 작아지고, 한 번 틀리면 글자가 커집니다. 4분의 1의 찍기 확률에 대응하여, 이 규칙은 운 좋게 맞춘 답변에 의해 결과가 왜곡되지 않고 사용자의 심리물리적 곡선 상에서 명확하고 안정적인 지점으로 수렴하도록 돕습니다.

적응형 테스트는 총 진행 횟수를 미리 알 수 없습니다. 테스트 횟수가 사용자의 답변에 따라 달라지기 때문입니다. 따라서 진행 상황은 사다리의 방향이 바뀌는 순간인 반전(reversal) 횟수로 측정됩니다. 테스트는 목표 반전 횟수를 정해두고 진행되므로, 목표 대비 달성한 반전 횟수야말로 적응형 테스트가 정직하게 보여줄 수 있는 유일한 진행률 표시줄입니다.

테스트 진행이 아예 거부되는 조건

휴대폰 화면은 양방향 모두에서 한계가 뚜렷합니다. 아래로는 렌더링 하한선이 있습니다. 시표가 제 형태를 갖추려면 최소한의 픽셀 수가 필요한데, 디스플레이가 물리적으로 이보다 작은 글자를 그려낼 수는 없기 때문입니다. 현재 거리에서 이 하한선은 측정 가능한 최대 시력에 해당합니다. 위로는 화면 패널에 들어갈 수 있는 가장 큰 시표 크기라는 물리적 상한선이 존재합니다.

첫 번째 시도 전에, 해당 활동은 측정된 거리에서 이 하한선과 상한선 사이에 사용 가능한 범위가 실제로 존재하는지 확인합니다. 범위가 존재하지 않으면 테스트 시작이 거부되며, 화면에는 움직일 수 없는 사다리를 띄우는 대신 문제가 무엇인지 설명이 표시됩니다. 테스트가 정상적으로 끝나더라도 두 한계선 중 하나에서 멈출 수 있습니다. 렌더링 가능한 가장 작은 글자를 정확히 읽어냈다면 사용자의 시력이 이 화면으로 측정할 수 있는 수준 이상임을 의미하며, 과장된 수치 대신 이 문장이 결과로 그대로 보고됩니다.

각 검문 단계의 순서가 본질적인 논거입니다. 측정이 끝나면, 계단법 자체의 결과 판단보다 먼저 거리 안정성을 평가합니다. 사용자가 앞뒤로 움직이는 동안 아무리 아름답게 수렴한 사다리라도 결국 아무것도 측정하지 못한 것이나 다름없기 때문입니다. 거리 기록이 통과된 후에야 비로소 계단법 알고리즘이 수렴했는지, 하한선에 도달했는지, 상한선에 도달했는지를 판단하게 됩니다. 각 결말은 서로 다른 문장으로 표현되며, 그중 오직 하나만 숫자로 표기됩니다. 중단된 측정은 아무것도 저장하지 않습니다. 절반만 진행된 사다리는 사용자의 시력을 대변하지 못하며, 휴대폰을 내려놓기 전까지 얼마나 참았는지를 보여주는 기록일 뿐입니다.

이 수치는 얼마나 신뢰할 수 있을까요?

생각보다 훨씬 견고합니다. 코드베이스도 이를 명시적으로 보증하고 있으며, 다른 테스트와 비교해 보면 더 명확해집니다. 휴대폰의 청력 테스트는 절대적인 음압을 측정할 방법이 없기 때문에 항상 ±10 dB이라는 오차 표시가 붙습니다. 반면 이 시력 테스트는 시각을 결정하는 두 요소 모두 기기 자체에서 측정됩니다. 시표 크기는 디스플레이의 실제 픽셀 피치로부터, 거리는 카메라를 통해 계산됩니다. 가정하는 변수는 카메라의 거리 측정 기준이 되는 '성인 평균 눈 사이 거리' 단 하나뿐입니다. 이 변수로 인한 오차는 약 ±0.02 logMAR 수준으로, 본 테스트가 모사하는 임상용 시력 검사표의 반복 측정 편차보다 작습니다. 수렴이 완료된 측정은 logMAR 수치와 함께 스넬렌(Snellen) 및 소수점 시력 환산치를 함께 제공하므로, 기기와 개인에 상관없이 객관적으로 비교할 수 있습니다.

그리고 이제 정직하게 한계도 밝혀야 합니다. 약점 또한 실재하며, 이 활동에서도 이를 언급하고 있기 때문입니다. 눈을 찌푸릴 수도 있고, 거리 측정 템플릿 사이에 몸을 앞으로 숙일 수도 있습니다. 네 가지 방향은 어느 정도 암기될 수도 있습니다. 화면 밝기와 방 안의 조명이 글자의 대비를 결정하는데, 이는 실제 검사표에서는 표준화되어 있으나 휴대폰에서는 제어가 불가능합니다. 눈 사이 거리 가정치 또한 성인 기준이므로 소아 측정 시 원시처럼 결과가 나올 수 있습니다. 이 테스트는 안과 검진이나 처방이 아닌 선별 목적의 추정치입니다. 지난 3월보다 오른쪽 눈 시력이 한 줄 덜 보인다는 것을 인지하여 안과 예약을 미루지 않고 잡도록 유도하는 도구입니다.

매 측정마다 한쪽 눈씩 기록

한 번의 측정은 한쪽 눈(또는 양안 모두)을 대상으로 합니다. 다른 쪽 눈을 테스트하는 것은 두 번째 측정이 되며, 두 기록 모두 카탈로그의 동일한 사용 사례 아래 측정으로 저장됩니다. 바로 이 점이 중요합니다. 선별 테스트가 제공하는 가장 가치 있는 정보는 단일 숫자가 아니라 바로 시계열 데이터입니다. 몇 달 간격으로 동일한 눈을 동일한 프로토콜로 측정하고, 매 측정마다 고유한 안정성 기록이 보존되므로 향후 어떤 기록을 신뢰할 수 있는지 스스로 판단할 수 있습니다.

시력 및 청력 테스트는 계단법 메커니즘과 테스트 거부 원칙을 공유합니다. 서로 감각은 다르지만 프로토콜 철학은 동일합니다. 휴대폰 센서가 인간의 감각을 넘어 측정할 수 있는 전체적인 맵을 보려면 도구 개요부터 시작해 보세요.