예전에 플렉스를 사용해서 작은 RIA Application을 개발한 적이 있다. 기존에 MS의 WPF를 통해 RIA에 대한 기본을 그릴 수 있었는데, 막상 플렉스를 접하고 나니 WPF처럼 화면을 추가하고 쉽게 객체로 생성할 수 있는 부분이 없었다.(MS의 Visual Studio는 그런 의미에서 참으로 뛰어나다.) 그래서 내가 가장 많이 고민한 것은 어떻게 하면 플렉스의 코드를 분할하고 화면을 분할할 수 있는가 였다. 하지만 내가 아는 것이라곤 팝업창을 띄울 때 MXML을 사용해서 include할 수 있다는 정도? 시간날 때 모듈화에 대해 한번쯤 공부해 보려고 했는데 이번 Flex 3 Training from the source를 통해 좀 더 자세히 알 수 있게 된 것 같다.

사용자 삽입 이미지
보다시피 플렉스에서 파일 하나를 생성할 때에도 이와 같이 수 많은 케이스가 있다. 물론, 이에 대한 설명은 우수한 국내 플렉스 개발자들의 플랙스 문서 한글화 프로젝트 를 참조하면 좋다. 아래쪽에 플렉스에서 사용할 수 있는 리소스에 대한 설명이 나와있는데, 처음 시작하는 입장에서는 다른 것보다 "MXML Component" 와 "ActionScript Class"에 대해서 이해할 수 있다면 모듈화에 대해 보다 더 쉽게 접근할 수 있을 것 같다. 나도 이 책에서 처음에 이 두가지에 대한 설명을 듣고 나서는 모듈화에 대해 보다 더 쉽게 생각할 수 있었으니깐 말이다.

MXML Component : 화면의 모듈화
사용자 삽입 이미지


MXML Component는 플렉스에서 사용하는 MXML(아마 macromedia extensible markup language겠지?)의 화면을 분할하는 역할을 한다. 일종의 화면 모듈화 인데, 물론 화면에 독립되게 액션스크립트 코드를 사용할 수 있다.
이 컴포넌트는 부모 MXML코드의 <mx:Application> 테그의 xmlns:v="views.*" 이런 식으로 선언되고 화면 내에서는 <v:Function_Name/> 형식으로 사용된다.
따라서 화면을 설계할 때에는 두 가지 방법이 있는데 하나는 전체 화면을 설계한 후, 컴포넌트 단위로 자르는 작업을 하던지 아니면 최초부터 자식들(컴포넌트)을 제작한 후 부모에게 덛붙히는 방법이 있는데, 둘 다 장단점이 있기 마련이다.
또한 컴포넌트를 만들었다고 해서 부모에서 꼭 그 객체를 당장 화면에 보여주라는 법은 없다. 때문에, 사용자에게 어떤 상황에 따라 미리 구성된 다양한 화면이 있다면 viewState에 따라 다양한 컴포넌트를 보여줄 수도 있고, 혹은 화면의 액션에 따라 다이나믹하게 컴포넌트를 통해 정보를 보여주고 감출 수 있다.

