레이블이 웹개발자인 게시물을 표시합니다. 모든 게시물 표시
레이블이 웹개발자인 게시물을 표시합니다. 모든 게시물 표시

2009년 12월 12일 토요일

웹개발자를 위한 스크린리더 이해 세미나 후기

오늘 오후 2시 '웹개발자를 위한 스크린리더의 이해 그리고 웹 접근성(이하 스크린리더 세미나)'이라는 제목으로 세미나가 있었습니다. 서울 삼성동에 위치한 잡코리아에서 두번째로 갖는 행사였구요. 백남중 선생님께서 긴 시간 강의를 해 주셨고, 장성민과 여러 자원봉사자 여러분들이 행사를 위해 준비를 해 주셨던 자리였습니다.

백남중 선생님

백남중 선생님

이번 스크린리더 세미나는 지난 1회 세미나와 거의 동일한 내용으로 진행되었지만 아무래도 한 번 진행을 해보셨던 부분이라 그런지 1회보다 더 깔끔하고 시연들이 많았던 것 같습니다. 그리고 여러가지 보조기기들을 전시하여 참석자들이 직접 눈으로 보고, 만져보는 등 '실감'할 수 있는 기회도 가졌습니다. 그리고 이번 2회 세미나에서는 뭐니 뭐니 해도 1회에 없던 '경품'이 생겨 나서 모두들 반가워 했는데요 백 선생님께서 직접 스크린리더 제품인 '센스리더' 2개를 경품으로 지원해 주신 것이었어요. 강의료를 드려도 모자를 판에 이렇게까지 해 주신데에는 한 분의 개발자라도 더 시각장애인분들을 위해서 올바른 웹을 만들어 주십사하는 진심 때문이셨을 것이라고 생각합니다. 오늘 '센스리더'를 받아 가신 두 분께서는 다른 분들보다 더 열심히 웹을 아름답게 만들어 주셔야 할 '사명감'이 있으신 겁니다. (^^ 아셨죠?)

이번 스크린리더 세미나의 아쉬움이었다면 조훈님의 웹접근성 세션 하나가 아쉽게 취소된 것이었지요. 오랜만에 아니 저 개인적으로는 처음으로 조훈님의 강의를 들어볼 수 있었던 기회이기도 했는데요 내년으로 미뤄야 했습니다.

질의 응답 시간

질의 응답 시간

그리고 마지막 세션으로 말도 안되지만 저를 포함해 4분의 전문가(여기서 저는 절대 전문가일리 없다는 해명을 하면서)를 모시고 질의 응답 시간을 가졌습니다. 사전 설문지를 통해서 깔끔하게 작성된 질문지를 들고 답변을 드리는 시간이었구요. 오페라 소프트웨어의 신현석님과 요즘 웹표준 강의로 많이 바쁘신 조현진님, 기획자지만 개발 실력도 수준급이라는 나인환님, 그리고 부족하기 짝이 없는 제가 성의껏 답변을 드렸습니다. 여러 질문들이 있었고, 앞에 나와 있던 분들도 참 대답하기 어려운 질문들도 있었구요. (몇가지 질문에 대해서는 시간이 되는대로 제 블로그를 통해서 이야기를 풀어보고 싶기도 합니다.)

그렇게 예정된 종료 시간을 40여분 정도를 넘기고서야 공식적인 일정이 모두 마쳐졌는데요. 아마 지금 이 시각엔 송년회겸 마련된 뒤풀이가 한참일 것으로 생각됩니다. 행사를 준비하신 모든 분들과 백남중 선생님, 패널분들, 그리고 참석자 한 분 한 분이 모두 수고하셨던 하루였습니다.

질의응답 시간에 나왔던 마지막 질문 하나가 집으로 돌아오는 내내 제 머리속에서 지워지지 않고 남아 있습니다. 미래의 웹접근성은 어떻게 될 것인가?라는 것이었어요. 여러분은 한 달 후 2010년 1월과 조금 더 지난 미래, 더 먼 미래에 우리의 웹이 어떻게 변하게 될지 예상하실 수 있으신가요?

저는 솔직히 모르겠습니다. 근래들어 내가 알아본 웹표준과 웹접근성이라는 지식의 알갱이들이 과연 진실이었고, 실체를 가진 것들인지. 그것들이 하루 뒤에 한 달 뒤에 어떻게, 어떤 모습으로 어떤 의미로 다시 내 감각들을 자극할지를 말이죠.

현석님이 마지막으로 마이크를 잡으시고 이렇게 말씀하셨죠. HTML이 제대도 만들어져 있다면 미래가 지금보다 더 발전했건 못 했건 우리는 콘텐츠에 접근할 수 있을 것이라구요. 미래에 어떤 새로운 표준 명세서가 발표되고, 기술이 만들어지더라도 겁먹을 필요가 없다는 말씀이신것 같아요. 현재 우리가 할 수 있는 방법으로 가장 정직하게 웹을 만들어 놓는다면 그것이 바로 현실에 대한 최선이자 미래를 대비하는 최고의 방법일 수 있을 거라는 거죠.

2010년. 많은 것들이 변하고 그래서 또 힘들 시간이 될 것이라고 생각합니다. 하지만 저는 왠지 2008년에서 2009년으로 넘어가던 그 겨울보다는 올 겨울. 이 시간이 조금 더 편안합니다. 그리고 덜 걱정되구요. 올 한해 정말 많은 분들이 웹표준을 공부하셨고, 웹 접근성을 이해하셨잖아요. 그 한 분 한 분이 2010년에는 더 많은 분들을 이해시켜서 정말 아름다운 웹을 만드실테니까요.

2009년 12월 8일 화요일

웹개발자를 위한 스크린리더의 이해 그리고 웹 접근성

지난 9월에도 한 차례 가졌던 '웹 개발자를 위한 스크린리더의 이해' 세미나가 불과 두달여 만에 업그래이드 되서 두번째 세미나를 갖는다고 하네요.

역시 이번에도 장성민님께서 수고를 해 주고 계시구요. 한국 시각 장애인 복지관의 백남중 선생님과 디비딥의 조훈님께서 강의를 해 주신다고 합니다.

웹 접근성이 이슈화 되면서 많은 분들이 스크린리더에 대한 관심을 갖고는 있지만 실상 제품이 몇개 없고, 개인이 구입하기에는 가격도 많이 비싼 편입니다. 그래서 실제로 테스트를 해볼 수 있는 여유가 거의 없는게 현실인데요. 이 날 세미나에 참석하시면 국내 스크린리더의 역사부터 시작해서 실제 구현되는 모습과 음성을 들어보실 수도 있습니다.

첫 세미나 때는 조훈님의 발표는 없었는데 아마도 웹 접근성과 관련해서 최신의 정보를 알려 주시지 않을까 기대가 됩니다.

현재 스무명 남짓 되시는 분들이 신청을 마친 상태입니다. 총 40명을 모으는 세미나이니만큼 꼭 듣고 싶으신 분들은 서둘러서 신청해 주셔야 할 것 같습니다.

2009년 4월 9일 목요일

웹 접근성을 위한 웹 개발자 3가지 수칙

웹접근성 발표 중인 봄눈
지난 7일 행정안전부가 주최하고 한국정보문화진흥원이 주관한 2009년 상반기 웹 접근성 기술동향 및 향상방안 세미나가 있었습니다. 이날 부족한 제게도 기회가 주어져 발표를 할 수 있었고, 오늘 정보통신 접근성 향상 표준화 포럼을 통해서 발표 자료(PDF)가 공개되었습니다.

사실 이번 발표를 위해서 나름 준비를 열심히 했는데 막상 너무 큰 자리에 서다 보니 반쯤 얼어서 제대로 전달하려고 했던 내용의 반도 전달해 드리지 못한 것 같아 혼자 많이 속상해 했었습니다. 단상에서 내려오고 나니 빠뜨린 내용이 적지 않더군요. 그래서 발표용으로 작성했던 메모를 정리해서 이렇게 글로써 다시 '발표'를 하려고 합니다.


