블로그 이미지
평범하게 살고 싶은 월급쟁이 기술적인 토론 환영합니다.같이 이야기 하고 싶으시면 부담 말고 연락주세요:이메일-bwcho75골뱅이지메일 닷컴. 조대협


Archive»


 
 

어제 10시30분에 Windows Phone 7 키노트 행사가 있었습니다.
행사 내용이나 WP7 Feature들은 이미 인터넷에서 떠돌고 있는 동영상들을 다 보고, WP7 개발환경으로 테스트를 해봤기 때문에 색다르지는 않았습니다.

단 AT&T의 전략이나, 어제 공개된 9가지의 폰등은 참으로 흥미로웠습니다. 트위터에서의 반응도 재미있었구요. 정리를 해보겠습니다.

1. AT&T의 서비스 발표
AT&T는 삼성,HTC,LG 3개의 폰으로 서비스를 발표했습니다.
재미있는 것은 AT&T가 WP7과 아울러서 AT&T의 IP TV서비스인 U-verse와 연동 서비스를 제공한다는 겁니다. TV 플랫폼 시장은 이미 애플이나 구글 TV등의 이슈로 떠들석합니다. 그런데 MS는 조용했을까요? 아닙니다. 사실 IP TV 플랫폼의 전세계 실제 마켓쉐어 1위가 Microsoft입니다. MediaRoom이라는 이름의 IP TV솔루션을 제공하고 있고, 현재 Media Room 2.0을 발표해서 몇몇 업체가 적용에 들어갔습니다. 이 MR2.0은 3스크린 전략을 지원합니다. TV,X-BOX,PC,핸드폰을 모두 지원합니다. 집에 STB가 한대만 있다면 STB에 영화를 녹화해놨다가 X-BOX나 핸드폰에서도 플레이해서 볼 수 도 있고, 제가 영화를 보다가 와이프가 드라마를 볼려고 하면, 핸드폰을 조용히 들고 방으로 들어가서 아까 보던 부분부터 다시 볼 수 있습니다.

AT&T는 이 MR 솔루션의 가장 큰 고객입니다. WP7만을 발표한것이 아니라 TV,X-BOX,PC,핸드폰 을 통합한 멀티 스크린 서비스를 제공한다는 메세지가 나름 시장에 임팩트가 있을겁니다.

2. 9종의 핸드셋 발표

어제 9종의 핸드셋이 발표되었습니다. HTC가 상당히 많은 모델을 가지고 나왔더군요.
LG의 경우 음성 기반의 명령 인터페이스나, PC나 다른 디바인스와 연계할 수 있는 DLNA등의 피쳐가 흥미로웠습니다. DELL 은 윗쪽으로 슬라이딩이 열리는 QWERTY 키보드를 탑재한 모델입니다. 그에 비해 삼성은 수퍼 아몰레드 이외에 특별한 피쳐는 없었던것 같습니다 .아니면 제가 놓쳤던가요. 기대를 모았단 HTC의 슈베르트는 예전 Leaked된 디자인에 비해서 한층 떨어저 보입니다. 사실.. 아직 ASUS등의 모델이 공식 발표되지 않았으니 더 많은 모델이 나오기를 기대해 봅니다.
사실 아이폰 4에 비해서 디자인은 기대에 부흥하지 못했던것 같습니다.

3. 대박 키보드 입력


키보드 입력 시연하는데.. 대박이더군요.. WP7 리뷰 나올때 마다 키보드가 놀랍다고 하던데.. 어제 보고 알았습니다. 왜 그렇게들 이야기 하는지. 아마 자동 완성 기능 때문인것 같던데.. 키보드 입력 속도가 PC에서 키보드 치는 수준으로 나옵니다.
이건 스마트 폰에서 새로운 사용자 시나리오를 만들어낼 수 있음을 암시하는데, 스마트폰 사용자분들은 아시겠지만, 장문의 글을 쓰기 어렵습니다. 그래서 트위터 같은 단문 메세지가 유행인것이고, 장문의 이메일을 쓰거나 블로그 포스팅은 스마트폰에 맞지 않는 시나리오 였습니다만, 이런 입력 환경이면 블로그나 기타 장문글을 이용한 새로운 사용자 경험이 제공되지 않을까 싶습니다.
다른 키보드 입력 영상을 첨부해봅니다. 어제 시연에서는 이것보다 더 빨리 치던데.. 이 영상에서 키보드 치시는 분들은 약간 느리군요. 대한민국 여학생(?)이 데모로 나갔으면 분당 500 타는 보여줬을텐데요.

