샌프란시스코의 자바, PHP 그리고 HTML5 사용자 그룹이 호스트하여 개최된 HTML5에 대한 행사가 2010년 5월 11일에 있었다. 이 행사에 초청된 연사들은 HTML5에 대한 최고의 전문가이기 때문에 HTML5에 대해 관심이 있는 분이라면 본 비디오들은 반드시 참고할 필요가 있다.

1. LearnAbout HTML5 and the Future of the Web (구글 Brad Neuberg)





2.Learn About HTML5 and IE9 (마이크로소프트 Giorgio Sardo)






3. Learn About HTML5 Communications APIs ( Kaazing Peter Lubbers )






저작자 표시 비영리 변경 금지
Posted by 이원석 (wslee@etri.re.kr)
TAG html5, 강의

댓글을 달아 주세요

본 글은 구글이 운영하고 있는 HTML5ROCKS (HTML5 개발자 사이트)에 올라온 Best Practices for a Faster Web App with HTML5를 기반으로 번역하여 정리한 것이다원문과 거의 비슷하지만 완전히 똑같이 번역한 것은 아니다.

원문http://www.html5rocks.com/tutorials/speed/quick/

  

n  소개 

HTML5의 많은 부분은 지금까지 자바스크립트 라이브러리로 처리했던 다양한 기술과 기능에 대한 네이티브 브라우저 기능을 제공하는 것이다이러한 기능을 사용하는 것은 처리속도를 훨씬 빠르게 만들 수 있다본 튜터리얼에서는 어떻게 HTML5 CSS3를 이용하여 반응이 빠른 애플리케이션을 개발할 수 있는지에 중점을 둔다.

 

n  1: 쿠키 대신 웹 저장소를 사용하라

쿠키는 지금까지 사용자 데이터를 식별하기 위해 지금까지 사용되어 왔지만 이는 심각한 단점들을 가지고 있었다가장 큰 결점은 모든 쿠키 데이터가 모든 HTTP 헤더에 추가된다는 것이다이는 성능에 커다란 악영향을 줄 수 있으며특히 XHR을 사용하는 경우에는 더욱 문제가 될 수 있다그래서 모범사례는 쿠키 크기를 줄이는 것이다. HTML5에서는 이보다 더 효과적인 방법이 있는데이는 쿠키 대신 sessionStorage localStorage를 사용하는 것이다.

 

// if localStorage is present, use that

if (('localStorage' in window) && window.localStorage !== null) {

 

  // easy object property API

  localStorage.wishlist = '["Unicorn","Narwhal","Deathbear"]';

 

} else {

 

  // without sessionStorage we'll have to use a far-future cookie

  //   with document.cookie's awkward API :(

  var date = new Date();

  date.setTime(date.getTime()+(365*24*60*60*1000));

  var expires = date.toGMTString();

  var cookiestr = 'wishlist=["Unicorn","Narwhal","Deathbear"];'+

                  ' expires='+expires+'; path=/';

  document.cookie = cookiestr;

}

 

 

n  2: 자바스크립트 애니메이션 대신 CSS Transitions를 사용하라 

CSS Transitions는 두 상태간의 아주 매력적인 시각 효과를 준다대부분의 스타일 프로퍼티는 택스트 그림자(text-shadow), 위치(position), 배경 또는 색상 등에 대한 처리로 변화될 수 있다. “:hover” 또는 HTML5 , “:invalid”과 “:valid”와 같이 pseudo-selector states 변화하여효과를   있다.

 

div.box {

  left: 40px; 

  -webkit-transition: all 0.3s ease-out;

     -moz-transition: all 0.3s ease-out; 

       -o-transition: all 0.3s ease-out; 

          transition: all 0.3s ease-out;

}

div.box.totheleft { left: 0px; }

div.box.totheright { left: 80px; }

 

“totheleft”와 “totheright” 클래스 토글링(toggling)을 추가하여 box를 이동할 수 있다이 코드의양을 자바스크립트 애니메이션 라이브러리와 비교해 보자명확히 브라우저에 보내지는 바이트 수는 CSS 기반 애니메이션을 사용할 때가 훨씬 적다추가적으로 GPU 레벨 가속화를 이용하면 이러한 시각 효과는 아주 부드럽게 처리될 것이다.

 

 

n  3: 서버와 통신하는 대신 클라이언트측의 데이터베이스를 사용하라 

Web SQL Database IndexedDB는 클라이언트 측의 데이터베이스 기능이다. XHR 또는 폼 제출(form submission)를 이용해 데이터를 서버에 포스팅하는 것이 일반적인 패턴이지만이러한 방식 대신 클라이언트 측의 데이터베이스를 사용할 수 있다. HTTP 요청을 줄이는 것이 모든 성능 엔지니어의 1순위 목표이다따라서 데이터베이스를 이용하여 서버와의 통신을 많이 줄일 수 있다. localStorage 그리고 sessionStorage는 특정 사이트의 각 단계별 입력 정보를 저장하는데 활용할 수 있으며이는 클라이언트 측의 데이터베이스 API 보다 훨씬 빠르다.

예를 들면만일 수백개의 메시지를 갖은 데이터 그리드 컴포넌트 또는 수신함이 있을 때로컬 데이터베이스 안에 데이터 저장을 한 것은 사용자가 검색필터링정렬 등을 원할 때HTTP로 서버와 통신하는 것을 크게 줄일 수 있다.

좀더 자세히 이해하고 싶으면 Web SQL Database Tutorial을 참고해라

 

n  4: 자바스크립트 개선은 상당한 성능 개선을 제공한다 