웹 개발자가 알아야할 웹 접근성이라는 주제를 받고, 한참을 고민했습니다. 지난 몇년간 있어온 여러번의 세미나를 통해서 몇번이고 반복되었던 내용들의 반복이 되고 싶지는 않았습니다.(결국은 그렇게 되었지만) 그래서 나름 고민을 거듭해서 3가지 수칙을 정하고, 그에 따라 내용을 붙여 보게 되었습니다. 첫번째 수칙은  ‘항상 공부하라’입니다. 우리가 필요로 하는 정보들이 어디에 있고, 어떻게 찾아 보면 좋을지를 알려드립니다. 두번째 수칙은 ‘습관을 버려라’입니다. 과거로부터 이어진 좋지 않은 개발 관행의 4가지 사례를 살펴보도록 하겠고, 세번째 수칙 ‘사람을 믿고, 기계를 의심하라’에서는 함께 일 하는 동료들과 에디터, 시스템 등 작업 환경에 대한 이야기를 하고자 합니다.

다음은 순서입니다:
  • 수칙 1. 항상 공부하라
    • 1.1 웹 표준 기술을 제대로 알고, 가까운 곳에 스펙을 둬라
    • 1.2 새로운 정보와 이슈를 놓치지 말라
  • 수칙 2. 습관을 버려라
  • 수칙 3. 사람을 믿고, 기계를 의심하라
    • 3.1 동료를 믿어라
    • 3.2 기계를 의심하라



수칙 1. 항상 공부하라

1.1 웹 표준 기술을 제대로 알고, 가까운 곳에 스펙을 둬라

제가 생각할 때 웹 개발자에게 있어서 웹 접근성 향상을 위해서 가장 중요한 것은 웹 표준 기술을 가장 잘 이해하고 사용하는 것입니다. 따라서 첫번째 수칙으로 ‘항상 공부하라’고 했습니다. 그리고 수칙 1-1로 ‘웹 표준 기술을 제대로 알고, 항상 가까운 곳에 스펙을 둬라’고 정해 보았습니다.

어떤 분들은 기억력이 좋으셔서 한 두번 본 내용을 곧 잘 기억해 내십니다. 하지만 저는 그게 참 안되었습니다. 그래서 제 책상 위에는 W3C의 온갖 스펙이 출력되어 있고, 책 제본을 쌓여 있습니다. 그냥 아무렇게나 출력해 놓은 것들은 처음 한 번 이후에는 잘 보지 않게 되기도 하고, 쉽게 이면지함으로 들어가죠. 하지만 회사에 제본기가 한 대 있어서 스펙들을 한데 묶어 책으로 만들어 두시면 보기가 편할 뿐더러 보관에도 좋습니다. 그리고 브라우저의 즐겨찾기는 당연하겠죠. 의외로 많은 분들이 스펙과 관련된 궁금증을 풀기 위해서 커뮤니티 게시판을 이용합니다. 가장 먼저 스펙을 찾아보는 습관을 갖는 것이 좋습니다. 다음은 웹개발자들에게 필요한 주요 북마크입니다.
W3C에 권고안으로 공개된 표준 스펙 문서들과 MS, Mozilla, Opera가 운영하고 있는 레퍼런스 사이트들입니다. 실제로 찾아보시면 이보다 훨씬 더 많은 스펙 문서들과 레퍼런스 사이트들이 있습니다. 제 블로그를 통해서도 소개드린 것들이 있고, 정찬명님의 나라디자인 위키 페이지에서 UI개발자들을 위한 북마크를 운영하고 계시기도 합니다. 웹 개발자 분들께 유용한 자료가 될 것으로 생각됩니다.


1.2 새로운 정보와 이슈를 놓치지 말라

수칙 1.2는 '새로운 정보와 이슈를 놓치지 말라'입니다. 개발 분야 만큼 빠르게 새로운 정보와 이슈가 쏟아지는 분야도 드믈 것이라고 생각됩니다. 겨우 하나의 언어와 기술을 익혔는데 어느새 또 다른 언어가 나오고 방법론이 제시됩니다. 특히 웹이 대중화된 이후는 그 속도가 더욱 더 빨라지고 있는 추세입니다. 그런 빠름을 쫓아가지 못한다면 계속해서 뒤쳐질 수 밖에 없는 것이 또한 이 분야인 것 같습니다.


RSS는 여러 사이트의 새로운 글을 아주 쉽게 읽을 수 있도록 도와줍니다. 구글 리더와 같은 피드 구독기를 적극 활용하면 수 많은 블로그와 홈페이지의 최신 정보를 쉽게 얻을 수 있습니다. 파이어폭스와 같은 최신의 브라우저는 아주 쉽게 피드를 구독할 수 있도록 기능을 지원하고 있기도 합니다. 또 다른 하나는 Delicious와 같은 SNS기반의 북마크 서비스를 이용하는 것입니다. HTML, CSS, Web Standards 등 관련 태그를 통해서 다른 사람들이 북마크한 유용한 정보와 사이트들을 쉽게 찾아볼 수 있습니다.


수칙 2. 습관을 버려라

세살 버릇 여든까지 간다고 합니다. 한번 몸에 벤 습관이 그만큼 무섭다는 뜻입니다. 초중고와 대학을 지나면서 그리고 사회 초년생일 때- 처음 개발을 배우고 이 바닥에 발을 들이기 시작해서 처음 만났던 사수로부터 배웠던 기술들. 아무것도 몰랐던 우리는 습자지처럼 새로운 기술들을 받아 들이고 배워왔습니다. 하지만 알게 모르게 잘못된 정보와 기술을 가려 내지 못하고 무분별하게 배워왔다는 사실입니다. 책이라고 해서 다르지 않습니다. 외서의 경우 오역되거나 잘못된 의미를 전달하기도 하고, 바람직하지 않은 기술을 권장하는 듯 써 놓은 것을 그대로 믿어버린 경우가 부지기수입니다.

때문에 웹 접근성과 웹 표준을 대하는 개발자에게 있어서 가장 큰 충격은 자신의 지식에 대한 확신의 흔들림입니다. 뒤에 간단한 설문 조사 결과를 통해서도 말씀 드리겠지만 자신이 알고 있는 표준에 대한 지식이 과연 옳은 것이었는가? 하는 의심을 가질 필요가 있습니다. 그래서 두번째 수칙은 ‘관성을 버려라’ 그리고 ‘항상 현재의 방법이 최선인지를 의심하라’라고 하였습니다.

그럼 웹 개발자들이 일반적으로 잘못 알고 있었던 사례들은 어떤 것들이 있는지 살펴보겠습니다.

습관 하나. 비동기 통신은 Frame으로 구현해야 하나?

첫번째 사례는 비동기 통신을 사용하기 위해서 프레임을 사용하는 경우입니다. 최근에는 Ajax를 이용한 개발이 붐을 일고 있기는 하지만 여전히 Frameset을 설정하여 무의미한 frame을 만들어 놓고, 비동기 통신을 구현하고자 하는 개발자들이 있었습니다. 조금 더 자세히 살펴보겠습니다.

Frame 요소는 Netscape 2.0에서 최초 지원된 후 Hidden Frame, DHTML로 차차 발전해 나간다

Frame 기술의 발전하다가 Ajax에게 그 자리를 내주고 있다.


Frame은 Netscape 2.0(1996)에서 최초로 지원되었고, HTML 4.0(1997)에 이르러 공식적으로 도입되었습니다. Hidden Frame 기술은 Frameset을 설정하여 하나의 Frame의 높이를 ‘0’로 만들어 서버와의 통신을 처리하는데 사용한 최초의 비동기 요청/응답 모델이었습니다. 이후 마이크로소프트사가 자바스크립트를 이용하여 동적으로 페이지의 일부를 수정할 수 있는 기술인 DHTML을 만듭니다. Hidden Frame 기술은 이 DHTML을 만나 페이지의 어느 부분이라도 서버 정보를 가지고 언제든지 새로고침할 수 있도록 해 주었습니다. 하지만 Hidden Frame 기술은 반드시 프레임셋을 설정해야만 한다는 단점이 있었는데, iframe  엘리먼트가 HTML 4.0에 포함되면서 Inline Frame 기술을 사용할 수 있게 됩니다. 이후 CSS와 결합하여 Hidden Inline Frame 기술로 발전되어 사용되기 시작합니다. 하지만 더이상 Frame을 사용하여 웹사이트의 구조를 분리할 필요성(퍼포먼스 향상을 위해)도 없으며, 비동기 통신을 위해서라면 이미 Ajax와 같은 기술이 그 자리를 대체해 나가고 있다. 그럼에도 이같은 frame의 발전은 많은 웹개발자들이 Frame기술을 이용한 잘못된 습관을 가지게 만드는데 일조를 하게 됩니다. 다음의 마크업을 보겠습니다.