4. 발표 국가
60개 서비스 사업자가 30개 국가에 걸쳐서 서비스를 제공한답니다. 아직 1차인데, 한국등은 포함되어 있지 않아서 매우매우 아쉽습니다.

5. 일관된 인터페이스
eBay 애플리케이션으로 어제 시연을 했었는데, UI가 일관됩니다 .어느 App이건 Zune 스타일의 UI를 사용하기 때문에 사용하기 매우 편리하고 Learning Curve가 작다는 장점이 있습니다.
어제 시연 영상을 보니, 아이폰이나 안드로이드에 비해서 메뉴 이동 느낌이 쾌적하고, 원하는 메뉴를 찾아가는데 까지 시간이 덜 걸리는 듯한 느낌이 들었습니다.

단, 이 일관된 인터페이스는 양날의 검이 될 수 있는데, "일관"이란 반대로 "다양성"을 제재한다는 이야기가 됩니다. 요즘 처럼 UI가 중요한 시대에 애플리케이션들이 다양한 사용자 인터페이스를 제공해줄 수 있는지 우려되는 부분입니다.

6. Zune 연동 그리고 Netffix 등
Zune은 잘 아시겠지만 MS의 멀티미디어 플레이어입니다. Itune와 비슷하게 영상이나 음악에 대한 Market Place 모델을 제공하고 있고, 어느정도 생태계가 성숙되어 있는 모델입니다. 이 Zune 컨텐츠들이 그대로 WP7에 들어옵니다. 아마 멀티미디어 컨텐츠 수급은 문제가 없겠네요. 어제 키노트에는 언급이 되지 않았지만 Netffix와 같은 서비스도 제공이 되는 것으로 알고 있습니다.

7. 게임 환경

게임 환경역시 아마 WP7의 큰 무기중 하나일겁니다. X-BOX Live와 연동이 되서 하나의 ID로 X-BOX 게임기의 게임과 연동이 되고, 다른 사용자와 플레이도 가능합니다.
무엇보다 XNA라는 게임 개발 플랫폼을 가지고 있는데, 말 그대로 전용 게임 개발 플랫폼입니다. 게임 개발을 위한 3차원 그래픽 엔진, 충돌처리, 스프라이트 처리, 이펙터들이 이미 Pre Built in 되어 있습니다. 다른 스마트폰에서 개발 생산성 차이가 많이 날 것 같습니다.
아울러 XNA 개발환경은 같은 게임을 하나의 소스로 개발하더라도 컴파일 타겟만 바꾸면 같은 게임이 X-BOX 360이나 데스크탑에서도 실행될 수 있습니다.
이는 개발자들에게 하나의 소스로 여러개의 시장을 동시에 노릴 수 있는 기회를 제공해주고 이는 바로 수익으로 연결이 됩니다.

어제는 SIMS3를 데모하더군요. 얼마전에도 발표되었지만 메이져 게임 개발사들이 이미 따끈한 WP7 게임 60개를 만들어 놓고 대기중입니다.
가끔 WP7 데모를 보면 게임기 같다는 느낌도 듭니다.

8. 엔터프라이즈 지원
다음으로는 엔터프라이즈 지원 환경입니다.
기업용 스마트 폰으로 성공한 플랫폼은 블랙베리가 대표적입니다. 블랙베리의 성공요인은 QWERTY 키보드도 있겠지만, 강력한 푸쉬 기능과 기업의 인프라 스트럭쳐와의 통합 능력에 있습니다. 블랙베리 엔터프라이즈용 플랫폼인 서버를 이용해서 Lotus Notes나 MS Exchange등과 연동이 잘되었던게 큰 성공요인중 하나였습니다.

