텍스트 기반 TUI, 접근성 문제의 근본 원인은?
TUI 프레임워크(TUI Framework)가 오히려 시각 장애인 사용자의 접근성을 저해하며, CLI(Command Line Interface) 방식의 접근성을 강조함
gemini-cli를 예시로, 잦은 화면 갱신(Redraw)으로 인한 스크린 리더(Screen Reader)의 오작동 및 시스템 불안정성을 지적함
단일 스레드 환경(Single-Threaded Environment)에서의 성능 저하, 커서(Cursor) 추적 기능으로 인한 문제점을 분석함
Irssi와 같은 접근성 중심의 툴(Tool)을 예시로, 하드웨어 기능 활용 및 개발자의 적극적인 관심 부족을 비판함
TUI 프레임워크의 접근성 저해 원인
현대적인 TUI 프레임워크는 터미널을 2D 픽셀 그리드(2D Pixel Grid)로 취급하여, 텍스트 스트림(Text Stream) 방식의 CLI보다 접근성이 떨어진다는 점을 지적한다. 특히, Ink와 같은 프레임워크는 React 컴포넌트 트리를 터미널 그리드에 매핑하는 과정에서 잦은 화면 갱신(Redraw)을 유발하여 스크린 리더(Screen Reader)의 오작동을 초래한다. 이는 시각 장애인 사용자의 사용성을 심각하게 저해하는 요소로 작용한다.
gemini-cli 사례 분석: 접근성 실패의 단면
gemini-cli는 Ink 프레임워크를 사용하여 개발되었으며, AI가 '생각하는' 동안 타이머나 스피너(Spinner)를 업데이트하기 위해 커서를 빈번하게 이동시킨다. 이러한 동작은 스크린 리더 사용자가 대화 내용과 타이머 정보를 혼동하게 만들어, 정보 접근성을 방해한다. 또한, 대량의 텍스트를 붙여넣을 경우, 시스템의 성능 저하 및 스크린 리더의 충돌을 유발하는 문제점을 보여준다.
커서 관리 및 단일 열(Single Column) 포커스
접근성을 확보하기 위해서는 커서(Cursor) 추적 기능을 비활성화하거나, 단일 열(Single Column) 포커스를 유지하는 것이 중요하다. nano나 vim과 같은 툴은 커서 위치를 숨기는 옵션을 제공하여 스크린 리더의 방해를 최소화한다. 반면, 현대적인 TUI 프레임워크는 커서의 시각적 표현을 필수적으로 간주하여 접근성 문제를 야기한다. menuconfig와 같이 단일 열 포커스를 유지하는 툴은 접근성을 확보하는 좋은 예시이다.
Irssi의 접근성 우수성: VT100 스크롤 영역 활용
Irssi는 VT100 스크롤 영역(VT100 Scrolling Regions)을 활용하여 접근성을 확보한 사례이다. 새로운 메시지가 도착하면, 터미널 드라이버에게 스크롤 영역을 정의하고, 스크롤 업 명령을 전송하여 화면을 갱신한다. 이러한 방식은 터미널의 하드웨어 기능을 활용하여, 화면 전체를 다시 그리는 방식보다 효율적이며, 입력 라인(Input Line)에 대한 간섭을 최소화한다. 이는 접근성 개선을 위한 중요한 기술적 접근 방식이다.
개발자의 무관심과 접근성 문제 해결의 부재
gemini-cli의 개발팀은 접근성 관련 이슈(Issue)에 대해 소극적인 태도를 보이며, 문제 해결을 위한 노력을 기울이지 않고 있다. 특히, 오래된 이슈를 '정리'한다는 명목으로 닫아버리는 행위는 접근성 개선에 대한 의지가 부족함을 보여준다. 이는 개발자가 접근성에 대한 중요성을 인식하고, 적극적으로 문제 해결에 참여해야 함을 시사한다.