최근 수년간 출시된 스마트 폰과 태블릿 제품들의 현대적인 터치(Touch) UI는 소비자들에게 특유의 풍부한 표현력과 직감적인 사용자 경험을 제공해왔습니다. 이러한 한 차원 높은 GUI를 제공하고 있는 기술의 흐름은 다른 여러 산업 분야 에도 커다란 영향을 주고 있습니다.

특히 의료, 보안, 공작기계, 공장 자동화 및 기계설비HMI, 국방, 셋탑 박스 및 기타 다양한 가전 제품 등을 망라하는 임베디드 제품군에서 Touch UI 기반의 세련되고 직관적인 GUI를 갖추는 것이 제품 경쟁력의 기본 요소가 되어가고 있습니다.

이와 같은 추세 속에 임베디드 개발자들에게 C++ 개발 프레임워크인 ‘Qt’가 강력한 개발 도구로 각광을 받고 있습니다.

전세계 8천곳이 넘는 회사들이 70여개 산업분야의 다양한 임베디드 제품개발에 Qt를 도입하였으며, 국내에도 100여곳이 넘는 유수 기업 고객이 Qt를 활용하고 있습니다. 임베디드 개발에 있어서 Qt가 가진 강점이 무엇인지, 임베디드 개발에서 Qt를 선택해야 하는 이유는 무엇인가에 대한 해답을 알아보도록 하겠습니다.

 

임베디드 기기에서 고급스러운 GUI 요구사항, 이를 만족할 수 있는 솔루션 ‘Qt’

멀티 플랫폼 개발에 사용되는 C++ 개발 프레임워크 Qt [큐트-] 를 알고 계신가요? Qt는 1995년 최초 버전이 공식 배포 되었습니다. C++ 네이티브 소스를 기반으로 뛰어난 성능을 확보한 동시에 다양한 소프트웨어와 하드웨어 플랫폼에 구애 받지 않고 아주 적은 코드베이스의 변경만으로도 자유롭게 이식이 가능한 프로그램을 제작할 수 있는 프레임워크가 초기부터 일관된 Qt 목표이자 지향점입니다.

[그림 1] Qt 로 개발된 Desktop Application

이후 20년간 Qt는 산업 흐름에 맞추어 기능이 확장되고 성능이 개선되어 왔으며, 해당 기간 동안 전세계 1백만명이 넘는 개발자들에 의해서 검증된 안정적이고 성숙된 제품이 되었습니다. 현재 Qt 는 GUI 개발과 더불어 응용 프로그램 개발 전반을 커버하는 1300여개의 풍부한 라이브러리들과 다양한 개발 도구를 갖춘 ‘종합적인 개발 프레임워크’ 제품으로 완성되었습니다.

Qt는 노르웨이의 Trolltech가 최초 개발하여 2008년 핀란드 Nokia가 인수하였으며, 2012년 Nokia로부터 Qt 상용라이센스 사업 및 서비스 사업을 인수한 Digia 산하의 The Qt Company가 주체가 되어 개발과 성장을 이어가고 있습니다. Qt의 현재 최신 버전은 Qt 5.7 버전으로 2016년 6월에 출시되었습니다.

Qt의 성장과 발전을 지탱 해 온 분야 중 하나는 CAD/CAM/EDA 애니메이션/CG/게임 개발 등의 데스크탑 애플리케이션 분야입니다. Qt로 제작된 유명한 프로그램으로는 리눅스 데스크탑 환경인 ‘KDE’가 대표적입니다. Autodesk 3D 애니메이션 소프트웨어인 ‘Autodesk Maya’ 그리고 Google의 가상 지구본 소프트웨어인 ‘Google Earth’도 Qt를 이용해 제작되었습니다. 또한 Adobe 사의 ‘Photoshop Element’ 역시 Qt를 이용해 제작되었습니다.

이외에도 수많은 Desktop Application이 Qt를 이용해 개발이 되었지만 근래에 Qt의 존재감을 가장 실감할 수 있는 분야는 임베디드 분야입니다.

[그림 2] Qt 로 개발된 임베디드 제품 예시