MS는 기본적으로 MS Exchange와는 당연히 연동이 될 뿐더러 Active Directory와 같은 인프라 스트럭쳐 솔루션과의 연동, MS Office,Share Point, BI등의 MS 기업용 솔루션과 데스크탑 솔루션과의 자연스러운 연계를 통해서 엔터프라이즈 시장에 만만하지 않은 저력을 가지고 등장했습니다.

애플이 공식적인 엔터프라이즈 적용 플랫폼이나 제품이 없고, 구글은 구글 앱스와 GMAIL을 내세우는 반면, MS는 기업내 시스템과 좀더 정교한 연동이 가능한 시나리오를 준비했다는 것이 기업 시장에서의 가능성을 밝게 해주는 부분입니다.

9. 타일 그리고 SNS
타일 기반의 UI나 타일에서 SNS 등의 정보를 실시간으로 타일에 표시해주는 기능은 워낙 많이 언급되어 왔던것이기 때문에 패스

10. 개발 환경
개발환경이 이번에 구체적으로 언급되지는 않았는데, 제가 직접 SDK를 받아서 테스트 해본 결과로는 상당히 만족스럽습니다. 자바 개발 백그라운드를 가지고 있지만 2~3일이면 충분히 개발환경에 적응이 가능합니다. 예전 이클립스 기반의 안드로이드 UI 개발환경과 비교하면 이건 생산성 차이가 엄청 나겠네요.  개발 환경이나 언어에 대해서 자세히 알고 싶으면 아래 링크를 참고해보세요. 간략 리뷰가 있습니다.

http://bcho.tistory.com/category/프로그래밍/Windows%20Phone7

11. 마켓 플레이스
이미 Zune 마켓을 운영하면서의 노하우와 쌓여온 컨텐츠, 그리고 오픈전에 약 2,000여개의 앱들이 준비중이고, 안드로이드 마켓의 실패와 애플마켓의 성공 사례를 레퍼런스해서 나름 잘 해놨을것이라고 기대해봅니다.

12. Copy & Paste
Copy & Paste는 2011년에 지원 예정이랍니다.

개인적인 의견들
윈폰7 자체만으로 보면 상당히 만족 스럽습니다.
그러나 곧 안드로이드 3.0이 탑재된 폰들이 출시될것이고, 내년에 아이폰5가 출시될것이라는 이야기를 봐서, 윈폰7은 현재 아이폰4나 안드로이드 2.X대가 아니라는 겁니다. 시기적으로 좀 많이 늦었져.  곧 업그레이드 버전이 나오기를 기대합니다.
가트너나 IDC에서 윈폰7에 대해서 상당히 부정적인 리포트들을 쏟아놓고 있는데.. 과연 그렇게 부정적일까 의문입니다. 리포트 쓴 사람들에게 한번 물어보고 싶습니다. "아이폰,안드로이드,WP7 개발해봤어? 안해봤으면 말을 하지 말던가..."
C#,실버라이트,XNA등 이미 개발층이 두텁게 있는 MS는 WP7이 WM6.5에서 아무리 바뀌었다 하더라도, 제 사견으로는 더 많은 개발자를 끌어들일 수 있다고 봅니다. 오히려 예전보다 쉬워졌고, 저변이 넓은 기술을 택했기 때문이지요.
그리고 저 UI는 특이하긴한데, 시장에서 얼마나 먹힐련지 상당히 궁금하군요. 아마 출시후 1~2개월내에 결판이 나지 않을까 싶습니다.
그외에 테더링이 지원 안되는 점은 치명적일듯 합니다.
다른 부분은 지켜봐야겠지요.. 그나저나 저는 멋진 디자인의 WP7 이 나왔으면 합니다. 요즘은 디자인 시대지요



아바타 데모


