Qt 5.8 をリリースしました

この記事は The Qt BlogQt 5.8 released を翻訳したものです。

執筆: Lars Knoll, 2017年1月23日

本日 Qt 5.8 をリリースいたしました。qt.io からダウンロードしていただけます。Qt 5.8 と同時に Qt Creator 4.2.1 もリリースし、Qt for Device Creation も更新いたしました。Qt 5.8 には数多くの新機能が追加され、規模の大きなリリースとなりました。ここでいくつかの紹介をしたいと思います。

Qt Lite

Qt 5.8 のメインの新機能の1つが、Qt をより柔軟に簡単にカスタマイズできるようになったことで、特に組み込み機器に向けた機能になります。Qt Lite はこれらを実現するためのプロジェクトのコードネームになります。

私たちの目標は、みなさんのニーズに合うように Qt をカスタマイズし、みなさんのプロジェクトでは必要のない Qt の中の機能を簡単に取り除けるようにすることでした。コンパイル後の Qt のライブラリのサイズを大幅に削減することにより、最終的な成果物のサイズをコンパクトにすることが可能になりました。

この機能の実現には Qt の configure に関わるコードのほとんどの部分の書き直しが必要で、実に長い道のりでした。Qt の configure には Windows と Unix 系の二つのバージョンが存在し、不整合も多々ありました。15年に渡って成長してきたこのソースコードを今回すべて整理いたしました。

結果として、Qt の configure のシステムは1つに統合され、様々なパーツのカスタマイズが可能になりました。Qt のユーザーがより柔軟に Qt のカスタマイズができるようになっただけではなく、Qt 内部でカスタマイズに対応するための処理も非常に綺麗に書くことができるようになりました。

この新しい仕組みにより、みなさんのユースケースに合うように Qt をビルドすることができるようになりました。Qt の中の不必要な機能をすべて除外することができ、これは組み込み機器上での ROM や RAM の消費量の削減につながります。サイズ削減の目安として、以下のグラフではとてもシンプルな QML アプリケーションの実行に必要な最小限の Qt のサイズを表しています。

Size of sample app using Qt 5.6 and a lite configuration of Qt 5.8

ご覧のとおり、Qt 5.8 では Qt 5.6 と比較して 60% 以上バイナリサイズを小さくすることができるようになりました。

Qt Wayland Compositor

Qt 5.7 でテクノロジープレビューとして追加された Qt Wayland Compositor API が Qt 5.8 にて正式対応となりました。このモジュールを使用することで、独自の Wayland コンポジタの開発がとても簡単になります。

Qt Wayland Compositor により、独自のホームスクリーンやアプリケーションマネージャーの開発がとても簡単になります。これにより、独自の UI を持つ複数のアプリケーションによって構成される、高機能で比較的複雑な組み込みシステムの開発が可能になりました。Qt Wayland Compositor では複数のスクリーンの制御も透過的に簡単に行うことができます。Qt Wayland Compositor は C++ と QML の両方の API を提供しています。

詳細は API documentation や examples、簡単なチュートリアルが紹介されている こちらのブログの記事 などをご覧ください。

Communication and Networking

Qt Serialbus も Qt 5.8 にて正式対応となりました。これにより Qt の API にてデバイスのバスプロトコルや通信に対応することが可能になります。API は比較的標準的なものにはなっていますが CAN や Modbus にも対応しています。

Qt Network および Web Sockets では TLS PSK 暗号スイートのサポートが追加されました。また、QNetworkAccessManager は Diffie-Hellman パラメータの設定と HTTP/2 に対応いたしました。

Qt Bluetooth では macOS と iOS にて BLE Peripheral の対応がなされ、WinRT では BLE Central support の対応が追加されています。

Qt 5.8 にはさらに Qt Network Authorization という新しいモジュールがテクノロジープレビューとして追加され、現時点で OAuth 1 と 2 の認証に対応しています。

Qt QML and Quick

Qt QML と Qt Quick にも様々なことが起こっています。QML エンジンでは QML と JS ファイルのバイナリ表現をディスク上にキャッシュする仕組みが取り入れられ、アプリケーションの起動時間が短縮され、メモリの消費量も削減できるようになりました。現在商用版のみで提供している Qt Quick compiler は、将来的にこのキャッシュの仕組みにマージされ、よりタイトに統合され、ハイパフォーマンスで動作するようになる予定です。

