Qt 5 の未来は明るいブログ

Qt 5.2 リリース | 未だかつてなく Qt

Published: 2013-12-13 / Last modified: 2013-12-13

この記事は 2013年12月12日に Qt Blog に投稿された「Qt 5.2 Released | The Best Qt Yet」を 勝手に 日本語訳したものです。

Qt 5.2 を正式にリリースしました。今年7月にリリースした Qt 5.1 では Qt の Android 版と iOS 版を皆さんに紹介しました。この時期に開始した Qt の描画性能の向上に関する大幅な改善は既に完了しました。この6ヶ月は、Qt 5.2 の開発やリリース作業、特に Android 対応と iOS 対応に力を注ぎ込んできました。

モバイルは Qt にとって大きなチャンス

Qt 5.2 では Android、iOS、BlackBerry、Sailfish/Jolla、Ubuntu Mobile といったアプリ開発とマーケットに対応し、「Qt はモバイルに対応している」と胸を張って言うことができるようになりました。これまで対応してきたデスクトップアプリ開発、組み込み開発に加え、多くのモバイルプラットフォームの対応した Qt は、ネイティブのクロスプラットフォーム開発フレームワークの決定版と言えるでしょう。Qt 5.2 では、既存のデスクトップアプリや組み込み向けのアプリケーションを簡単にスマートフォンやタブレットで動かせるようになります。

モバイルも含めた完璧なクロスプラットフォーム対応を約束する証として、みなさんにプレゼントを用意しました。それは、Qt for WinRT のテクノロジープレビュー版です。このプレビュー版は開発ブランチをベースにしているため、Qt 5.3 に入る予定の新機能もいくつか含まれています。

Qt の Android 版と iOS 版

Android も iOS もほとんどの Qt の API は Qt 5.2 の時点でサポートされていました。しかし、新しいプラットフォームに対応するということで、いくつかの例外もあります。Qt WebKit は Android にはまだ対応できていません。iOS では App Store の制限により対応ができません。しかし、Qt の API を通じてウェブのコンテンツを簡単に組み込むための方法を現在開発中です。それまでの間はそれぞれのネイティブのやり方でウェブのコンテンツを扱うことを推奨します。Qt BluetoothQt NFC も未対応ですが、今後のリリースで対応していく予定です。

その他の API はすべて(Qt QuickQt SensorsQt Multimedia も含めて)完全に対応しているため、Qt API だけで多種多様なアプリケーションの開発が可能になっています。万が一 Qt の API では未対応なものがあったとしても、それぞれのプラットフォーム固有の API を使うことができます。Android では、Java Native Interface (JNI) を扱うための API を Android Extras モジュールで提供しています。詳細は Implementing In-app purchasing on Android の記事をご覧ください。

Android、BlackBerry、Sailfish 向けの Qt アプリケーションの開発は Qt Creator を使ってすべてを行うことができます。Qt Creator の iOS 開発の対応は experimental です。

10月に開催した Qt Developer Days Berlin で、Qt 5.2 と一緒に Qt Mobile Edition を発表しました。この Qt Mobile Edition はモバイルアプリ開発専用のパッケージで、フラグメント化したモバイルマーケットに1つのテクノロジーで対応することができるようになっています。

これらのモバイル対応に加え、既存のプラットフォームについても開発を進めてきました。Qt 5.1.1 以降、1,500 以上のバグが修正されています。デスクトップ向けでは、様々なライブラリに対して多くの改善がなされ、プラットフォーム特有の機能をサポートするための専用モジュールも追加されています。

デスクトップ対応の大幅な改善

Qt のデスクトップ対応は Qt の要であり、毎年のように対応プラットフォームを増やすことができるのもこのデスクトップのおかげなのです。というわけで、様々なデスクトップ向けの改善が Qt 5.2 でなされました。

  • デスクトップ向けの Qt Quick Controls を改善し、伝統的な QWidget ベースのアプリケーションに Qt Quick を簡単に埋め込めるようにしました。
  • Qt Widgets モジュールに多くの改善やバグフィックスがなされました
  • ユーザー定義のキーバインディングに簡単に対応できるよう、QKeySequenceEdit クラスが追加されました
  • すべてのデスクトップ(と Android)で Accessibility に完全に対応しました
  • Windows のネイティブコードと連携するための Qt Windows Extras モジュールが追加されました
  • Mac OS X のネイティブコードと連携するための Qt Mac Extras モジュールが追加されました
  • QTimeZoneQCollator の追加により、タイムゾーンとロケールのサポートが強化されました
  • Qt Bluetooth により Linux 上で Bluetooth を扱えるようになりました
  • OS X Marverics に対応するため様々な改善がなされました

これらにより、Qt 5.2 はデスクトップアプリケーションの開発環境としても、より素晴らしいものになりました。

Qt QML と Qt Quick の大改造