Action Script File/Class : 코드의 모듈화
Action Script 는 기존에 플래시에서 사용되던 일종의 언어이긴 한데, 2.0 까지는 사실 개발자인 내가 보면 "아니 이건 외계어구나." 라는 생각이 들었다. 뭐 따지고 보면 거의 문법이 아주 심하게 다르다고 할 수는 없지만, 보통 플래시 개발자들이 사용하는 것을 보면 콜백 함수를 많이 사용한다.(내가 아는 개발자는 뭐 그냥 도배를 해댄다.) 내가 RIA의 이벤트 개념을 잘 모르는 상태에서는 정말로 외계어처럼 보였는데, 어떻게 보면 플래시라는 것 특성상 프로그래밍을 입히기 위해서는 그럴 수도 있다고 생각했다.
여하튼 플렉스 3 은 액션스크립트 3.0 부터 사용 가능하다. 내가 아직 플렉스랑 액션스크립트의 버전의 의미의 상관관계는 잘 모르겠지만, 플렉스 3 버전 기준에서는 <mx:script> 안에서 함수와 변수를 사용하게 된다. 나 같은 경우 플렉스 초창기 시절에는 액션 스크립트 자체를 모르고 접근하였는데, 왠지 액션스크립트 3.0이 자바+자바스크립트 랑 비스무리해서 코딩은 쉽게 될 수 있었지만 모듈화 자체를 모르다 보니 한 개의 MXML파일이 무려 1000줄에 달하는 일 까지 발생하게 되었다. 그저 그냥 <mx:script><![CDATA[]]></mx:script> 안에 다 넣다 보니 프로그램이 느린 것은 물론, 함수 하나 수정하려고 찾아 들어가면 이건 뭔 갑작스러운 삽질이 시작되고, 가독성 자체가 떨어졌다. 한 개만 바꾸면 되는 것을 실수해서 한번 잘못 바꾸게 되면 계속 삽질을 하게 되는 것이다.
AS 파일은 이러한 스크립트 코드의 모듈화와 사용자 정의 클래스를 사용할 수 있도록 한다. 앞에서 MXML 컴포넌트에 대해 말했는데, 액션 스크립트는 상속 개념을 통해 거의 대부분의 플렉스 개체를 상속받아 재 정의할 수 있다. MXML자체에서 지원되지 않는 것도 정의할 수 있다.
액션 스크립트 클래스는 하나의 클래스 객체를 제작하는 것인데, package를 통해 클래스를 묶고, 이를 객체로써 혹은 데이터 형으로써, 사용하는 것은 아주 일반적인 OOP적 프로그래밍의 형태이다. AS를 통한 사용자 정의 클래스를 모를 떄는 바보같지만, 내가 만드는 프로그램에서 사용되는 아주 일반적인 객체를 선언해서 사용할 줄도 몰랐다.


결국 이 MXML 컴포넌트와 Action Script파일을 통해 우리가 생각할 수 있는 것은 아주 보편적인 RIA의 설계 방식인데, 화면을 분할하고 이에 따라 표출할 데이터를 설계하고 레이아웃을 구상하게 되면 => 이에 따라 프로그램에서 공용으로 사용될 객체들은 무엇인지, 또 이것들이 사용자 정의 객체라면 어떤 메소드와 변수들을 묶고 다녀야 할 것인지, 어떤 화면에서 어떤 컴포넌트와 사용자 정의 클래스를 물고 갈 것인지를 설계해야 한다. 이렇게 back단 설계가 끝나면 프로그램에서 사용되는 외부 웹 서비스와 내부 서버단(DB 등) 설계를 통해 하나의 프로그램을 제작할 준비를 마치는 것이다.


웹의 RIA는 대부분이 view와 logic으로 이루어져 있다. 그리고 view도 여러 개가 사용되고 로직도 여러 객체가 사용되거나 사용되지 않는다. 따라서 이러한 웹 서비스의 특성을 올바르게 이해하고 설계할 수 있다면, 플렉스 뿐만 아니라 앞으로 등장하게 되는 다양한 RIA서비스들에 대해 보다 빠르게 이해하고 설계해 나갈 수 있을 것이다.



크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 아이지

트랙백 주소 http://izect.kr/trackback/606 관련글 쓰기

댓글을 달아 주세요


근래들어 참 바쁜 생활을 보냈다. 다름 아닌 FLEX와의 때아닌 자존심 대결 이라는 개발자로썬 기쁜(?) 대결을 하게 되었기 때문이다.
나는 딱히 어떤 개발자라 정해져 있지는 않지만, 그렇다고 많은 기술을 접한 것은 아니다. 기껏해야 자바 기반 웹 에이전시에 잠시 투입되고 지금 유지보수를 하면서 이것 저것 혼자서 Open Source를 투입해 보면서 배우는게 있지만 그렇다고 내가 자바에 정통한 전문가는 아니라는 것이다.

바로 이전 포스팅에서 나는 2010 대한민국 매쉬업 경진대회에 나갔다고 밝힌 적이 있다. 사실 작년에 이 대회에서 나는 여자친구와 만나서 지금으로 이어지게 되어서 이 대회는 우리에게는 뜻깊은 대회인 것이다. 그런데, 올해 4번째를 맞이하는 이 대회를 보면서, 나는 또 한번의 트랜드에 대한 변화를 느끼게 되었다.