<frameset rows="*,0" frameborder="0" border="0" border="0">
    <frame src="main.html" name="main" scrolling= "auto">
    <frame src="blank.html" name="hidden" scrolling= "auto" >
</frameset>

경력이 적은 분들이라 하더라도 이와 같은 마크업을 한 두번쯤은 보셨을 것으로 생각됩니다. 이같은 프레임셋을 설정하는 이유에는 지금 설명드린 비동기 통신을 구현하기 위한 목적 외에도 도메인을 깔끔하게 유지하고자 하는 목적도 있습니다. 하지만 두 가지 이유 모두 접근성 측면에서 바람직하지 않습니다. 바로 이어서 설명드리겠습니다.

습관 둘. 고정 URL은 보안이 좋다?

과거에는 URL을 통한 해킹 공격이 이루어졌던 사례들이 있었습니다. Query Injection이라고도 하는 이 해킹 방법(SQL Injection이 좀 더 정확한 표현이라고 합니다)은 이와 같이 URL이나 사용자 서식 요소의 필드를 통해서 특정 SQL Query를 입력함으로써 웹사이트 가입자의 비밀번호나 주민등록번호와 같은 정보를 노출시키는 방법입니다. 또한, 꼭 Query Injection 이 아니더라도 간단히 도메인 뒤에 따라 붙는 Query String의 값을 조작하는 것만으로도 웹사이트에 비정상적인 동작을 요청할 수 있습니다. 이 때문에 많은 사람들이 URL에 Query String을 보이지 않도록 눈속임을 했었습니다. 거기에 마우스 우클릭을 막아 컨텍스트 메뉴가 뜨지 않게까지 했습니다. 이렇게 하면 사용자가 임의로 웹 페이지의 전체 URL을 알 수 없을 것이라고 생각했던 것이지요.

네이버

네이버와 같은 포털의 URL은 숨겨져 있지 않다


하지만 어느 사이트보다도 보안이 생명인 검색 사이트나 포털 사이트 어느 곳도 전체 주소를 감추거나 하지 않습니다. URL을 감추고, 컨텍스트 메뉴를 무력화 시키는 것이 결코 해커의 공격을 막는 방법이 되지 않는다는 것입니다.

그럼 이러한 프레임셋 구조가 웹접근성 측면에서는 어떨까요?

프레임셋을 사용하게 되면 일단, 개별 웹 페이지의 고유 주소를 상실하기 때문에 고유성이 상실됩니다. 이것은 결국 정보와 위치의 불일치를 가져오게 됩니다. 즉, 절대 주소가 공개되지 않은 경우 사용자는 찾고자 하는 정보를 다시 얻기 위해서 웹 사이트의 초기 페이지부터 탐색을 반복해야 하는 번거로움을 가지게 됩니다. 이는 파리를 여행하는 사람에게 세계 지도를 던져 주며 에펠탑을 찾아 가 보라는 것과 다를게 없습니다.

같은 URL을 가진 서로 다른 페이지

같은 URL을 가진 서로 다른 페이지


국가정보원 웹사이트입니다. 홈페이지와 관계규정 내용을 담고 있는 페이지의 URL이 www.kecs.go.kr로 동일함을 볼 수 있습니다. 관련 내용을 인용하기 위해서 URL이 필요한 경우에도, 다른 사람에게 해당 페이지의 내용을 소개하고 싶을 때에도 또같은 URL을 사용해야 합니다. 심지어 자신이 북마크를 해 놓고 다시 열고 싶을 때에도 국정원 사이트의 홈페이지부터 재 탐색을 해야합니다. 이것은 일반인에게도 매우 불편합니다.

그럼에도 불구하고 Frame을 사용해야 한다면 다음을 기억하십시오:
  • DTD(HTML 4.01 Frameset 또는, XHTML 1.0 Frameset)의 명확한 정의
  • title 속성을 이용한 정확한 이름을 부여
  • 최소 사용

습관 셋. alt? title? 그런거 없어도 아무 문제 없더라

alt는 툴팁이 아닙니다

alt는 툴팁이 아닙니다

다음으로 소개드릴 것은 대체 텍스트와 제목에 관해서입니다. alt 속성은 이미지의 텍스트로 대체하기 위한 속성입니다. 시각 장애가 있는 사람은 이미지의 내용을 파악할 수 없기 때문에 alt 속성의 내용으로 대신 인지합니다. 또한, 검색 엔진 역시 인간과 같이 시각 정보를 가질 수 없기 때문에 alt 속성을 통해서 정보를 수집합니다. 그런데 IE는 alt 속성을 풍선 도움말(툴팁)로 처리해서 보여주는 기능을 하고 있습니다. 일반인들이 뜬 눈으로도 이미지의 내용을 파악하지 못한다고 생각해서였을까요?

title 속성 역시 alt 처럼 스크린리더를 통해서 음성 정보를 지원하고, 일부 엘리먼트를 제외한 거의 모든 엘리먼트의 제목으로 사용될 수 있습니다. 특히 frame 엘리먼트와 label 엘리먼트를 함께 쓸 수 없는 서식 요소의 제목으로사용되면 접근성을 높일 수 있습니다. 하지만 alt와 title 속성을 처리하는데 있어서 스크린리더마다 방식이 다를 수 있기 때문에 이에 대한 사전 조사와 테스트가 필요합니다.

미투데이 스타일시트 목록

미투데이는 다양한 스타일시트를 포함하고 있고, title을 부여하고 있다.


미투데이 사이트는 여러개의 테마 스타일시트를 포함하고 있습니다. 개별 스타일시트를 연결하는 link 엘리먼트에는 해당 스타일시트의 제목이 title로 정의되어 있음을 볼 수 있습니다.

alt 속성을 잘 못 처리한 Doday

Doday는 alt 속성을 잘못 처리하고 있다


반면에, 비교적 웹 표준을 잘 준수한 Doday 서비스의 경우 메인 페이지 ‘요즘 이야기’부분에서 사용자 프로필 이미지들에 대한 alt 값이 모두 ‘님의 프로필 이미지’로 똑같습니다. 사용자 아이디를 넣어줘야 하는 부분에서 개발자가 실수로 빠뜨리지 않았나 싶습니다. 결과적으로 시각 장애인 및 검색 엔진은 서로 다른 이미지들을 모두 똑같은 의미의 이미지로 파악할 우려가 있습니다. (4월 7일 오전 저의 버그 신고로 인해 바로 수정되었습니다.)

alt와 title을 이야기하면서 항상 빠지지 않는 것이 언제 alt를 쓰고, 언제 title을 써야 하는지에 대한 문제입니다. 이 문제는 네이버 카페 ‘하드코딩을 하는 사람들’이나 ‘CSS Design Korea’에서의 논의'한국 모질라 커뮤니티'에서 논의가 이루어졌었고, 일모리님의 블로그에 잘 설명되어 있습니다. 참고해 주시기 바랍니다.

대체 텍스트를 사용하기에 앞서 다음과 같은 고민이 있을 수 있습니다.  첫째, 의미를 가진 이미지인가 꾸밈용 이미지인가 하는 것입니다. 단지 꾸밈용이라면 불필요한 대첵 텍스트가 오히려 접근성과 사용성을 떨어 뜨릴 수 있습니다. 둘째, 이미지 자체를 대체하는 것인지 아닌지를 판단하여 alt를 사용할지 title을 사용할지 적절히 판단할 수 있어야 합니다. 셋째, 대체 텍스트의 길이가 긴 경우 longdesc 속성을 이용하거나, IR기법 등 다른 방법을 고민할 수 있어야 합니다.


습관 넷. Label? 개발자는 다 안다고?

