フィンランドNokiaのQt Development Framework部門によって、ドイツ・ミュンヘンで開催された「Qt Developer Days 2009」。Trolltech時代からのユーザーに混じって、会場ではQtを使い始めたばかりという開発者も多数見られた。UIへのフォーカスやクロスプラットフォーム開発へのニーズが高まっているようだ。

Matthias Ettrich氏

会期中、参加者の関心を集めたのが、最新のUI記述言語「QML(Qt Markup Language)」だ(QMLは開発コード名)。KDEの設立者としても知られるMatthias Ettrich氏(Nokia Qt Development Frameworksの研究開発部門)が初日の基調講演で、「開発者とデザイナーのギャップを埋める」として披露した拡張機能だ。

15年前と比べると、PCをはじめとしたグラフィックのパワー、画面、インプットメソッドなどは飛躍的に進化している。利用の目的も、以前のオフラインでのコンテンツ作成から、コミュニケーションやコラボレーション、遊びの要素が加わるなど大きく変化している。ショッピングの窓口としての役割も持つ。Ettrich氏は背景を説明しながら、「UIはもっと、さらに重要になる」と述べる。

UIでは、少し前からウィジェットが人気だが、「ウィジェットを使ったUIは静的で分厚く、ロテーション、ストレッチ、オン/オフなどが難しいなどの難点がある」とEttrich氏。根本的、長期的解決にはならないとした。

UIが重要になる新しい時代、何が必要なのか? Ettrich氏は、「デザイナーと開発者が直接作業できるツール」と述べる。「Qtの回答はQML」とEttrich氏。

QMLはQt向けの新しい宣言的言語拡張だ。シンプルな宣言的言語とJavaScriptで構成されており、コンポーネント、ビュー、状態遷移、アニメーション、エフェクトなどのUIの要素を直接マッピングできる。もちろん、Qtのパワフルさや柔軟さはそのまま利用できる。QMLにより、開発者はUIだけに集中できるという。さらには、直感的、シンプル、容易さなどの特徴により、デザイナーでも利用できるとEttrich氏は自信を見せる。「一度QMLを使うと、C++でUIを作成する気にならない」(Ettrich氏)。

QMLは、QtがLabsで進めているプロジェクト「Kinetic」の一部となる。Kinetic全体については、NokiaのThierry Bastian氏がセッションで紹介した。

Kineticは、動的、スムーズ(なめらか)、アニメーションなどの特徴を持つ次世代UIを新しい方法で作成するための研究プロジェクトだ。アニメーションAPI、状態遷移、宣言的UI、エフェクト効果の4つのモジュールで構成される。UIでデザインの重要性は高まっているが、C++は簡単ではなく、デザイナーの要件をC++で実装するのは難しい。シンプルで宣言的な言語が必要という。

最初のモジュールとなるアニメーションAPIは、Qtのアニメーションをシンプルにし、カスタムアニメーションの作成を可能にする。イージング曲線作成セット、同期化によるタイマー統一などの機能の提供を目指す。シンプルなアニメーションから複雑なものまでをカバーできるという。また、Qtとの統合により、Qtのオブジェクトプロパティと連携しアニメーションのグループ化もできるという。

状態遷移では、ステートマシンAPIにより、複雑なアプリケーションロジックを簡素化する。コードを減らせるため、メンテナンスとドキュメンテーションを改善するという。

Ettrich氏はスピーチ中、IDE「Qt Creator」を使ってQMLのデモを披露した

QMLとQt Creatorで作成したUI

ステートマシンの実装は、HarelのステートチャートとSCXMLをベースとしており、Qtのコア機能と密に統合するという。シグナルとイベント向け遷移、ステートの変化をベースとしたアクションなどを特徴とする。UIとの関係は、各ステートがアイテムのプロパティバリューを設定し、ステート間の遷移をアニメーション化できるという。

宣言的UIは、UIの"何を(what)"ではなく、"どうやって(how)"を表現することを目標とする。開発者とデザイナーのコラボレーションをスムーズにし、開発サイクルを短縮できる。Qtの既存ウィジェットモデルを補完する位置づけで、QtのC++ APIと密に連携可能とすることで、他の製品との差別化も狙う戦略的なプロジェクトのようだ。Bastian氏は、モバイル向けの最適化も特徴に挙げた。

状態遷移をもつオブジェクトツリーで、カスタムコンポーネントを容易に作成できる。単一の要素をベースとし、ネイティブのQtオブジェクトとのやりとりも容易だ。

エフェクトでは、バージョン4.6でオパシティ、ドロップシャドウなどの新しいエフェクトを追加する。QGraphics、QGraphicsItem、QWidgetなどを強化、ハードウェアアクセラレーションをより透明性のある形で活用できる。独自のエフェクトも容易に作成できるという。

アニメーションAPI、状態遷移、エフェクトは「Qt 4.6」に搭載される。QMLは、これら3つのモジュールをラッピングしてアプリケーションをさらに動的にする、という位置づけとなる。現時点では、QMLの提供について予定はないが、Bastian氏によると「Qt 4.7」で導入を目指して開発を進めているという。