Qt가 임베디드 개발도구로 주목 받게 된 배경에는 스마트 폰과 태블릿의 폭발적인 보급이 있습니다. 임베디드 분야에서도 기존의 물리적 버튼과 원시적인 액정 스크린이 아닌 스마트 폰과 같은 터치 패널 디스플레이 탑재와 고급스럽고 풍부한 표현을 가진 UI/HMI 조작이 일반화되고 있으며, 이러한 임베디드 분야에서 Qt는 다양한 산업 분야를 망라해 사용되고 있습니다.

[그림 3] Qt 로 개발된 차량용 클러스터 장치

활용되는 다양한 산업분야는 구체적으로 AVN(Audio, Video, Navigation)/IVI(In Vehicle Infortainment)와 전장 클러스터로 대표되는 자동차 정보 기기, 내시경, 심전도, CT/MRI 촬영 등의 의료기기, PLC와 패널 컴퓨터, 계측기기, 공작기계를 비롯한 각종 산업기기, 전자책 단말기와 LCD 패널이 있는 백색 가전과 스마트홈 구축에 이용되는 가전제품, 항공 우주·국방, 인프라 시설 등입니다.

최근 가장 주목할만한 부분은 자동차 정보기기와 의료/산업 기기 입니다. Qt는 차량 정보 기기 개발의 표준화를 추진하는 ‘GENIVI Alliance’의 레퍼런스 플랫폼을 채택하는 국내외의 개발 업체 대부분이 이용하고 있습니다.

마찬가지로 의료 및 산업 분야에서도 국내외 업체의 많은 제품 개발에 Qt를 이용하는 경우가 급격히 늘어나고 있습니다. 이외에 IoT 산업이 성장하면서 수백만 개의 독립적이었던 장치들이 서로 연결되고 그들을 구동할 손쉽고 세련된 GUI 를 필요로 하게 됨에 따라 Qt는 IOT 제품 구현의 가장 핵심적인 프레임워크로 각광받고 있습니다.

 

선도적인 C++ 크로스 플랫폼 ‘Qt’
Qt만의 전통적이며 강력한 GUI 개발 기능은 Qt Widget으로부터 새롭게 지원되고 있는 Qt 자체의 GUI 개발용 스크립트 언어인 Qt Quick/QML로 이어졌습니다. QML을 이용하면 기존의 MFC 등의 개발 도구로는 구현이 매우 어려운 에니메이션이나 3D 인터페이스와 같은 자연스러운 그래픽 효과들도 쉽고 빠르게 구현할 수 있습니다.

[그림 4] Qt 의 하나의 소스로 다양한 플랫폼에 전개할 수 있는 Qt 의 크로스 플랫폼 지원

Qt은 GUI 개발의 편리성에 더해 응용 프로그램 개발 전반을 포괄하는 종합적인 개발 프레임워크 입니다. 예를 들어 프로그램 개발에 필수 적인 멀티 스레드 프로세스 통신, 네트워크, OpenGL의 3D 그래픽, HTML5 지원 통합 웹엔진, XML 데이터베이스 등 C++ 개발자가 개발 중에 마주하게 되는 다양한 구현 요구 사항을 만족시켜 줄 수 있도록 편리하게 이용할 수 있는 1,300 여 개의 다양한 라이브러리를 갖춘 Qt 는 이 모두를 모듈형식으로 기능별로 제공합니다.

개발자는 이 모듈을 활용하여 한 번 개발을 하면 그 소스 코드를 재 컴파일 하는 것만으로 멀티 플랫폼으로 전개가 가능합니다. 하나의 데스크탑용으로 개발한 소스코드를 처음부터 다시 개발할 필요없이 iOS나 Android 용으로 각각 컴파일 하면 해당 기기에서 사용할 수 있는 것 입니다.

 

[그림 5] Qt 의 크로스 플랫폼 화면

