[HTML5] HTML5 개요와 기술적 특징

Posted in 모바일/HTML5 // Posted at 2010. 7. 21. 12:24
728x90

HTML5에 대한 개괄적인 내용들을 정리해 보았다
이 문서는 HTML5 & API 입문 이라는 책과 관련 블로그 및 온라인 자료를 바탕으로 작성되었다

따라서 순수 창작물이 아니라 정리 및 요약을 목적으로 작성되었으며 일부 개인적 의견이
덧붙여지기도 하였음을 밝혀둔다


HTML5 개요와 기술적 특징

 

2010.06.14

 

근래 HTML5에 대한 관심이 뜨겁다. 웹이 더 이상 문서 공유나 문서 표현만을 위한 것이 아니라 하나의 응용프로그램으로써의 면모를 점점 갖추어 나가고 있다. 플러그인 기술과 스크립트의 조화로 웹이 응용프로그램화 되어 왔지만 이는 표준적인 HTML 스펙을 벗어나는 기술의 복잡한 결합으로 가능한 것이었다

HTML5는 웹을 둘러싼 난무한 비 표준을 지양하고 지능적이고 실행가능 한 웹 구현을 위해 탄생한 차세대 웹 표준 기술이다. 본 문서에서는 현재 이슈가 되고 있는 HTML5의 개요와 기술적 특징에 대해 기술한다

 

HTML5 등장 배경

웹 문서에서 웹 응용프로그램으로의 진화

웹에서 문서를 표현하고 문서간 연결(하이퍼링크)을 주 목적으로 탄생한 HTML은 웹 환경이 보편화되고 발전함에 따라 표준적인 방식으로 구현되는 웹 응용프로그램 수준을 요구하는 시대적 흐름에 의해 탄생하게 되었다. 또한 방대하게 퍼져있는 웹 문서를 의미 있게 구조화하고 효과적으로 탐색, 해석 할 수 있는 시멘틱(semantic) 웹 실현을 위한 표준이기도 하다

 

HTML5 정의

HTML5 HTML의 차기 주요 제안으로써 HTML 4.01, XHTML 1.0, DOM Level 2 HTML에 대한 차세대 표준안이다. 플래시나 실버라이트와 같은 별도의 플러그인 없이 웹에서 표준적인 방식으로 멀티미디어를 재생하고 로컬 자원을 이용하는 등의 응용프로그램 수준의 웹을 개발하기 위한 기술의 총칭이다

현재 W3C를 주축으로 한 애플, 모질라, 구글, 오페라, 마이크로소프트 등 모든 웹 브라우저 벤더가 참여하고 있는 산업 표준이기도 하다

 

HTML History

HTML 1990년 초부터 지속적으로 업그레이드 되어 왔다

특히 시멘틱 웹의 실현을 목적으로 한 XHTML 추진과 HTML5로의 방향전환이 주목할 만한 업계의 트랜드를 말해 준다

 

1990

웹 창시자인 팀 버너스리에 의해 설계 및 개발 시작

 

1993 6

IETF에 의해 버전 1.0 표준 채택

 

1995 11

버전 2.0 RFC 표준화

 

1997 1

W3C 버전 3.2 권고

 

1997 12

W3C 버전 4.0 권고

 

1999 12

W3C 버전 4.01 권고

(이후 W3C에서 HTML을 더 이상 업데이트 하지 않을 것을 선언)

 

2000 1 ~

W3C 시멘틱 웹 실현을 위한 XHTML 1.0 개발추진. 이후 XHTML2 개발

2009 7

XHTML2 사양 제정 중지 선언

 

2004 6

XHTML 보급 실패와 시대 흐름에 부응하기 위한 HTML 업데이트 제안

애플, 모질라, 오페라 제안 -> W3C 거절 -> WHATWG 결성

-> 웹 어플리케이션 1.0이라는 이름으로 세부 명세 작업 시작

 

2007

W3C에서 HTML W/G를 결성하고 WHATWG와 공동작업 시작

2008 1

W3C에 의해 HTML5 초안 공개

2009 5

Google I/O 개발자 콘퍼런스, ‘차세대 웹 표준으로 적극 추천됨.

(전 세계 개발자들의 주목을 받기 시작함)

2009 10

WHATWG가 최종심사청구를 선언하고 표준화 작업을 W3C로 넘김

W33C: HTML5 표준화 작업 진행

WHATWG: HTML 업데이트 작업 계속 진행

2010 6월 현재

W3C의 표준화 프로세스 중 최종 초안 상태

2012년경

권고 후보 예정(실제 브라우저에 표준 전체 기능 적용 요청)

이후 정식 권고


 

브라우저 및 호환성

현재 HTML5가 초안(Working Draft) 상태이기는 하지만 많은 브라우저 업체들이 이미 HTML5 기능들을

지원하고 있다

 

2010년 현재 지원되는 브라우저 목록

파이어폭스 3.5 이상, 크롬 3.0 이상, 사파리 3 이상, 오페라 10.0 이상, IE 9 이상

기능

크롬

파이어폭스

사파리

오페라

안드로이드

웹 플랫폼

Canvas

O

O

O

O

-

SVG

O

O

O

O

-

Video

O

O

O

O

O

Geolocation

O

O

O(iPhone)

O

O

오프라인 웹 응용

O

O

O

O (mobile)

O

Web Database

O

O

O

O (mobile)

O

Web Worker

O

O

O

O (mobile)

-

 

미 지원 브라우저 처리

HTML5는 자체적으로 이 기술을 지원하지 않는 브라우저를 위해 Fall Back 장치를 두고 있다

(태그 무시, 대안 텍스트 표시)

 

브라우저 호환성 확인:

지원되는 브라우저 내에서도 HTML5 세부 지원 여부가 조금씩 상이하다. 다음의 URL에서 상세한
브라우저 호환성 확인이 가능하다 (참고:
http://caniuse.com/)

 

HTML5 현황

전 세계적인 브라우저 업체들이 이미 HTML5 개발에 협력하고 있으며 자사의 브라우저에 HTML5

지원하고 있다. 경쟁 기술인 실버라이트를 먼저 선보인 마이크로소프트에서도 HTML5 지원에 동참하고 있는 실정이다. 또한 플래시 개발사인 어도비에서도 자사의 웹 저작도구인 드림위버 신제품에 HTML5
편집 기능을 포함시켰다. 아래는 HTML5에 대한 업계의 관심과 공식적 행보의 예이다

 

애플: W3C HTML WG의 공동의장으로 활동하면서 HTML5 표준화에 적극 동참.

자사 제품에 플래시 배제. HTML5 적극 지원

사파리개발자센터를 통해 HTML5 데모 및 가이드 제공   

구글: 구글 기어스(Google Gears) 포기, HTML5 집중 선언, HTML5 기반 유투브 서비스 시작

마이크로소프트: IE9 HTML5 지원 발표. IE3 TestDrive 사이트에 HTML5 영역 제공

오페라: 오페라 개발자 센터를 통해 HTML5 데모 및 가이드 제공

              

사례 및 데모

퀘이크 2: http://www.youtube.com/watch?v=XhMN0wlITLk (플레이 동영상)

HTML5Canvas Audio LocalStorage , WebSocket, WebGL등의 기술을 이용해
GWT(Google Web Tookit)
팀에서 퀘이크 2 HTML5로 포팅하여 에뮬레이션 한 것
 (웹 브라우저에서 초당 60프레임까지 가능)

오픈 소스: http://code.google.com/p/quake2-gwt-port/



이미지 편집기: http://mugtug.com/darkroom/
포토샵과 유사한 기능 제공. HTML5 Canvas 사용



둠과 유사한 컨셉트의 게임 데모: http://www.benjoffe.com/code/demos/canvascape/

마리오카트 컨셉트의 게임 데모: http://www.nihilogic.dk/labs/mariokart/

웹 노트 데모: http://webkit.org/demos/sticky-notes/index.html

 

웹 응용프로그램을 위한 HTML5 주요 기술

HTML5는 마크 업 태그인 HTML 요소와 CSS3 그리고 자바스크립트를 통칭한 개념이다

그리고 Web Workers Web SQL Database 와 같은 응용프로그램 API들은 각각 독립된 사양이지만
일반적으로 이 모든 기술을 통칭하여 HTML5 라 해도 무방하다. 아래 표는 HTML5의 주요 기술적
특징을 요약한다

 

기능

설명

시멘틱 요소

 

문서의 구조와 데이터의 의미를 보다 명확히 하기 위한 시멘틱 요소가 추가됨

검색 엔진 및 문서 해석기 등에서 웹 문서 판별이 정확하고 용이해 짐

<section>, <article>, <aside>, <header>, <footer>, <address>

웹폼 요소

사용자 입력 양식 개선되고 추가됨

range, color, datetime 와 같은 입력 양식이 추가되어 스크립트 없이 표현 가능

2D 드로링 요소

웹 상에서 2차원 그래픽을 표현하기 위한 태그(canvas) API 지원

모양, 텍스트, 애니메이션, 전환 등의 효과를 줄 수 있음

3D 드로잉 요소

Canvas 3D(WebGL)을 통한 3D 그래픽 표현 지원

WebGL을 기반으로 3D 애플리케이션 또는 게임 개발을 돕는 자바스크립트 3D 엔진

멀티미디어

웹 상에서 비디오, 오디오를 표현하기 위한 태그 및 API 지원

Web Storage

웹 사이트의 정보를 사용자의 pc에 저장할 수 있는 매커니즘을 제공함.

기존 쿠키의 용량 제한 및 트래픽 부담의 단점을 해소

Web Database

로컬 데이터베이스 및 표준 SQL 질의를 수행할 수 있는 API 제공

Application Cache

인터넷이 연결되지 않은 상태에서 오프라인 응용프로그램 구현이 가능토록 지원

Web Worker

비 동기 백그라운드 처리 수행이 가능한 API 제공.

멀티 쓰레드 웹 응용프로그램 개발이 가능해 짐

Web Sockets

웹 상에서 양방향 통신이 가능한 API 제공

서버 푸시

서버로부터의 데이터를 푸시(push) 받을 수 있는 Server-Sent Events 제공

Geolocation

지리 정보 및 위치 정보를 이용할 수 있는 API 제공(장치 종속적임)

Drag & Drop

웹 페이지 내 혹은 외부 개체를 웹 페이지로 드래그, 드랍이 가능한 API 제공

Notifications

웹에서 메신저의 알림 기능이 가능한 API제공

File API

로컬 파일을 내용을 읽을 수 있는 API 지원

SVG

XML기반의 2차원 벡터 그래픽 표현하는 외부 마크업을 HTML 안에 삽입 가능

CSS3

투명도, 그림자, 둥근 모서리, 다중 컬럼 레이아웃 등 새로운 스타일 요소 추가

 

 

향상된 시맨틱(semantic)

시멘틱 태그(semantic tags)

시멘틱은 의미가 있는’, ‘의미의라고 해석된다.

기존의 표현(Display) 위주의 웹 문서에 데이터(Data)의 구조적 개념을 추가하기 위한 노력이라 할 수
있다.
웹이 시멘틱(semantic)해지면 웹 문서는 의미 있게 구조화, 조직화 되며 이를 해석하는 검색 엔진이나 문서 해석기에서는 보다 정확하게 웹 문서를 판별하고 해석 및 처리할 수 있게 된다.

 

시멘틱 웹의 실현을 위한 W3C의 대표적인 노력의 산물이 XHTML이다. W3C는 한 때 시멘틱 웹을
지향하는 XHTML을 차세대 웹 표준으로 추진한 적이 있다. XHTML HTML XML형식으로 기술할 수
있도록 하여 XML 자체의 장점인 데이터의 구조화 및 의미화 그리고 확장성을 웹 문서에 적용하기
위한 기술이다

 

물론 XHTML 자체는 널리 보급되지 못했으나 시멘틱 웹은 여전히 차세대 웹 환경의 주요한 이슈이다

HTML5 역시 시멘틱 웹을 지향하며 다양한 시멘틱 태그(Tag)들이 새로이 추가되었다

아래는 HTML5에서 새로 추가된 시멘틱 태그에 대한 설명이다

 

section

웹 페이지에 있는 하나의 문서 영역을 표현한다. 문서의 아웃라인을 구성한다

article

문서 영역에서 독립적인 컨텐트를 표현한다

포스트, 뉴스, 블로그의 본문과 같이 자체저으로 배포될 수 있는 항목을 구성한다

header

문서나 영역을 설명을 위한 헤더 영역을 표현한다

footer

저자, 저작권, 문서 꼬리말 등을 위한 풋터 영역을 표현한다

aside

광고 블록과 같은 주변 컨텐트와 별도로 다루어져야 하는 영역을 표현한다

hgroup

여러 개의 제목(h1~h6)을 하나로 정리한다

nav

문서 전체 혹은 섹션의 네이게이션 영역을 표현한다

address

섹션에 관한 문의처 정보를 표현한다

time

문서가 작성된 날짜 및 시간을 표현한다

 

 

마이크로데이타(MicroData)

웹 문서에 삽입된 데이터의 관련된 속성들을 조직화하여 정의할 수 있다

예를 들어 부동산 관련 페이지에 (house)’이라는 데이터를 정의하기 위해 가격,’위치’,’평수와 같은
관련 속성을 모아서 집이라는 하나의 아이템으로 정의할 수 있다.

이렇게 되면 HTML문서 자체를 데이터 소스로 다루는 프로그램에서 용이하게 사용 가능해 진다

 

향상된 웹 양식(Web Form)

입력박스나 체크박스, 선택창, 출력 버턴과 같은 기존 웹 입력양식이 상당부분 개선 및 추가되었다

기존 입력 타입이 text로 한정된 반면 HTML5에서는 email, tel, datetime 과 같이 입력형식자체를 지원하는 새로운 타입 요소들이 추가되었다. 또한 입력 값 검증이나 입력 보조 수단 등 스크립트에 의존했던
기존 기능들을 HTML 자체적으로 처리할 수 있도록 지원한다

 

input 타입

email, tel, url, search, datetime, number, range, color, week, month, time
) input type=range  