자바스크립티 1.6에는 Array prototype에 대한 많은 메소드가 추가되었으며, 이들은 지금 IE를 제외한 대부분의 브라우저에서 사용가능하다.


// give me a new array of all values multiplied by 10

[5,6,7,8,900].map(function(value){ return value*10; }); // [50,60,70,80,9000]

  

// create links to specs and drop them into #links

['html5','css3','webgl'].forEach(function(value){

  var linksList = document.querySelector('#links');

  var newLink = value.link('http://google.com/search?btnI=1&q=' + value + ' spec');

  linksList.innerHTML +=  newLink;

}); 

 

// Return a new array of all mathematical constants under 2

[3.14, 2.718, 1.618].filter(function(number){

  return number < 2;

});

// [1.618]

 

// You can also use these extras on other collections like nodeLists

[].forEach.call(document.querySelectorAll('section[data-bucket]'), function(elem,i){

  localStorage['bucket' + i] = elem.getAttribute('data-bucket');

})


대부분의 경우 이들 Native 메소드를 사용하는 것은 전형적인 for 루프를 사용하는 것 보다 훨씬빠르다: for ( var i = 0; len = arr.length; i < len; i++ ).

Native JSON 파싱( JSON.parse() ) json2.js 파일을 대체한다. Native JSON은 외부의 스크립트를 사용하는 것보다 훨씬 빠르고 안전하다이미 IE8, 오페라 10.50, 파이어폭스 3.5, 사파리4.0.3 그리고 크롬에서 이미 제공한다.

 

n  5: 라이브 사이트에 대해서도 캐쉬 매니페스트(cache manifest)를 사용하라 

2년전에 워드프레스(Wordpress는 워드프레스 터보(Wordpress Turbo)라는 기능을 추가하기 위해 구글 기어스(Google Gears)를 사용했다이는 속도를 높이기 위해 관리 패털의 많은 자원들을 로컬에 캐슁하였다우리는 이와 같은 기능을 HTML5의 애플리케이션 캐쉬(applicationCache) cache.manifest로 실현할 수 있다.

애플리케이션 캐쉬는 Expires 헤더를 설정하여 사용하는 것보다 좀더 많은 장점이 있다그리고 이러한 방법은 캐슁할 파일을 명확히 정리하여 사용할 수 있고따라서 브라우저가 특정자원이 사용되기 전에 미리 캐슁할 수 있기 때문에 실행 속도를 최적화 시킬 수 있다.

사이트의 구조를 탬플릿으로 생각해 보자이는 HTML의 구조는 그대로 유지하고 변경 가능한 데이터를 포함한다애플리케이션 캐쉬를 이용해서 사이트를 구성하는 HTML 템플릿들을 처리하고,  cache.manifest를 통해서 마크업을 캐슁한 후 컨텐츠의 업데이트는 JSON을 받아서 처리한다이와 같은 모델은 아이폰이나 안드로이드 Native 뉴스 앱이 하는 것과 아주 유사하다.

 이에 대한 가이드는 application cache tutorial을 참조해라.

  

n  6: 비주얼 처리를 개선하기 위해서 하드웨어 가속기능을 켜라 

가장 앞서고 있는 브라우저에서 많은 시각적 처리는 GPU-레벨 가속기능을 최대한 활동할 수 있다. GPU-레벨 가속기능은 고도의 동적 처리를 자연스럽게 처리하는데이는 Firefox Minefield IE9 그리고 사파리5에서 지원한다크롬은 현재 3D 변환 기능과 하드웨어 가속 기능을 윈도우 버전에서만 지원하며조만간 다른 플랫폼에서도 지원할 예정이다.

GPU 가속기능은 단지 아주 제한된 조건하에서만 동작한다그러나 3D 변환과 애니메이션 투명도는 이러한 기능을 기동시키기 위한 가장 일반적인 방법이다조심스럽게 이러한 기능을 켜는 방법은 아래와 같다. 

.hwaccel {  -webkit-transform: translateZ(0); }

 

그렇지만보장할 수는 없다. :)

지원되는 하드웨어 가속기능으로 애니메이션 변환(animated translation), 회전(rotation), 크기조정(scaling), 투명도는 확실히 부드럽게 표현될 것이다이들 효과는 층별 컨텐츠를 다시 그릴 필요없이 GPU로 직접 처리되는 장점을 가질 것이다그러나 페이지의 레이아웃에 영향을 주는 모든 프로퍼티들은 아직은 상대적으로 느리게 보일 것이다.

  

n  7: CPU에 부담을 많이 주는 오퍼레이션에 대해서는 웹 워커를 사용하라 

웹워커는 두가지 중요한 장점을 갖는다. 1) 속도가 빨라진다. 2) 태스크들을 수행하는 동안에도 브라우저는 반응할 수 있는 상황을 유지한다.  워커에 대한 데모는 HTML5 Slide Deck을 참고해라

웹워커를 사용하기에 적합한 몇몇 상황들은 아래와 같다. 

-       긴 문서의 테스트 포맷팅(Text formatting of a long document)

-       문법 강조(Syntax highlighting)

-       이미지 처리(Image processing)

-       이미지 합성(Image synthesis)

-       대량의 배열 처리(Processing large arrays)

 

 

n  8: HTML5 폼 애트리뷰트와 Input 타입 

HTML5에는 search, tel, url, email, datetime, date, month, week, time, datetime-local, number, range, color 등 새로운 input type들을 추가됐다현재까지는 이들 기능지원에 대한 브라우저간의 편차가 크며단지 오페라만 대부분 기능을 지원하고 있다따라서 이러한 기능을 사용할 때 접속하는 브라우저의 지원여부를 확인해서 절절한 처리를 해주어야 한다.

