by Cameron Laird, 역 한빛리포터 2기 김영환
"한번 작성해서 어디서나 사용하자." 대부분의 프로그래머들이 자바와 함께 이러한 슬로건과 관련되어 있다(물론 이에 대한 문제들과도 관련이 있지만). Qt GUI(그래픽 유저 인터페이스) 툴킷의 팬들은 Qt 버전3의 라이브러리들이 그러한 약속을 지킬 것이라고 주장한다. 아래에 제시된 다섯 가지 사항은 Qt의 "보편타당성"에 대해 가장 최근에 발표된 자료이다.
- 플랫폼 유용성
- 라이센스의 명료함
- 학습 용이성
- 유니코드의 호환성
- 뛰어난 적용성
완벽한 이식성
GUI로 코딩하는 많은 사람들은 원래의 툴킷만이 "충분한"이라는 수식어(충분히 빠름, 풍부한 특징을 충분히 제공함, 충분히 믿을 수 있음)를 가질 수 있다는 확신을 가지고 있다. 대대로 전해 내려온 통설에 의하면 이식 가능한 GUI 스킴은 본래적으로 느리고 높은 성능의 어플리케이션을 제공하는데 그렇게 능숙하지 못하다.
트롤테크의 Qt는 뛰어난 반응성 및 매력적인 비주얼적 요소로 인해 비슷한 버전들이 몇 년 동안 유닉스와 윈도우 모두에서 유용하게 사용되어 왔다. 최근 3.0 버전의 출시로 트롤테크는 맥OS와 유닉스, 윈도우 그리고 심지어는 X11-free 임베디드 리눅스하에서 완전하게 Qt를 지원하게 되었다.
마스트리히트(네덜란드 림부르흐주의 주도) 두뇌 혁명을 연구하는 의료 이미지 일반관리자인 레이너 지오블은 그가 일하고 있는 회사의 입장에 대해 다음과 같이 말하고 있다. "우리는 우아한 시그널 슬롯 메커니즘과 결합된 객체 지향적 접근 때문에 최종적으로 Qt를 선택했다. 현대 리눅스/유닉스의 주요 데스크탑 중 하나로 KDE 개발에 사용된 Qt관련 정보 또한 결정 프로세스를 도와주는 요인이 되었다. 결국 모든 수용할 수 있는 플랫폼에서 Qt만큼 보고 느낄 수 있는 것은 없었다..... 맥 플랫폼으로의 포트는 하루 만에 가능하지만 말이다."
트롤테크의 많은 고객들이 맥을 위한 Qt에 대해 불평해왔으며 이번 버전 3.0 출시와 관련된 주요 불확실성의 하나는 이러한 구현 수준의 정도였다. 그러나 공식 사용일인 2001년 10월 15일 Qt의 맥OS 버전은 이와 같은 많은 염려를 잠재우기에 충분하였다. Qt/맥은 우아한 외형을 가지고 있으며 여러 특징들을 지원할 뿐만 아니라 OpenGL도 지원하는 한마디로 여러 기능의 복합체였기 때문이다.
또다른 새로운 3.0 버전의 성공을 판단하기는 더욱 어렵다. 트롤테크는 고객들에게 Qt의 이식성에 대해서 강조한다. 구현 및 관리에 있어서의 사소한 일을 간단히 하기위해 버전 3.0부터는 Qt의 클래식 GUI 위젯에 기반하여 확장하는 "프레임워크"로 정의하기 시작했다. 이 프레임워크는 입출력 기능, 데이터베이스의 접근, 그리고 몇몇 일반적인 전산 분야에 대해 크로스 플랫폼적인 구상을 포함하고 있다. 프레임워크를 사용하면 더욱 유용하게 이식할 수 있기 때문이다.
어떤 경우에 있어서든 그러한 것은 의도적인 것이었다. 어쨌든 소수지만 Qt 프로그래머들 중 일부는 이미 프레임워크를 확장해서 사용하고 있다. 그렇지만 원래 3.0의 출시에서 계획된 보다 정교한 "컴포넌트" 모델은 트롤테크의 품질 기준에 부합하지는 않았다. 컴포넌트 모델은 트롤테크에서 추후의 버전에서 원숙함을 보이기 위해 잠시 보류되는 것으로 결말 지어졌다.
라이센스의 간결성
특히 리눅스 광신도들로인해 Qt 역사의 대부분은 관념론적인 논쟁으로 가득차게 되었다. 트롤테크는 이윤을 추구하는 회사이기 때문에 Qt 라이선스로부터 총 수익의 대부분을 얻고 싶어했다. 이점은 무료 라이센스를 선호하는 사람들에게는 가슴 아픈 점이다.
그럼에도 불구하고 지난 몇 년간 트롤테크는 이와 관련된 라이센스의 상태를 단순화하고 융통성 있게 변형해왔다. Qt 무료버전 2.2는 GPL(일반 공용 라이센스)뿐만 아니라 Q 프로그래밍 라이센스하에서 X11기반 소스코드와 함께 무료로 사용할 수 있게 되었다. Qt의 무료버전은 자유 소프트웨어 개발에 사용될 수 있으며 합법적으로 다른 사람들에 의하여 개발되는 소프트웨어를 실행하기 위해 사용될 수도 있다.
마이크로소프트 윈도우를 위한 이진법용 비 상용 판은 오로지 마이크로소프트 비주얼 스튜디오 버전6에서만 호환되며 윈도우 기반의 "취미형" 프로그래머들을 목표로 만들어진 것이다.
독점 애플리케이션의 개발은 일반적으로 트롤테크의 전문적 또는 엔터프라이즈 라이센스 하에서 이루어지고 있다. 싱글 유저의 전문적인 라이센스는 일반적으로 1,500달러부터 시작하는데 데스크탑 플랫폼에서는 모두 가능하다.
Qt 학습 방법
좁은 의미에서 라이브러리의 품질과 함께 트롤테크에서는 Qt 이용성의 핵심 요소로서 수십 명의 프로그래머들에게 문서화를 장려하고 있다. 이에 대해 개발자들은 정확하고 읽기 쉬운 트롤테크의 문서에 호의적인 반응을 보이고 있다.
이러한 문서의 내용은 또한 개인적으로 필요로 하는 Qt를 적용하는데 신속한 결정을 내릴 수 있도록 도와준다. 일반적으로 세일즈 프리젠테이션이 제품에 대해서 알려주는 것이라면 Qt의 문서는 제품 그 자체에 대한 사용법을 제공한다.
훌륭한 문서를 보유하고 있다는 강조점은 오랫동안 크롤테크의 장점으로 작용해왔다. 그렇지만 이것이 모든 고객의 욕구를 만족시킬 수는 없었다. Qt의 초창기 역사에서 보면 Qt는 권위있는 저서의 부족으로 고생한 적이 있었다. 이러한 상황이 지난 몇 년간 향상되어 1999년에는 『Programming Qt』가 2000년에는 『Teach Yourself Qt Programming in 24 Hours』가 출간되었다. 내년 봄에는 버전 3.0을 다루는 『Programming Qt』의 개정판이 출간될 예정이며, 세 번째 책인 『GUI Programming with Python: Qt Edition』은 새해가 오기 전에 출간될 것이다.
여러분은 이러한 자료의 대부분을 키보드를 직접 만지면서 읽을 수 있다.
『GUI Programming with Python: Qt Edition』은 테크롤의 14단계 Qt 튜토리얼(
Trolltech"s 14-step Qt tutorial)이 버전 3.0으로 업데이트 되는 동안 이미 온라인화 되어 올라와 있다.
Qt와 유니코드
"이미 Qt를 사용하고 있는 사람들에게 있어서도 Qt 3.0은 장점이 있는가?"라고 묻는다면 대답은 "그렇다"이다. Qt 3.0은 새로운 플랫폼을 지원하고 새로운 라이센스 구조를 제공하며 빠르고 능숙하게 Qt를 배울 수 있다. 또한 새로운 릴리즈는 정해진 플랫폼에서 작동을 위해 프로그래머가 사용할 수 있도록 성능적 향상이 많이 되었다.
그런데 아마 너무나 급격한 향상이 있었던 듯하다. 『GUI Programming with Python: Qt Edition』의 저자는 최근 버전 3.0과 2.0이 서로 호환되지 않는 점에 대해 불만을 토로했다. 개념적인 모델은 아직 바뀌지 않았지만 "근거는 없지만 이미 보편화된 변화로
setBackgroundColor를
setEraseColor로 다시 이름을 변경된 것들"이 그 예이다.
하지만 저자 뿐만 아니라 많은 프로그래머에게 있어 절대적인 특징이란 유니코드의 지원이다. 그림문자를 포함하여 폰트를 가지고 있는 한 Qt는 유니코드를 보여줄 것이다. 그리고 Qt 해석기에 의해 제공되는 해석 지원 역시 아주 매력적이다.
Qt 3.0이 제공하는 또 다른 종류의 이식성으로 유니코드를 생각해보자. 다른 운영체제에서의 유용함으로 Qt 3.0은 영어 및 영어와 가장 유사한 언어뿐만 아니라 한국어나 아랍어처럼 아주 다양한 범위의 문어체에 대해서 보여지고 수용될 수 있도록 프로그램 하기에 편리하다.
덧붙여 말하자면 Qt 해석기는 프로그램 해석을 돕기 위해 설계된 트롤테크의 Qt 애플리케이션이다. Qt 애플리케이션은 리소스처럼 보이는
.ts파일로부터 적절한 텍스트 디스플레이를 평가한다. Qt 번역기는 또한
.ts 소스를 유용하게 만들 수 있게 돕는다.
Qt 번역기는 단 하나가 아닌 여러 언어를 사용하는 기존 애플리케이션에 대해 재작업을 하고 있는 관리자, 통역사 및 프로그래머를 돕기 위해 설계된 일련의 도구 중 하나이다.
이외의 특징들
버전 3.0에서 개선된 또 다른 점은 QTextEdit와 QTable 위젯의 능력이다. 이것들은 일반적인 유저 인터페이스 패턴을 캡슐화하며 대중적인 비주얼 디자인 프로그래밍을 단순화한다. 예를 들어 트롤테크의 온라인 예제는 무수히 많은 파싱 셀 테이블을 생성하고 관리하는 완벽한 60줄 프로그램(
complete 60-line program)을 포함하고 있다.
다양한 방법으로 Qt의 기능성은 안정화되었다. 몇몇 3.0에서의 변화는 명료한 향상보다는 취향의 문제에 더 중점을 둔 것처럼 보인다. Qt의 비주얼 개발 도구인 Qt 디자이너의 3.0은 더 엄격하면서도 2.0 버전에서보다는 객체 지향적인 면에서는 덜 엄격해졌다. get/set 메소드 보다는 "프로퍼티" 접근에 관한 3.0에서의 강조점은 다른 개발 환경이 제공하는 것과 아주 비슷하다. 그리고 숙련된 대다수 Qt 프로그래머 사이에서 덜 엄격한 C++ 스타일로 변화되었다는 것이다.
만약 여러분이 Qt 프로그래머가 아니라면 툴킷을 기회로 삼을 수 있다. 라이브러리와 관련된 자료가 많이 있으며 정확한 문서는 여러분이 쉽게 시작할 수 있도록 도와준다. 더 배우기 쉽고 높은 생산성을 위해 원래의 C++ 바인딩보다는 "PyQt" (Python-plus-Qt)를 생각해 보는 것이 좋다. OReillyNet.com과 OnLAMP.com은 스테판 피긴스의 기사(
『GUI Programming with Python: Qt Edition』 서평)와
나의 Qt 정리 페이지를 포함하여 이미 Qt에 대한 이해를 도와줄 몇몇 기술적인 문서를 발표하였다.
카메론 레어드(Cameron Laird)는 Phaseit사의 부사장이며 오픈 소스 기술관련 기사 제작 활동을 왕성하게 하고 있다.