progress

작업의 진행 중을 표시하는 프로그레스 바 표현

meter

비율이나 수치를 시각적으로 표현

입력 값 검증

required, pattern, maxLength, min, mex, step

입력 보조 수단

placeholder, autofocus, autocomplete

 

2D/3D 드로잉(Drawing) 지원

Canvas 를 활용한 2D 그래픽

HTML 문서에 정의된 canvas 영역 내 각종 도형이나 선, 이미지 등 2D 그래픽을 그릴 수 있다

http://mugtug.com/darkroom/ : canvas를 이용한 이미지 편집기 데모

 

WebGL 을 활용한 3D 그래픽

WebGL을 이용한 3D 그래픽용 Canvas 도 추진 중 이다

WebGL은 오픈 그래픽 라이브러리인 OpenGL(OpenGL ES 2.0)에 기반한 웹 표준 그래픽 라이브러리이다

WebGL을 이용하면 브라우저에 별도의 플러그 인 없이 완벽하게 하드웨어 가속되는 3D그래픽을 표현할 수 있게 된다.

주요 브라우저 벤더사인 애플, 구글, 모질라 및 오페라와 하드웨어 업체인 AMD 및 엔비디아 등이 WebGL Working Group 멤버로 활동하고 있다. 그리고 구글의 웹 용 3D API O3D 플러그 인 기술을 포기하고 WebGL 을 선택했다

 

Copperlicht: WebGL 기반 자바스크립트 3D 엔진(Ambiera 사 개발)

http://www.ambiera.com/copperlicht/index.html

 

SVG

XML기반의 2차원 벡터 그래픽 표현하는 SVG HTML 안에 삽입 가능하다.

SVG W3C에 의해 제안된 XML 그래픽 표준으로 고품질의 다이내믹한 그래픽을 만들 수 있는 기술이다

HTML5에서는 MathML SVG와 같은 외부 마크 업을 직접 HTML 안에 삽입할 수 있도록 하였다

http://raphaeljs.com/ : SVG 데모

 

멀티미디어 지원

Video

HTML 문서에 별도의 윈도우미디어와 같은 별도의 플러그 인 없이 동영상을 재생할 수 있다

현재 유투브에서 HTML5 기반 동영상 서비스를 제공하고 있으며 스크립트를 통해 동영상을 제어할 수
있다

 

Audio

HTML 문서에 별도의 플러그 인 없이 오디오를 재생할 수 있다. 스크립트를 통해 오디오를 제어할 수 있다

 

표준화 되지 않은 코덱 문제

멀티미디어 형식에 대한 표준이 HTML5 사양에는 포함되지 않았다.

따라서 멀티미디어 재생을 위한 코덱의 비 표준화로 현재 브라우저마다 동영상 재생 형식이 서로 다르다

비디오 코덱으로는 H.264 Theora 가 있으며 오디오 코덱으로는 AAC,MP3 Vorbis 형식이
HTML5
용으로 사용되고 있다.

모질라와 오페라는 라이선스가 없는 오픈 소스 Theora를 선호하며 애플과 구글은 H.264 코덱을 선호한다

또한 마이크로소프트의 IE.9 에서는 H.264코덱만 지원한다고 발표한 바 있다


오디오 코덱 역시 라이선스가 없는 Vorbis형식과 특허로 제한되어 있는 MP3, ACC 형식으로 이분화 되어 있다. 그리고 또 하나의 변수로 최근 구글이 동영상 코덱 개발사인 On2를 인수해 VP8 코덱을 오픈
하기로 하였다. 이에 모질라 및 오페라 등이 동참하기로 하였지만 애플의 참여는 알 수 없는 상황이다.

 

따라서 표준이 정립되기 전까지는 두 형식에 대한 브라우저 호환성을 유지해야 하는 부담이 있다

아래 표는 브라우저 별 지원되는 비디오/오디오 코덱 정보이다

 

파일 형식

비디오 코덱

오디오 코덱

사파리

MP4

MPEG/H.264

AAC/MP3

크롬

Ogg/MP4

Theora/H.264

Vorbis/AAC/MP3

파이어폭스

Ogg

Theora

Vorbis

(스마트폰 브라우저의 경우 해상도 및 초당 프레임 등 추가 제약사항이 있을 수 있음)

 

로컬 저장소 및 오프라인 어플리케이션 지원

웹 사이트의 정보를 클라이언트 PC에 저장할 수 있는 메커니즘이 향상되었다

기존의 쿠키의 단점을 보완하고 로컬 데이터베이스를 지원하며 오프라인 응용프로그램을 위한
어플리케이션 캐시가 지원된다

 

Web Storage

이전 버전의 쿠키와 대응되는 개념이며 쿠키의 단점을 해소 및 보완한 저장소를 지원한다

아래와 같이 쿠키의 단점이 보완되었다

- 개수 및 용량 제한이 없음

- 매 요청마다 서버로 전송이 이루어 지지 않음

- 유효 기간 제한이 없음

- 스크립트 객체를 저장할 수 있음(객체의 복사본이 저장됨)

 

전역적인 저장소 개념인 LocalStorage와 브라우저(윈도우)별 저장소 개념인 SessionStorage가 있다

보안성에 있어서는 쿠키와 유사하다

 

Web SQL Database

클라이언트 PC의 저장소를 관계형 데이타베이스처럼 사용할 수 있다

데이터를 체계적으로 저장할 수 있으며 표준 SQL 질의를 통해 데이터를 액세스 할 수 있다

동기 및 비 동기 처리를 지원하며 도메인 별로 DB가 분리되어 있으며 최대 용량에 대한 제한은 브라우저에 따라 다를 수 있다

 

Application Cache

인터넷에 연결할 수 없는 오프라인 환경이 되었을 때에도 웹 사이트를 이용할 수 있도록 하는 메커니즘인

오프라인 어플리케이션을 Application Cache 로 지원한다

클라이언트에 캐시 될 파일 목록을 매니페스트에 정의하고 이 파일들은 인터넷 연결 없이도 볼 수 있게 된다. 또한 캐시 된 파일에 대한 업데이트 매커니즘도 제공된다.

Web Storage Web SQL Database 와 연계하여 완벽한 오프라인 어플리케이션을 구현할 수 있다

 

비동기 프로그래밍 그리고 양방향 통신

Web Worker

JavaScript 코드를 백그라운드에서 실행시킬 수 있어 멀티스레드 웹 어플리케이션 개발이 가능해졌다

워커(Worker)라 불리는 백그라운드 쓰레드는 UI(DOM) 와는 완전히 분리된 환경에서 동작한다

 