XBox Live 개정에 자신의 아바타를 만들어서 맵핑 시키는 형태, 아바타 자체가 점수에 따라서 웃기도 하고, 폰의 상태(흔들기)등에 따라서 반응도 하고, 재미있는 개념인듯.

게임 데모


중간중간 보면 알겠지만, 3D 게임 퀄러티가 상당히 훌륭하다는!!

모든 프로그래밍 언어가 그렇듯이 데이타를 저장할 수 있는 저장소가 필요하다.
보통 파일이나 DBMS가 가장 통상적인 방법인데
안타깝게도....!! 윈폰7에서는 Embedded DBMS를 지원안한다. WM6.5까지는 기본 내장이었는데.. 윈폰7에서는 빠졌다. 이유인 즉슨.. 클라우드를 쓰라는 것. SQL Azure 클라우드도 있으니 사용해도 되긴 하는데.. 그래도.. 로컬 구동 앱에서는 DBMS가 편한건 사실이다.. (오픈소스로 제공되는 DBMS가 있으니 나중에 한번 소개해보기로 하고)

윈폰7의 Persistance 저장구조는 파일 시스템이다.
디렉토리를 생성하고, 각 디렉토리에 파일을 저장하는 방식이다.

그리고 또 하나가 Local Setting이라는 것이 있는데, 이건, 간단하게 말하면 애플리케이션의 Config(설정 정보)를 저장하는 공간으로 마치 HashTable처럼 Key,Value로 이루어져 있다.

실제 코드 예제를 보면

간단하다. 디렉토리 만들고, StreamWrite 이용해서 파일 열고, WriteLine으로 쓰고 Close로 닫는다.
자바나 닷넷 코드와 크게 다르지 않다.

아!! 여기서 하나 꼭 기억해야 할것. 이 파일들은 해당 애플리케이션에서만 사용이 가능하다. Isolated 라고 하는 속성인데, 보안적인 문제로 다른 애플리케이션이 함부로 파일을 교차해서 접근할 수 없도록 막는다.
여기에 더해서 애플리케이션별로 Quota (허용 용량) 제한이 없다.

요즘 스마트폰은 기본 요소가 GPS 기반의 위치 정보를 제공함으로써, LBS (Location Based Service)를 제공하게 하는건데, 당근 윈폰7도 API를 제공한다. 그런데 약간 특이한데, 일단 한번 살펴보자


GPS뿐만 아니라, cellphone과 radio를 지원

GeoCoordinateWatcher watcher = new GeoCoordinateWatcher(GeoPositionAccuracy.Low);

위치 정보를 가지고 오는 Class는 위와 같다. GeoGoodinateWatcher를 사용하는데, 재미있는것중 하나가 안에 생성자에 들어가는 GeoPostionAccuracy.Low와 High라는 값이다.
윈폰7의 기기 요건은 GPS 필수 장착과 라디오 필수 장착 요건이 있다.
GPS를 이용한 위치 추적은 정확도는 높으나 기본적으로 배터리 소모가 높다. 반대로 전화 기지국을 통한 위치 추적이나, 라디오를 이용한(이건 원리를 아직 잘 모르겠는데.) 위치 추적은 정확도는 낮지만 전력 소모량이 낮다.
윈폰7에서는 이걸 용도에 맞게 선택해준다는 말씀, Low로 설정하면 라디오나 기지국 기반의 위치 추적을, High는 GPS기반의 위치 추적을 이용한다.

이동시에 위치 변화 감지 방법
윈도우 플랫폼 답게 현재 위치가 변하는 것에 대해서는 이벤트를 발생 시켜서 이벤트 핸들러에서 처리하게 한다. 이때, 위치가 변하는 기준(즉 원래 위치에서 얼마나 움직였을때 위치가 변화한것으로 판단하냐)를 MovementThreadHold로 설정할 수 있다.

위의 예제는 20m로 설정한 예이다.
실제 개발자 가이드에서도 보면 MovementThreshold를 20m 이상으로 설정하게 되어 있다. GPS 자체가 노이즈에 민감하게 반응하고, 더군다나 외장 GPS 안테나를 가지고 있지 않기 때문에, 20m 가 적정값이라는 거다.. (3~4m 내외로 정확하면 좋겠다는 아쉬움이)
 

