Qtを組み込みで使う理由とQt 5 - 組み込みネット

Appendix 1
Qt を組み込みで使う理由と Qt 5
朝木 卓見
Qt は,デスクトップ以外にも組み込み Linux をサポートした
C++ ですが,オブジェクト指向と GUI との相性のよさは使っ
アプリケーション(アプリ)開発フレームワークです.さまざ
たことのある方にはおなじみでしょう.Qt は分かりやすい API
まな製品で Qt が使われ,日本では,シャープの Linux Zaurus
と,GUI Designer を用いた WYSIWYG による UI 設計などによ
や SONY の Mylo,Panasonic の Skype フォンなどが発売されて
るアプリの作りやすさでは定評があります.最近では,後述す
います
注1
.以前の Qt には商用版か GPL 版しかなかったため,
る QML/Qt Quick の導入により,UI をより開発しやすくして
ライセンス料やソース・コードの公開などが課題でした.しか
います.また,デスクトップ環境や QVFb などによるデバッグ
し,2009 年に LGPL が追加されて以来,製品に無料で組み込み
は,実デバイスでのテスト時のエラー軽減に役立ちます.
やすくなり注目が高まっています.
● Qt のデメリット
● Qt のメリット
それでは,Qt を使うデメリットは何でしょうか.
それでは Qt を組み込みに使うメリットや,その場合の注意
・フットプリントの増加:Qt は C++ のランタイムが必要です.
点は何でしょうか.まず,Qt のメリットを挙げてみます.
Qt 自体のライブラリも小さなサイズではありません.それが
・豊富な機能:Qt はよく GUI ツール・キットとして gtk+ などと
問題となるケースもあるでしょう.けれども,Qt にはフット
比較されます.確かに,Qt には GUI だけでも多くの便利な機
プリントを削減するために qconfig と呼ばれる機能があります.
能がありますが,対応範囲はそれだけではありません.マルチ
これは,Qt ライブラリから使用しない機能を削除することで
スレッドやコンテナなどの基本のクラス,OpenGL,ネットワー
フットプリントを削減する機能です.configure とビルド時に
ク,データベース,XML,マルチメディア,ECMAScript(Java
指定を行う必要がありますが,場合によってはかなりのサイズ
Script),WebKit などを Qt API でカバーしています(図 1)
.
を削減できます.各ライブラリがどの程度のフットプリントを
もちろん,これらの組み合わせも簡単に行えます.また,ア
必要とするかの目安は,ドキュメント注 2 に示されています.
ドオンとして Qt Mobility というモバイル向け API も開発して
なお,ライセンス条件に問題がない場合,静的にリンクする
います.これは,GPS や傾きセンサ,カメラ,Bluetooth など
ことで不要な機能を実行ファイルに含まれないようにすること
に対応しています.機能によってはバックエンド用のプラグイ
もできます.もっとも,LGPL 版ではリンク用オブジェクト・
ンの作成が必要ですが,MeeGo 用のソースなどを参考にする
ファイルの配布が必要なので,実質的には商用版の利用時に限
とよいでしょう.
定されます.
・ソース・コードの公開:Qt は,そのソース・コードが公開
● Qt を組み込みで使う際の注意点
されています.ユーザはライセンスに従って Qt に変更を加え
Qt を組み込み Linux で使う場合,QWS(Qt Window System)
て使えますし,トラブル発生時の解析をしやすいでしょう.
や X11,DirectFB などの環境で動かせます.それぞれの環境で
・商用サポート:Qt 開発の中心を担っている Nokia 社自体は商
Qt を動かすときの特徴を簡単に説明します.
用ライセンスの提供やサポートをしていませんが,パートナ各
・ QWS(Qt Window System)
:QWS は,組み込み Linux で Qt
社がサービスを展開しています.LGPL でライセンス料を抑え
を使用する場合によく使われています.QWS では,Linux のフ
ながら,コンサルティングやサポートを受けることも可能です.
レーム・バッファを Qt が直接ドライブするため,Linux カーネ
・移植性:Qt は,組み込み Linux 以外の主要なデスクトップ環
ルの標準の機能があれば Qt を動かせます.X11 などの中間層
境にも対応し,アプリのソースの多くを共有できます.Qt の
がないため,高速かつ省メモリでの動作が期待できます.
API 自体は組み込みもデスクトップも共通なので,ソース・コー
ド全体の共有が可能ですが,画面解像度やインターフェースな
どが異なるため,UI はそれぞれに最適化した方がよいでしょ
Core
GUI
う.また,コミュニティ・サポートですが VxWorks や QNX も
対応しており,Digia 社による INTEGRARY RTOS のサポート
Multi
threading
や,SRA による T-Kernel への移植など,多種多様なプラット
ホームで動作しています.
・作りやすさ:フットプリントの面でデメリットとされがちな
注 1:http://qt.nokia.com/qt-in-use-jp
Jan. 2012
KEYWORD
2D
Graphics Canvas
OpenGL
WebKit
Scripting
Multimedia
Networking
XML
Database
Unit Testing
Declarative
図 1 Qt の豊富な機能
注 2:http://doc.qt.nokia.com/latest/fine-tuning-features.html,
http://doc.qt.nokia.com/latest/requirements-embedded-linux.html
Qt,Qt5,QML,OpenGL
75