Web Sockets

Web Sockets을 통해 웹 브라우저와 웹 서버간 양방향 통신이 가능해졌다

기존의 웹 환경에서 서버의 데이터는 폴링(polling)방식으로 받아 왔으나 Web Sockets을 이용하면 진정한 의미의 푸시(push)형 양방향 데이터 송/수진이 가능해진다.

Web Sockets HTTP 프로토콜에 기반한다. 따라서 웹 서버 측에서도 이를 지원해야 한다

현재 아파치, jetty, Tornado 웹 서버가 Web Sockets를 지원한다

 

Server-Sent Events

웹 환경에서 서버 푸시(push) 통신 방식을 효과적으로 구현하기 위한 Comet을 표준화한 기술이다

정기적인 폴링과 응답 데이터 해석 처리를 자동화 해 준다

 

Desktop Experience

Notifications

Notifications 을 이용하여 메신저의 알림 창과 유사한 기능을 구현할 수 있다

 

Drag & Drop

웹 문서 내 혹은 서로 다른 웹 문서간 그리고 외부 응용프로그램의 데이터를 웹 문서로 끌어다 놓을 수
있는 기능이 지원된다. 기존 데스크 탑의 경험을 웹에서도 구현할 수 있게 되었다

 

Rich Text Editor

HTML5에서는 워드 문서나 텍스트 편집기와 같은 리치 텍스트 편집용 API가 표준으로 규정되었다

따라서 위지윅(WYSIWYG) 에디터나 맞춤법 검사 기능 등을 웹 문서에 구현할 수 있다

 

위치기반 어플리케이션 지원

Geolocation

HTML5가 실행되는 장치의 위치 정보를 액세스 하기 위한 Geolocation API가 제공된다

장치로부터 위도와 경도 및 표고, 장치의 진행 방향 및 진행 속도 정보를 얻을 수 있다

http://iroute.mobi/ : 아이폰 용 웹 네이게이션 데모

 

문서간 메시지 전송

로 다른 도메인 또는 서로 다른 웹 페이지간 메시지를 주고 받을 수 있는 커뮤니케이션 API가 제공된다

이 기능은 기본 웹 페이지의 서버 이외의 서버에서 호스트되는 위젯과 어플을 개발하는데 매우 유용하다

또한 데이터 송/수신 시 비 동기로 메시지를 주고 받을 수 있어 느슨한 결합 형태의 공유가 가능하다

 

향상된 스타일시트(CSS3)

투명도 조절, 둥근 모서리, 그림자와 같은 웹 문서에 다양한 효과를 줄 수 있는 요소가 추가되었으며

신문 구성과 같은 다중 컬럼 레이아웃 및 새로운 색상 값 새로운 폰트 지원, 텍스트 랩핑 및 스트로크와
같은 다양한 표현 기능이 향상되었다

 

추가 진행중인 기술들

XMLHttpRequest Level2

Ajax의 기초가 되는 XMLHttpRequest 사양의 업그레이드가 진행되고 있다

기존사양을 업그레이드 한 것으로 다음과 같은 추가 기능이 제공된다

- 크로스 도메인 송/수신

- 요청의 진행 상황 확인 가능

- 파일이나 바이너리 데이터 등 송신할 수 있는 데이터의 형식이 추가됨

 

Inexed Database

클라이언트 데이터베이스의 한 종류로 현재 HTML5 사양으로 정해진 Web Storage Web SQL Database의 불편한 점을 해결하고자 추가된 사양이다. 인덱스 된 Key-Value Storage라 할 수 있으며 사용이 편리하고 기능이 많은 API이다

 

File API

웹 어플리케이션에서 사용자 PC의 파일을 액세스 할 수 있는 API이다

보안상 이유로 모든 파일 접근은 불가하고 허가된 영역의 파일만 액세스 가능하다

드래그 & 드롭 한 파일이나 파일 선택 폼에서 사용자가 지정한 파일 등에 액세스 할 수 있다

 

Summary

HTML5는 현재 표준이 확립된 기술이 아니라 진행중인 기술이다. 즉 표준을 위한 작업이 계속 진행 및
추가되고 있는 상황이며 각 브라우저 별로 그 지원 범위 및 방향이 조금씩 상이하기도 하다.

그러나 W3C는 물론 애플 및 구글, 마이크로소프트, 모질라 등 세계적 기업들이 적극적으로 동참하고
있는 기술 표준이며 이미 아이폰과 아이패드와 같은 장치에 기능이 탑재되어 출시되었다


또한 파이어폭스, 사파리, 오페라, 크롬 등 대부분 브라우저의 최신 버전에는 HTML5를 여지없이
지원하고 있으며 마이크로소프트의 IE 다음버전인 9에서도 전폭 지원할 예정이다


더불어 아이폰을 시작으로 한 스마트 폰의 급속한 보급으로 모바일 웹에 대한 관심이 커지고 있다

이는 IE 기반의 브라우저 환경에 한계를 드러냈으며 표준적인 웹 기술의 필요성이 대두되고 있다

또한 플래시나 실버라이트와 같은 밴더 종속적인 기술의 한계도 드러내고 있다

HTML5는 모든 것의 해결책은 아니지만 많은 것의 대안이 될 것임에 분명하다

HTML5 2012년경 그 모습이 완성되어 나갈 것으로 예상되며 많은 기업에서 이를 기반으로 한 웹 응용프로그램을 출시하여 기술이 본격적으로 활성화 될 것으로 보인다

모바일 결제 시스템 조사

Posted in 모바일 // Posted at 2010. 7. 21. 12:06
728x90

요즘 모바일 환경의 어플리케이션들이 인기다
특히 아이폰과 같은 스마트폰의 어플이 날개 돋친듯 팔리고(?) 있다

수익을 목적으로 하는 유료 어플도 많으며 대부분 다운로드 시 유/무료가 구분되고 있다
그러나 모바일 어플이 점점 다양해지고 관련 비즈니스도 점점 성장함에 따라 기존 데스크탑 환경과
같은 소액 결제나 부분유료화 모델의 요구가 늘어나고 있다

그러나 지금까지 부분유료화 모델의 가장 큰 걸림돌은 애플의 과금 정책이었다
애플은 기본적으로 자사의 플랫폼에서 서비스되는 콘텐트에 대해 신용카드 결제를 원칙으로 하고 있다
얼마전 음원 서비스 업체에서 별도의 휴대폰 과금을 적용했다가 앱스토어에서 퇴출되는 사건도 있었다

그러나 어플을 개발하는 업체 입장에서는 애플의 앱스토어라는 시장을 배제할 수도 없다
애플의 앱스토어에는 가장 많은 어플이 등록되어 있으며 거래 역시 굉장히 활성화 되어 있기 때문에
무시할 수 없는 시장인 것이다

물론 애플에서도 부분유료화 모델의 요구를 수렴해서 In App Purchase 라는 SDK를 내 놓았다
이제 앱스토어에서도 다운로드 시에는 무료, 콘텐트 이용 도중 (필요시)소액 결제와 같은 부분유료화
모델을 정책에 위반되지 않게 구현할 수 있게 되었다

문제는 우리가 구축해야 할 '플랫폼'이다
단위 어플을 개발하는 개발사 입장이 아닌 어플들의 통합 환경을 제공하는 플랫폼 입장에서는 애플의
정책에 여전히 걸림돌이 많은게 사실이다

플랫폼은 비단 애플 앱스토어 뿐만 아니라 안드로이드나 윈도우모바일과 같은 다른 환경도 흡수해야
한다. 애플의 폐쇄형 모델과 안드로이드의 개방형 모델의 차이를 하나의 플랫폼에서 녹여야 하며
다른 제조사 및 통신사의 정책에도 민감할 수 밖에 없다

즉 심플하고 통일되고 통합된 빌링 플랫폼을 설계할 때 정책의 상이함과 연동의 특수성이 걸림돌이
될 수 있는 것이다

한가지 예를 들어 과거 위피기반의 게임에서 주로 이용되었던 '정보 이용료' 와 같은 모델을 스마트폰 어플에 도입하고자 할 때 개방형 플랫폼에서는 가능하겠지만 애플의 정책과는 충돌하는 부분이다

그렇다면 두 가지 버전으로 갈 수 밖에 없다.
아니면 빌링 오픈 API를 상당 수준 추상화 하여 몇 단계 랩핑과정을 거쳐야 한다.
이것은 자칫 복잡도만 증가시키고 플랫폼이 오히려 어플의 걸림돌이 될 수 있음을 경고한다. 

어쨋던 모바일 플랫폼 프로젝트의 빌링 플랫폼을 고민하면서 모바일 환경에서의 결제 시스템을
조사해 봤고 어떻게 플랫폼화 시키는 지 고려해 보면서 느낀 몇 가지 사항들이다

이는 문서로 정리 되었으며 1차 자료조사 수준과 일부 의견을 남기는 것으로 하였다



모바일 결제 시스템 조사

개요

본 문서는 모바일 환경에서의 통합빌링 플랫폼 구축을 위한 사전 조사 단계로

모바일 결제시스템의 모델과 사례, 과금 방식 및 연동 방식 등을 러프(rough)하게 조사한 문서이다

따라서 이 문서에서는 어떠한 결론을 도출하지는 않으며 조사 및 일부 의견을 게재하는 것으로 한다

 

모바일 빌링

모바일 빌링이란 아이폰, 구글 폰과 같은 스마트 폰과 아이패드와 같은 타블렛 PC 등의 모바일 장치에서

서비스되는 컨텐츠의 결제, 과금, 정산 등의 일련의 프로세스 및 체계를 일컫는다

 

모바일 환경은 기존의 데스크 탑 환경에 비해 표준을 준수해야 하며 애플과 같은 모바일장치 공급업체

및 통신사의 정책에 매우 민감하다. 이러한 환경의 차이는 기술적 차이를 가져오며 이는 기존 데스크 탑

환경에서의 빌링 모델과 다른 접근법을 필요로 한다

 

(모바일) 통합빌링 플랫폼

통합빌링 플랫폼이란 결제, 과금, 정산, 환불, 수익 배분 등의 일련의 체계를 플랫폼 차원에서 구축하여
일관되고 통합된 시스템과 연동 API를 제공함으로써 CP(Content Provider)의 개별적 빌링 개발의 부담을
제거하고 결제, 환불, 정산, 배분 등 전체 빌링 활동을 통합되고 일관된 정책과 프로세스로 지원하는
소프트웨어 환경 및 비즈니스 시스템을 일컫는다

 