웹 개발자들이 자주 간과하고 있는 것 들 중 또다른 하나가 바로 label 요소입니다. label요소는 input과 같은 사용자 서식 요소에 대한 정보를 첨부하며 연관을 맺습니다. 주로 서식 요소의 제목 요소로 적용되고 있으며, 서식요소와 1:1로 관계를 갖습니다. 이같은 마크업은 서식 요소에 대한 접근성을 높여줍니다. 다음은 label을 적용하는 방법입니다.

명시적 선언
<label for="userId">아이디</label>
<input type="text" id="userId" />

암시(묵)적 선언
<label>비밀번호
<input type="text" id="userPw" />
</label>

Title 선언
<input type="text" id="phoneHead" title= "전화 앞자리" />
<input type="text" id="phoneBody" title= "전화 뒷자리" />

label을 마크업하는 방법에는 명시적 선언과 암시적 선언 두가지가 있습니다. 1:1로 대응되는 서식 요소에 대해서 id와 for 속성을 통해서 연결하는 방법이 명시적 선언이며, 서식 요소를 label 엘리먼트로 감싸는 것이 암시적 선언입니다. 암시적 선언인 경우에 label엘리먼트의 for 속성은 생략이 가능합니다. 하지만 전화번호와 주민등록번호와 같이 동일한 의미를 갖는 서식요소가 둘 이상의 필드로 구성된 경우 label 엘리먼트와 1:1로 대응시키는 것이 비효율적인 경우가 있습니다. 이런 경우 각 서식요소에 title 속성을 이용해서 제목을 달아 주는 것이 좋습니다.

하지만 이렇게 의미적으로 하나의 정보를 위해서 둘 이상의 필드로 구성하는 것은 사용성 입장에서도 별로 바람직하지 않은것 같습니다. 각 필드를 채우고 Tab키를 눌러서 이동해야 하는 번거로움을 차치하더라도, 필드가 채워지면 자동으로 다은 필드로 이동하는 기능의 경우에는 시각 장애인에게는 접근성을 저해하는 요소가 된다는 사실을 알아두실 필요가 있을 것 같습니다. 하나의 필드로 구성하여 자바스크립트와 서버 개발을 통해서 얼마든지 유효성 검증과 데이터 처리를 할 수 있을 것입니다.

네번째로 말씀 드릴 내용은 form 엘리먼트 처리에 관한 것으로, 자바스크립트를 이용해서 서식 요소의 값을 서버에 전달하는 경우 자바스크립트가 지원되지 않는 환경에서 ‘전달’ 자체가 이루어지지 않는 문제가 있습니다.  따라서 서식 요소의 데이터를 서버에 넘기는 작업은 form 엘리먼트의 본래 기능을 그대로 이용하는 것이 좋습니다. 실생활에서의 배달과 전달을 UPS와 같은 전문 전송 업체에게 맡기듯 서식 요소의 데이터는 form에게 믿고 맡기는 것이 좋습니다.

더불어 서식 요소에 대한 유효성 검증을 자바스크립트로만 처리하는 경우가 종종 있습니다. 이 역시 바람직하지 않은 것으로, 반드시 클라이언트와 서버 양쪽 모두에서 유효성 검증에 대한 처리를 해 주어야 사용자의 실수로 인한 문제를 막을 수 있습니다.

다음은 꼭 한번 읽어보세요: (오픈 웹은 현재 구글 그룹스로 변경되어 아래 링크를 확인할 수 없을 수 있습니다)


수칙 3. 사람을 믿고, 기계를 의심하라

지금까지는 지식과 정보, 기술적인 부분에 대해서 두가지 수칙을 들었고, 그 안에서 몇가지 작은 이야기들을 전해 드렸습니다. 이제 세번째 수칙으로 ‘사람을 믿고, 기계를 의심하라’고 말씀을 드리면서 수칙 3.1 ‘사람을 믿어라’라고 부탁드리고 싶습니다.

3.1 동료를 믿어라

첫번째로 웹 기획자는 그 누구보다 열심히 웹 접근성와 사용성에 대해서 고민을 하는 사람입니다. 그들이 다소 거만하고 잘난 체를 할지 모르지만 그들의 머리 속에는 우리들이 걱정하는 것 이상으로 많은 것들을 고민하고 있다라는 사실을 잊지 마시길 바랍니다.

웹 에이젼시에서 일을 했던 경험을 돌이켜보면 제가 사내에서 웹 접근성과 표준에 대한 이야기를 꺼낼 때 그리고 설득하는 과정에서 디자이너를 이해시키는 일이 가장 쉽지 않았었습니다. 그러던 중 함께 스터디를 하던 디자이너 친구 한 명이 이런 질문을 하더군요. ‘과연 웹 표준을 지킬 수 없는 디자인이 있느냐? 있다면 어떤 디자인이냐?’라고 말이죠. 그날 스터디에서는 저를 비롯해서 여러명의 사람들이 한국의 비주얼이 강한 디자인 때문에 표준을 적용하기 어렵다라고 목소리를 높이고 있었거든요. 하지만 막상 그 디자이너 친구의 질문에 어떤 디자인이 절대 표준 기술만 가지고 만들 수 없다라고 대답하지 못했습니다. 물론, 실무에서 작업을 하다 보면 디자인 때문에 마크업과 css 작업에 애를 많이 겪고 있고, 종종 해결책을 찾지 못하고 CSS Hacks을 사용하기도 합니다. 하지만 돌이켜보면 정말 길이 없어서 그랬다기 보다 시간이 부족해서 차선책을 택했던 적이 더 많았음을 스스로 깨닫게 됩니다. 저는 그 날 이후로 함께 일 하는 웹디자이너를 설득하는 일을 그만 두었습니다. 그리고 까짓것 한 번 해볼테니 날 믿고 디자인을 해달라고 부탁하곤 했습니다.

이 자리에 모인 대부분의 분들이 웹 퍼블리셔 또는 UI 개발자라는 명함을 가지고 계실것으로 생각됩니다. 그만큼 그 어느 직군보다 웹 표준과 접근성에 대해서 관심이 높고, 열정이 대단하다고 생각합니다. 어떤 일이든 시작이 가장 어렵고 첫 걸음을 옮기는 것이 가장 힘듭니다. 그 큰 걸음을 지금 여러분이 떼고 있으신 겁니다. 때문에 저는 감히 여러분 모두를 웹 표준 전문가라고 말씀드립니다. ASP든 JSP든 서버단에서 개발 업무를 보고 계신 개발자님들 동료 UI개발자 분들의 실력을 믿어보시길 바라겠습니다.

문화적인 차이일 수 있겠지만 한국은 지나치게 고객을 무시하고, 의심하는 경향이 있습니다. 사이트 발주자인 클라이언트의 무지함을 욕하고, 사이트 사용자인 고객의 멍청함에 잔득 걱정을 합니다. 때문에 온갖 보안 프로그램을 깔기를 강요하고 프레임셋으로 URL을 감추고, 우클릭을 막아버리고, 온갖 문서를 보면서 동의를 강요합니다.

개발자들의 논리 중에 가장 우수운 것이 바로 ‘자신 역시 한 명의 사용자(고객)이다’라는 점입니다. 그렇게 사용자들을 무시하면서 자신을 또 한 명의 사용자로 생각한다는 것. 결국 누워서 침을 뱉은 것 아닌가요.

또 한가지 개발자들은 오로지 코딩만 잘 하면 된다고 생각합니다. 발주자건 사용자건 그들을 상대하는 건 기획자라고 생각합니다. 웹 접근성과 웹 표준에 대한 인식 제고나 설득 역시 기획자가 해야할 것이라고 생각하고, 웹 퍼블리셔니 UI개발자니 하면서 갑자기 한 자리를 차지하기 시작한 사람들이 해야 한다고 생각합니다.

만약 개발자 직군이 명확하게 클라이언트단과 서버단으로 구분되어 서버사이드개발자가 순수하게 로직만 작성한다면 반드시 틀린 말은 아닐 수 있습니다. 하지만 제가 서두에서 개발자의 범위를 포괄적 개발자로 설정한 것 처럼 현실은 그렇치 않습니다. 그리고 앞으로도 상당한 기간동안 지금의 현실이 갑자기 바뀌지도 않을 것으로 생각됩니다. 지금, 개발자인 사람들 모두가 같은 고민과 철학으로 고객을 바꾸고 변화 시킬 필요가 있는 겁니다.