위치가 바뀌었을때, 이벤트를 받아서 처리하는 함수는 위와 같이 PostionChanged에 EventHandler를 지정해주면 된다. StatusChanged 이벤트는 GPS의 상태가 바뀌었을때, 예를 들어 수신 불능 상태, 수신 가능 상태, 준비중 등 일때 사용할 수 있다.

아마다 MovementThreshold의 값은 하드웨어 제조사의 GPS 감도에 따라서 차이가 있을 수 있을것 같고, 사실 흥미로운 것은 GPS가 불가능한 지역이나 날씨에서도 기지국이나 특히 라디오를 이용해서 위치 정보를 추적할 수 있다는 것이다.




앞서 주로 사용자 관점의 차별점에 대해서 설명했는데, 이제 개발자 관점에서 살펴보도록 하자.

넓은 개발자 계층과, 편리한 개발 인프라

삼성 전자가 얼마전에 ‘bada’라는 이름의 모바일 플랫폼을 발표하였다. 필자가 얻은 정보에 따르면 속도도 빠르고, 기기도 좋다. 근데 문제는? 개발자 인프라가 없다. 한마디로 아직 인기가 없는 플랫폼이고, 개발에 필요한 API나, 튜토리얼, 커뮤니티등의 생태계가 생성되지 않아서 개발을 하기가 쉽지 않다.

윈폰7의 개발 인프라는 SilverLight와 .NET 그리고 XNA에 기반을 가지고 있다. 이 기술들은 윈폰7을 위해서 새롭게 개발된 기술이 아니다. 이미 윈도우 프로그래밍에 사용되고 있는 기술이다. 바꿔 말하면, 윈도우 프로그래머는 손쉽게 윈폰7개발에 참여할 수 있다는 말이고, 관련 커뮤니티들도 활성화 되어 있다. C#과 비주얼 베이직과 같은 익숙한 개발 언어를 비주얼 스튜디오라는 익숙한 개발환경에서, 개발하면 된다. 스마트폰 애플리케이션 개발에 있어서 진입 장벽이 높은 것이 쉽지 않은 일인데, MS는 이 부분에 상당히 공을 들인 듯 싶다. 안드로이드가 개발자 층이 넓은 자바를 통해서 급속하게 개발 생태계를 확보했듯이, MS는 .NET이라는 개발자층이 넓은 플랫폼 + 비주얼 스튜디오등의 안드로이드 보다 훨씬 강력한 개발환경으로 개발자층을 지원할 예정이다. 안드로이드 개발자 분들은 아시겠지만, 개발환경은 이클립스다. 이클립스는 자바 개발환경으로 참 좋은 환경이지만, 단하나 문제는 UI쪽의 레이아웃 디자인 하는 도구가 조악하다. 당연히 개발 편이성도 떨어지고 난이도도 올라간다.


<그림. 이클립스 기반의 안드로이드 UI 디자인 도구 >

근 20년간 비주얼 스튜디오라는 개발툴을 계속해서 개발하고 판매했던 MS의 관록이 느껴지는 부분이라고나 할까?


<그림. 비주얼 스튜디오 기반의 UI 디자인 환경>

클라우드 서비스