스마트 폰 결제 시스템 현황

스마트 폰 환경에서의 소액 결제 및 부분유료화를 위한 모델 및 기존 PG사가 제공하는 솔루션에
대해
정리한다

 

1) (WIPI 기반) 정보 이용료 및 3G 과금

기존 위피 기반 환경에서의 소액 결제는 통신 요금(정보이용료)으로 부과된다

(각 통신사에서 위피 기반의 결제 모듈(API)를 제공하고 이를 게임에 연동하는 구조)

이 모델을 안드로이드와 같은 개방형 플랫폼에서는 응용 및 적용가능 한 것으로 파악된다

(애플 정책과 충돌되는 부분일 수 있음)

 

3G 과금을 부분유료화로 사용해도 될 듯 하며 다만 이통사의 수수료율이 꽤 높은 편이다(20~30%)

 

2) In App Purchase (by Apple)

아이폰 앱 부분 유료화 지원 시스템.

iTunes 에 등록된 신용카드를 이용한 결제 시스템(아이폰 OS 3.0부터 지원)

애플에서 연동 SDK 제공. 결제는 애플을 통해 이루어 지며 수익 배분은 7: 3 (개발자: 애플)

 

연동 사례>

컴투스 홈런 배틀 3D 아이템 구매에 적용, Gogo3D 네비게이션 지도 데이터 다운로드에 적용 등

 

In App Purchase 프로그래밍 가이드>

http://developer.apple.com/iphone/library/documentation/NetworkingInternet/Conceptual/StoreKitGuide/Introduction/Introduction.html

 

gogo3D In App Purchase 결제 시스템 Flow(UI 기준)>



3) INIPay Mobile for iPhone (by 이니시스)

PG사 이니시스에서 개발한 아이폰용 모바일 결제 시스템

App to App, App to Web, Web to App, Web to Web 방식 지원 (가맹점 to PG)

 

App to App Web to App 방식>

이니시스 전용 앱을 아이폰에 설치되어야 함. 가맹점 App(Web)에서 PG App을 실행하는 구조.

 

App to Web Web to Web 방식>

가맹점 App(Web)에서 HTTP Post 방식으로 PG 결제 페이지를 호출하는 구조

 

이니시스 결제 전용 앱 및 웹을 통한 결제 연동 모델 지원>

 

INIPay Mobile App 방식

INIPay Mobile Web 방식

결제 창

별도의 앱에서 실행

가맹점 UI에 삽입 가능

store에서 앱 설치 필요

HTTP Post 방식으로 호출

(URL 호출 방식)

트랜잭션

Two Transaction

One Transaction

지원 결제 수단

신용카드(삼성, 신한,현대,롯데)

계좌이체, 휴대폰, 가상계좌,

문화상품권, 해피머니

신용카드(삼성, 신한,현대,롯데)

휴대폰, 가상계좌, 문화상품권,

해피머니

BC, KB 카드의 경우 별도의 ISP 앱을 통해 결제 됨

기타

가맹점 앱()과 결제 앱이 별도로 실행됨

 

공인인증서가 필요한 결제 수단 적용 불가능(계좌이체 및 30만원

이상 신용카드 결제)

 

이니시스 전용 앱을 통한 결제 Flow(프로세스 기준)>




이니시스 웹을 통한 결제 Flow>



4) tMobile (by 다날)

휴대폰 전문 PG 사인 다날에서 개발한 스마트 폰 용 휴대폰 결제 시스템.

스마트 폰 장치 수준의 지원은 없음

(다날 결제 서버와 이와 연동하는 클라이언트 모듈만 제공하는 심플한 형태)

(가맹점의 서버를 필요로 하고 스마트폰 가맹점간 통신은 가맹점 몫)

자바기반 연동 API 제공. Server to Server 방식

다날 tMobile 결제 Flow>



5) 모빌리언스 스마트 폰 휴대폰 결제 시스템 (by 모빌리언스)

휴대폰 전문 PG 사인 모빌리언스에서 개발한 스마트 폰 용 휴대폰 결제 시스템

 HTTP Post 호출 방식 및 Socket 방식 지원



6) BC카드 ISP (by BC카드)

아이폰 용 모바일 안전결제 솔루션

신용카드 정보 일회 등록 후 ISP비밀번호 만으로 결제 가능



의견

폐쇄 및 개방형 플랫폼에 대한 이중적 고려

애플은 자사의 플랫폼에서 서비스되는 콘텐트에 대해 신용카드 결제를 원칙으로 하고 있다

이러한 애플의 폐쇄적 정책은 모바일 빌링 플랫폼 설계에 중요 변수로 작용할 것으로 보인다

기타 다른 개방형 플랫폼에서는 빌링 모델 설계의 자유도가 높을 것으로 예상된다

 

통합 가상 머니 도입

통합 가상 머니의 도입을 고려해 볼 만 하다 (개방형 플랫폼에 한해?)

심플한 모델 도출이 가능하며 빌링을 플랫폼화 시키기 가장 쉬운 구조이다



매끄러운 소액 결제?

게임 진행 도중 특별한 추가 정보나 웹 사이트를 열지 않고 자연스럽게 결제를 할 수 있는 모델로는

다음과 같은 것이 있을 수 있다

- 애플의 In App Purchase
- 3G 과금(기존 위피 기반 정보 이용료 부과 모델)
- 휴대폰 결제(기존 데스크 탑 환경과 거의 유사한 모델을 모바일 환경에서도 이용)

 

기타 현재 PG사에서 제공하는 모바일 결제 솔루션의 대부분은

APP TO APP 이나 APP TO WEB 과 같은 이중 호출 구조를 지니고 있어 매끄럽지 못하다
(빈번한 소액결제 모델에 부적합. 다만 가상 머니 일괄 충전개념으로는 도입할 만 함)

'모바일' 카테고리의 다른 글

아이폰 에뮬레이터?  (0) 2010.07.21
트위터, new tweet 갱신 알림 프로세스 조사  (0) 2010.07.21
뷰 포트(Viewport)  (8) 2010.07.14
모바일 웹, 유효성 검사  (0) 2010.07.14
안드로이드 App 에 브라우저 삽입하기  (0) 2010.07.14

뷰 포트(Viewport)

Posted in 모바일 // Posted at 2010. 7. 14. 18:32
728x90

얼마전 참석했던 세미나에서 뷰포트(Viewport)에 대한 언급이 잠시 있었다

모바일 웹 UI 개발시 Display 영역 조절과 관련된 기술요소인듯 하였고 자세한 설명보다는
뷰포트 메타태그 기술방식 위주의 설명이여서 완전한 개념을 파악하기는 힘들었다

뷰포트에 간략히 조사해 보았다

뷰포트가 사파리 기술?
뷰포트를 조사하다 처음 든 의문은, 이것이 애플의 (모바일) 사파리 기술인가? 하는 것이었다

대부분의 인터넷 블로그에서 뷰포트를 소개하면서 아이폰 기반 모바일 웹을 대상으로 하였고
사파리 브라우저가 인식하는 메타태그로 설명하고 있었다

또 다른 자료에서는 아이폰과 안드로이드 심지어 오페라 모바일 등 다른 브라우저에서 권장하는
뷰포트 태그를 제시하기도 하였다

뭐지.. 이거? 뷰포트 태그가 모바일 사파리가 인식하는 개념처럼 하더니 다른 브라우저에서도
인식되나보네? .. 하면서 살짝 의문이 들기 시작했다

짧은 시간 의문을 품다 문득  떠 오른 생각은 바로 웹킷(WebKit) 이었다
웹킷은 아이폰에 있는 모바일 사파리의 핵심 엔진이며 안드로이드의 브라우저 기반이기도 하다
더불어 웹킷은 다른 모바일 브라우저에서도 사용되고 있는 기술이다
웹킷과 뷰포트의 연결고리가 더 자연스럽다는 생각이 들었다

그렇다. 뷰포트 메타태그는 웹킷 기반의 모바일 브라우저에서 인식 가능한,
표시영역 제어와 관련된 기술요소 였던 것이다

2013.01.15: 위 내용 수정합니다. xCoda 님이 댓글로 안내 해 주셨습니다
아래 댓글 내용 확인 바랍니다.


뷰포트(Viewport)란?
뷰포트라는 개념자체는 모바일 웹에 국한된 것은 아니다
DirectX 나 여타 그래픽, 디자인 관련 기술에 개념적으로 사용된 용어인 듯 하다
그러나 처음 나에게는 낯선 용어였다

뷰포트를 대략 정의하자면,
컴퓨터나 휴대 단말기 등 장치에 Display 요소가 표현되는 영역을 말한다
모바일 웹의 경우 아이폰 사파리 브라우저에서 웹 페이지가 표시되는 영역으로 해석할 수 있다

- 데스크탑 브라우저의 뷰포트와 모바일 브라우저의 뷰포트(출처: 사파리 웹컨텐츠 가이드)


왜 모바일 웹에서 뷰포트가 중요한가?
기존의 데스크탑 웹 개발 환경에서 뷰포트에 대한 개념이 이토록 난무(?)한 적이 있었던가?
요즘 모바일 웹 개발 관련 지식 자료에 반드시 등장하는 것 중 하나가 바로 뷰포트 이다
그럼... 왜 모바일 웹에서는 뷰포트가 중요해 졌을까?

해답은 바로 모바일 웹이 웹 페이지를 브라우징 하는 특징에 기인한다
현재 스마트폰 브라우저는 풀브라우징을 지원한다
풀브라우징은 모바일 환경에서도 데스크탑 환경처럼 웹화면 전체를 자연스럽게 브라우징 할 수 있는
환경을 일컫는다

작은 화면의 모바일 단말기에 웹 페이지 모두 표시하려다 보니 전체적인 페이지 배율 조정이 가해지게
된다. 즉 화면에 맞도록 전체적으로 축소되어 화면 모두가 브라우징 되지만 페이지에 있는 컨텐츠들의
가독성은 상당히 떨어지게 되는 것이다