3.2 기계를 의심하라

개발 경험이 오래되신 분들은 과거 핫도그 웹 에디터나모 웹 에디터 등을 기억하실 겁니다. 어도비의 고라이브도 있군요. 드림위버의 초기 버전도 언듯 떠오르실 분도 계실겁니다. 당시의 이런 에디터 툴은 편리하게 홈페이지를 만들어 주기는 했지만 웹 표준을 몰랐던 브라우저들 처럼 툴 역시 웹 표준을 인식하지 못했습니다. 때문에 불필요한 마크업과 CSS를 만들어 냈고, 호환성이 확보되지 않은 자바스크립트 코드를 마구 집어 넣었습니다. 지금은 드림위버등 많은 에디터들이 웹 접근성과 웹 표준 스펙을 반영하고 있지만 여전히 일부 에디터는 잘못된 코드와 DTD의 생략을 기본 값으로 설정해 놓고 있습니다.

특히 나모 웹 에디터는 저 역시 98년 당시에 많이 사용했던 에디터입니다. 이 에디터는 자바스크립트를 자동으로 생성해 주는 마법사 툴이 있었는데, 호환성이 확보되지 않은 스크립트 코드를 만들어 냈던 것으로 기억합니다. 그 코드가 IE전용이었다는 사실은 한참이나 지나서야 알게된 사실들이었습니다. 초기 드림위버가 만들어낸 코드 역시 엉망진창이었습니다. 초기 버전에서 만들어낸 엉망의 코드 때문에 많은 개발자들이 워지익 툴의 편리함에도 불구하고 나모 웹 에디터나 드림위버 등의 사용을 꺼리게 되기도 했었습니다. 다행히 최근 출시된 새로운 버전이나 에디터들은 많은 향상이 있어 과거처럼 엉망인 경우는 드믄것 같습니다. 옛 말에 장인은 연장 탓을 하지 않는다고 하죠. 훌륭한 웹 개발자라면 툴 때문에 웹 표준을 지키기 어렵다라는 말은 하지 않아야겠죠. 하지만 툴이 가져다 주는 편리함과 생산성은 역시 무시할 수 없을 것입니다. 때문에 어떤 툴을 자신의 주력 툴로 결정한 것인지는 매우 중요하고, 잘 선택되어야 합니다. 무료든 유료든 아주 다양한 에디터들이 존재하고 있습니다. 충분히 검증된 제품을 선택하시길 바랍니다.

또 한가지, 개발자들의 PC는 회사 사정에 따라 차이는 있겠지만 일반적으로 부족하지 않은 스펙을 가지고 있습니다. 하지만 인터넷에 접속하는 모든 PC가 아이온과 콜 오브 듀티같은 인기 게임을 실행시킬 수 있을 만큼 멋지진 않습니다. 학교나 관공서같은 곳의 PC는 생각보다 오래된 것이 많습니다. 이미지와 플래쉬 무비로 무겁게 제작된 사이트들 때문에 PC를 몇 번이나 리부팅해야 하는 사람들도 있을 것입니다.

Markup Validation Service

Markup Validation Service


마지막으로 웹 표준을 열심히 지키고 계신 여러분들이 절대로 잊지 말아야 할 한가지를 말씀 드리겠습니다. HTML과 CSS에 대해서 충분히 의미 있게 그리고 호환성이 확보된 표준 스펙을 따랐을 경우에 우리는 W3C의 벨리데이션 서비스를 통해서 이같은 유효성 검사 통과 화면을 받아 볼 수 있습니다. 하지만 이 순간 여러분은 과연 이 결과가 타당한지에 대한 의구심을 가질 필요가 있습니다. 벨리데이션 검사는 단지 코드에 대한 문법 검사일 뿐입니다. 파란 하늘 이미지에 ‘용광로’라고 적어 넣은 alt 속성을 확인 했더라도 이 검사는 초록색 ‘성공’ 메세지를 멋지게 보여줄 것입니다. 과연 제대로 만든 페이지였을까요?


마치며

큰 수칙 3가지를 전해 드리면서 그리고 첫번째 수칙을 통해서 웹 개발자에게 있어서 웹 접근성을 향상시키는 가장 확실하고 정직한 방법은 '공부'라고 했습니다. 웹 표준 스펙을 얼마나 제대로 알고 있는지 그리고 얼마나 명확하게 적용할 수 있는지가 가장 중요하다고 생각합니다. 그래서 저는 웹 표준을 웹 개발자에게 있어서 '기술'이라고 생각하고, 웹 접근성은 다른 사람을 생각하고 타인을 배려하고자 하는 '철학'에 빗대어 의미를 전달해 드리고자 했습니다. 기본적으로 웹 접근성 역시도 여러가지 명세와 가이드로 틀을 갖춰 나가고 있지만 근본적으로 사람에 대한 마음을 담는 것이라고 생각하기 때문입니다. 개발자는 코드만 잘 짜면 된다라는 생각은 이제 버려야 합니다. 이 코드가 사람을 차별하는 칼이 될 수 있음을 아셔야 합니다. 그래서 더욱 더 왜 내가 웹 접근성을 고민해야 하는지에 대한 자기 철학이 필요한 이유입니다. 끊임 없는 자기 계발과 철학의 발견. 이 이야기를 해 드리고 싶었습니다.

2008년 5월 12일 월요일

form 요소 누구의 것인가?

최근에 제가 참여하고 있는 웹표준스터디모임에서 form 요소와 관련한 내용을 다룬적이 있었습니다.

form 요소가 서버사이드개발자(이하 개발자)들에 의해서 잘못 사용되는 경우와 웹퍼블리셔들이 form 요소를 쉽게 생략하는 문제에 대해서 논의가 있었습니다.

제 생각은 이렇습니다.

첫째로 form 요소는 분명 마크업 요소이고 마땅히 웹퍼블리셔가 사용해야할 태그입니다. 둘째로 내용을 제출하는 폼을 작성했을 경우 그것은 의미적으로 폼에 해당되고, 따라서 웹퍼블리셔는 form 요소를 사용해야 하는 경우에 해당됩니다. (함께 스터디를 하시면서 한 분은 웹개발자가 form 요소를 마음대로 사용하는 것은 오히려 직권남용과 같다! 라고 강하게 말씀하시기까지 했습니다.)

하지만 form 요소가 ASP, JSP, PHP와 같은 서버사이드측 언어와 맞물려 있다보니 많은 경우 웹개발자에게 form 요소를 암묵적으로 위임하여 (웹퍼블리셔는) 이를 생략하는 경우가 있습니다.

적지 않은 시간동안 이러한 관례가 이어지다 보니 요즘은 웹개발자들로부터도 form 요소는 건들지 말아달라는 이야기를 듣기까지 합니다.

이같은 상황에서 현실적인 입장을 보이자면 자연스럽게 웹개발자와의 커뮤니케이션을 강조할 수밖에 없기는 합니다.

웹퍼블리셔와 웹개발자가 프로젝트 기획 단계에서 form 요소 관련 이슈들을 한자리에서 정리하고 HTML 마크업시에는 웹퍼블리셔가 의미에 맞게 form 요소를 작성하고, 개발시에는 웹개발자가 form 요소를 용도에 맞게 사용합니다. 변경시에는 웹퍼블리셔와 다시 또다른 문제가 생기지는 않는지 등 추가적인 이슈에 대한 회의를 가져야 할 것입니다.

화두를 던져놓고 거두어가는 꼴의 글이 되어가는것 같기는 하지만 논의가 너무 깊이 들어가지 않는 범위에서 여러분이라면 어떻게 생각하십니까? 하고 여쭤보고 싶습니다. 자바스크립트를 웹퍼블리셔가 어느정도까지 해야 하는가? 에 대한 고민처럼 form 요소도 웹퍼블리셔가 굳이 작성해야 하는가라고 고민하는 분들이 없지는 않을 것이라고 생각했습니다.

여러분은 form 요소가 웹퍼블리셔의 것이라고 생각하십니까? 아니면 웹개발자에게 위임되어도 좋다고 생각하십니까?

2008년 4월 21일 월요일

개발자님 제발 HTML을 깨트리지 말아주세요