水面下では大規模な変更が行われてきました。Qt QML モジュールを動かすための JavaScript エンジンとしてこれまで使ってきた V8 の採用を廃止し、新しいエンジンを導入しました。これは QML を動かすことをメインに作られた Qt のためのまったく新しいエンジンになります。「インタープリタモード」に対応しているため、JIT が対応していない CPU アーキテクチャや、iOS のように App Store のポリシーによってそもそも JIT が許可されていない環境でも動作させることが可能になっています。以前の Qt では V8 エンジンの移植の困難さにより、Qt と JavaScript の境界でのパフォーマンスの問題に悩まされてきました。新しいエンジンでは Qt のデータ型をそのまま使用することでこの問題は解決され、Qt のコードとの連携も簡単にできるようになりました。

様々な変更の総合的な成果として、QML のほとんどのユースケースにおいてパフォーマンスの改善を感じることができるはずです。しかし、Qt 5.2 では基礎の部分にのみ注目してきたため、大量の JavaScript のプログラムを実行するというケースでは Qt 5.1 よりも遅くなっている可能性があります。Qt 5.2.1 ではさらなるスピードの改善を行う予定で、Qt 5.3 に向けた新たな計画も練っています。

Qt Quick についても様々なことがありました。Scene Graph の描画エンジンも完全に書き直され、描画のパフォーマンスの改善 や、アプリケーション自体の実行に割く CPU 時間を増やすことができました。さらに、QQuickView は専用のスレッドで描画を行うようになり、複数のシーンがブロックしあうことは無くなりました。

Qt Quick には Animator という新たな型が追加され、たくさんのアニメーションを完全に描画スレッド側で実行できるようになりました。メインスレッド上でなにか膨大な計算をしている場合でもこれらのアニメーションはブロックされません。

Qt Creator 3.0 やその他

Qt 5.2 は Qt Creator 3.0 と一緒に配布されます。この最新の Qt Creator ではモバイル開発の対応が改善し、Qt Creator プラグインの安定性も向上しました。サードパーティーによる Qt Creator プラグインの開発や、将来の拡張が加速されるでしょう。

Qt 5.2 にはいくつかのモジュールや API が追加されました。大きなところでは、Qt Positioning モジュールによる位置情報のサポートや、Qt Bluetooth モジュールによる Linux と BlackBerry での Bluetooth のサポート、 BlackBerry での NFC のサポート、タイムゾーンと Unicode照合アルゴリズム、それから WindowsMacAndroid Extras モジュールの追加があります。

Qt WebKit も今夏の WebKit のバージョンをベースにメジャーアップデートが行われました。新たに CSS Blending や Geolocation、Web Notifications、ガベッジコレクションのスレッド対応などがサポートされました。

Qt in Action

私たちは実際に動作する Qt Quick アプリケーションをマーケットプレイスに用意しました。「Quick Forecast」はウェブ API を使用したお天気アプリで、Qt Quick Controls を使って実装しています。Android の方は Google Play から、iOS の方は App Store からインストールして試してみてください。

新しいプラットフォーム向けの開発について学ぼう

2014 年のはじめに、我々は Qt Mobile Roadshow を世界中のいくつかの都市で開催いたします。このイベントは開発者向けの1日間の無料イベントで、Qt を使用したクロスプラットフォームのモバイルアプリケーション開発のはじめかたを学ぶことができます。開催地と開催日は こちら をご覧ください。

Qt for Android と iOS のウェブセミナーも企画しています。ハンズオンを通して開発の基礎を学ぶことができるでしょう。

  • Qt on iOS ハンズオン 〜 2013/12/17
  • Qt を用いたマルチスクリーン開発 | ビジネスオーバービュー 〜 2014/1/9
  • Qt on Android ハンズオン ~ 2014/1/16

ウェブセミナーに関する情報は http://qt.digia.com/webinars にて登録をすることで受けとることができます。

ダウンロード

http://qt-project.org/ダウンロードページ からダウンロードをお願いします。Qt Enterprise 30-day free trial のお申し込みは http://qt.digia.com/ からお願いします。Qt Enterprise のカスタマーの方は、カスタマーポータル から直接ダウンロードが可能です。もしモバイルのみをターゲットとしているのであれば、Qt Mobile の 30-day free trial を http://qt.digia.com/Try-Buy/Choose-Plan/ からダウンロードすることも可能です。

謝辞

最後となりましたが、至上最高の Qt 5.2 に対して貢献していただいたみなさんに心から感謝をいたします。たくさんのコミュニティの方々がこのリリースのために力を尽くしてくれました。この場をお借りし、KDAB 、Bogdan Vatra、Necessitas プロジェクトのみなさんの大きな貢献に対して感謝を述べたいと思います。また、数多くの楽しい有益な貢献を行っていただいた KDE コミュニティと、様々なことに対応してパッケージをまとめ上げたリリースチームにも感謝をしています。

私たちが Qt 5.2 を開発したのと同じように、みなさんが Qt 5.2 での開発を楽しんでくれることを期待しています。それでは、よいお年を!

Trend