웹킷 기반 브라우저의 뷰포트 기본 가로 너비는 980 픽셀이다
그러나 아이폰 사파리브라우저의 가로 너비는 320 픽셀이다
이 말은 980 크기의 페이지를 320화면에 다 보이도록 전체적인 배율축소가 발생된다는 의미이다

아래 그림은 오페라 미니에서 mkexdev.net 을 브라우징한 모습니다
페이지의 가로 폭 모두가 표현되기는 했지만 배율 축소로 인해 글자및 이미지의 가독성은 많이 떨어진다



뷰포트 메타태그를 이용하면 모바일 브라우저의 뷰포트 크기나 배율등을 조정할 수 있어
모바일 웹에 최적의 상태로 화면이 표시되도록 설정할 수 있게 된다


뷰포트 메타태그
뷰포트의 설정을 변경하기 위해 메타태그 형태로 지원된다

아래의 메타태그는 가장 기본적인 형태로 뷰포트의 가로폭을 기본 값인 980픽셀이 아닌
모바일 단말기 장치의 가로 폭으로 설정하겠다는 의미이다(아이폰의 경우 320픽셀)
<meta name="viewport" content="width=device-width" />

이렇게 설정하면 뷰포트의 가로 너비와 단말기의 가로너비가 동일하기 때문에
페이지의 배율 조정이 일어나지 않고 320 너비 만큼만 브라우저에 표시된다
(물론 좌/우 스크롤 기능으로 모든 컨텐츠를 탐색할 수 는 있다)

아래 화면은 뷰포트를 설정하지 않은 것(왼쪽)과 device-width 로 설정한(오른쪽) 결과 화면이다


물론 현재 대상인 mkexdev.net은 모바일 웹을 전혀 고려되지 않은 사이트라 두 가지 모습
모두 효율적으로 표시되지 않는 모습이다.
다만 뷰포트 메타태그를 이용해 웹 페이지의 화면 표시 배율을 조절할 수 있다는 것을 느끼면 된다

(참고로 뷰포트 메타태그를 지원하지 않는 브라우저에서는 이 설정은 모두 무시된다)

뷰포트 메타태그로 조절할 수 있는 것들
뷰포트 메타태그를 이용하면,
화면의 너비 뿐만 아니라 줌 레벨, 스케일링 가능 여부등이 설정을 조절할 수 있다

아래표는 뷰포트 매타태그의 속성표이다

Property

Description

width

The width of the viewport in pixels. The default is 980. The range is from 200 to 10,000.

You can also set this property to the constants described in “number.”

Available on iPhone OS 1.0 and later.

height

The height of the viewport in pixels. The default is calculated based on the value of the width property and the aspect ratio of the device. The range is from 223 to 10,000 pixels.

You can also set this property to the constants described in “number.”

Available on iPhone OS 1.0 and later.

initial-scale

The initial scale of the viewport as a multiplier. The default is calculated to fit the webpage in the visible area. The range is determined by the minimum-scale and maximum-scale properties.

You can set only the initial scale of the viewport—the scale of the viewport the first time the webpage is displayed. Thereafter, the user can zoom in and out unless you set user-scalable to no. Zooming by the user is also limited by the minimum-scale and maximum-scale properties.

Available on iPhone OS 1.0 and later.

minimum-scale

Specifies the minimum scale value of the viewport. The default is 0.25. The range is from >0 to 10.0.

Available on iPhone OS 1.0 and later.

maximum-scale

Specifies the maximum scale value of the viewport. The default is 1.6. The range is from >0 to 10.0.

Available on iPhone OS 1.0 and later.

user-scalable

Determines whether or not the user can zoom in and out—whether or not the user can change the scale of the viewport. Set to yes to allow scaling and no to disallow scaling. The default is yes.

Setting user-scalable to no also prevents a webpage from scrolling when entering text in an input field.

Available on iPhone OS 1.0 and later.

Viewport properties (출처: 애플)


다음 두 애플의 자료에서 뷰포트에 대한 상세한 내용이 제공되고 있다
Configuring the Viewport
Supported Meta Tags 


뷰포트 설정 참고
포털 등 기 개발된 모바일 웹 사이트에서 설정한 뷰포트 태그를 참고해 보자

1) m.naver.com
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no, target-densitydpi=medium-dpi" />

2) m.daum.net
<meta name="viewport" content="user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, width=device-width" />

3) m.nate.com
<meta name="viewport" content="user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, width=device-width" />

4) m.yahoo.com
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/>

5) m.aladdin.co.kr
<meta name="viewport" content="user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, width=device-width" />

어쩜 이렇게 모두 거의 동일할까?
이것이 최적의 구성인가... ㅎㅎ

가로 너비는 장치 너비를 지정하였으며 사용자에 의해 확대/축소가 되지 않도록 설정하고
초기 스케일은 1.0 즉 확대/축소 없는, 본 크기 그대로를 지정하였다

모바일 웹, 유효성 검사

Posted in 모바일 // Posted at 2010. 7. 14. 15:45
728x90
글 작성일: 2010/02/03 . 옮긴 날: 2010/07/14
 
웹 사이트가 모바일 웹 표준을 준수하는지 검사해 주는 사이트가 있습니다

- W3C moblieOK Checker

- mobi Ready

- 한국형 모바일 OK 시험 및 인증 서비스

제 사이트를 Opera Mini 에뮬레이터로 보면 아래와 같더군요


음.. 대략 난감하지 않을 수 없지만 그리 나빠보이진 않네요 ㅎㅎ

이렇게 나름 괜찮아(?) 보이는 제 사이트의 메인페이지를 '한국형 모바일 OK 인증 검사를 해 보도록
하겠습니다

결과는 예상했던대로 Fail 입니다

상세 결과를 보면 검사항목 25개 중  Pass 가 14개, Error이 11개 이네요
에러 검사항목의 상세 에러는 총 185개 이며 경고가 62개 입니다

물론 저의 웹사이트는 지극히 비 상업적인 개인 홈페이지 수준으로 웹 표준을 지키지도 않았으며
모바일 환경을 고려하지도 않아서 이런 결과가 나오겠지요

그러나 현재 상업적으로 운용되고 있는 많은 사이트들 역시 검사를 해 보면 상당수 Fail 이 나옵니다
그 만큼 기존 웹사이트가 그대로 모바일 웹으로 이전되기 힘들다는 예기가 됩니다

웹 표준은 기본으로 지켜줘야 하며 모바일 웹의 특징도 반영해야 진정한 모바일 웹이 되는 것이죠

'모바일' 카테고리의 다른 글

모바일 결제 시스템 조사  (1) 2010.07.21
뷰 포트(Viewport)  (8) 2010.07.14
안드로이드 App 에 브라우저 삽입하기  (0) 2010.07.14
PhoneGap, 결국은 네이티브 앱인가?  (1) 2010.07.13
PhoneGap 코드구성 살펴보기  (0) 2010.07.13

안드로이드 App 에 브라우저 삽입하기

Posted in 모바일 // Posted at 2010. 7. 14. 15:00
728x90

윈폼 닷넷(Windows Form .NET)  응용프로그램 개발 할 때 폼(Form) 안에 웹브라우저 컨트롤을
삽입하여 윈폼에서 웹 브라우징 프로그램을 만들 수 있었다

안드로이드 역시 프로그램 안에 웹 브라우징을 할 수 있는 일종의 컨트롤이 제공된다
닷넷에서는 컨트롤이라고 표현하지만 안드로이드에서는 위젯이라고 표현한다

바로 WebView 위젯이다

안드로이드 OS의 웹 브라우저는 웹킷(WebKit) 엔진에 기반을 두고 있다
웹 킷은 안드로이드 뿐만 아니라 애플의 사파리 브라우저의 기반이기도 하다

WebView 위젯 역시 안드로이드 라이브러리에서 제공하는 웹킷 기반 브라우저 위젯이다
이 웹뷰를 이용해 안드로이드 앱 안에 브라우저를 내장해서 사이트를 탐색해 보자

다음과 같이 main.xml 파일에 WebView 위젯을 정의한다

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >
 
     <WebView android:id="@+id/webkit"
            android:layout_height="fill_parent"
            android:layout_width="fill_parent" /> 
                
</LinearLayout>


그리고 자바소스 파일에서 다음과 같이 WebView 를 통해 특정 사이트를 검색해 본다

public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);                       
        setContentView(R.layout.main);
       
        WebView browser;
        browser=(WebView)findViewById(R.id.webkit);                     
        browser.loadUrl("http://mkexdev.net");
        browser.getSettings().setJavaScriptEnabled(true);            
    }


주의할 것은 권한문제이다
웹 뷰를 통해 인터넷 사이트를 탐색하기 위해서는 인터넷 접근 권한이 요구된다
메니페스트파일에 권한 정보를 명시해야 하는데 그렇지 않다면 프로그램 실행 시 다음과 같은
오류를 만나게 될 것이다



다음과 같이 메니페스트파일에 권한을 명시하도록 하자

<uses-permission android:name="android.permission.INTERNET" />

WebView 위젯을 이용하면 LoadUrl을 통한 사이트 랜더링과 goBack, goForward, reload
등의 멤버를 이용해 사이트 탐색의 기본적인 동작을 수행할 수 있다

 

'모바일' 카테고리의 다른 글

뷰 포트(Viewport)  (8) 2010.07.14
모바일 웹, 유효성 검사  (0) 2010.07.14
PhoneGap, 결국은 네이티브 앱인가?  (1) 2010.07.13
PhoneGap 코드구성 살펴보기  (0) 2010.07.13
Hello World 분석하기  (1) 2010.07.13

아놔.. JQTouch, iUI 도 있구먼..

Posted in 모바일/Javascript // Posted at 2010. 7. 13. 18:34
728x90
모바일 웹, 표준 웹 구현 등에 관심을 두면서 이전엔 듣고 흘렸던(?) 기술들과 새로운 기술들이
눈에 마구마구 들어오기 시작한다

폰갭 관련 자료들을 탐색하다 JQTouch, iUI 같은 라이브러리도 알게 되었다
모바일 웹 구현 시 참조하면 유용한 UI 라이브러리라고 한다
JQTouch 는 JQuery 기반의 UI 라이브러리.

음.. 모든 기술을 프로젝트에 다 적용 할 필요는 없지만,
최적의 선택, 적용을 위해서는 모든 기술의 장/단점을 면밀히 파악해야 하기에,
이 역시 연구 대상일 수 밖에 없다