컴파일 과정 역시 Qt 에서 제공하는 IDE인 ‘Qt Creator’를 이용해 직관적이고 편리하게 작업할 수 있습니다. 현재 Qt가 지원하는 플랫폼은 데스크탑 OS로 Windows, Linux/X11, Mac OS X를 지원 합니다. 임베디드 플랫폼으로 Embedded Linux, Windows Embedded, QNX, VxWorks를 지원합니다. 모바일 플랫폼으로 Android, iOS, WinRT를 지원합니다.

Qt는 다양한 미들웨어 컴포넌트 라이브러리와 크로스 플랫폼 전개 기능에 더불어 개발을 지원하는 편리하고 유용한 다양한 툴을 제공하고 있습니다.

[그림 6] Qt Creator 을 이용한 소스 코드 작성

GUI 화면을 직접 디자인하고 이를 개발코드와 직접 연결시킬 수 있는 ‘Qt Designer’, GUI 개발을 편리하게 해주는 Qt 자체의 스크립트 언어인 ‘QML’과 UI개발을 할 수 있는 ‘Qt Quick(Qt User Interface Creation Kit’, 간단한 절차만으로 제품의 국제화, 현지화를 실수 할 수 있는 ‘Qt Linguist’, Qt로 제작된 GUI 화면의 상세한 리소스 프로파일링이 가능한 ‘Qt Quick Profiler’, Qt 라이브러리에 대한 풍부하고 상세한 도움말 문서인 ‘Qt Assistant’, 그리고 이 모든 것들을 통합하는 개발 환경(IDE)으로 ‘Qt Creator’를 제공하고 있습니다.

[그림 7] Qt Creator 에서 QML Profiler 을 실행시킨 모습

[그림 8] Qt Creator 에서 Qt Designer 을 실행시킨 모습

개발자는 Qt Creator를 이용하면 C++와 QML 애플리케이션의 코딩과 빌드 그리고 디버깅을 편리하게 진행할 수 있으며 Qt Designer를 활용해 디자인 설계도 할 수 있습니다. 또한 Visual Stuido나 Eclipse등 친숙한 개발 환경에 플러그인 하여 이용할 수도 있습니다.

이처럼 풍부한 라이브러리와 개발 도구를 갖춘 Qt는 Qt 5 이후로 임베디드 기기의 성능을 극대화 하기 위해 아키텍처의 전폭적인 업그레이드를 실시하였습니다. 기존에는 임베디드 Linux 등을 중심으로 QWS(Qt Window System)라는 Qt 자신의 윈도우 시스템이 채용되어 왔지만 최근의 임베디드 환경에서는 성능을 충분히 활용할 수 없어져 새로운 플랫폼 추상화 기술인 ‘QPA(Qt Platform Abstraction)’을 발표했습니다.

또한 OpenGL을 기반으로 한 그래픽 스택을 채용하는 것으로, GPU 성능을 극대화한 강력한 그래픽 처리(쉐이더나 파티클 등 고급 에니메이션/효과 기능 등)를 가능하게 했습니다. 또 임베디드 환경에서 보다 원활한 성능 동작을 위해서 Qt Quick Control 2.0을 새롭게 선보였습니다. QML과 Qt Designer를 이용하면 버튼이나 탭을 포함한 다양한 종류의 컨트롤 들이 크게 정비되어 고급스러운 UI 개발을 그 어느 때 보다 쉽게 실현할 수 있게 되었습니다.

[그림 9] Qt 애플리케이션 개발자 제공 구성

개발자는 Qt Creator를 이용하면 C++와 QML 애플리케이션의 코딩과 빌드 그리고 디버깅을 편리하게 진행할 수 있으며 Qt Designer를 활용해 디자인 설계도 할 수 있습니다. 또한 Visual Stuido나 Eclipse등 친숙한 개발 환경에 플러그인 하여 이용할 수도 있습니다.

지금까지 C++ 크로스 플랫폼 Qt에 대해 알아봤습니다. 다음 글에서는 Qt의 강점과 의료 산업 제품 개발에 있어서의 활용도에 대해 알아보겠습니다.

 

글 : 조용준 차장 / Qt 본부팀장 / 오큐브
자료제공 : 오큐브

최태우 기자  desk@epnc.co.kr

<저작권자 © EP&C News, 무단 전재 및 재배포 금지>