4.6がやってきた-Qt最新事情2010

第1回 速報!Qt 4.6新機能とロードマップ

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

マルチタッチとジェスチャー

Windows 7とMac OS Xで使える機能で,画面の2ヵ所をタッチして,間隔を変えると拡大縮小するようにしたり,複数のスライダーを同時操作したりできるようにする機能です。指一本よりもいろいろな操作をさせられます。ジェスチャーの実装には,前述のステートマシンが使えます。

  • アプリケーションを今までよりもよりよく操作可能
  • UI コンポーネントの指による操作の簡単化
  • パン(QPanGesture⁠⁠,ピンチ(QPinchGesture⁠⁠,スワイプ(QSwipeGesture⁠⁠,タップ&ホールド(QTapAndHoldGesture⁠⁠,タップ(QTapGesture)などの基本的なジェスチャーを用意
  • 独自のジェスチャーの追加が可能

DOMアクセスAPI

数年前から計画されていて,Qt 4.6で機能追加されました。WebページやXMLの要素へのアクセスと操作をCSSセレクタで行えるようにしていて,高速な動作を実現しています。

パフォーマンス改善

以下のような改善がされています。

  • QGraphicsViewのレンダリングアルゴリズムの書き換え
    操作していて,グラフィックスビューが速くなったと感じました。宣言的UIはグラフィックスビューを使って実装されているので,軽快な動作はアニメーションGUIにも効果的です。
  • QNetworkAccessManagerのオーバーヘッドの削減
  • OpenVGによる描画のハードウェアアクセラレーション
  • WebKitのJavaScriptエンジンJavaScriptCoreを使うことにって,QtScriptの実行速度が劇的に改善されています。詳しくは,以下のQt Labs Blogsの記事を見てください。
  • Qt Labs Blogs >> QtScript in 4.6
    URLhttp://labs.trolltech.com/blogs/2009/11/23/qtscript-in-46/
  • Win9xサポートコードの削除による軽量化

XMLスキーマバリデーション

DOMアクセスよりもかなり前から望まれていた機能で,XMLスキーマバリデーションができるようになりました。

3Dイネーブラー

Qtでは,3DはOpenGLを使って実装します。古くは,OpenGLをそのまま使うようなものでしたが,Qtの2D機能と併用できるようになったりと,Qtで使いやすくする機能が追加されて来ました。それをさらに押し進めて,より使いやすくしようとする試みです。リファレンスには,どのようなものが3Dイネーブラーかがはっきりとわかりやすく書かれていませんが,詳しい使い方も含めた以下の記事がQt Labs Blogsに載りました。

Qt Labs Blogs >> Qt/3D features in Qt 4.6
labs.trolltech.com/blogs/2009/11/10/qt3d-features-in-qt-46/">URLhttp://labs.trolltech.com/blogs/2009/11/10/qt3d-features-in-qt-46/
Qt Labs Blogs >> Qt/3D brings Qt-style coding to 3D
labs.trolltech.com/blogs/2009/11/18/qt3d-brings-qt-style-coding-to-3d/">URLhttp://labs.trolltech.com/blogs/2009/11/18/qt3d-brings-qt-style-coding-to-3d/

Qtのロードマップ

ハイブリッド開発

QtではすでにQtWebKit,QtScript,QtXmlPatterns,QtNetworkを組み合わせ,QObjectをWebのスクリプト中で使えるようになっています。これをさらに使いやすくし,ウェブ技術とQt C++を結合して,強力で拡張性の高いものにする試みです。以下の 2 つのハイブリットアプリケーション開発を可能にします。

  • ①Qt C++アプリケーションで,HTML,CSS,JavaScriptを使用した開発。
  • ②ブラウザ/スタンドアローン ウェブランタイムアプリケーションで,Qt C++で記述されたサービス,宣言型 UI を使用した開発。

Qtモービリティ

Qt Extended(旧Qtopia Phone Edition)がQt 4.5のリリース前後に廃止され,その携帯機器向けの機能が別の形でリリースされることと成っていました。Qtモービリティには,それらの機能だけではなく,現在の携帯機器に必要な機能が実現される予定です。Symbian,Maemo,Windows Mobile,組込みLinuxだけではなく,デスクトップでも使うことができます。開発中のAPIは,ロケーション,メッセージング,コンタクト,システム情報,マルチメディア,ベアラ管理,センサーなどです。

テクノロジープレビューパッケージが Qt 4.6 のリリースと同時に出ています。

Qt Labs Blogs >> Qt Mobility Project - Technology Preview Package
URLhttp://labs.trolltech.com/blogs/2009/12/01/qt-mobility-project-technology-preview-package/

Qt Labsにこのプロジェクトの説明があります。

Qt Labs - Projects/QtMobility
URLhttp://labs.qt.nokia.com/page/Projects/QtMobility

Qtツール

Qt Creator

すでにSymbianがサポートされ,Maemoもサポートされる予定です。個人的には,Qt for Embedded Linux向けにもサポートされ,リモートデバッグもできるようになって欲しいです。Qt Creator 1.3.0 では,カーソル下のシンボルのリネイムやシンボルの使用箇所の検索といった,リファクタリング機能が追加されています。

プロジェクトバウハウス(Bauhaus)

現在リリースされてるアニメーションフレームワークのための開発ツールは,Qt CreatorによるQMLの編集とその実行機能が主なものです。このプロジェクトでは,グラフィカルデザイナーとプログラマーの双方が使え,QMLを視覚的にも扱えるようにして,QML と C++ の両方が使用でき,ステート編集,容易なレイアウト編集,視覚的なプロパティ編集,そしリファクタリングもしやすいツールを目指しています。

Visual StudioアドインとEclipseインテグレーション

保守だけではなく,継続して開発予定です。

Lighthouse

Qt for Embedded Linuxで,QWSを使わない実装をし,いろいろなグラフィックスシステムへの移植性を高めようというプロジェクトです。その結果として,たとえばOpenGL ESやOpenVGによるアクセラレーションをウィジェットの描画に効かせられるようになります。

リポジトリと使用方法の手引きは以下の通りです。

lighthouse in qt-developers - Qt by Nokia
URLhttp://qt.gitorious.org/+qt-developers/qt/lighthouse
Getting started with Lighthouse
URLhttp://qt.gitorious.org/qt/pages/GettingStartedWithLighthouse/

著者プロフィール

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

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

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