본문 바로가기

Programming/Mobile

Tizen Web App 개발, 몇가지 단상

엊그제(2013.5.14) OK JSP 소모임에 나가서 "Tizen Web App 개발"이라는 주제로 간략하게 발표를 했습니다.

그 때 사용한 발표자료를 공유합니다.


tizenWebApp.pdf





발표 내용은 뭐 소개 정도 입니다. 20분 남짓한 시간이 할애 되었기 때문에 그 이상 다룰 수도 없기도 했구요.

슬라이드에 없는 내용 중에 발표때 언급하지 못했던 몇가지 단상을  덧붙여서 이야기를 해볼까 합니다.


타이젠 앱은 C++로 만드는 Native App과  HTML/CSS/JS로 만드는 Web App, 이렇게 두가지를 SDK를 통해 개발 할 수 있게 제공합니다.

그 중에도 Web 기술을 이용해서 App을 개발할 수 있는 방법을 제시하는 요즘 신흥 플랫폼의 추세를 따르고 있다는데있어서 그냥 평범한 새로운 플랫폼에 비해 높은 기대감을 같게 합니다.


그런데 몇가지 아쉬운 부분이 보입니다.


가장 대표적인 부분이  UI에 대한 어떠한 대책도 없다는 것입니다.

보통 C/C++, Java와 같은 프로그래밍 언어를 기반으로 하는 SDK는 그 플랫폼에 대한 새로운 UI ToolKit을 제공하거나,

이미 널리 사용되는 UI Toolkit을 포팅해서 지원하기 마련입니다. 그런 관점에서 Tizen은 EFL을 선택한것으로 보입니다.


그런데, Web App은 어쩌란 말일까요? 그저 웹페이지를 작성하듯 마크업에 스타일먹여서 UI를 만들라는 것입니다.

하지만, 이런 작업은 마치 C 개발자에게  MFC, QT, GTK, WxWiget  없이 GUI를 구현하라는 말과 같으며,

Java 개발자에게 AWT, Swing, SWT 없이 GUI를 구현하라는 말과 같습니다.


하기도 어렵거니와 노력과 시간이 너무 많이 소요되는 방법이죠.

그래서  Web Application을 위해 나온것이 jQueryUI, ExtJs, jQueryMobile, SenchaTouch같은 것일텐데요.

Tizen은 WebApp을 구현하는 방법으로 날로 UI를 구현하던지, jQueryMobile을 쓰던지, 아니면 Tizen UI Framework를 사용할 수 있는 선택권을 주고 있습니다.


jQueryMobile은 사실 프로그래밍을 위해 사용하기 보다는 문서작성에 어울리지 않나 싶은 것이 제 생각인데요.

마크업을 작성하고 그것의 모양새를 jQueryMobile이 변경해 주는방식은 어디까지나 한계가 있습니다.


게다가 Tizen UI Framework라는 것은 jQueryMobile을 기반으로 약간 수정해 놓은 것인데,

이게 참 어이없는 대목입니다.

차라리 jQueryMobile을 그냥 쓰던지, 아니면 아예 새롭게 인터페이스를 만들던지 해야 하는데, jQueryMobile을 수정하다니요.


예를 들어 Button을 표현하기 위해 jQueryMobile은  data-role="button" 이라는 속성을 사용합니다. Tizen UI Framework도 동일하구요. 이렇게 하면 마크업을 버튼 처럼 표현해 줍니다.

그러니까 jQueryMobile과 Tizen UI Framework는 모양새만 다를 뿐 작성할 코드는 동일한 셈이 되는 것 같습니다.

그런데, 문제는  data-style 이라는 속성이 Tizen UI Framework만 정의 되어 있습니다. 모서리가 둥근 버튼을 만드는 등의 약간의 모양새 조정이 더 가능한 셈이죠.

이건 API 구조 설계에 있어 가장 초보적인 실수라 할 수 있을 겁니다.(나중에 납득할 만한 이유가 있는 걸 알게되면 제가 초보적인 실수를 하는셈일 수도 있겠군요.)

결국 jQueryMobile을 기반으로해서 변형을 만들었기 때문에 향후에 두 코드간의 호환성은 없어지고 충돌만 남게 되니까요. 만약 jQeuryMobile에서 data-style이라는 속성을 나중에 추가했는데, Tizen과는 전혀다른 의미로 지정한다면 그 손해는 개발자에게 돌아 가기 마련일테니까요.

이렇게 할꺼면 네임스페이스를 바꾸어서 사용했어야 합니다. data-role="tizen-button" 이라거나, data-tizen-role="button" 이라거나 하는 식으로 말이죠.


이 문제가 아니더라도 앞서 말했듯이 jQueryMobile은 모바일 앱 보다는 모바일 문서에 보다 적합합니다.

적어도 프로그래밍을 전제로 하는 어플리케이션 개발 환경이라면 ExtJs나 SenchaTouch 같은 API 형식이 기반이 되어야 한다고 생각합니다. 물론 Sencha 또한 API 설계가 형편없기는 매한가지이지만 말입니다.


그래서 결론은, 새로운 플랫폼 SDK를 내놓으면서 전통적인 프로그래밍 언어로는 UI Toolkit을 제공하면서 Web 개발 환경으로는 이렇다할 UI Toolkit에 대한 작업없이 내놓는 것이 못내 아쉽습니다.  Sencha 수준의 Web UI Toolkit을 개발해서 기본 탑재하도록 지원했다면 좋았을텐데 말입니다. 아무래도 아직도 웹 개발과 관련해서 인식이 부족하지 않나 싶습니다.


웹 기술로 앱을 개발하는 환경을 기본으로 제공한다는 측면에서 같이 분류되는 FireFoxOS도 마찬가지로 UI Toolkit을 제공하지 않는것을 보면 아무래도 부담감이 많은 작업이긴 한가 봅니다.


예전에 제가 개발하다 중단한 Xwing이 이런곳에 사용되면 좋을텐데, 못내 아쉬운 시점이군요.