Qt最新事情-QtでWebKitを使ってみよう

第1回 Qtの歴史~Qt 4.4の新機能

この記事を読むのに必要な時間:およそ 3 分

本特集の目的と目標

Qtは,ノルウェーのTrolltechにより開発されているクロスプラットフォーム向けGUIアプリケーション開発のフレームワークです。この特集では,Qtで実際にプログラミングするための基本的なノウハウとヒントについてお届けします。

Qtの多様な機能の中から4.4で追加されたQtWebKitの基本的活用方法など,デスクトップと組込みのアプリケーションに携わる現代プログラマに必須の内容を中心にお届けする予定です。

今回は,Qtの概要と最新バージョン4.4の機能と来年初頭の4.5の予定機能について説明します。

Qtとは?

Qtはデスクトップと組込み開発向けのクロスプラットフォームアプリケーション開発フレームワークです。直感的でわかりやすいAPIが特徴で,700を越える多様なクラスからなるC++クラスライブラリとGUI開発ツールで構成されています。開発言語はC++で,デスクトップではJava言語バインディングQt JambiがありJavaも開発に使えます。また,組込みLinuxプラットフォームでは,消費者製品やモバイル機器向けの機能を拡充したQtopiaがあります。

デスクトップ向けにWindows,UNIX/Linux X11,Mac OS Xのプラットフォームがサポートされ,組込み向けに組込みLinuxとWindows CEがサポートされています。クラスライブラリとGUI開発ツールは,どのプラットフォームについても商用版とGPLのオープンソース版が用意されており,製品開発にもオープソースアプリケーション開発にも幅広く使われています。

表1 Qtが使われているアプリケーション

分野アプリケーション
デスクトップKDE
Google Earth
Adobe Photoshop Element
Last FM
Sun xVM VirualBox
Skype
Operaのブラウザ
QCad
組込みPDA,複合機,写真注文端末,医療機器,計測器,携帯電話など主に商用製品。
オープンソースでは,スマートフォーンプラットフォームOpenMoko
ツール/ライブラリDoxygen
PyQt
QtRuby
QicsTable
KD CHART/TOOLS/GANNT/ REPORTS
Qwt
サードパーティ製品Qtアプリケーション自動テストツールSquish/Qt

Qtの歴史─それは,公園のベンチから始まった

Qtの開発

1990年。当時のWindows,UNIX,MacのGUIツールキットは非常に使い難い上に,難解なAPIでした。またクロスプラットフォームツールキットはありましたが,どれも機能は貧弱で価格は高いものでした。Haavard NordとEirik Chambe-Engは公園のベンチで話し合い,機能が優れ使いやすいクロスプラットフォームツールキットを独自に作ろうと決心します。

1994年。二人はTrolltechを設立し,Qtの開発に着手しました。目標は,既存のどのGUIツールキットよりも機能が優り,わかりやすく,そして使い易いクロスプラットフォームGUIツールキットの実現です。

1996年。WindowsとUNIX/Linux X11をサポートした最初のバージョン1.0をリリース。その後2.0が1999年,3.0が2001年,そしてアーキテクチャを一新した4.0が2005年6月にリリースされました。

2008年。WebKit統合化とPhononマルチメディアフレームワークを中心とする,Qt 4シリーズ中で最大の機能追加がされた4.4がリリース。これが今回の連載で焦点としているリリースです。

Qtのライセンス

Qtは最初のリリースから商用版とオープンソース版の両ライセンスでリリースされました。しかし,Windowsではオープンソース版がない,オープソースライセンスもソースの改変ができないなどといったライセンス上の大きな問題を抱えていました。Qt 4からはすべてのプラットフォームでQtがオープンソースでも利用できるようになりました。そして,ライセンスの問題をめぐる中でKDE Free Qt Foundationが設立され,Trolltechが何らかの理由で定期的に新しいバージョンのQtをリリースしなかった場合には,KDE Free QtFoundationによりQtのオープンソースでの開発が保証されることになっています。

Qtの機能概要

Qtのアーキテクチャ

QtはGUIを中心として,データベース,XML,ネットワーク,OpenGL,マルチスレッドなどのGUIアプリケーションで一般的に使われる機能を取り込んだクロスプラットフォームC++アプリケーションフレームワークです。ウィジェットのレイアウト機能やUCS2(サロゲートペアも)を内部コードとし,種々の文字コーデックをサポートする国際化機能も備わっています。

QtではGUIエミュレーション,つまり各プラットフォームのローレベルの機能を用いて,GUIの見栄えと操作をエミュレーションするという方法によって,クロスプラットフォームで使える上に,拡張性が高く,直交性も高い首尾一貫したAPIを実現しています。

図1 Qtのアーキテクチャ

図1 Qtのアーキテクチャ

シグナルとスロット

Qtはシグナルとスロットというオブジェクトとオブジェクトを結びつける仕組みを提供しています。この仕組みには以下の特徴があります。

  • オブジェクト間のタイプセーフコールバック
    型の不一致などによって,実行時にクラッシュすることのないコールバックです。
  • 疎結合とカプセル化の実現
    イベントを送受信するオブジェクトが,お互いどのようなオブジェクトかを知らなくともいいようにできます。
  • オブジェクト間の1対多あるいは多対1の通信

主要機能

Qtはクロスプラットフォームアプリケーション開発フレームワークを標榜しています。これを実現するために多様な機能を持っています。

表2 Qtの主要機能

メインウィンドウアーキテクチャ
スタイルとスタイルシート
デスクトップ環境クラス
イベントクラス
ドラグ&ドロップ
Graphics View (グラフィックアイテムのキャンバス)
SVG (表示と出力)
モデルビュープログラミング
アクセシビリティ
環境設定
暗黙的データ共有クラス
ネットワークモジュール
D-Bus IPC
印刷 (PostScript,PDF)
コレクションクラス
スレッドクラス
正規表現 (Perlをモデルに)
入力チェック (入力マスク,バリデータ)
ヘルプシステム
Scriptモジュール
SQLモジュール
XMLモジュール
ジェネリックコンテナ
リソースシステム
プラグインシステム
アンドゥリドゥフレームワーク
ユニットテストフレームワーク
ActiveQtフレームワーク

Qt付属開発用ツール

Qtに付属する主な開発用ツールには以下のようなものがあります。

  • Designer(ウィジェット作成GUIツール)
  • Assistant(リファレンスマニュアルブラウザ)
  • Linguist(メッセージ翻訳GUIツール)
  • qmake(クロスプラットフォームビルドシステム)

IDEとの統合

現在のQtは,既存のIDEに統合してQtアプリケーションの開発をしやすくしようという方針を取っていて,以下の2つの統合化が実現されています。

  • Qt Eclipse Integration
    Qt/C++用とQt Jambi用。プラットフォームはWindowsとLinuxで,Mac OS X用は2009/1の予定。
  • Qt Visual Studio Integration
    デスクトップ用とWindows CEクロス開発用。

この他に,KDEで開発されているKDevelop統合開発環境があります。

著者プロフィール

杉田研治(すぎたけんじ)

1955年生まれ。東京都出身。株式会社SRAに勤務。プログラマ。

仕事のほとんどをMac OS XとKubuntu KDE 4でQtと供に過ごす。

コメント

コメントの記入