Qt Quick の Scene Graph も大幅なリファクタリングが行われ、OpenGL への依存が軽減されました。これにより、Qt Quick を Direct3D 12 のバックエンドで動かしたり、Vulkan のような他のバックエンドの作成の可能性が広がりました。

さらに、Scene Graph には画面の一部のみの表示の更新の対応が追加され、特に Qt Quick 2D renderer を利用した際のパフォーマンスが大幅に改善されました。

また、このシーングラフの改善の機会を利用して、商用向けの別プロジェクトとして存在していた Qt Quick 2D renderer を Qt Quick 自体に組み込むことにしました。というわけで、Qt 5.8 以降は Qt Quick 2D renderer は単独のプロジェクトとしては存在しなくなりました。

マウスやタッチのイベントのハンドルに関しても内部的に QQuickPointerEvent というクラスを共通で使用するような大幅な変更が行われました。これは今後の改善に向けた第一歩ですが、Qt Quick で作られたコードへの影響はありません。

Qt Quick Controls 2 にも Dialog や RoundedButton や ToolSeparator などの新たな部品が追加されています。Material および Universal スタイルに新たなエフェクトを追加するとともに、"system" というテーマも追加しました。

Qt Webengine

毎回行っていることではありますが、Qt Webengine で使用している Chromium のバージョンを更新し 53 にしました。Qt 5.8 で新たに追加された機能の1つに印刷のサポートがあります。QML からカスタムダイアログやツールチップ、コンテキストメニューの表示、ソース表示、いくつかの chrome: スキームの対応など様々な小さな新機能も追加されております。

Qt SCXML

Qt SCXML は Qt 5.8 にて正式対応になりました。このモジュールを使用することで、SCXML ベースのステートマシンを簡単に Qt に取り込むことが可能になります。これは Qt Statemachine Framework 向けの機能と、SCXML の C++ のコンパイラとランタイムを提供し、SCXML ベースのステートマシンをアプリケーションからロードすることが可能になります。

Qt Creator 4.2 では SCXML のステートチャートの編集もできるようになりました。

[embed]https://www.youtube.com/watch?v=9xqhq9nDiOg[/embed]

New Technology Previews

Qt 5.8 にテクノロジープレビューとして追加された新機能を紹介します。

Qt は Apple の tvOS と watchOS 上で動作が可能になりました。すでに iOS で対応している機能のほぼすべてが tvOS でも対応していますが、watchOS のサポートは制限があり、 GUI 以外の部分のみの対応となります。

文章の読み上げ機能向けの Qt Speech も追加されました。

Other improvements

Qt 5.7 にて正式対応となった Qt 3D について、Qt 5.8 ではモジュールの安定性にフォーカスをしました。数多くのバグが修正され、パフォーマンスも改善しました。

Qt Charts には Candlestick が追加されました。Qt Gui モジュールに含まれていた QOpenGLTextureBlitter を公開 API にしました。

Qt for Device Creation でサポートしている組み込みプラットフォームでは eglfs QPA プラグインを使用したマルチスクリーンシステムの対応が追加され、また、90度、180度の回転にも対応しました。

最後に、Qt 内部のコードにも C++11 の機能を利用した非常に多くの改善やコードの整理、近代化が行われています。

Thanks to the Qt Community

Qt 5.8 には数多くの新機能や改善が含まれています。その中には Qt を支えるすばらしいコミュニティのみなさんの貢献がなければ実現できなかったものも含まれています。新機能の追加やバグの修正、ドキュメントの記述、サンプルコードの充実やバグ報告など様々な形で Qt に貢献してくれた企業や個人のみなさんにこの場でお礼を申し上げたいと思います。本当にありがとうございました!

Qt 5.8 の詳細や動画は こちら でもご覧いただけます。みなさんの Qt Account ページから、もしくは www.qt.io/download から今すぐ Qt 5.8 をダウンロードしてください。このリリースを気に入ってくれたら幸いです。


Blog Topics:

Comments