추가적으로 HTML5에 폼과 관련하여 입력 폼의 기본값을 사용자에게 흐릿하게 보여주는placeholder와 페이지를 로딩한 후 입력박스에 자동으로 커서를 위치시키는 autofocus 애트리뷰트가 추가되었다또한 사용자 입력 값의 검증 기능과 관련해서 사용자가 입력을 했는지를 검증해 주는 required 애트리뷰트 그리고 입력 값 검증을 위한 패턴을 표현하는 pattern 애트리뷰트가 추가되었다. Pattern 애트리뷰트에 자바스크립트 정규식으로 패턴을 정의하면 브라우저가 사용자가 입력한 값이 정의된 패턴에 맞는지 검증을 자동으로 해준다예를들어 이메일 주소 같은 것을 이러한 pattern 애트리뷰트를 이용해서 쉽게 검증할 수 있다이러한 기능을 사용하면 자바스크립트로 코드를 상당히 줄일 수 있으며 브라우저 내장된 기능으로 처리하기 때문에 속도가 빠르다.

이와 관련된 데모는 HTML5 Slide deck을 참고해라.

 

n  9: 이미지 효과를 표현할 때 CSS3 effects를 최대한 활용해라 

CSS3는 지금까지 정밀한 시각적 디자인 표현을 위해 사용하던 이미지 처리들을 대체할 수 있는다양한 종류의 기능을 제공한다. 2K 크기의 이미지를 100 Byte CSS로 대체하는 것은 큰 장점이다물론 추가적인 HTTP 요청이 필요없는 장점도 생긴다활용하기 좋은 CSS의 몇가지 주요 효과들은 아래와 같다. 

l  Linear and radial gradients

l  Border-radius for rounded corners

l  Box-shadow for drop shadows and glow

l  RGBA for alpha opacity

l  Transforms for rotation

l  CSS masks

 

예를들어 gradients를 이용해서 아주 우아한 버튼을 만들 수 있으며 이미지로 처리하던 다양한 효과들을 대체할 수 있다이와 같은 기능들은 대부분의 브라우저들이 안정적으로 지원하고 있다또한 이런 기능을 지원하는 않는 브라우저에 대한 처리는 Modernizr와 같은 라이브러리를 이용하여 체크하고 대응되는 이미지를 준비하여 처리하면 된다.

 

n  10: XHR보다 적은 밴드위스로 빠르게 전달할 수 있는 웹소켓 

웹소켓은 Comet의 인기가 급증하는 것에 대응해서 설계되었다지금은 XHR 모델 기반의Comet 대신에 웹소켓을 사용하는 것이 좋다. 

웹소켓은 간결한 프레임을 사용하기 때문에 XHR 보다 훨씬 적은 bandwidth를 소비한다몇몇 리포트에 따르면 유선 환경에서 35% 정도의 바이트가 줄어든다고 한다추가적으로 메시지를 전송할 때 큰 크기를 대상으로 하면 성능의 차이가 훨씬더 명확해진다시험에서 XHR이 웹소켓보다 3500% 정도의 전송 시간이 더 필요한 것으로 평가되었다최근에 에릭슨 실험실은 웹소켓의 시험을 통해 HTTP 기반의 ping 시간이 웹소켓에 비해 3 ~ 5배 정도 길다는 것을 확인했다따라서 에릭슨에서는 웹소켓이 실시간 애플리케이션에 확실히 더 적절하다는 것으로 결론을 내렸다.

 

n  추가적인 자원들 

성능측정을 위해 파이어폭스의 Page Speed 플러그인그리고 YSlow를 사용할 수 있다추가적으로 Speed Tracker for Chrome DynaTrace Ajax for IE는 좀더 세부적인 분석 정보를 제공한다.

Chrome Developer Tools에 대한 가이드 Resource Tab과 조만간 출시될 새로운 Audits panel을 통해 제공할 것이다.

저작자 표시 비영리 변경 금지
Posted by 이원석 (wslee@etri.re.kr)

댓글을 달아 주세요

  1. 데꾸벅 2010/09/04 02:23  댓글주소  수정/삭제  댓글쓰기

    좋은글 잘봤습니다. ^^

  2. 진서기 2010/09/05 14:22  댓글주소  수정/삭제  댓글쓰기

    크롬은 현재 3D 변환 기능과 하드웨어 가속 기능을 윈도우 [버번]에서만


    오타요!

    글잘봤습니다.

  3. 녹풍 2010/09/09 01:16  댓글주소  수정/삭제  댓글쓰기

    좋은 글 감사합니다! HTML5에 관심이 지대하게 많은 1인에게 큰 도움이 되셨어요! :)

조금전 2010 모바일 콘텐츠 컨퍼런스에서 발표했던 자료이다. 이 자료를 준비하면서 모건스텐리의 인터넷 트랜드 리포트를 찹조했는데 모바일 시대가 빠르게 오고 있음을 다시금 느낄 수 있었다. 그리고 웹킷으로 정리가 되고 있는 모바일 웹 플랫폼 환경에서 HTML5 기반 웹 애플리케이션의 가능성은 충분하다는 생각이 들었다.

HTML5 and the Future of the Mobile Web
View more presentations from wonsuk73.

저작자 표시 비영리 변경 금지
Posted by 이원석 (wslee@etri.re.kr)