스마트폰 애플리케이션이 좀 더 나은 서비스를 하기 위해서는 백엔드에 서버가 필요하다, 일반적인 스마트폰 애플리케이션들은 인터넷 서비스 업체 (트위터,구글,페이스북등)가 제공하는 공개 API (OPEN API)를 사용한다. 그런데 좀 더 특화된 서비스를 하고 싶다면?
별도의 서버가 필요하다. 사용자의 정보를 저장하고, 서버에서 여러 트렌젝션을 처리하고, 사용자간의 정보를 처리하기 위한 서버..!! 이런 서버를 개인이 보유하기는 비용적으로 쉽지 않다.  0.99$ 짜리 애플리케이션을 만드는 개발자가 몇백만원짜리 서버를 구입하고 데이터 센터에 호스팅을 하는 것은 쉽지 않다. 더군다나 전세계를 대상으로 서비스를 할려면 속도나 법적 문제 때문에 세계 여러곳에 서비스를 설치 해야 하는데, 이건 개인이 아니라 기업도 쉽지 않은 일 이다.
이런 문제를 해결하는 방법중 하나는 클라우드 서비스를 사용하는 것이다. 클라우드 상에 서버를 임대하거나 저장 공간을 임대해서 사용하고 (Iaas – Infra as a service). 또는 OPEN API플랫폼을 구축하거나 기 구축된 것을 사용하는 것 (Paas – Platform as a service)등이 좋은 예이다.
애플의 경우 일반 사용자에게 제공하기 위한 Public 클라우드는 가지고 있지 않다. 그래서 애플리케이션들은 모두 일반 OPEN API를 사용하거나, 개개인 별로 호스팅 되는 서버를 통해서 서비스를 제공한다.
구글의 경우 클라우드 플랫폼을 제공한다. 그런데 이것이 쌩뚱맞게 Python 언어 기반이다. 근래에들어서 Java도 지원하긴 하지만, 자세히 들여다 보면 제약 사항이 많다. DB서비스나 Storage서비스도 없거나 제약 사항이 있다.


여기에 또 윈폰7의 가능성이 나오는데, MS는 메이져 클라우드 플레이어중 하나이다. CRM,MS Exchanage, SharePoint와 같은 애플리케이션 서비스를 제공하는 Saas. AppFabric과 같은 SOA 를 지원하는 프레임웍,MS-SQL서비스등과 같은 Paas 그리고 Windows Server 가상화,Storage 서비스등을 지원하는 Iaas등 클라우드의 3계층 Saas-Paas-Iaas를 모두 제공한다.  물론 다른 스마트폰 플래폼들도 이 클라우드를 쓸 수 있다. 그러나 MS의 클라우드 기술은 기본적으로 .NET 개발 환경 기반으로 되어 있고, 윈폰7역시 .NET 기반이다. 즉 아주 Smooth한 연동이 가능하다는 것이다.


 윈폰7은 단순하게 디바이스에 탑재되는 플랫폼만이 아니라 MS의 클라우드 전략과 연동해서 클라우드 서버와 연동해서 서비스를 제공할 수 있는 모델을 지원한다.

엔터프라이즈 솔루션

일반 사용자 입장이 아닌 기업 사용자의 관점에서 스마트폰 플랫폼을 보면 기업의 업무 시스템과의 연동성이 매우 중요하다. MS는 오피스,MS Exchange 서버, 계정 및 자산 관리 도구인 Active Directory 그리고 Windows Server를 기반으로 구성되는 CRM (Dynamics)등의 여러 엔터프라이즈 솔루션을 가지고 있고, 이런 솔루션들이 자연스럽게 윈폰7과 연동될 수 있는 인프라를 제공하고 있다. 기존의 아이폰이나 안드로이드는 이런 인프라가 없기 때문에 일일이 개발을 해야 하거나 써드 파티 제품을 써야 하기 때문에 기업 애플리케이션 통합이 쉽지 않다. RIM의 블랙베리 같은 경우 오랜 역사를 가지고 있고, Lotus Notes나, MS Exchange와 좋은 통합성을 가지고 있기 때문에 기업 시장에서 좋은 우위를 점유할 수 있었던 것이었는데, 이번 윈폰7이 이러한 장점 역시 같이 커버 함으로써 엔터프라이즈 모바일 스마트폰 시장에서도  높은 가능성을 보여 줄 수 있을 것이라 기대한다.


앞에서 UI에 디자인까지 입혀봤고, 이번에는 윈폰7의 강력한 기능중 하나인 애니메이션 효과를 줘봅니다. 보시면 아시겠지만 진짜 간단합니다.
앞의 예제가 텍스트 박스에 글자를 넣고 클릭하면 위의 텍스트가 바뀌는 시나리오 였는데, 이번에는 클릭하면 위의 글자가 바뀌면서 뺑글 돌아가는 형태로 바꿔봅니다.