아.. 웹이여.. 표준과 모바일 대세에 힘 입어 춘추전국시대와 같은 라이브러리의 탄생이구나!!

PhoneGap, 결국은 네이티브 앱인가?

Posted in 모바일 // Posted at 2010. 7. 13. 15:56
728x90

음.. 뭔가 개인적인 오해가 있는 듯 하다

폰갭이라는 프레임워크를 접한지 채 이틀이 되지 않은 이 시점, 나의 착각이 하나 있는 듯 하다

처음 폰갭 컨셉을 접했을 때는 순수 웹 환경인 줄 알았다
즉 단순히 폰갭 스크립트 파일을 참조하여 일반적인 웹 페이지를 개발해서 웹 서버에 올려 두면
폰에 내장된 (사파리와 같은) 웹 브라우저를 통해 서비스 되는 방식인 줄 알았다

그런데 프로그램의 구조를 살펴 보니,
안드로이드 네이티브 앱 환경에 포함되어 웹 페이지가 실행되는 구조인 듯 하다
다시말해, 안드로이드 마켓에 앱을 등록하는 네이티브 환경인 것 같다

물론 한번 등록하면 웹 리소스만 변경하면 되기 때문에 업데이트는 웹 환경인 것은 맞는 것 같지만..

결국 폰갭은 웹 리소스를 포함하는 컨테이너 역할을 하는 네이티브 앱 인가 ???

만일 그렇다면 초기 나의 생각과는 다르지만,
결국 각 환경에 맞는 컨테이너만 (아이폰, 안드로이드, 심비안 등) 따로 만들고 내부 웹 리소스는 
HTML, JavaScript, CSS 등을 이용하여 동일하게 개발할 수 있는, 웹의 장치 독립성의 장점은
그대로 일 것이다

'모바일' 카테고리의 다른 글

모바일 웹, 유효성 검사  (0) 2010.07.14
안드로이드 App 에 브라우저 삽입하기  (0) 2010.07.14
PhoneGap 코드구성 살펴보기  (0) 2010.07.13
Hello World 분석하기  (1) 2010.07.13
안드로이드 샘플 훓어보기  (0) 2010.07.13

PhoneGap 코드구성 살펴보기

Posted in 모바일 // Posted at 2010. 7. 13. 15:36
728x90

PhoneGap 개발환경을 구축하고 샘플 프로젝트를 생성하여 시뮬레이터에서 띄워 보았다
또한 이클립스를 이용해 안드로이드 프로젝트로 불러와서 실행해 보았다

자동으로 생성된 샘플 프로젝트이 코드 구조를 대략 살펴 보았다

phonegap.jar 라이브러리
폰갭 프로젝트는 phonegap.jar 라는 압축 형태의 클래스 모음인 라이브러리가 포함된다
안드로이드 프로젝트가 각 버전에 맞는 android.jar 가 필요하듯이 미리 정의된 폰갭 클래스들을
위한 라이브러리가 필요하다



phonegap.jar 에는 com.phonegap 패키지로 묶여 있는 많은 클래스가 정의되어 있다
여기에 폰갭 프로그램 구성을 위한 각종 클래스와 Device 고유 기능을 이용하기 위한
일종의 랩퍼 클래스들이 정의되어 있는 듯 하다

메인 클래스 구성
일반적인 안드로이드 어플리케이션의 경우 메인 클래스는 Activity 로부터 상속받는다
그리고 setContentView 메서드를 통해 View를 Activity 에 바인딩하는 구조이다

하지만 폰갭 어플의 경우 phonegap.jar 에 있는 DroidGap 클래스로부터 상속을 받도록 되어있다
그리고 이 DroidGap 클래스에 정의된 loadUri 메서드를 통해 html과 같은 웹 리소스를 바인딩 하는
구조이다. 다음 코드는 자동으로 생성된 폰갭 프로그램의 메인 클래스 전체 코드이다
라이브러리로 추가된 com.phonegap 패키지를 import 하고 DroidGap를 상속받으며
loadUrl 을 통해 html 파일을 화면에 바인딩하고 있다

package my.phonegap.demo;

import android.app.Activity;
import android.os.Bundle;
import com.phonegap.*;

public class Demo extends DroidGap
{
 @Override
 public void onCreate(Bundle savedInstanceState)
 {
 super.onCreate(savedInstanceState);
 super.loadUrl("file:///android_asset/www/index.html");
 }
}


웹 리소스
폰갭 프로젝트를 만들면 index.html 파일과 css, js 파일 등의 웹 리소스가 자동 생성 되는데,
이 파일들은 프로젝트의 assets 폴더에 위치하게 된다

보통 안드로이드 프로젝트의 경우 assets 폴더의 역할은 컴파일 되지 않는 큰 리소스를 담는 용도이다
프로그램은 코드와 리소스로 구분되는데 리소스는 또 컴파일 되는 경량의 리소스와 원본 그대로 저장하는 큰 리소스로 구분된다

안드로이드 프로젝트이 res 폴더는 경량의 리소스를 위한 폴더이며 assets 는 큰 리소스를 위한 폴더이다. HTML 파일이나 동영상과 같은 큰 데이터를 위한 공간이 assets 인 셈이다

폰갭 프로그램의 사용자 화면에 해당하는 html 파일과 Device 기능 호출을 위한 js 파일 등 웹 리소스가assets 폴더에 위치하고 있다



이후부터는 일반적인 웹 개발을 진행 하듯 웹 리소스들을 추가, 수정 하면 될 듯 하다
물론 폰갭이 제공하는 각종 디바이스 접근 기능을 사용하려면 폰갭 스크립트에 대한 학습이 있어야 할 것 같고...

Hello World 분석하기

Posted in 모바일 // Posted at 2010. 7. 13. 10:47
728x90
글 작성일: 2010/02/12 , 옮긴 날: 2010/07/13

Hello World 프로젝트를 통해 안드로이드 기본 구조에 대해 이해해 보기로 했습니다

Hello World 프로젝트는 모든 프로그램 공부를 시작할 때 제일 처음 접하게 되는 데모로써
기본적인 동작 방식 이해, 실행 코드 이해, 프로그래밍 모델 이해를 목적으로 합니다
따라서 우선 이 프로젝트를 분석하여 안드로이드 어플의 기본 구조에 대해 알아 보기로 했습니다

Hello World 프로젝트에 보면 src -> package명 -> MyActivity.java 파일이 있네요
까 보겠습니다

package my.androiddemo;

import android.app.Activity;
import android.os.Bundle;

public class MyActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }
}


package는 프로젝트 만들 때 제가 지정한 이름이고...

안드로이드 SDK가 제공해 주는 API를 사용하기 위해 두 개 import 하네요
자세한 건 담에 알아보기로 하구....

다음으로 Activity 란게 있네요. 안드로이드는 기본 단위는 Activity 인가 봅니다
(음.. 문득.. UML 의 액티비티가 떠오르네요 ㅋ)

닷넷환경에서 윈도우 응용프로그램은 폼(Form) , 웹은 페이지(Page) 가 기본 실행단위입니다
즉 Form 클래스 , Page 클래스를 상속받아서 구현하도록 되어 있죠

이와 유사한 구조로, 안드로이드에서는 Activity 라는 클래스를 상속받아야 하는군요

그리고 onCreate 를 부모 Activity 로부터 오버라이딩 하는구요
Activity 가 생성될 때 호출되는 이벤트 메서드 인가 봅니다
부모 클래스의 onCreate 호출해 주고, 안드로이드 화면에 Activity의 컨트롤들이 표시되록 해 주는군요

간단하네요
근데 이 파일에는 UI 와 관련된 내용이 없네요
Hello World 라는 문자가 어딘가에 있어야 하는데 말이죠...

역시 생산성과 유지보수설을 좋게 하기 위해 UI 파일과 로직파일을 분리하고 있군요
프로젝트에서 res -> layout -> main.xml 파일이 있네요
이 넘이 UI 구성을 위한 파일이네요
(실버라이트 응용프로그램과 굉장히 유사한 구조이네요. 실버라이트의 경우 UI코드는 xaml 파일에,
 로직은 .xaml.cs 파일에 있죠)

- UI 정의파일    : res->layout->xxx.xml
- 로직 정의파일 :  src -> package명 -> xxx.java


main.xml 파일을 열어 보면, 아래처럼 UI 구성을 할 수 있는 창이 뜹니다
왼쪽에는 각종 컨트롤들이 있고 오른쪽에는 작업하는 화면이군요



그리고 이클립스 오른쪽 Outline에 보니 이 Activity에는 총 두개의 컨트롤이 올라가 있는 것을 보여줍니다
LinearLayout 와 TextView 컨트롤.
즉 화면의 배치를 위한 레이아웃 컨트롤과 Hello World 문자를 위한 TextView 군요


이 main.xml 코드를 보면 아래와 같습니다
LinearLayout 컨트롤이 TextView 컨트롤을 포함하고 있네요.

LinearLayout 의 속성에는 수직분할(vertical)을 하고 크기와 높이가 화면 전체를 꽉 차지하도록(fill_parent)
설정했네요.

그리고 TextView 의 속성에는 넓이는 역시 부모 컨트롤 크기에 차도록(fill_parent) 하고 높이는 이 컨트롤의 내용에 맞도록 구성하고(wrap_content) 있네요

그리고 표시될 텍스트(text)는 Hello World 라는 예약 문자인가 봅니다(@string/hello) .. 친절하군요.
이런문자까지 예약해 두다니...

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<TextView 
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="@string/hello"
    />
</LinearLayout>

안드로이드 샘플 훓어보기

Posted in 모바일 // Posted at 2010. 7. 13. 10:46
728x90

글 작성일: 2010/02/10 , 옮긴 날: 2010/07/13

안드로이드 SDK를 설치하면 샘플 프로젝트가 같이 설치되는데요

아래 위치에 샘플이 있습니다
안드로이드 SDK 설치폴더 -> platforms -> 각 버전별 폴더(ex: android-2.1) -> samples

android2.1의 샘플은 총 16개 있네요
이 샘플 프로젝트 중 하나를 이클립스에 불러와 보겠습니다
이클립스의 상단 메뉴에서  File -> New -> Project 선택한 후, Android Project 타입을 선택합니다
그리고 Next를 하면 아래 창이 나오는데요