댓글을 달아 주세요

  1. 민원기 2010/09/01 08:06  댓글주소  수정/삭제  댓글쓰기

    잘 봤습니다. 감사합니다.

  2. partir 2010/09/01 16:26  댓글주소  수정/삭제  댓글쓰기

    어제 발표하신 내용 잘 들었습니다.그리고 자료 공유 해 주셔서 감사합니다.

  3. 김동환 2010/09/01 21:22  댓글주소  수정/삭제  댓글쓰기

    HTML5에 대해서 유익한 정보 설명해주신 점 감사합니다.
    어제 마지막에 트윗 팔로윙 하겠다고 한 젊은이 입니다:)

올해 초 세계적인 IT 기업 애플과 구글이 적극적으로 HTML5에 대한 지원의지를 밝히면서 HTML5는 세계 IT산업의 가장 중요한 키워드가 되고 있다. 또한 애플, 구글, MS, 모질라, 오페라와 같은 주요 웹 브라우저 업체들간의 브라우저 기술개발 경쟁이 치열해 지면서, HTML5 기술을 포함한 전체적인 웹 플랫폼 기술은 하루가 다르게 빠르게 발전하고 있다. 

 

반면에 IT업체들이나 웹 개발자들은 새로운 서비스의 기획이나 개발에 있어 혼돈스러워하고 있다. 가장 주요한 이유를 보면, 첫째는 HTML5 표준 개발을 주도하고 있는 W3C에서 HTML5 표준에 대한 로드맵을 보여주지 못하고 있다는 것이다. 둘째는 현재 애플 사파리, 구글 크롬, 파이어폭스, 오페라 등 주요 브라우저들이 HTML5의 많은 기능을 지원하고 있으나 이들 브라우저가 지원하는 HTML5 기능이 다르다는 것이다. 

 

또한 같은 브라우저의 경우도 버전에 따라서 지원하는 기능이 상당히 차이가 난다. 이외에도 국내의 경우 95%이상을 점유하고 있는 MS의 IE6, 7, 8이 HTML5를 거의 지원하지 못한다는 것이다. 그야말로 혼돈의 시대이다. 

 

그럼 모바일 환경은 어떠한가? 현재까지 진행되는 상황을 보면 PC보다 모바일 환경이 HTML5 기반의 서비스 적용에 적합한 환경으로 변화하고 있으며, 바로 지금이 HTML5 기반의 모바일 서비스를 준비해야할 시기라고 생각한다. 

 

■ 증대되는 모바일 웹의 중요성 

 

작년 말에 발표된 모건스탠리의 보고서에 따르면 향후 5년 내로 모바일을 통해 웹에 접속하는 사람들이 데스크톱 PC로 접속하는 사람보다 많아질 전망이라고 한다. 예전에는 주로 PC나 노트북을 이용해 웹의 다양한 서비스를 이용했지만, 스마트폰이 활성화 되면서 스마트폰을 이용한 인터넷 사용시간이 크게 증가하고 있다. 

 

또한 아이패드 같은 테블릿 제품이 성공적으로 출시되면서 가까운 미래에는 스마트폰, 테블릿, e북리더기 등 다양한 모바일 디바이스를 활용한 인터넷 사용이 더욱 증가할 것으로 예상된다. 

 

■ 모바일 웹에서 HTML5 활용의 의미 

 

웹에서 어떠한 기능을 구현하는가에 따라 다르겠지만 새로운 시맨틱 마크업을 추가한 HTML5를사용하면 같은 기능을 구현할 때 HTML4에 비해서 훨씬 적은 자바스크립트 코드로 구현이 가능하다. 따라서 기본적으로 웹 서비스 로딩속도가 빨라지며 이러한 특성은 특히 네트워크 속도에 예민한 모바일 환경에서 더욱 큰 의미를 갖는다. 

 

또한 경우에 따라 다르겠지만 많은 기능이 HTML5 표준에 포함되어 브라우저의 기본기능으로 제공되면서 HTML5 기반의 서비스 실행속도가 15%정도는 향상되는 것으로 알려져 있다. 추가적으로 HTML5가 오프라인 웹 애플리케이션, Geolocation, 웹펌, 웹소켓, 웹 저장소 등 모바일 환경에 반드시 필요한 기능을 지원함으로써 모바일 환경에서 훨씬 향상된 웹 서비스와 애플리케이션을 개발할 수 있게 되었다. 

 

■ 모바일 웹 브라우저 = 웹킷 = HTML5 ? 

 

스마트폰의 시대가 되면서 모바일 웹 브라우저는 웹킷 플랫폼을 기반으로 개발하는 것이 대세가 되고 있다. 웹킷은 애플에서 시작한 브라우저 랜더링 엔진에 대한 오픈소스 프로젝트로 애플, 구글, 노키아 등 세계적인 IT 업체들의 적극적인 참여로 세계에서 가장 빠르게 발전하는 웹 플랫폼이 되었다. 

 

현재 웹킷을 사용하고 있는 주요 모바일 플랫폼은 애플의 아이폰/아이패드용 iOS, 구글의 안드로이드, 노키아 S60 플랫폼 등이 있었고, 조만간 출시될 RIM(Research In Motion)의 블랙배리 6 OS도 웹킷 기반의 브라우저를 탑재한 것으로 알려졌다. 

 

웹킷은 HTML5를 가장 잘 지원하는 웹 플랫폼이다. 따라서 웹킷 기반 모바일 브라우저가 크게 확산이 되면, 자연스럽게 모바일 환경은 HTML5를 지원하는 환경이 된다는 측면에서 상당히 중요한 의미를 갖는다. 

 

■ HTML5, 모바일부터 준비가 필요한 시기 

 

지난달 초 야후는 스마트폰을 위한 HTML5 기반 메일 서비스를 시작했는데, 이 서비스는 속도 개선은 물론 오프라인에서 메일 검색 기능지원, 화려한 사용자 인터페이스 등 기존의 웹 메일 서비스 보다 한층 개선된 기능을 제공한다. 

 