이 글은 서버사이드 개발자님들께서 웹퍼블리셔로부터 받은 HTML문서를 작업하는데 있어서 최소한으로 알아주셨으면 하는 내용을 정리한 것입니다. 일부분 상세히 적지 않고(버전별 요소와 속성의 사용 유무 등) 최대한 쉽게 작성하는데 목적을 두었기 때문에 실 작업시에는 웹퍼블리셔와의 커뮤니케이션과 좀 더 정확한 스펙 문서를 참고해 주시기를 부탁드리겠습니다.

웹표준화와 관련하여 웹퍼블리셔는 정확한 Doctype 선언으로부터 마크업을 시작한다. 그리고 올바른 마크업(well-formed) 검증(validate)으로 작업을 마치게 된다. 하지만 많은 경우 사이트가 오픈했을 때 validate를 통과가 어렵다. 이는 서버사이드 개발자들이 웹퍼블리셔로부터 받은 (X)HTML 문서를 수정(개발을 입히는 작업)하면서 올바르지 않은 요소와 속성을 사용하기 때문인 경우가 많다.

서버사이드 언어인 ASP나 PHP, JSP 등은 문법오류에 대한 관용이 적기 때문에 즉각적으로 에러를 보여준다. 하지만 (X)HTML은 브라우저에 따라 관용적으로 처리되거나, 용납되는 경우가 많아 올바르지 않은 마크업을 하고도 화면이 정상적으로 보이는 경우가 많다. 하지만 이렇게 완성된 사이트는 결코 웹표준 사이트라고 볼 수 없거니와, 웹접근성 또한 보장받을 수 없게 된다.

XHTML 스펙을 살펴보면 잘못된 요소와 속성의 사용을 알 수 있지만 대부분의 경우 서버사이드 개발자들은 과거에 익혔던 HTML 문법만을 기억하고 있으며(그다마 올바르지 않은 문법) 새로운 XHTML에 대한 차이를 잘 알지 못한다.

다음은 W3C의 HTML / XHTML 스펙 문서 목록이다.

다음은 XHTML 기준으로 개발자 역시 함께 알아야 하는 내용들이다.

  • HTML 문서의 Doctype이 무엇인지 확인한다.

    HTML 4.01과 XHTML 1.0 에는 각각 'Strict(가장 엄격)', 'Transitional(전환형)', 'Frameset(프레임셋형)' 세가지 타입이 있다. XHTML 1.1은 'Strict'만을 지원하며, 표기는 XHTML 1.1로만 합니다.

    Doctype에 따라 사용 가능한 요소와 속성이 구분되며, CSS에도 영향을 미친다.

  • Doctype 선언 위에 출력되는 요소나 문자열이 없도록 한다.

    DTD는 HTML 문서의 최상단에 선언되어야 한다. 그렇지 않을 경우 일부 브라우저(IE 등)에서 비표준모드(Quirks mode)로 작동하게 된다. 일부 스타일이 제대로 적용되지 못하는 문제가 종종 발생한다.

  • XHTML일 경우 모든 요소와 속성은 소문자로 작성하며, alt와 title 속성을 제외하고 가능한 모든 속성에는 값을 넣어(대부분 넣지 않아도 에러가 나지는 않으나 alt와 title 속성을 제외하면 특별한 이유 없이 빈 값을 넣는 경우는 드믈다)준다. 또한, 모든 속성값은 반드시 인용부호로 둘러싼다.

    validate의 에러를 가장 많이 내는 주범이다.
  • XHTML일 경우 모든 요소는 반드시 닫아주어야 한다. 특히 <head>..</head>사이의 <meta> 요소 작성시 반드시 닫아주자! 또한, 요소의 위치관계를 정확하게 한다.
    <p>내용</p> , <br />, <img src="..." />, <meta ... />, <link rel=".." ... />

    (x) <a href="..."><span>링크</a></span>
    (o) <a href="..."><span>링크</span></a>

  • XHTML 1.1일 경우 <a>, <map>, <form>, <img> 요소에서 name 속성이 폐지되어 사용할 수 없다.

    id 속성만을 사용한다. 하지만 <form>내 <input> 등 요소에서는 name 속성을 사용할 수 있다.

  • MIME Type이 'application/xhtml+xml'일 경우 script와 style 요소는 '<!--'과 '-->'를 '<![CDATA['와 ']]>'로 대체한다. 단, 'text/html'일 경우는 과거처럼 주석 방식을 사용한다.

    CDATA는 script와 style 내 '<', '>', '&'와 같은 문자를 이스케이프 시키지 않고 그대로 사용할 수 있도록 한다. 또한, Doctype에 관계없이 script요소와 style요소를 </head>와 <body>사이에 삽입하는 경우는 없어야 한다. 되도록 script와 style은 외부 문서로 빼는 것이 좋다.

  • XHTML 1.1일 경우 다음의 요소들은 사용할 수 없다.

    <applet>, <basefont>, <center>, <dir>, <font>, <frame>, <frameset>, <iframe>, <isindex>, <menu>, <noframes>, <s>, <strike>, <u>

    특히 , <font>와 <center>, <iframe> 요소는 개발자들이 무분별하게 사용하는 대표 요소인데 Doctype에 따라 사용을 신중히 해야할 필요가 있다. <font>와 <center> 요소는 CSS로 정의할 수 있으며, <iframe>요소는 <object>요소로 대체된다.

  • XHTML 1.1일 경우 다음의 속성들은 사용할 수 없다. (일부 속성은 XHTML 1.0 Strict 에서도 지원되지 않기 때문에 주의 바랍니다.)

    <*> lnag
    <a> name, target
    <area> traget
    <body> background, bgcolor, text, link, vlink, alink
    <br> clear
    <caption> align
    <div> align
    <form> name, target
    <h1~h6> align
    <hr> align, noshade, size, width
    <img> align, border, hspace, vspace
    <input> align
    <legend>align
    <li> type, value
    <link> target
    <map> name
    <object> align, border, hsapce, vspace
    <ol> compact, start, type
    <p> align
    <pre> width
    <strict> language
    <table> align, bgcolor
    <td> bgcolor, height, nowrap, width
    <th> bgcolor, height, nowrap, width
    <tr> bgcolor
    <ul> compact, type

  • 가급적 요소에 직접 스타일(inline style)을 정의하지 않는다.

    <div style="...">
    단, <input>과 <img> 요소 등 개발시 변동이 잦은 요소들에 한해서 inline style로 width와 height를 지정하는 것은 괜찮다고 생각한다. 하지만 저속 인터넷 접속 환경에서는 느린 로딩으로 인해 이미지 요소들이 레이아웃을 잡지 못해 들쑥날쑥하게 전체레이아웃을 깨뜨리는 현상이 발생하기도 하므로 이에 대한 고려가 선행되어야 할 것이다.

  • 요소와 속성내 모든 문자열을 PCDATA(분석 처리된 문자데이터)로 작성한다.

    <p>LOVE & GHOST</p> ☞ <p>LOVE &amp;amp; GHOST</p>
    <a href="../../list.php?id=bomnun&val=2">링크</a> ☞ <a href="../../list.php?id=bomnun&amp;val=2">링크</a>

    * <style>과 <script>요소에서는 <![CDATA[ ... ]]>를 사용해서 문자열을 파싱하지 않고 그대로 사용할 수 있다.

  • XHTML일 경우 속성은 약술할 수 없다.

    <input type="radio" checked /> ☞ <input type="radio" checked="checked" />

  • Encoding Charset이 무엇인지 확인한다.

    HTML 문서는 utf-8인데, 파일 인코딩은 euc-kr인 경우가 종종 있고, 이 경우 한글이 깨져 보이는 가장 큰 이유가 된다. 또한, CSS나 JS 역시 인코딩이 다를 경우 제대로 작동되지 않기도 한다.

세세히 따지면 좀 더 있겠지만 대부분 위의 경우에 해당될 것 같다. 그리고 상위 4개 붉은색으로 표시한 것들이 validate를 통과하지 못하는 대부분의 이유가 된다. 서버사이드 개발자들이 위의 내용을 숙지만 하고 있다면(최소한 DTD의 차이만이라도 알고 있다면) 문법 오류를 최소한으로 줄일 수 있을것 같다.