역시 디자인을 변경하는 것이기 때문에, Expression Blend 4에서 작업을 합니다.
모드를 디자인 모드에서 애니메이션 모드로 바꾸면 Objects and Timeline에 각 객체별 타임라인이 나옵니다. (마치 동영상 편집기 처럼요)

이제 애니메이션 효과를 줘봅니다. 배너 글자 컨트롤인 BannerTextBlock을 선택한후에, 레코딩 모드로 전환하고, TimeFrame을 1초로 선택한후에, x축을 -1로 세팅합니다. 다음 2초를 선택한후 x축을 다시 0으로 복구합니다.
즉 0초에는 제대로 표현하다가 1초에는 x축을 180도 회전 시키고, 2초에는 다시 0으로 세팅합니다. 이렇게 되면 0~1초 사이에 180도 돌고, 그다음 1~2초 사이에 다시 180도가 돌아서 2초동안 텍스트를 360도 돌리게 됩니다.


이렇게 지정한 애니메이션은 바로 개발툴에서 테스트 해볼 수 있습니다. 아래 처럼요.



자아 이렇게 개발이 끝난 애플리케이션을 그럼 테스트 해봅시다.



이렇게, 윈폰7 개발환경에서는 다이나믹한 애니메이션 효과를 주는게 무지 쉽습니다. 아주 간단한 예만 했지만, 애니메이션 속도, 화면 전환할때 마치 페이지 넘기는 것과 같은 효과를 이렇게 클릭 몇번만으로 자유롭게 줄 수 있습니다.

앞에 디자인 UI적용 부분과, 이번에 애니메이션 처리 부분을 봤는데, 이정도면 상당히 높은 합격점을 주고 싶습니다. 스마트폰이면 스마트폰에 알맞는 멋진 UI가 있어야겠지요.

윈도우즈 모바일 7의 장점 중의 하나가 아주 강력한 UI를 지원한다는 것이다. 화면 전환 애니메이션, 각 컨트롤에 대한 커스터마이징이 매우 쉽다.

앞의 글에서 설명했듯이 일반적인 화면 레이아웃이나 배치등은 Visual Studio에서 XAML을 이용하여 디자인 한다.

여기에 컨트롤에 상태에 따라서 추가로 디자인이나 애니메이션 효과를 지정할 수 있는데, 이는 개발툴킷에 들어있는 "Microsoft Expression Blend 4 Windows Phone"이라는 도구를 사용한다. 마치 RIA (Rich Internet Application)개발도구와 비슷하다.

애니메이션도 직접 테스트해볼 수 있기 때문에, 무슨 애니메이션 저작툴과 같은 느낌도 좀 들기는 하는데, 애니메이션 효과는 나중에 설명할것이기 때문에 패스...

일단 윈폰7의 디자인 개념을 설명해보면 다음 그림과 같다.

원래 레이아웃과 배치등을 했으면 거기에 디자인을 덧 붙이는 것이다.
가장 쉽게 설명할 수 있는 말은 HTML에다가 CSS를 붙이는 개념을 생각하면 된다.
Visual Studio에서 표준 컴포넌트로 배치등을 하고, Expression Blend 로 CSS와 같이 컴포넌트에 디자인을 입히는 것이다.

사용한 예제는 "ClickMe" 버튼이 Focus out되어 있으면 검정색으로 표시되다가, Focus In이 되면 글라데이션으로 칠해지고, 라운드 박스로 테두리가 그려지는 예제이다.

원래 왼쪽화면과 같은 UI에 디자인을 오른쪽과 같이 디자인을 입히는 것이다.
실제 화면 디자인 파일인 *.xaml을 보면