또한 구글은 HTML5기반 유튜브 모바일 서비스를 개시하였는데, 이는 로딩 속도 개선, 화려한 사용자 인터페이스 그리고 네이티브 애플리케이션과 비교해도 손색 없는 비디오 품질을 제공한다. 

 

이외에도 AOL의 모바일 사이트, 체크-인(Check-in) 모바일 서비스 등 다양한 서비스들이 HTML5 기반 서비스를 시작하였으며, 앞으로도 HTML5 기반 모바일 서비스는 점차 확대될 것으로 예상된다. 

 

그럼 우리는 앞으로 어떤 준비가 필요할까? 불행히도 기업이든 개인이든 어떤 새로운 변화를 짧은 시간에 적응하는 것은 어렵다. 변화에 대한 올바른 이해과정인 시행착오의 시간이 필요하기 때문이다. HTML5가 가져오는 변화는 이미 우리 앞에 있으며 이를 피할 수 있는 방법은 없어 보인다. 따라서 지금부터 HTML5가 몰고 올 변화에 대한 적응을 시작할 필요가 있다. 그리고 HTML5 활용의 첫번째 무대는 모바일 환경임을 기억하자. 

 

[필자소개] 
현재 ETRI 선임연구원이며, W3C 대한민국 사무국 코디네이터, 모바일 웹 2.0 포럼 HTML5 AG(Ad-hoc Group) 의장 등으로도 활동하고 있다. 트위터는 @wonsuk73을 사용하고, 미래 웹 표준 기술에 관한 이야기(http://www.wonsuk73.com/)라는 블로그를 운영중이다.

저작자 표시 비영리 변경 금지
Posted by 이원석 (wslee@etri.re.kr)

댓글을 달아 주세요

  1. 2010/08/10 10:13  댓글주소  수정/삭제  댓글쓰기

    비밀댓글 입니다

    • 이원석 (wslee@etri.re.kr) 2010/08/10 12:57  댓글주소  수정/삭제

      안녕하세요.
      플래쉬가 보여지는 문제는 HTML5 보는 브라우저가 플래쉬를 지원하는 여부에 따라서 결정이 됩니다^^ 따라서 브라우저가 플래쉬를 지원하면 보여지는 문제는 없습니다.

지난 글 "HTML5 표준 범위와 W3C HTML WG 표준화 현황"에서 HTML5의 표준 범위에 대해서설명 하면서 Device API에 대한 중요성을 설명하였는데, 지난 7월 14일~16일까지 런던에서 W3C DAP(Device APIs and Policy) WG 회의가 있었다. 필자도 DAP WG에서 에디터를 맡고 있어 회의에 참석하였으며 이에 대한 주요한 내용을 정리해 본다.

기존 웹 애플리케이션의 한계: 음성인식 검색, 비디오 캡쳐 등 구현 불가 
현재 다음과 구글이 제공하는 Native 스마트폰 애플리케이션은 음성인식 기반 인터넷 검색 기능을 제공하고 있으며, 구글의 스마트TV에서도 음성인식 기반의 콘텐츠 검색을 지원할 예정이다. 또한 스마트폰에서 카메라 애플리케이션이나 음악을 녹음해서 이를 기반으로 해당 노래에 대한 정보를 찾아주는 애플리케이션 등은 상당히 유용하고 인기있는 애플리케이션이다. 그러나 지금까지 표준기반의 웹 애플리케이션으로는 이러한 기능 개발이 불가능했다. 기본적으로 마이크나 비디오 카메라를 제어하기 위한 표준화된 자바스크립트 API가 존재하지 않았으며, 또한 HTML에서 이러한 디바이스들 연결하여 사용할 수 있도록 해주는 마크업이 존재하지 않았기 때문이다. 


Device API 개념 소개
Device API 표준은 웹 애플리케이션이 디바이스의 자원들 (GPS, 센서주소록일정카메라 제어배터리 정보갤러리파일 시스템 등)을 접근 가능하게 하는 API 표준으로, 이러한 표준을 이용하면 웹 애플리케이션이 사진이나 동영상 캡처 등의 기능을 자연스럽게 지원할 수 있다. 아래의 그림은 Device API의 개념을 보여준다.



먼저 현재 DAP WG에서 적극적으로 개발 중인 API 표준은 아래와 같이 정리해 볼 수 있으며, 이러한 표준 이외에도 보안과 Privacy에 대한 표준 개발을 진행하고 있다.

API 

설 명

개발주체

Calendar

디바이스의 일정 정보에 접근하기 위한 API

프랑스 텔레콤, RIM

Contact

디바이스의 주소록 정보에 접근하기 위한API

프랑스 텔레콤

Media Capture

디바이스 내 오디오, 이미지, 비디오 기능에 접근하기 위한 API

인텔, 노키아, 도이치 텔레콤

Messaging

디바이스의 SMS, MMS, email 기능에 접근하기 위한 API

텔레포니카, 오페라, 에릭슨

System Information

디바이스의 기본적인 속성에 대한 API(배터리 용량, 네트워크 대역폭, CPU부하, 저장 용량, /출력 기기)

인텔, 오페라

Gallery

디바이스 내에 있는 미디어 갤러리(media gallery)에 접근하는 API.

ETRI

Powerbox

사용자 개인 리소스를 브라우저에서 요청하기 위한 웹 기반 전달 방식

구글

Application Launcher

디바이스에 인스톨된 어플리케이션(Native Application)에 접근하기 위한 API

ETRI




W3C DAP WG의 Device API 표준 개발 전략
DAP WG에서 지금까지 Device API에 대한 보안 및 Privacy 이슈가 아직 견고하게 정리가 되지 않은 상황이기 때문에 현재 개발하고 있는 표준 API들을 Read 기능과 Write 기능을 분리하여 별도의 표준으로 개발하기로 하였다. 이렇게한 이유는 표준 개발이 가능한 기능은 최대한 빠르게 시장에 제공하기 위함이다. 따라서 Device API에 포함된 표준들은 보안 및 Privacy 이슈가 상대적으로 적은 Read 기능에 대한 표준들이 빠르게 표준화가 이루어질 것이며, 그후 Write 기능에 대한 표준들이 개발될 예정이다.


Device API 표준과 HTML5 마크업 관계 정립
DAP WG에서 Device API 표준과 HTML5의 마크업 간의 조화를 이루기 위한 노력을 진행하고 있다. 이는 웹 애플리케이션이 보다 자유롭고 쉽게 디바이스의 자원들을 처리할 수 있는 방법들을 제공한다는 의미에서 상당히 중요한 이슈이다. 예로 이번 회의에서 초안이 정리된  HTML Media Capture 표준을 볼 수 있다. 본 표준은 Media Capture API와 별개로 HTML 마크업을 이용해서 디바이스의 자원과 연동하기 위한 기능을 정의하고 있다. HTML Media Capture 표준에 대해 이번회의에서 정리된 주요 내용은 아래와 같다. HTML의 <input>에 accept 애트리뷰트를 이용하여 어떤 Device에서 어떤 타입의 미디어를 받아들일지 정의하는 것이다. 즉, 카메라를 이용해서 image를 입력으로 받겠다고 정의를 한 것다.

<input type="file" accept="image/*; capture=camera">

* Note: capture의 값으로 camera, camcorder, microphone, filesystem이 올 수 있음.

아래의 예는 HTML Media Capture 표준을 이용해서 구현할 수 있는 Media Caputure File Picker에 대한 랜더링 예를 보여준다. 트위터 같은 애플리케이션을 보면 트위팅을 할 때 사진을 같이 올릴 수 있으며, 사진을 선택할 때 기존에 찍어둔 사진을 선택하여 활용할 수도 있고 바로 카메라 기능을 이용해서 직접 사진을 찍어서 사용할 수도 있다. 아래의 왼쪽 그림은 기존에 찍어둔 화일을 선택하는 모드를 보여주며, 오른쪽 그림은 직접 사진을 찍기위한 카메라 모드를 보여준다. 이런한 기능이 HTML Media Capture을 이용해서 웹 애플리케이션에서 가능해지는 것이다.



또한 Contacts API의 경우도 HTML5의 <input>이나 <device>과 어떤 형태로 조화롭게 활용할 수 있을지에 대해 고민하고 있다. 현재까지는 HTML5에 새롭게 추가된 <device> 보다는 <input>을 활용하는 것이 안정적이라는 의견이 많은 사황이다. 그리고 앞으로 센서, 메시징, 갤러리 등 다양한 디바이스의 자원들을 마크업으로도 연동하여 웹 애플리케이션으로 표현할 수 있을 것으로 예상된다.


Device API 관련 W3C WG의 역할 분담
사실 W3C에서 API에 대한 표준은 주로 Web Applications WG에서 개발하는 것으로 되어 있었으나 개발해야할 스펙이 많아 디바이스의 자원을 접근하는 API 개발은 DAP WG을 새롭게 만들어 진행하게 되었다. 그러나 Device API와 관련된 표준들도 여러 상황에 따라서 다른 WG에서 개발하기로 하거나 기존의 기술에 의해서 표준 개발의 필요성이 없어진 표준이 있다. 이러한 내용을 아래와 같이 정리할 수 있다.
Web Applications WG로 이관: 화일 쓰기(File Writing)와 화일시스템 (Filesystems) 표준 개발
Geolocation WGOrientation / Acceleration 표준 개발
Web Notification Working Group: Notification 표준 개발
Application configuration 표준: localStorage와 Widget interface APIs로 대체


앞으로의 전망
앞으로는 HTML Media Capture 표준을 이용해서 웹 애플리케이션에서 음성인식 기능, 카메라 애플리케이션 구현이 가능할 것으로 생각되며, 향후 더 다양한 Device API 들이 제공되면 앞으로 정말 Native 애플리케이션과 같은 애플리케이션 개발이 가능할 것으로 기대한다. 이러한 의미에서 웹 플랫폼은 멀티플랫폼/멀티디바이스를 지원하는 가장 경쟁력있는 플랫폼으로 진화하고 있는 것이다.

 

저작자 표시 비영리 변경 금지
Posted by 이원석 (wslee@etri.re.kr)

댓글을 달아 주세요

  1. 김영보 2010/07/21 20:41  댓글주소  수정/삭제  댓글쓰기

    매우 값진 글입니다. 감사합니다.
    - 화일 쓰기(File Writing)와 화일시스템 (Filesystems) 표준 개발은 언제쯤 Last Call을 예상하세요?

    - 앞으로 정말 Native 애플리케이션과 같은 애플리케이션 개발이 가능할 것으로 기대한다에서--->
    여기서 Native는 모바일 업체에서 제공하는 Native인가요?
    그럼 자바스크립트로 악세스가 가능하게 되나요?

    혹시 데이터베이스 통합/형태에 대해서 거론 된 것이 있습니까?
    파이어폭스 4.0에 indexed database가 탑재되는 것으로 알고 있습니다만,
    하나로 통일되는 방향으로 설정이 되었나요? 아니면 다른 방안이 있나요?

    단어 하나 하나의 의미를 되새긴 뒤 질문 좀 하겠습니다^-^

  2. 이원석 (wslee@etri.re.kr) 2010/07/22 01:04  댓글주소  수정/삭제  댓글쓰기

    안녕하세요. 김영보 선생님^^

    - 화일 쓰기(File Writing)와 화일시스템 (Filesystems) 표준 개발은 언제쯤 Last Call을 예상하세요?
    답변) 아시겠지만 예측하기가 좀 어려운데... 개인적인 생각으로는 보안과 Privacy에 대한 이슈가 있어서 시간이 좀 걸릴 것 같습니다.

    - 앞으로 정말 Native 애플리케이션과 같은 애플리케이션 개발이 가능할 것으로 기대한다에서--->
    여기서 Native는 모바일 업체에서 제공하는 Native인가요?
    그럼 자바스크립트로 악세스가 가능하게 되나요?
    답변) 예.

    - 혹시 데이터베이스 통합/형태에 대해서 거론 된 것이 있습니까?
    답변) 사실 Indexed database는 Web Applications WG에서 개발하고 있는 표준이기 때문에 구체적인 내용에 대해서는 논의가 없었습니다. 그러나 HTML WG Activity Lead인 Mike로부터 들은 바로는 Web SQL Database에 대한 표준 개발은 다시 없을 것 같고 대신에 Indexed database를 표준으로 만들어 사용할 예정이라고 합니다^^

    좋은 질문 감사합니다~ ;)

  3. 김영보 2010/07/22 03:54  댓글주소  수정/삭제  댓글쓰기

    와~ 감사합니다.
    방향 설정에 잣대가 되었습니다.
    화일 쓰기를 기다리고 있습니다만, 준비만 해야 할 것 같습니다.^-^
    Native에 접근할 수 있다는 것은 자바스크립트로 모든 디바이스를 제어하게 된다는 의미가 아닌가요...
    그럼, Native도 일정 부분 표준화가 되겠네요...
    결국 indexed database로 가게 되네요...
    하기야 자바스크립트 개발자에게 SQL을 요구한다는 것은 또 하나의 부담이 될 것 같습니다.

    문장 하나 하나 되새겨 본 뒤에 조금 더 질문 드리겠습니다.
    감사합니다. 다음에 지하철 미팅해요. 메모해 두었다가 하나씩 물어 보게요^-^

  4. 강태욱 2010/07/22 08:54  댓글주소  수정/삭제  댓글쓰기

    따끈한 소식 감사합니다~(--)(__)

  5. Wise 2010/07/22 10:20  댓글주소  수정/삭제  댓글쓰기

    항상 따끈따끈한 소식 감사합니다~ ^^

  6. 민원기 2010/07/30 11:24  댓글주소  수정/삭제  댓글쓰기

    좋은 정보 감사합니다. 자주 놀려 오겠습니다.


