자바스크립트는 기본 기능인가?
accessibility | 2008-07-23
"자바스크립트를 요구하는 것이 괜찮은가?(Is It OK to Require JavaScript?)"라는아주 흥미로우면서도 중요한 질문을 한 글을 봤다. 질문의 요지는 사용자의 수동적인 참여(페이지를 이동하거나, 글을 읽거나 하는 행동) 말고 능동적인 참여(글을 쓰거나 수정하는 행동)에 자바스크립트의 사용을 강제할 수 있는가 하는 것이다.
굉장히 많은 댓글이 달려 있다. 꼼꼼히는 아니지만 대부분의 댓글을 다 읽어봤는데 상당히 충격을 받았다. 많은 사람들이 자바스크립트를 필수 기능으로 사용할 수 있다고 말하고 있다. 두 반대 의견이 팽팽하지만 숫적으로는 필수로 해도 괜찮다는 의견이 약간 더 우세한 것 같다.
강제해도 괜찮다는 사람들의 의견은 자바스크립트를 사용하지 않는 사용자들이 얼마나 될 것이며, 그러한 작은 부분을 위해서 시간 낭비하지 말라는 것이다. 그리고 이미 자바스크립트는 너무도 널리 퍼져 있어서 실제로 자바스크립트를 사용할 수 없는 사용자들은 3~5% 정도 밖에 없다는 것이다. 하지만 이들도 수동적인 참여는 스크립트 없이 가능해야 한다는 의견에 대해서는 전체적으로 동의하고 있다.
강제해서는 안된다는 사람들은 보안상의 이유나 모바일 폰과 같이 스크립트를 사용할 수 없는 환경이 아직도 있고 앞으로 어떻게 될지 모르기 때문이라는 의견과, 접근성을 고려 해야 한다는 의견 등이 있다. 자바스크립트를 강제하지 말고 자바스크립트 분리(unobtrusive javascript)나 점진적 기능 개선(progressive enhancement)과 같은 개념을 사용하라는 것이다.
어느 한쪽이 일방적으로 잘못 됐다고 말하기는 힘들다. 마치 웹표준에 대한 논쟁 처럼 - 지금은 거의 없어졌지만 - 처한 상황에 따라서 다르게 받아들여 질 수 있는 일이다. 하지만 한가지 드는 의구심은 자바스크립트 없는 상황을 고민할 필요가 없다는 사람들이 정말로 진지하게 두가지 상황의 장단점을 고민해봤는가 하는 것이다. 그러한 문제는 고민할 필요가 없다고 너무 쉽게 단정짓는 것 같다.
예외 상황을 고려한다는 것이 그렇게 쉬운일은 아니다. 그리고 정말로 그렇게 힘들여 만들어도 실제 효용이 적을 수도 있다. 하지만 분명한 것은 그렇게 고려하는 것이 더 좋은 선택이고, 자바스크립트 없는 상황을 고려하는 것이 그들이 잘못 오해하고 있는 것처럼 두배의 노력이 들어가는 힘든 일은 아니라는 것이다. 오히려 올바른 구조와 설계를 하는데 도움을 주고 높은 품질을 갖추게 되는 바탕이 될 수도 있다.
접근성 논란은 명확한 결론을 내리기가 힘들다. 단지, 웹표준 이슈가 그랬던 것 처럼 꾸준한 홍보와 교육으로 더 좋은 세상을 만드는 방향으로 나아갔으면 하는 바램이다. 이미 우리는 한번 이겼다.
Comments
저 수 많은 영어댓글을 다 읽어봤다니... 대단~~~~
> 이미 우리는 한번 이겼다. 와우. 앞으로 자바스크립트에 대한 관점이 어떻게 변해갈지 기대됩니다.
마지막 문장을 적을 수 있을 만큼 처음에 비해 접근성에 대한 개발자들 사이의 인식이 나아진 것 같아 기쁩니다.
위에글을 읽어봣는데 ..자바스크립트를 대체할 무언가가 없는한 부정하는사람들의 이야기는 그냥 말에 불과할뿐인듯.. 개발자 입장에서도 머리아프고..그러네요.
웹디황용님, 자바스크립트를 대체할 필요는 전혀 없습니다. 핵심기능은 HTML로 구현하고 자바스크립트는 인터페이스 효과를 구현하여 HTML과 자바스크립트를 분리하는 것입니다. 인터페이스 효과가 없어도 HTML로 핵심 기능이 작동할 수 있으면 접근성이 있는 것입니다. 예를 들어서 로그인의 경우, 아이디와 비밀번호를 넣어서 세션을 맺는 것이 핵심기능이고 이를 구현하는데 자바스크립트는 필요 없습니다. 여기에 사용자 편의 기능인 "아이디를 입력해 주세요", "비말번호를 입력해 주세요" 경고 문구나, 색을 바꾼다든가 하는 기능을 자바스크립트로 넣는 것입니다. 둘간의 분리가 최대한 이루어 져야 합니다. 물론 어플리케이션이나 기능에 따라서는 분리에 작업량이 많은 경우도 있습니다. 하지만 분리가 안되는 경우는 없습니다. HTML로 되어 있는 기능을 자바스크립트로 혼합하지 말고 분리된 상태로 구현하는 것이 핵심입니다.
흔히 볼 수 있는 자바스크립트 없는 세상은, 멀리 있는 어딘가가 아니라 바로, 자바스크립트가 제대로 로딩되지 않았을 때입니다. 이것은 마치 이미지를 전송 사이즈나 태그로 나뉘어질 것을 전혀 고려하지 않고 멈췄을 때, 보기 좋은 디자인 해내는 것과 마찬가지라 생각됩니다. 분리된 자바스크립트가 모두 전송되어 온다음 사용자의 인터랙션이 발생한다고 가정하면 항상 의도한 대로 나오겠지만, 성질 급한 사람은 onload에 들어 있는 것이 실행되기도 전에 뭔가를 검색한다거나 로그인 시도를 한다거나 하게 되는 경우도 있습니다. 이런 경우에는 자바스크립트를 끄지 않아도 html만으로도 동작을 해야합니다.
문제는 자바스크립트 조차도 제대로 못쓰면서 잘 쓰는 척? 다 아는척 하는게 문제 겠지요... 자바스크립트는 이야기 하며서 ECMAScript는 알지도 못하는게 문제겠지요.. prototype은 이해는 하면서 수정도 못하는게 문제 겠지요.. 자바스크립트가 없었다면 지금의 웹표준에 대한 언급도 없었겠지요 1996년도의 웹에서 웹표준을 떠들어 대던 사람은 없었으니까요.. 님의 말씀대로라면 우리나라의 웹은 1995년정도에 웹표준의 최고의 정점을 지켰을거 같습니다.. 웹호환을 외치면서 웹표준이라고 떠드는 것도 문제입니다. 표준은 하나여야 하는게 아닐까요? 표준을 위한 호환장치를 마련해 놓고...표준을 지켰다는건 문제가 많지요. 크로스 브라우징과 표준은 다른건데 한데 묶는것도 잘못이지요. CSS와 HTML이 웹표준이다라고 정의하는 것도 잘못 아닐까요? 웹이 CSS와 HTML로만 이루어져야만 할까요? 알지 못하는 세계는 인정하지 않아도 되는 건가요? 한가지 말씀 드리자면 현재의 표준이라고 정의된 것은 외국에서도 구시대적인 발상이다라고 정의 해서 현시대에 맞는 표준을 만들고 있습니다. 그떄는 어떻게 하실런지요? HTML5와 Javascript2가 나오게 되면?? XML스펙을 논하실껀가요? 새로운 스펙에 추가될 내용에는 이런것도 있더군요. - 글을 작성할 때 브라우저의 오류나 오작동속에서도 작성되는 글을 보호하기 위해 자동으로 저장하는 장치를 마련해야 한다.. 테터툴즈같은데 보면 있는 그런 기능 AJAX를 써서 하던 iframe을 쓰던 팝업을 띄우던간에.. 그게 CSS나 HTML로 해결될 문제인가? 쩝. 생각좀 하시고 글 쓰시죠.. 유명하시다는 분 같은데..
지나가다님, 오해를 하시는 것 같습니다. 자바스크립트를 쓰지 말고 CSS와 HTML로만 해결하라는 얘기가 아닙니다.
본문에서는 '비자바스크립트 환경'에서의 상황도 고려해야된다고 하지만 4년이 지난 지금 이 글을 돌아봤을 때, 자바스크립트 없는 상황을 고려해서 사이트를 구성하는 것이 (접근성에 대한) 대안이 될수 없다는 생각이 드네요. (어떤 퍼포먼스나 초기 비주얼적 목적으로 비자바스크립트를 고려한 후 자바스크립트를 구성하는 것이라면 고려될만 합니다.) 자바스크립트가 어떤 '왼손'만의 역할을 해주던 과거와 달리 웹어플리케이션의 시대의 도래와 함께 그 타이틀은 점점 사라져가고 있습니다. 웹접근성이 고려되고, 연구되어야 할 필수적인 것은 사실이지만 (그냥 당연히 지켜져야할) 해외에서는 HTML5를 중심으로 한 UI나 다이나믹 웹이라든지, 웹 어플리케이션이 화두인 반면에, 웹 접근성이나 웹 표준이 웹 개발의 핵심이나 목표인냥 집착하는 것은 국내만의 이상한 현상이라고 보네요.
"HTML5를 중심으로 한 UI나 다이나믹 웹이라든지, 웹 어플리케이션"과 "웹 접근성이나 웹 표준이 웹 개발의 핵심이나 목표"가 서로 배타적이라고 생각되지 않습니다. 둘 다 보다 높은 사용자 경험을 만들기 위한 기술과 개념인데요. 둘 중의 하나만 추구해서 좋은 사용자 경험이 만들어질 수 없다고 생각합니다.
댓글 한번 더달게 되네요. 댓글에서 둘이 배타적이라는 말은 한 적이 없는데요. 어느 한쪽에만 치우쳐서 그것이 전부인냥 취급되고 있다는 것을 말하고 싶었던 겁니다. 그리고 비자바스크립트에 대한 이야기도 했는데 그것에 대해선 노코멘트시군요.
저도 어느 한쪽에만 치우친 주장을 옹호하지는 않습니다. 말씀하신 부분이 제가 마치 한쪽에만 집착하는 의견을 가진 것 같다고 말씀하시는 것 같아서 제가 오해를 한 것 같네요. 그리고 비 자바스크립트에 대한 이야기는 포함했다고 생각했는데 좀 더 부연하자면 예전에 자바스크립트 분리가 화두였을때 많이 행해지던 행태를 비판하기 위해서 이야기 한 것이고 지금 돌이켜보면 점진적 향상(progressive enhancement)을 이야기 하고 싶었던 것입니다. HTML과 자바스크립트를 최대한 분리하고 그러면 얻을 수 있는 부분도 많다는 점을 이야기 하고 싶었던 것이고요. 이 점진적 향상은 비단 자바스크립트 뿐만 아니라 CSS3, 다양한 단말환경에도 적용되는 광범위한 부분을 포괄하는 방법론입니다. 요즘 유행하는 반응형 웹디자인도 모바일 우선 전략이나 콘텐츠 우선 전략이라는 이름으로 점진적 향상 방법론의 한 부분이라고 생각하시면 됩니다. 자바스크립트를 잘 사용하는 것도 중요하지만 HTML을 잘 사용하면 플랫폼에서 이미 제공하는 다양한 컨벤셔널한 기능을 쉽게 사용할 수 있기 때문에 간과해서는 안되는 부분입니다. 사실 웹기술로 하드웨어까지 제어하는 상황에서 비자바스크립트에 대한 이야기는 구시대적인 이야기 같지만 웹이라는게 워낙 다양성이 크다보니 과거와 현재, 미래가 같이 공존하고 있고 어느 한쪽으로 가야만 한다고 이야기 하기 힘든게 사실입니다. 웹앱도 많아질 것이지만 크롤링 기반의 데이터 수집에 대응해야 하는 콘텐츠도 같이 많아질 것입니다. 좀 어정쩡한 이야기 이지만 양쪽의 장단점을 잘 알고 상황에 맞게 최적의 기술을 선택하는게 중요하다고 생각합니다. WinRT 앱이나 Web API로 앱을 만드는데 비자바스크립트를 고려하라는 말은 앞뒤가 맞지 않는 말이지요. 하지만 반대로 텍스트 중심의 콘텐츠를 배포하는데 무조건 클라이언트 랜더링만 고집하는 것도 현명한 선택은 아니라고 생각합니다.
예 잘 알았습니다. 많이 배워갑니다. 장문의 답변 감사합니다. 좋은 하루 되세요.