매쉬업은 무엇인가? 네이버 검색이나 다음 지도 등 소위 말하는 Portal들에서 서비스하는 기술을 API(Application Program Interface, 응용 프로그램 인터페이스) 형식으로 제공하는 것을 Open API라고 하며, 이러한 Open API들이 합쳐져서 새로운 서비스를 창출하는 것을 매쉬업(Mash-Up) 이라고 한다.

이미 포탈 사이트에서는 다양한 API를 지원하고 있다. 검색은 기본이고 지도 서비스에서부터 각종 컨텐츠들, 날씨 정보, SNS 등등 예전처럼 더 이상 개발을 할 때 컨텐츠 혹은 대규모 때문에 구현 불가능한 것은 없다는 것을 의미한다.

작년에는 내가 병특을 가기 전이라 이것 저것 접하던 도중, 그나마 C#과 Visual Studio라는 툴에 익숙해서 친구의 도움을 받아서 WPF로 개발을 했었는데 확실히 그 프로그램은 허접 그 자체였다. 그나마 UI나 디자인에 조금 신경을 썼다 할지라도 그건 좀 아니었다. 제대로된 기획도 없었고, 매쉬업의 개념 조차 제대로 살리지 못했다.

이번에 내가 개발을 한 기간은 총 1주일. 신청은 2달 전에 해 놓고는 왜 그랬는가? 회사일도 바뻤지만 사실 나의 실력에 대한 과대한 신뢰 때문이었다. "까짓꺼 Flex정도야~? " 라고 자만하면서 정작 나는 개발 보다는 절반 가량은 UML과 시스템 설계, 기획 및 디자인 때문에 고민을 한 것 같다. 아이디어 조차도 감을 잡지 못하다가 미국에 있는 여자친구의 도움으로 겨우 기획안을 구체화 시켜서 진행해 나갈 정도였으니 말이다.

그래서 저번 주말(16,17일)에 Adobe Flex Bible이라는 책으로 내내 공부를 하고 Flex에 대해 눈을 좀 뜨기 시작했다. 언어는 언듯 자바 언어인 듯 싶으면서도 Action Script가 혼합되어 있는 구조에, 클래스와 객체에 대해서는 기존 자바의 개념과 거의 일치하므로 그렇게 어렵지는 않았다.
다만 RIA에 대한 구조, 물론 작년에 배운 WPF와 거의 흡사했지만 Flex만의 구조가 있었고 다양한 컨트롤들을 이해하고 내가 원하는 UI를 뽑아내는 데에 수 많은 시행착오를 겪은 것 같다.

플랙스를 실제로 해 보니 내가 이건 정말 좋다고 느낀 것은 다음과 같다.

다른 것보다 내가 "아 이런 기능을 어떻게 구현해 놓은 Sample이 없을까?" 라는 생각을 했을 때 구글 서칭을 통해 외국 사이트에서 공유해 놓은 수 많은 라이브러리 파일을 찾을 수 있었다. 구글 AJAX API는 스크립트 단에서 작동을 해서 이것을 FLEX로 끌어두기가 힘들었는데, 이미 사람들은 이러한 기능을 다 구현해서 라이브러리로 올려두었다. 그리고 나는 손쉽게 구글의 날씨나 번역 서비스를 이용할 수 있던 것이다.(다만,Crossdomain 설정에 막혀서 Air로 급 전향하긴 했지만)

이외에도 국내 영문 지도가 필요했는데, Google Maps나 Yahoo Maps는 국내 상세 지도를 전혀 지원하지 않아서(심지어 서울은 달랑 Seoul로 표기된다.) 겨우 찾다 보니 MS의 Bing Maps가 있었다.
허나, 알다시피 MS는 자체적인 SDK로 지원하기 유명하다. 그러다 보니 아무리 찾아도 Flex에 이를 어떻게 적용해야지? 하고 있었는데 그것도 구현해 놓은 곳이 있었다. UMap이라고, afcomponents.com 라는 곳에서 제공하고 있던 것이다.