오늘 구글코리아를 방문하여 HTML5에 대한 Tech Talk을 했는데 정말 생각보다 많은 엔지니어 분들이 참석해 주셔서 좋은 대화의 시간을 갖았다. 그리고 성함은 모르지만 구글 본사 마운틴뷰에 계신 분도 비디오 컨퍼런스로 연결하여 참석해 주셔서 감사했다. 또한 이번에 다시한번 구글의 자유로운 분위기와 그러한 자유로운 분위기 속에서의 책임감을 바탕으로 운영되는 조직문화에 다시금 놀랬다.

구글 Tech Talk을 유튜브에서 보신분들은 아시겠지만 항상 발표하기 전에 구글 종이가방에 선물을 넣어 발표자에게 전달한다. 항상 뭐가 들어있을지 개인적으로도 궁금했는데 오늘은 직접 받아서 확인을 했다.



가방안에는 큰 박스와 빨간색 구글 티셔츠가 있었다. 박스 안의 내용물은 비밀로 하고 싶다. 너무 좋은 선물이 있었기 때문. 그냥 사진만 올려본다.



그리고 오늘 발표한 "The current status of HTML5 technology and standard"에 대한 발표자료는 아래와 같다.



많은 분들이 이 발표자료를 트위팅해 주셔서 Hot on Twitter에 올라갔다. HTML5에 관심이 있으신 분들에게 조금이나마 도움이 되었으면 좋겠다. 아래 이미지는 Hot on Twitter 페이지의 인증 삿.