이 글은 솔직히 서버사이드 개발자들을 '낚기' 위한 글입니다. 위의 내용은 이미 수차례 비슷한 주제의 블로그나 사이트를 통해서 널리 알려져 있는 내용입니다. 결국 복사된 내용의 재탕(웹표준교과서의 내용을 정리했음)이라는 것이지만 그럼에도 불구하고 서버사이드 개발자분들이 한번만이라도 관심 있게 읽어주기를 바라는 마음에 포스팅을 하게 되었습니다.

2008년 4월 11일 금요일

사용자들은 정말로 편하다고 생각할까?

웹퍼블리셔로 직업을 갖고 웹접근성과 웹표준화에 대한 연구를 하면서 CDK는 가장 좋은 토론의 장이 되고 있습니다. 업계의 많은 전문가들이 하나의 이슈를 가지고 서로 다른 의견을 내놓기도 하고, 쓸만한 결론이나 합의를 이끌기도 합니다. 논의의 깊이는 점 점 깊어지고, 내용의 범위는 점점 커집니다. 질적으로 정말 수준이 높아지고 있는 커뮤니티이고, 그 안에서 단 한줄의 댓글이라도 달 수 있는 영광이 내게도 있다는 사실이 가끔은 뿌듯하게 느껴지기도 합니다.

그런데 요즘 한가지 의심이 생기기 시작했습니다. 우리들(CDK에서 활동하는 웹 종사자들)의 토론과 결론이 과연 타당한가하는 것입니다. 최근 dece24님께서 올려주신 '셀렉트, 점프, 드롭다운, 풀다운 메뉴의 GO 버튼 이슈.' 글타래에서 dece24님은 마지막에

여기서 만약 go 버튼이 없다면(설사 숨어있다손 치더라도 디자인을 해치기 때문에 나타나서는 안된다고 가정하면) 사용자는 이것을 점프메뉴가 아니라 그냥 폼의 옵션중 하나라고 생각할 가능성이 크다는 점이 제가 우려하는 점

이라고 정리 댓글을 달아 주셨습니다.

일단 저 역시 dece24님 의견이 동감하는 입장임을 밝힙니다. 그리고 제 글이 dece24님의 글에 대한 딴지를 거는 것이 아니니 오해가 없으셨으면 좋겠습니다.

인용된 dece24님의 글만을 보면 언급된 사용자가 이 글타래의 이슈(웹접근성)가 되는 시각장애인을 지칭한다고 생각합니다. 따라서 '사용자는 이것을 점프메뉴가 아니라 그냥 폼의 옵션중 하나라고 생각할 가능성이 크다는 점'이라고 쓰신 것에는 사실 문제가 없는것 같습니다. 그런데 웹표준이 이슈화 되고 이런 문제에 대한 논의가 활발해진 것이 최근인 것을 보면 지금까지 시작장애인들은 Select 요소로 작성된 점프메뉴를 계속해서 사용했거나, 최소한 전후맥락(폼 양식이라면 최소한 전후에 관련된 다른 폼 양식도 함께 포함하거나 제목을 달고 있을 것이고, 바로바기 메뉴의 경우 대부분 본문의 상단이나 하단에 별도로 나타납니다.)을 짚어 그것이 양식 폼 안에서의 옵션이 아니라 점프되는 메뉴라는 것을 인식했을 가능성이 큽니다. 물론 이 경우가 나쁜 웹접근성을 가진 것이고 잘못 된 것이기는 합니다. 하지만 사용성이라는 것이 최고의 이론이나 옳다고 생각되는 기술에 의한 것이기 보다 사용자의 직접적인 경험에 의해 형성되는 경우가 많습니다. 항상 안으로 당겨야 하는 문이 있습니다. 사람들은 힘을 강하게 주어 안으로 당기는 이 문이 불편합니다. 하지만 어쩔수 없이 지속적으로 문을 당기며 출입을 했습니다. 그런데 어느날 사용자 편의성을 고려한 사장이 문을 밀고 나가도록 교체를 했습니다. 사람들은 당황해 할 겁니다. 당겼는데 열리지 않는 문을 보면서 문이 잠겼다고 생각할 수도 있습니다. 물론 시간이 지나면 밀고 나가는 방식을 더 편하게 생각하면서 바로 적응할 겁니다.

예로 든 출입문의 경우는 확실히 밀고 나가는 방식이 편하고, 처음에는 갑자기 바뀐 방식에 당황해 하지만 곧 변화를 받아들이고 더 편한 사용성을 확인합니다. dece24님의 이슈는 그동안 출입문을 당기는 방식에서 미는 방식으로 바꾸는 것이라고 생각합니다. 처음에는 혼동이 올 수 있겠지만  ul과 a로 바뀐 바로가기 메뉴에 더 친절함을 느끼고, 편리함을 느낄 것이라고 저 역시 기대합니다. 하지만 모든 경우가 이렇지는 않을 것이라는게 제 고민입니다.

요즘은 UX(사용자 경험)만을 전문으로 다루는 사람들이 있죠. 그들은 사용자들이 웹사이트에서 마우스를 어디에 두는지 시선을 어디에 두는지 몇번 클릭하고, 어떻게 드래그 하는지. 키보드는 조작하는지 등등을 조사하고 연구하는 사람들이라고 알고 있습니다. 하지만 모든 회사에 이런 UX관련 부서나 인원이 있는 것은 아니고, 이렇게 연구되고 조사된 UX 관련 자료가 항상 공개되는 것도 아닙니다. 대부분은 기업에서 자사의 웹사이트를 좀 더 효과적으로 개발하기 위한 자료로 이용되고 있을 겁니다.

문득 우리에게도 이런 자료가 절실히 필요하다는 생각을 해 봤습니다.

문제는 좁게는 웹퍼블리셔, 넓게는 개발자와 디자이너를 포함한 범위에서의 웹개발자들이 실제로 사용자들의 반응이나 패턴을 조사하거나 확인해 보지 않고, 회의실 안에 모인 개발자들끼리의 논의와 고민만 가지고 '그럴 수 있다'라고 생각하는 경우가 종종 있지는 않은가 하는 것입니다.
쉽게 말해서 개발자 입장에서의 사용사 편의성(사용성)을 고민한다는 것이죠. 개발자 역시 넓은 의미에서 한명의 사용자이기 때문에 내가 불편하면 다른 사용자도 불편하다는 논리와 개발자 스스로 고민한 사항이 대다수의 사용자들에게도 적용될 것이라는 기대 심리가 작용한다고 생각합니다.

정치와 비교할 수는 없겠지만 소수의 정치인들이 생각하는 정책의 논리가 대다수의 국민의 생각과 크게 다른경우를 종종 볼 수 있습니다. 책상머리에 앉아서 자기들끼리만 입씨름하고 고민한 까닭이지요.

우리 웹 종사자들 역시 그런 실수를 하고는 있지 않은가 하는 생각이 들었습니다. 네이버나 다음 정도의 포털에서는 그래도 사용자 테스트를 해볼 수 있는 기회를 가져볼 수도 있겠지만(정말 하고 있나요?) 대부분의 웹에이전시에서는 현실적으로 어려움이 많습니다. 때문에 포털의 기술을 '믿고' 가져오거나, 전문가의 의견을 적절성 여부를 깊이 있게 고민해 보지 않고 따르는 경향이 있는것 같습니다.

결론은 우리가 어떤 사용성 또는 접근성 이슈를 가지고 논의를 하고 결론을 도출해 내는 과정에서 섣불리 '사용자는 그럴 것이다'라고 판단해서는 안된다는 것입니다. 백 명의 웹퍼블리셔가 옳은 방법이라고 생각해도 백 명의 웹퍼블리셔를 제외한 거의 모든 사용자들은 그것이 더 불편하다고 느낄 수 있을지 모르는 겁니다. 이 넌센스를 극복하기 위해서는 지금까지와 같은 진지한 고민과 토론 의외에도 실질적이고도 객관적인 사용자경험(UX)에 대한 연구가 활발히 이루어지고, 공유가 되어져야 할 것 같습니다.

2008년 1월 28일 월요일

장애인차별금지법 시행에 대한 토론