Flex는 그 사용이 쉬울 뿐만 아니라 Flex Builder는 또한 쉬운 저작환경을 자랑한다. 물론, Eclipse기반의 IDE이긴 하지만 Design을 하는 데에는 정말 편했다. 그리고 다양하고 쉽게 스킨을 변경할 수 있도록 CSS를 제공하는데, 물론 이는 다른 RIA도 마찬가지이지만 웹상에 공개된 깔끔한 CSS 스킨이 여러 종류 있었다.(http://www.scalenine.com/gallery/index.php) 따라서 나는 이를 이용해서 어렵지 않게 스킨을 변경할 수 있었다.


그리고 지원하는 정말 엄청난 Component 및 모듈을 지원하는데, 이 부분은 Tour de FLEX라는 것을 한번 보면 된다.(http://www.adobe.com/devnet/flex/tourdeflex/web/#) 뭐 웬만한 모듈들은 다 나와있다고 봐도 과언이 아닌데, 예를 들어 닷넷에서 사용되는 차트는 대부분 유료 모듈로 국내에 지원된다.(히포 차트 같은.) 그런 차트 같은건 이미 Flex에 기본 컴포넌트로 들어 있어서 쉽게 사용할 수 있다. 라이센스 제약도 없으니 더더욱 좋지 않은가?

이외에도 IBM이 참여한 뛰어난 분석 모듈이나, 각종 해외 Open API에 대한 모듈들, Visualization관련 모듈 등 수없이 많으니 한번쯤 Tour de FLEX를 쭉~ 살펴보는 것도 왜 플랙스를 해야 하는지에 대한 이해를 도울 수 있을 것이다.

그리고 내가 개인적으로 Flex에 가장 깊게 느끼는 것은 다른 것보다 그 광범위한 수요층 때문이다. 요즘 Flash 안깔린 컴퓨터가 있던가? 그리고, 요즘 국내 자바 시장 하면 UI는 Flex로 점점 그 수요가 높아져 가고 있다. 물론, 아직 SI가 수용하기엔 무겁지 않나 싶은데 그 부분은 시간이 해결해 줄 것 같고.

무엇보다 나의 관심사는 3D이다. 나는 참고로 UI와 UX에 대해서도 많은 관심이 있는데, 사실 플랙스에 가장 끌린 것은 무엇보다 쉽고 깔끔한 UI구성으로 쉬운 UX의 창출이 가능할 것이라는 점이다. 그리고 이제 2D 인터페이스의 시대는 곧 사라질 것이다. 게임처럼, 우리의 UI도 3DUI의 시대가 올 것이라고 조심스래 전망하고 있다.

WebGL이라고 들어봤는가? OpenGL 프로젝트가 웹으로 플랫폼을 옮기면서 WebGL이라는 것이 조금씩 나오고 있다. 이미 아이폰 3GS 안에도 OpenGL ES가 탑재되어서 3D 게임이 제작되고 있다. 웹에서 이제 3D가 나오려면 어떻게 해야 하겠는가? 당연지사 RIA 플랫폼이 주축이 될 것이다. 그리고 점차 Adobe는 CS4에서 3D를 지원하면서(3D MAX와 흡사한 모습에 사뭇 놀란 기억이 있다.) 이 기술을 이어서 RIA 까지 가져갈 것으로 전망한다.

이제 3D 게임을 플래쉬 안에서 볼 날도 멀지 않았다. 정말 웹의 확장이란 너무나도 무섭고도 거대한 것 같다. 그 속에서 살아남으려면? 빠르게 기술을 접하고 자신의 기술에 접목시키는 것만이 살 길이다. 때문에 내가 택한 이 Flex라는 또 하나의 길. 물론, 내가 Flex에만 올인한다는 것은 아니지만, 앞으로 내가 다양하게 쌓아올릴 스킬들과 융합되어 멋진 서비스가 창출되기를, 나는 내심 바라고 이러한 면을 Flex의 빠르고 넓은 진보 과정에서 바라보고 나아갔으면 좋겠다는 생각을 한다.
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 아이지

트랙백 주소 http://izect.kr/trackback/492 관련글 쓰기

댓글을 달아 주세요


나의 2007년부터 2008년까지 2년여간의 프로그래밍 공백 기간은 얼마나 많은 일이 있었을까? 당시 얼추 알고 있던 기술들은 수 없이 많은 발전을 거듭하고 지금으로 자리잡게 되었는데 생판 모르고 있던 WPF나 실버라이트, 그리고 J2EE를 기반으로 한 JSP를 대처한 수 없이 많은 기술들. 그것들이 그 엄청난 속도로 발전하고 있었는데도 나는 그저 당시 인사총무 일이나 PM일을 하면서 말뿐인 경영 및 매니지먼트를 하면서 2년여간을 거의 뒤쳐져가고 있었다.

본래 MS의 툴(visual studio)에 익숙한 나머지 2008년 말쯤 내가 회사를 그만두게 되었을 때에는 전보다 쉽게 VS기반의 툴에 접근할 수 있었고, 이를 통해 병역특례를 위한 포트폴리오를 쉽게 만들 수 있었다. 하지만 지금은 거의 탈MS를 계속 시도하고 있다. 다름아닌 FLEX라는 것 때문에.

사실 뭐 나의 프로그래밍 역사가 그리 길지는 않다. 프로그래밍보다는 웹 기획쪽을 많이 했었지 어찌보면 프로그래밍은 처음에는 단지 컴퓨터를 잘하니깐 학교에서 "정보올림피아드나 입상해 와라" 라는 무언의 압박에 의해 퀵베이직을 다루게 된 것 같다. 하지만, 수학과학은 잘 못하고 인터넷만 9살때부터 접한 아이가 프로그래밍을 제대로 하겠는가? 그리고 나는 당시에 html과 스크립트 언어에 더 빠져 있었는걸.

3년 내내 정보올림피아드에 나간답시고 visual studio 6.0을 사용해서 알고리즘 수업을 듣고 기껏 한것은 콘솔프로그래밍. 덕분에 자료구조나 알고리즘에 대해서는 어느정도 개념이 많이 서긴 했지만(아주 기본이 되는 것에 대해서.) 이후에 처음 프레임워크를 사용해서 작업한 것이 direct x를 사용해서 게임제작이었는데 그것도 뭐 디자이너가 밭쳐줘야지. 디자이너의 불화로 결국 무산. 대학 와서 겨우 게임을 만들어 볼까 싶었는데 그때도 디자이너에 기대게 되었고, 어딜 가나 내가 좀 혼자 해보려면 디자인 때문에 고민이 많았다.

그래서 예전부터 어도비 제품군도 빠짐없이 사용하고 포토샵의 경우 어느정도 툴 자체의 사용은 능숙하다고 자체평가하고 있지만, 그래도 내가 하는 작업에 한계는 있다. 주를 프로그래머로 잡고 가다 보니 당연한 것이 아닐까. 내가 원하는 디자인을 디자이너에게 바랄 수는 없을 뿐더러 그렇다고 내가 나서기도 힘들다는 것이다.


이 FLEX라는 기술은 나의 이러한 고민을 깨끗이 해결해 주고 있다. 사실 나의 프로그래밍 공백 기간인 2년 사이에 플랙스는 눈깜짝할 사이에 벌써 베타 4버전이란다. 이정도면 기술이 얼마나 빨리 발전하는지 짐작이 오지 않는가? 사실 실버라이트 3이나 WPF 3때도 놀랐지만 플랙스는 그 쇼크가 가장 컸던 기술이 아닌가 싶다.

잡설은 이쯤하고 플랙스가 뭐가 좋은가? 가장 중요한 것은 multi-platform. 맥이든 윈도우든 전부 돌아간다는 점이 첫번째요, 두번째는 Adobe의 엄청난 지원으로 정말 다양한 module이 제공된다는 점, 세번째로는 RIA기술에 충실하여 CSS-MXML-AS 등으로 모듈화 되어서 제공된다는 점, 네번째로는 Adobe 에서 만들어진 기술 답게 포토샵 등의 관련 제품군들과 호환이 된다는 점, 다섯번째로는 RIA와는 또 다르게 FLEX로 제작된 것이 Adobe Air로 동작할 수 있다는 것이다.(물론 100% 호환은 아니지만)

이 이외에도 MAC환경에서 작업이 가능하다는 점도 한몫한다. MAC의 경우 XCODE 이외에 뛰어난 IDE가 많이 없다. 그래서 보통 NETBEANS나 ECLIPSE를 사용하는데 플랙스를 개발하기 위해서는 ECLIPSE가 기본이 되는 TOOL이다. 때문에 맥에서 지원하는 것은 당연지사. 이쯤되면 플랙스의 그 다양한 플랫폼 지원에 있어서 참 대단하다고 연발하지 않을 수가 없지 않은가.

FLEX개발자를 위한 CSS를 제공해주는 scalenine.com


FLEX를 소개하느라 나의 고민해결이 무엇인지 얘기를 안했는데, CSS를 통해서 작업이 가능해서 디자이너들이 작업해 놓은 CSS만 가져다 쓰면 꽤나 멋진 UI를 창출해 낼 수 있다는 점이다. 아 물론 이러한 것은 WPF나 실버라이트에서도 제공하는 것으로 알고 있지만 아주 개인적으론 그 둘보다는 플랙스&Air의 UI가 더 맘에 든다는 사실 (^^;) 때문에 나는 개발자이지만 디자인에 대해 크게 고민을 하지 않아도 되게 생겼다. 아 물론, Logo Design이나 Typography 및 Colorizing 정도는 계속 공부해야 하겠지만.. :]

액션스크립트가 디자이너나 쓰는 허접(?) 프로그래밍 언어라고 말하는 사람도 있다. 사실 나도 일전까지는 이런 마인드로 살고 있었는데 확실히 플랙스와 액션 스크립트는 조금 다른 것 같이 느껴진다. 단순히 플래쉬에서 F9눌러서 코딩한 그런 게 아니라 Flex 안에서의 코딩이란 거의 자바 언어이고, 거기다 플랙스 고유의 문법을 조금 더 추가한 듯 싶다. 확실히 RIA개념을 잘 살려서 만든 언어라고 생각된다.

참 그러한 추세라는 것이 무섭고, platform이라는 것이 무서운 것 같다. 플래쉬가 얼마나 대중적인지는 말 안해도 알 듯 하다. 요즘 왠만한 mp3에서는 플래쉬 플레이어가 기본으로 들어있는 것들이 많은 것만 봐도 알 수 있다. 플래쉬 게임 또한 얼마나 많은가. 웹에서 멀티미디어를 칭한다면 그건 바로 플래쉬가 아닐까. 플래쉬가 아닌 VOD player는 소수에 불과하다. 또한 Adobe는 2D 및 Vector그래픽, Web Design의 최강의인 Adobe Web Design 이라는 또하나의 대중화된 Software를 가지고 있다.

이런 자사의 플랫폼 강점을 활용해서 Macromedia를 인수하고 난 이후 개발자들에 대한 전폭적인 지원(아 물론 국내 개발자들에 대한 지원은 미미한 듯 싶다.)을 통해 개발자들을 끌어 모으고 FLEX라는 기술을 또하나의 미래적인 기술로 만들기에 이른다.

애플/어도비/MS/구글 , ORACLE/IBM/SAP/HP , INTEL/AMD 등등.. 무한 경쟁이다. 그것이 이 기술이라는 것을 하루가 다르게 바뀌도록 하고 있다.
그리고 아마 우리 개발자든 디자이너든 이 세계에서 살아남기 위해서는 아마도 "어도비 CS" 라는 것의 CS처럼(Creative Suite) Creative를 무기로 이러한 Suite를 잘 활용하는 사람. 거기에 이어 폭 넓게 Business Logic과 Database를 이해하고 personalizing을 개발의 깊은 개념으로 삼는 것. 그 속에 개발자의 미래가 숨겨져 있다고, 적어도 나는 그렇게 생각하고 오늘도 개발에 매진한다.
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 아이지

트랙백 주소 http://izect.kr/trackback/489 관련글 쓰기

댓글을 달아 주세요

  1. Favicon of http://koko8829.tistory.com BlogIcon 열이아빠 2010/01/17 18:57  댓글주소  수정/삭제  댓글쓰기

    가운데 있는 플렉스와 실버라이트 비교하는 이미지 맘에 드는데요.
    혹시 어디서 구하셨는지 알 수 있을까요?

이전버튼 1 이전버튼



블로그 이미지
html5,모바일웹,웹앱,자기브랜드,시간관리 등을 다룹니다.
아이지

Yesterday159
Today149
Total478,903

달력

 « |  » 2012.02
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29