마지막으로 오늘 부족한 강연을 열심히 들어주시고 좋은 질문을 해주신 모든 구글러 여러분께 감사드린다.

발표자료(PDF 버전) 다운로드




저작자 표시 비영리 변경 금지
Posted by 이원석 (wslee@etri.re.kr)

댓글을 달아 주세요

  1. 이해민 2010/07/09 01:03  댓글주소  수정/삭제  댓글쓰기

    원석씨, 오랜만에 얼굴 뵈어서 반가왔습니다.

    멀리까지 오셔서 좋은 발표 해주셔서 감사합니다.

    담엔 숙대에서 한 번 더...후다닥 =3=3=3

    • 이원석 (wslee@etri.re.kr) 2010/07/09 01:17  댓글주소  수정/삭제

      해민씨, 저도 정말 재미있는 시간이었습니다. 세계 최고의 엔지니어들과 함께할 수 있는 기회를 주셔서 감사합니다~ ;) 숙대는 박교수님께서 초청해 주시면 당근 가야죠~ ㅋㅋㅋ 여대^^;

  2. leezche 2010/07/09 10:07  댓글주소  수정/삭제  댓글쓰기

    저는 엔지니어는 아니고 디자이너인데 그럼에도 불구하고 정말 많은 도움이 된것 같습니다. 시간이 너무 짧아 아쉬웠습니다. 감사드립니다.

  3. 서동일 2010/07/09 10:29  댓글주소  수정/삭제  댓글쓰기

    HTML5를 이해하는데에 정말 많은 도움이 될 것 같습니다. 유익한 tech talk, 발표자료 너무 감사드립니다.

  4. ninacry 2010/07/12 10:21  댓글주소  수정/삭제  댓글쓰기

    안녕하세용^^ 김*현 과장님 소개로 예전에 세미나 들었던 사람입니다.
    여전히 열정적으로 활동하고 계시군요~ 그때도 감사드렸고 오늘도 자료 너무 감사하게 받아갑니다..^^
    저 구글 상자 안이 궁금하군요...ㅋ 좋은하루 되세요 ^^

  5. 머털도사 2010/07/16 11:01  댓글주소  수정/삭제  댓글쓰기

    좋은 자료 감사합니다. 이원석님
    퍼 갑니다.