지난주 한국 웹 접근성 그룹 에서 장애친차별금지법에 대한 토론이 있었다.
참여하고 싶었지만 낯을 가리다가 그만 신청 타이밍을 놓쳐 버렸다.

언론에서 지난해 말부터 장차법에 대한 기사를 속속 내놓고 있기는 하지만
뭐랄까 시행을 3개월 정도 앞둔 시점에서도 아직 많이 알려지지 않은것 같다.

오늘 몇몇 기획자와 디자이너 분들께 장차법에 대해 들어봤냐고 물어봤지만
한결같이 처음 듣는다는 답변 뿐이었다.

정작 이 법률에 영향을 받을 업계의 종사자들도 태반이 모르고 있을진데
일반인들은 오죽할까 싶다.

아무래도 대다수의 웹기획자나 개발, 디자이너들은 웹접근성 강화가
클라이언트의 요구와 웹기획자의 기획, 웹퍼블리셔의 수완으로 해결되는 것쯤으로 인식하는 것 같다.

웹에 종사하는 모든 사람들이 공통으로 이해하고,
지식을 갖추어야만 완벽한 웹표준화를 이루고,
웹접근성을 높일수 있는 것인데 말이다.
그래야 장차법을 준수하는 웹사이트를 만들어낼 수 있는데 말이다.


발등에 불이 떨어져야 그때야 불이 뜨거운줄 아는 한국사람들-
뜨겁다고 알려주는 사람이 있을때 미리 대비하고 준비하는 모습들을 가졌으면 좋겠다.

2008년 1월 27일 일요일

마크업이야? 메이크업이야?

내가 처음 HTML을 접한건 1997년 겨울이었다. 우연히 서점에 들렸다가 인터넷이라는 생소한 제목을 달고 있는 책들 틈이 머뭇거리게 되었고, 그 중에 HTML을 소개하는 책 한권을 손에 들게 되었었다. 나는 그날 이후로 HTML에 대해 공부했고, 궁금해했고, 찾아보게 되었다. 적지 않은 관련 서적을 구입하면서 공부했고, 처음으로 개인홈페이지를 만들었다. 동아리 홈페이지도 만들었고, 학교 홈페이지도 만들었다. PC통신을 연구하던 동아리는 내 의지로 홈페이지 연구반이 되어 버렸고, 나는 국어국문학과에 가서 인문대답지 않은(?) 홈페이지를 만들어서 엉뚱하게 유명한 학생이 되어 버리기도 했었다. 교육컨텐츠를 제작하는 회사에 들어가 반년간 드림위버를 이용한 코딩일을 하기도 했고, 처음으로 웹에이젼시에 들어가 커다란 사이트를 개발하는 프로젝트에 참여하기도 했다. 그렇게 나는 학교와 업계를 왔다갔다 하면서 웹퍼블리싱 공부를 하고, 경력을 쌓아갔었다. 그 와중에 내게 조금은 특별한 경험이 있었는데 2001년 봄 내가 다니던 고등학교에서 방과후 특별수업을 할수 있는 기회가 주어졌었다. 그때 나는 스무명 남짓의 학생들(얼굴도 알아볼 수 있을만큼 가까운 후배들)을 앉혀놓고 홈페이지 수업을 했었는데 첫 수업은 아직도 기억에 남아 있다.

칠판에 HTML이라고 써놓고 학생들에게 이게 무슨 뜻인지 아느냐고 물었다. 당연하지만 모든 학생들이 입을 다물고 나만 바라보고 있었다. 잠시 지켜보다가 동아리 후배이기도 했던 학생에게 직접 물었다. 학생은 화면을 꾸며주는 인터넷 언어입니다. 라고 대답했다. 그리고 나는 칠판에 다시 썼다. Hypertext Markup Language 라고.

어떤 책이었는지는 정확히 기억나지 않지만 2000년대 이전의 꽤 많은 책과 웹사이트에서 HTML을 Hypertext Makeup Language라고 가르쳐주고 있었다. 당영한 이야기이지만 이건 틀린것이다. 우린 HTML의 M이 Markup의 약자라는 사실을 너무나 잘 알고 있다. 하지만 그땐 그랬다. 메이크업과 마크업의 차이를 알지 못했다. 번역자의 실수일수도 있고, 검수자의 무지에서 비롯된 것일수도 있었다. 어찌되었건 덕분에 HTML을 잘못 이해해버린 사람들을 만들어 버렸다.

메이크업은 화장술에 쓰이는 용어이다. 보통 기초화장 뒤에 하는 색조화장을 말하는데, 조금 다른 분야에서 사용되더라도 그 의미는 크게 벗어나지 않는다. 그럼 HTML을 메이크업이라고 풀이했을때 어떻게 될까?

하이퍼텍스트는 화면을 꾸미는 언어가 된다!

아 이 얼마나 이해가 쉬운 풀이인가!! 내 첫 수업때 화면을 "꾸미는"이라고 대답했던 학생이 결코 죄가 없음이다. 나 역시 한때 그렇게 알고 있었으니까.

다행히도 난 당시 메이크업이 잘못된 것이고, 마크업이 맞다는 것을 알고 있었다. 그리고 학생에게 "꾸미는"이 아니라 "구조화하는" 것이라고 설명하는데 애를 써야 했다. (하지만 아쉽게도 당시의 난 구조화라는 풀이만 알았다. 스타일시트를 통한 표현의 분리까지는 이해하지 못했었다.)

그런데 아쉽게도 아직도 HTML을 웹을 꾸미는 언어쯤으로 생각하는 사람이 많은것 같다. 수 많은 웹기획자와 웹디자이너, 웹개발자들 말이다. (웹퍼블리셔들 가운데에도 있을 것이다) 웹기획자는 고객에게 어필할수 있는 화면을 고민하고, 웹디자이는 자신의 작품을 완벽하게 브라우져화면에 띄워주는 목적으로 HTML을 사용하거나 이해한다. 중간에 웹퍼블리셔가 아무도 알아주지 않는 마크업 작업을 했더라도! 웹개발자는 HTML을 조각조각 쪼개는것도 모잘라 온갖 서버측 스크립트 언어로 바꿔 버림으로써 디자인과 HTML, 스크립트가 하나되는 삼위일체의 꿈을 완성(?) 시켜준다.

요즘 우리가 고민하고 있는 웹접근성 향상과 웹표준화 작업은 애초에 Markup을 Makeup으로 오해하지 않았더라면 이만큼 늦게 깨닫지도 않았을 것이며, 이렇게 답답해하지 않았을수 있었을텐데라는 아쉬움이 든다.

2008년 1월 25일 금요일

XHTML로 바꾸지 말아야 하는 이유 Top5

  1. 시간제로 일하고 있는 경우
  2. 가능한 모든 브라우저나 기기에 대한 모든 버전에 맞게 여러 개의 페이지를 만들기를 즐기는 경우
  3. 머리 속에서 그냥 무조건 하지 말라고 하는 경우
  4. 웹 사업을 그만 두려고 하는 경우
  5. XHTML을 사용할 줄 모르는 경우
<제프리 젤드만의 웹표준 가이드 2ed 발췌>

내가 HTML을 버리고 XHTML로 가고자 하는
이유는 적어도 위 다섯가지에 포함되지 않을 것이라는 확신때문이다.



사용자 삽입 이미지



어제 웹표준가이드(2ed)를 완독했다. 기술서라기 보다는 실무에서 와닿는 이해와 설명이 많은 책이었는데 우리가 웹접근성을 향상시키고, 웹표준화를 배우고, 적용하면서 왜? 왜지? 왜일까? 라고 수없이 물음표를 달았던 것들에 대한 느낌표를 달아주는 책이었지 않나 싶다.

책을 다 읽고 가장 먼저 회사의 기획자 한분께 바로 건네면서 꼭 읽어보시라고 했다.

나와 같은 웹퍼블리셔는 물론이거니와 웹디자이너, 웹개발자, 웹기획자까지
웹에서 손가락을 묻어놓고 먹고사는 모든 사람들은 꼭 한번 읽어봤으면 하는 책임에는 틀림없는것 같다.

-

다만, 급하게 번역을 하여서인지 오타도 더러 보였으며, 문장도 다소간 어색한 부분이 있어 아쉽게 느껴졌다.