이미 만들어진 샘플 프로젝트를 불러오는 것이니까, Create project from existing source
선택합니다. 그리고 Location 에 샘플 프로젝트 중 하나를 지정해 주는데요, 저는 ApiDemos 라는 샘플을 지정했습니다. 그러면 나머지는 자동으로 입력되구요.. Next->Finish 하면 완료됩니다



프로젝트가 정상적으로 생성되었으면, 이클립스 좌측에 프로젝트 파일 리스트가 나옵니다


자.. 이제.. 샘플을 실행해 볼께요
에뮬레이터에 아래 그림과 같이 나오는데요, ApiDemos 샘플 프로젝트는 안드로이드 개발을 돕기 위해 학습용으로 만들어 진듯 하네요. 각 메뉴를 들어가보면 안드로이드에서 사용되는 각종 개체 및 컨트롤들의 샘플이 나타납니다. 좋네요.. 이 샘플을 기반으로 공부 좀 해야 것습니다



'모바일' 카테고리의 다른 글

PhoneGap 코드구성 살펴보기  (0) 2010.07.13
Hello World 분석하기  (1) 2010.07.13
첫 번째 안드로이드 데모 만들기  (0) 2010.07.13
안드로이드 소프트웨어 스택  (0) 2010.07.13
안드로이드의 특징  (0) 2010.07.13

첫 번째 안드로이드 데모 만들기

Posted in 모바일 // Posted at 2010. 7. 13. 10:45
728x90
글 작성일: 2010/02/09 , 옮긴 날: 2010/07/13

Hello World 프로그램이 완성되는 과정을 간단히 정리 합니다
모든 프로그램의 시작은 Hello World 이죠 ㅎㅎ

이클립스 실행합니다
상단 메뉴에서 File->New->Project 를 순서대로 실행하면 아래 그림처럼 New Project 를 위한 창이
뜹니다. Android Project 선택하고 Next 합니다




그러면 아래 그림처럼 안드로이드 프로젝트를 설정하는 창이 뜹니다
아래와 같이 입력 했는데요, 기존에 이클립스를 통해 자바개발 경험이 있는 경우 아래 내용들이
익숙할 것입니다. Application Name 은 안드로이드에 표현될 이 응용프로그램 이름이 됩니다

그리고 중요한 것은 Build Target인데요. 
이 프로그램이 안드로이드 SDK의 어느 버전으로 빌드 할지 선택해 주는 것입니다
전 현재 최신 버전인 2.1 선택했습니다

그리고 Activity 란게 있네요. 안드로이드 프로그램이 이 Activity 단위로 이루어 지나봐요
Class하고 유사하다고 일단 보고 있습니다. 저는...
그리고 Next->Finish 합니다




프로젝트 생성이 완료되었으면 이클립스의 좌측에 아래와 같이 프로젝트 파일들이 나타납니다


여기까지 프로젝트 생성이 완료되었습니다
이제 실행환경을 설정해야 하는데요

이클립스 상단 메뉴에서 Run->Run Configurations 선택합니다
왼쪽 리스트에서 Android Application 에서 마우스 우클릭 -> New 해서 새로운 빌드 환경을 만듭니다
오른쪽 설정화면에서 Project 를 선택하고 Launch를 선택해 줍니다



그리고 Target 탭으로 가서 AVD를 선택해 줍니다


설정이 완료되었으므로 Apply 하고 Run 합니다

실행을 하면 안드로이드 에뮬레이트가 뜨고 우리가 작성한 Hello World 가 화면에 나타납니다


이후 부터는 이 설정을 이용해서 계속 실행하면 됩니다

'모바일' 카테고리의 다른 글

Hello World 분석하기  (1) 2010.07.13
안드로이드 샘플 훓어보기  (0) 2010.07.13
안드로이드 소프트웨어 스택  (0) 2010.07.13
안드로이드의 특징  (0) 2010.07.13
안드로이드(Android)?  (0) 2010.07.13

안드로이드 소프트웨어 스택

Posted in 모바일 // Posted at 2010. 7. 13. 10:43
728x90
글 작성일: 2010/01/21 , 옮긴 날: 2010/07/13

안드로이드 OS의 내부 계층 구조를 안드로이드 소프트웨어 스택이라 합니다
개발을 함에 있어 그 기반이 되는 플랫폼의 내부 아키텍처를 잘 알고 있어야 하겠죠

닷넷과 자바등 모든 개발 플랫폼들은 그들만의 내부 아키텍처를 가지고 있습니다
이에 대한 이해가 개발을 첫 걸음이라 하겠네요

아래는 구글 doc에서 그대로 가져온 내용입니다
원문: http://docs.google.com/Doc?docid=0AfEORS6TAXtKZGQ5ZnN6MjhfMjNmOWo3cjZoYw&hl=ko&pli=1
-----------------------------------------------------------------------------------------

What is Android?
Android는 OS, 미들웨어, 중요 어플리케이션을 포함하는 모바일 플랫폼. Android 상에서 작동하는 어플리케이션을 위한 툴과 API를 Android SDK가 제공하고 JAVA 언어를 사용함
 
Android Architecture (software stack)
 

특징
  • Application framework: 소프트웨어 컴포넌트의 재사용과 재배치를 가능하게 함
  • Dalvik virtual machine: 모바일 장치에 최적화된 자바 가상 머신. 구글에서 Sun과의 지적재산권
    문제를 피하기 위해 개발
  • Integrated browser: WebKit 엔진 기반의 브라우저 제공
  • Optimized graphics: SGL기반의 2D, OpenGL ES 1.0기반의 3D 그래픽 라이브러리
  • SQLite: 모바일 장치를 위한 데이터 저장 장치
  • Media support: 오디오, 비디오, 이미지 포맷 지원
  • GSM Telephony (hardware dependent)
  • Bluetooth, EDGE, 3G, and WiFi (hardware dependent)
  • Camera, GPS, compass, and accelerometer (hardware dependent)
  • Rich development environment: 장치 에뮬레이터, 디버깅 툴, 메모리, 성능 프로파일링,
    이클립스 플러그인 제공
 
Applications
Android는 email 클라이언트, SMS program, calendar, maps, browser, contacts 등의 핵심
어플리케이션을 포함하고 있다.
 
Application Framwork
  • 컴포넌트의 재사용을 간단하게 하기 위한 역할. 어플리케이션이 자신의 기능을 공개하면 다른
    어플리케이션에서 해당 기능을 사용할 수 있게 함
  • Content Providers: 다른 어플리케이션의 데이터에 접근할 수 있는 방법을 제공
  • Resource Manager: 스트링, 그래픽, layout 파일등 코드가 아닌 파일에 접근할 수 있게 함
  • Notification Manager: 어플리케이션이 사용자에게 경고를 할 수 있게 함
  • Activity Manager: 어플리케이션의 lifecycle을 관리하고 어플리케이션의 네이게이션을 backstack을 관리
 
Libraries
  • C/C++ 기반의 라이브러리를 포함하고 있고, 이는 application framework를 통해 제공
  • System C library: 리눅스 기반의 임베디드 장치에 특화된 표준 C 라이브러리
  • Media Libraries: PacketVideo's OpenCORE기반의 비디오, 오디오, 이미지 라이브러리
  • Surface Manager: 디스플레이 접근 관리 라이브러리
  • LibWebCore: 웹 브라우저 엔진
  • SGL: 2D 그래픽 엔진
  • 3D libraries: OpenGL ES 1.0 API기반의 라이브러리, 3D 하드웨어 가속또는 최적화된 3D
    소프트웨어 래스터라이저를 사용
  • FreeType: 비트맵과 벡터 폰트 렌더링 엔진
  • SQLite: 가볍고 강력한 관계형 데이터베이스 엔진
 
Android Runtime
Android는 Java 언어의 핵심 라이브러리를 포함하고 있음
모든 어플리케이션은 각각의 프로세스를 가지고 Dalvik 가상 머신에서 동작
Dalvik 가상 머신은 리눅스 커널에 의존함
 
Linux Kernel
Linux 2.6 버젼을 기반으로 보안, 메모리 관리, 프로세스 관리, 네트워크 스택과 드라이버를 제공
또한 커널은 하드웨어와 나머지 소프트웨어 스택 사이의 추상화된 레이어의 역할을 함
 
Reference

안드로이드의 특징

Posted in 모바일 // Posted at 2010. 7. 13. 10:40
728x90

글 작성일: 2010/01/21 , 옮긴 날: 2010/07/13

어제 구입한 책 프로페셔널 안드로이드 애플리케이션 개발 을 저녁에 집에서 한 챕처 훓어 봤습니다
안드로이드 소개와 비전 그리고 개발 프레임워크, 특징 등을 개괄적으로 기술하고 있더군요

물론 안드로이드가 주제인 책인만큼, 좋은 글.. 상당히 많죠
살짝 홍보성 느낌이 있을지언정, 아주 매력적입니다

많은 내용 중 안드로이드의 특징에 대해 요약해 봅니다
일단 안드로이드 폰에 탑재되는 기본 기능에 대한 차별성은 역시 구글 자체 컨텐츠와의 긴밀한
통합입니다. 예를 들어 G메일 호환, 구글 캘린더, 연락처 등의 개인 온라인 서비스, 구글 검색등을
들 수 있습니다

개발환경의 특징으로 보면,
자바 기반 개발 환경을 지원하며 기존 자바가상머신(JVM)이 아닌 모바일 전용 자바가상머신인 Dalvik
위에서 된다고 하네요. 물론 자바통합개발환경인 이클립스와의 연동도 가능하구요

참고로 전 닷넷 개발자인데요, 자바개발자들이 부럽군요. 익숙한 개발 환경으로 인한 진입장벽이 저 보다는 낮을테니깐요. 그러나 뭐 자바면 어떻습니까? 개발이야 다 비슷하죠

마지막으로 책에 기술된 내용중, 안드로이드에만 있는 것이 소개되어 있군요

- 구글 맵 어플리케이션
구글 맵은 유명하죠. 우리가 만드는 어플리케이션에서 사용할 수 있도록 컨트롤 형태로 제공된다고 합니다. 구글 맵을 응용한 다양한 컨텐츠를 개발할 수 있겠네요

- 백그라운드 서비스
폰에서 다른 기능을 이용하고 있는 중에도 이벤트를 발생시켜 백그라운드에서 돌아가는 어플리케이션을 만들 수 있습니다

