分12本特集の目的と目標Qtは,ノルウェーのTrolltechにより開発されているクロスプラットフォーム向けGUIアプリケーション開発のフレームワークです。この特集では,Qtで実際にプログラミングするための基本的なノウハウとヒントについてお届けします。Qtの多様な機能の中から4.4で追加されたQtWebKitの基本的活用方法など,デスクトップと組込みのアプリケーションに携わる現代プログラマに必須の内容を中心にお届けする予定です。今回は,Qtの概要と最新バージョン4.4の機能と来年初頭の4.5の予定機能について説明します。Qtとは?Qtはデスクトップと組込み開発向けのクロスプラットフォームアプリケーション開発フレームワークです。直感的でわかりやすいAPIが特徴で,700を越える多様なクラスからなるC++クラスライブラリとGUI開発ツールで構成されています。JambiがありJavaも開発に使えます。組込みLinuxプラットフォームでは,消費者製品やモバイル機器向けの機能を拡充したQtopiaがあります。CEがサポートされています。クラスライブラリとGUI開発ツールは,どのプラットフォームについても商用版とGPLのオープンソース版が用意されており,製品開発にもオープソースアプリケーション開発にも幅広く使われています。PDA,複合機,写真注文端末,医療機器,計測器,携帯電話など主に商用製品。Qtアプリケーション自動テストツールSquish/QtQtの歴史─それは,公園のベンチから始まったQtの開発1990年。当時のWindows,UNIX,MacのGUIツールキットは非常に使い難い上に,難解なAPIでした。クロスプラットフォームツールキットはありましたが,どれも機能は貧弱で価格は高いものでした。Chambe-Engは公園のベンチで話し合い,機能が優れ使いやすいクロスプラットフォームツールキットを独自に作ろうと決心します。二人はTrolltechを設立し,Qtの開発に着手しました。目標は,既存のどのGUIツールキットよりも機能が優り,わかりやすく,そして使い易いクロスプラットフォームGUIツールキットの実現です。X11をサポートした最初のバージョン1.0をリリース。その後2.0が1999年,3.0が2001年,そしてアーキテクチャを一新した4.0が2005年6月にリリースされました。4シリーズ中で最大の機能追加がされた4.4がリリース。これが今回の連載で焦点としているリリースです。QtのライセンスQtは最初のリリースから商用版とオープンソース版の両ライセンスでリリースされました。Windowsではオープンソース版がない,オープソースライセンスもソースの改変ができないなどといったライセンス上の大きな問題を抱えていました。4からはすべてのプラットフォームでQtがオープンソースでも利用できるようになりました。QtFoundationによりQtのオープンソースでの開発が保証されることになっています。Qtの機能概要QtのアーキテクチャQtはGUIを中心として,データベース,XML,ネットワーク,OpenGL,マルチスレッドなどのGUIアプリケーションで一般的に使われる機能を取り込んだクロスプラットフォームC++アプリケーションフレームワークです。ウィジェットのレイアウト機能やUCS2(サロゲートペアも)を内部コードとし,種々の文字コーデックをサポートする国際化機能も備わっています。QtではGUIエミュレーション,つまり各プラットフォームのローレベルの機能を用いて,GUIの見栄えと操作をエミュレーションするという方法によって,クロスプラットフォームで使える上に,拡張性が高く,直交性も高い首尾一貫したAPIを実現しています。QtのアーキテクチャシグナルとスロットQtはシグナルとスロットというオブジェクトとオブジェクトを結びつける仕組みを提供しています。この仕組みには以下の特徴があります。オブジェクト間のタイプセーフコールバック型の不一致などによって,実行時にクラッシュすることのないコールバックです。疎結合とカプセル化の実現イベントを送受信するオブジェクトが,お互いどのようなオブジェクトかを知らなくともいいようにできます。主要機能Qtはクロスプラットフォームアプリケーション開発フレームワークを標榜しています。これを実現するために多様な機能を持っています。(⁠入力マスク,バリデータ)ヘルプシステムScriptモジュールSQLモジュールXMLモジュールジェネリックコンテナリソースシステムプラグインシステムアンドゥリドゥフレームワークユニットテストフレームワークActiveQtフレームワークQt付属開発用ツールQtに付属する主な開発用ツールには以下のようなものがあります。現在のQtは,既存のIDEに統合してQtアプリケーションの開発をしやすくしようという方針を取っていて,以下の2つの統合化が実現されています。X用は2009/1の予定。この他に,KDEで開発されているKDevelop統合開発環境があります。