W3C에서 개발되고 있는 HTML5 표준은 기존 표준들과는 다르게 상당히 많은 스펙들로 구성되어 있다. 이러한 면은 HTML5를 배우는 많은 이들에게 HTML5 표준을 어디까지로 봐야할 까하는 의구심을 들게한다. 또한 많은 이들이 현재 W3C에서 표준화가 진행되고 있는 상황에 대해서도 궁금할 것이다. 이와 관련해서 지난 3월에 W3C에서 HTML WG 의장 중 한명인 마이크로소프트의 폴 코튼(Paul Cotton)과 인터뷰한 내용 [1] 과 W3C AC(Advisory Committee) 미팅에 보고된 내용 [2]이 있어 소개한다.


폴 코튼이 생각하는 HTML5 표준의 범위

폴 코튼은 HTML5라는 용어가 상당히 느슨한 의미로 사용이 되고 있다고 생각한다. 폴 코튼이 생각하는 HTML5 표준의 범주는 HTML WG에서 개발되고 표준, Web Applications WG에서 개발하고 있는 API 표준, Device APIs and Policy WG에서 개발하는 표준 그리고 마지막으로 우리가 자바스크립트로 알고 있는 ECMAScript-262에 대한 표준도 포함한다.

일반적으로 Device APIs and Policy WG에서 개발되고있는 Device API 표준은 웹 애플리케이션의 디바이스의 자원들 (GPS, 센서, 주소록, 일정, 카메라 제어, 배터리 정보, 갤러리, 파일 시스템 등)을 접근 가능하게 하는 API 표준이다. , 이런 API를 이용하면 디바이스의 카메라 기능을 이용해서 사진과 동영상도 촬영하는 기능을 웹 애플리케이션으로 구현할수 있다. 지금까지 디바이스 API HTML5 표준으로 포함시켜 논의되지는 않았다. 하지만 이 또한 HTML5의 핵심적인 API 표준이다. 또한 지속적으로 HTML5에 대한 표준은 추가적으로 제안되어 개발될 것으로 예상된다.


HTML WG 표준개발 현황

폴 코튼은 HTML WG에서 개발 중인 HTML5 스펙들 현황에 대해서는 HTML WG에서 개발중인 HTML5 스펙들이 W3C 초안 Last Call 단계 (초안에 대한 최종 검토 단계를 의미함)에 가기 위해서는 초안과 관련된 대한 알려진 모든 코멘트와 이슈들을 해결해야 하는 것이 필요하며 지금까지 이러한 작업을 지속적으로 진행하고 있는 중이라고 한다. 즉, WG 내부 또는 외부에서 지속적으로 표준 초안에 대한 이슈들이 제기가 될 것이고, 이러한 이슈들을 계속해서 해결하는 작업이 진행을 진행한다. 이러한 일련의 작업을 통해 초안의 문제가 모두 해결되면 Last Call 단계에 진입하는 것이다.

참고로 2009 1월에서 2010 2월까지 새롭게 발생한 이슈 비율과 해결된 이슈 비율을수자로 정리하면 아래와 같다. 지속적으로 새로운 이슈들이 발생하고 해결되고 있는 것이다.


HTML WG에서 현재 개발중인 문서는 아래와 같이 6개가 있으며, 지난 3월 4일에 공식적으로 Publication된 문서이다.


HTML5 표준의 최종승인에 대한 전망

HTML5 언제 표준화가 마무리됩니까? 가장 자주 듣는 질문이다. 그러나 HTML5 표준 개발이 언제 마무리될지 예측하는 것은 상당히 어려운 상황이다. 하지만 폴 코튼이 이야기한 내용들을 보면 지속적으로 HTML WG의 스펙들에 대한 이슈를 해결해 나가고 있는 상황이기 때문에 어느 정도 시간이 지나면 문제들은 정리가 될 것으로 조심스럽게 예측해 본다. 또한 W3C 표준 개발 절차상 초안 Last Call 단계에 진입하고 이 단계가 잘 정리 되면, HTML5 표준의 마무리에 대한 예측이 가능할 것으로 예상한다. 따라서, Last Call 단계를 언제 진입하는 지가 상당히 중요하며, 그 이후에는 HTML5에 대한 보다 긍정적인 기대의 글들이 만발하지 않을까 기대해 본다.


(참고자료)

[1] Interview: Paul Cotton on Microsoft Participation in the W3C HTML Working Group

[2] W3C HTML Working Group Status Report(November, 2009 - March, 2010)

저작자 표시 비영리 변경 금지
Posted by 이원석 (wslee@etri.re.kr)

댓글을 달아 주세요