- 공유 데이터와 프로세스 간 통신
안드로이드에 기본 탑재되는 네이티브 어플리케이션의 데이터를 공유할 수 있고 그 기능을 이용할 수 있다고 하네요

- 네이티브 플랫폼에 대한 접근 허용
안드로이드는 네이티브 어플리케이션과 서드파티 어플리케이션을 차별하지 않는다고 합니다
이는 폰에 기본 제공되는 기능을 서드파티 대체물로 전부 교체할 수 있도록 허용한다고 하네요
장치가 가진 룩앤필을 바꾸는 전례없는 능력이 제공됩니다

- P2P 메시징
폰 대 폰, 어플 대 어플간 P2P 메시징을 지원하다고 합니다


이러한 특징들을 조합하면 다앙한 컨텐츠가 개발될 수 있겠네요
책에도 언급되어 있는 것 처럼, 친한 친구가 몇 m내에 있으면 알림을 한다던가 근처 주요 장소를 알려
준다던가..

생각만 해도 재미있네요...

안드로이드(Android)?

Posted in 모바일 // Posted at 2010. 7. 13. 10:37
728x90
글 작성일: 2010/01/20 , 옮긴 날: 2010/07/13

안드로이드: 인간의 모습을 한 로봇

안드로이드는, '인간을 닮은 것' 이라는 그리스 말에서 유래된 SF용어로서 인간의 모습을 한 로봇을
뜻한다고 합니다.

그리고 또 하나의 의미가 더 생겼죠. 바로 구글이 만든 모바일용 운영체제(OS)의 이름이기도 하죠

그런데, 구글은 왜 이름을 안드로이드라고 했을까요?

보통 제품의 이름은 그 제품 자체를 추상화하고 이념화하여 짓게 마련인데요
그래서 제품 이름의 뜻을 알면 제품의 특징은 물론이고 추구하는 이상도 엿 볼수 있는 경우가 많죠

SF적인 느낌이 물씬 풍기는 미래지향적 이름이 필요했던걸까요?
간혹 그리스 신화에 나오는 신들의 이름이 채택되는 경우는 몇 번 봤는데, 그러한 산물의 일종으로
보이기도 하네요. 스마트 폰, 말 그대로 로봇처럼 지능적인 모바일 환경의 총칭.. 뭐 그건거겠죠?

  구글 안드로이드의 아이콘 입니다. 확실히 원 뜻인 로봇을 직설적으로(?) 상징하네요

아이폰의 깨물다 만 사과 아이콘 보다는 조금 장난스런 느낌이지만 귀엽네요 ^^;

안드로이드라는 이름이 결정된 구체적인 구글의 과정이 궁금하네요. 관련해서 자료를 좀 찾아봐야
겠네요. 뭐... 이유야 어떻게 되었건 .. 안드로이드.. 괜찮네요 ㅎㅎ

제일 처음 이 이름을 접했을 때, 안드로메다가 먼저 생각난 저는 뭐일까요???

추가>> 2009.01.21 오전 10:30
이름 유래에 대한 다음 기사를 우연히 봤네요

역시 예상대로,
"인간의 두뇌에 버금가는 안드로이드의 똑똑한 업무처리와 빠른 속도를 강조하기 위한 작명인 셈" 이라고 하네요

PhoneGap 개발 환경 구축 (안드로이드 기반)

Posted in 모바일 // Posted at 2010. 7. 12. 18:21
728x90

PhoneGap 이라는 것이 도대체 어떤 식으로 구성되고 어떤 식으로 개발되는지 알아보기 위해 환경 구추을 해보기로 했다

오늘 환경 구축을 하고 샘플 프로젝트도 돌려 봤지만.... 음.. 여전히 낯설다
일단 PhoneGap 개발 환경을 셋팅하는 것을 정리 해 본다

1. 안드로이드 개발 환경 구축
PhoneGap 는 각 모바일 플랫폼 별로 개발환경이 셋팅되는 듯 하다
음.. 이건 좀 의외다. 단순히 기본 웹 개발 환경에서 적당히 갖다 붙이기만 하면 될 줄 알았는데,
각 개발환경과 유기적으로 결합된 느낌이다. 물론 설치 후에는 웹 개발 하듯 하면 되는 것 같다

안드로이드 기반 PhoneGap 를 설치하기 위해서 먼저 안드로이드 개발환경이 구축되어 있어야 한다
다음 글을 참고해서 안드로이드 개발 환경을 구축한다

http://mobilepp.tistory.com/18

2. Apach ANT 설치
이것은 뭣에 쓰는 물건인고? 음.. 필요 하다고 하니, 일단 설치 해 보자
다음 사이트로 이동해서 압축파일을 다운 받아서 압축해제 한다

http://ant.apache.org/bindownload.cgi




3. Ruby 설치
이건 또 뭣에 쓰는 물건인고.. 음.. 아파치 안트에 이어 루비까지.. 도대체 폰갭은 어떤 환경이길래,
이름만 들어 본 이것들을 요구하는가? 역시 필요하다고 하니 설치 해 보자
다음 사이트에서 다운받아서 설치 파일을 실행해서 설치를 완료한다

http://www.ruby-lang.org/en/downloads/




4. 안드로이드용 폰갭 설치
다음 사이트에서 압축파일을 다운로드 하여 압추 해제 한다
http://github.com/phonegap/phonegap-android

5. 윈도우 환경 변수 등록
앞 두 과정에서 설치한 Apach ANT 와 Ruby 의 환경변수를 등록한다
시스템 환경변수 Path 에 다음 두 경로를 추가하자

- Apche ANT 의 bin 폴더 등록
D:\MobileWeb\PhoneGap\apache-ant-1.8.1-bin\apache-ant-1.8.1\bin;

- Ruby 의 bin 폴더 등록
D:\MobileWeb\PhoneGap\Ruby191\bin;

- 그리고 안드로이드 개발 환경에서 설치했던 Android SDK 의 tools 폴더도 path로 등록한다
D:\Android\android-sdk-windows\tools

마지막으로 JAVA_HOME 환경변수를 새로 추가 해야 한다
만일 이 변수가 추가되어 있지 않다면 폰갭 프로젝트 빌드 시 아래와 같은 오류를 만나게 된다


이것 때문에 한참을 해맸다. 폰갭에서 JAVA_HOME 이라는 환경변수를 참조해서 JDK의 위치를
참조하나 보다. 어쨋던 아래와 같이 JAVA_HOME 라는 변수 명으로 JDK 위치를 등록해 주자



이제 기본적인 설치는 완료 되었다

다음으로 폰갭 프로젝트를 하나 생성해 보도록 하자
안드로이드용 폰갭 프로젝트를 만들고 빌드 하려면 명령프롬프트를 사용해야 하나보다

명령프롬프트를 띄워서 4 과정에서 설치한 안드로이드 용 폰갭 압축 해제한 폴더로 이동하여 다음
명령을 수행하자

CMD>Ruby droidgap <android_sdk_path> <name> <package_name> <www> <path>

<android_sdk_path>: Android SDK 폴더 위치
<name>: 프로젝트 명
<package_name> : 패키지 명
<www> : 웹 파일(html, js, css) 등이 위치할 폴더 지정
<path> : 이 프로젝트가 생성될 위치 지정

현재 나의 환경에서는 다음과 같은 CMD 명령을 수행했다
그리고 Complete! 라는 결과가 나왔다

즉 아래와 같이 명령을 수행했다

Ruby droidgap "D:\\\Android\\\android-sdk-windows" "Demo" "my.phonegap.demo" .\example ..\PhoneGapDemo1


프로젝트가 하나 생성되었으니 에뮬레이터로 확인해 보도록 하자
다음 사이트에서 에뮬레이터를 다운 받고 설치 한다

http://www.phonegap.com/tools




에뮬레이트를 실행하여 앞서 만든 프로젝트를 로드 해 보자
우측의 새 문서 아이콘으로 index.html 파일을 로드하면 아래와 같이 시뮬화면이 나타난다
이것 저것 손 대 보니 꽤 흥미로운 시뮬레이터이다. 아이폰, 안드로이드 등 스킨을 선택할 수 있고
폰 세로,가로 기울이기 등 동작에 반응하도록 시뮬해 볼 수 있다
자세한 건 하나씩 알아 가면서 다음에 정리하기로 하자




그리고 마지막으로 이클립스를 통해 앞서 생성한 프로젝트를 불러와서 실행 해 보자
이클립스에서 새 프로젝트를 만드는데, 앞서 생성한 프로젝트가 있으니
다음 그림과 같이 이미 존재하는 프로젝트로 해당 경로를 선택해 준다

그리고 이상하게, BuildTarget이 Goolge APIs 로 잡혀버려서 강제로 Android 2.2로 변경했다



다음으로 프로젝트를 빌드 하기 전에 phonegap.jar가 라이브러리로 추가 되었는지 확인한다
아래 그림과 같이 프로젝트의 properties 로 가서 phonegap.jar 체크박스를 체크한다.
만일 없으면 Libraries 탭으로 이동해서 새로 추가해야 한다.



그리고 프로젝트를 실행(Run) 해 보자. 안드로이드 에뮬이 아래와 같이 실행된다



음.. 일단 여기까지... 설치 완료!
설치 하면서 꽤 삽질했다 --;

html 파일은 그렇다 치고.
안드로이드 Activity  에 어떻게 Add In 되나 소스를 보니 다음 한줄에 핵심인듯..

public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
super.loadUrl("file:///android_asset/www/index.html");
}

일반적인 안드로이드 구성은 setContentView 를 통해 View 객체를 바인딩 하는 것에 반해
폰갭은 html 파일을 load 하는 구조이구나!!

일단은 여기까지 정리하고 시간을 내어 하나하나 자세히 살펴 봐야 겠다
어떤 식으로 구성되어 있는지 그리고 어떻게 개발을 덧 붙여 나가는 지 등등 볼게 많구낭...

'모바일' 카테고리의 다른 글

안드로이드의 특징  (0) 2010.07.13
안드로이드(Android)?  (0) 2010.07.13
Android 개발환경 구축  (2) 2010.07.12
모바일 웹, 장치(Device)의 기능을 불러다 쓰다  (0) 2010.07.08
구글, 안드로이드 개발 공부  (0) 2010.07.05