위의 코드는 디자인이 안적용된 코드이고 아래 코드는 디자인이 적용된 코드이다.
아래 코드를 보면 버튼 컨트롤 안에 Template="{StaticResource FancyButton}"이라고 적용된 부분이 있다. 버튼 컨트롤의 스타일을 지정하는 것이다. 그 다음에 같은 *.xaml안에 마치 HTML의 CSS를 정의하듯이 버튼의 디자인 스타일을 지정한다. (그림 아래 <ControlTemplate ... 부분 >

실제 동작되는 모습을 보면 다음과 같다.

특히나 스마트폰에서는 사용자 경험이 매우 중요하다. 버튼 모양, 애니메이션, 반응성 등등. UI 컨트롤등을 변경하고 상태에 따라서 (클릭전,후, 포커스가 갔을때와 빠졌을때) 디자인을 반영하고 하는 것은 전통적인 UI 프로그래밍 방식에서는 매우 귀찮은 일이다. 안드로이드나 아이폰에서는 이런것은 해보지는 않았는데, (되기는 하는데, 윈폰7보다 귀찮을듯, 일일이 코딩이 있을듯) 윈폰7은 전용 디자인 스튜디오를 통해서 적용할 수 있다는 것이 상당히 마음에 들고... 
 디자인 적용 구조가 HTML의 CSS 개념과 비슷해서, 전체적으로 개발 프레임웍 자체가 앞 글에서도 언급했듯이 HTML + MVC 웹프로그래밍과 유사해서 (걍 JSF 프로그래밍 하는 느낌) 기존 개발자들이 쉽게 접근할 수 있을듯 싶다.

참고:
예제는 트레이닝 키트에서 제공되는 http://www.microsoft.com/downloads/details.aspx?familyid=CA23285F-BAB8-47FA-B364-11553E076A9A&displaylang=en )
 " Exercise 2: Using Expression Blend to Design the UX of your Windows Phone "
를 사용하였다.

Windows Phone 7 스터디 시작.

프로그래밍/Windows Phone7 | 2010.08.06 10:11 | Posted by 조대협

사용자 삽입 이미지


다니는 회사가 회사인지라... 윈도폰7에 관심을 안가질래야 안가질 수 가 없다.
더군다나 지난 세미나에서 윈폰7의 Feature와 개발 환경에 매료된 나로써는.. 꼭 한번 발 담궈보고 싶은 부분이다.
이미 안드로이드나 아이폰쪽은 다른 개발자분들이 치고 나가셨기 때문에.. ^^;
윈폰7의 개발 환경중 매우매우 재미있는 것 두가지를 들어보면

XNA 기반의 게임 개발환경과
XNA는 게임 개발 프레임웍인데, 3D 이팩트,Collistion Detection(충돌)처리 등등 게임을 만들때 골아픈 부분들이 SDK로 이미 다 들어가 있고. 무엇보다!! XNA기반으로 개발하면 XBOX와 윈폰7 둘다에서 돌아간다... 개발자 입장에서는 폰과 X-BOX 두가지 시장을 노릴 수 있는 것이다.
사실 내 입장에서는 개발 환경의 편의성에 놀랬다. (약 10여년전, '어스토니아 스토리 시절'에 게임개발자로 시작한 경력이 있기 때문에..)

마치 플래쉬와 같은 UI 개발 환경이다.
윈폰7의 UI가 특이한것은 말하나 마나고, 안드로이드가 아이폰 UI 베낀거라면, 윈폰7은 ZUNE에서 검증된 독특한 UI를 사용한다. 거기에 화면이 페이지 처럼 넘어가는 것이나 리스트 만드는것등등 Anyway 개발 환경이 매우매우 편리하다는.. 이클립스 기반의 안드로이드 개발환경에서 헉 소리 한번 났었고.. 아이폰 개발할려고 맥 세팅 하다가 (타이거라서 안되고..) 삽질한 경험이 있는 나로써는. Visual Studio 기반으로 원빵에 간단하게 인스톨해서 개발을 시작할 수 있는 것도 매력이다.

헐.. 어젯밤에 BizTalk ESB공부하기로 해놓고.. 아침에 윈폰7을 보는 이 산만함이란... -_-;

관련 URL

http://developer.windowsphone.com/
Windows Phone 7 Development Kit : http://go.microsoft.com/?linkid=9723028