Qtブログ(日本語)

Qt 5.15 LTSリリース

作成者: Qt Group 日本オフィス|Jun 5, 2020 3:11:07 AM

本記事は「Qt 5.15 LTS Released」の抄訳です。
The Qt Companyは5月26日に、Qt 5.15 LTSをリリースしました。Qt 5.15はQt 5シリーズの最後のfeature releaseです。そのため、Qt 5.15は少々特別であり、次のメジャーリリースであるQt 6に向けた入念な準備がなされています。Qt 5.15は通常どおりすべてのユーザーがテクニカルサポートを利用できますが、Qt 5.15は新しいQt for Small Businessを含むすべての商用ライセンス所有者に3年間の長期サポートも提供します。

Qt 5シリーズの最後のリリースとして、Qt 5.15で進行中のプロジェクトでも、将来的に簡単にアップグレードできる優れたリリースであることを確かめて今回のリリースに至りました。通常通り、以前のQt 5リリースと完全な下位互換性があります。多くのバグの修正が行われ、Qt 5.15はQt 5シリーズのうち、最良かつ最も安定したリリースです。

Qt 5.15は、Qt 6への足がかりとしても機能します。Qt 6では、Qtの基本的な点でさらに大幅な変更が行われますが、コードベースをQt 5からQt 6にできるだけ簡単に移行できるように努めています。その移行を支援するために、Qt 6で削除される機能に非推奨のフラグを立てました。 5.15で非推奨となった機能に関する警告を有効にして修正することで、コードベースをQt 6に移行するための下準備をすることができます。

しかし、Qt 5.15には独自の機能がたくさんあります。それらを確認したい場合は、Tuukka Turunenと私(Lars Knoll)が講演する以下ののQt 5.15 LTS Webセミナーに是非参加してください。

 

 

3DグラフィックAPIの抽象化

おそらくグラフィックス側で最も重要な変更が加えられたといえるでしょう。ただし、変更の多くは内部で行われており、ユーザーのすぐ目に見えるものではありません。昨年、グラフィックスタックのアーキテクチャの全面的な改良に取り組んできました。このアップグレードはQt 6の中心になる予定ですが、オプトインとしてQt 5.15ですでに利用可能です。

Qt 5では、OpenGLを3DグラフィックスのクロスプラットフォームAPIとして使用できるという前提でグラフィックススタックを構築しました。過去数年にわたって、業界の大きな変化により、3Dグラフィックを使用するアプリケーションの開発と展開がより複雑になりました。Apple社はMetalの開発を開始し、macOSとiOSでのOpenGLサポートを少し前に廃止しました。Khronosグループは、OpenGLからVulkanへの置き換えに取り組んでおり、VulkanはAndroidとLinuxに移行しています。MicrosoftのDirect 3D 12は全く新しいAPIであり、以前のDirect 3Dバージョンとは互換性が一切ありません。同時に、OpenGLはしばらくの間なくなることはありません。

Qtのクロスプラットフォーム性を引き続き確かなものにするため、あらゆる場所で機能するソリューションが必要です。それを実現するために、1年以上前に、これらすべてのさまざまなAPIの抽象化レイヤーに取り組み始めました。これはQt Rendering Hardware Interface (RHI)と呼ばれ、OpenGLだけでなく、Direct 3D、Metal、およびVulkan上でQt Quickアプリケーションを実行するために使用できます。Qt 5.15ではテクノロジープレビューとしてサポートされており、環境変数を介して有効にすることでQt RHIの使用を選択できます。Qt 6では、このレイヤーはQtのアーキテクチャの非常に中心的な部分を形成します。

RHIの詳細については、このトピックに関するLaszloのブログ投稿(ここここ、およびここ)を参照してください。

Qt Quick 3D 

Qt 5.15のもう1つの重要な新機能は、グラフィックスにも関連しています。Qt 5.0時代に戻って、Qtのアーキテクチャの基礎としてQt Quickを導入しました。その焦点は、アニメーション化されたタッチベースの2Dユーザーインターフェイスの作成を簡素化することでした。現在、3DコンテンツのQt Quickベースアプリケーションへの統合にも使いやすさを拡張したフルサポートのQt Quick 3DがQt 5.15に付属しています。Qt Quick 3Dを使用すると、QMLで3Dシーンを簡単に定義し、メッシュ、ライト、マテリアルを定義して、すべてを2D UIとシームレスに組み合わせることができます。

さまざまなテクノロジを使用して2D部品と3D部品を別々に開発する必要があった場合でも(Qt 3D、Qt 3D Studio、または未加工のOpenGLを使用するケースなど)、1つの統合ソリューションをすぐに利用できます。

こちらのデモでは、Qt Quick 3D 5.15のさまざまな機能をテストできます。たとえば、ライトのタイプと数、モデルの複雑さと数、テクスチャのサイズ、マテリアル、アンチエイリアスと品質などを変更できます。 これにより、たとえば、描画されるモデルの数が、モデル内の三角ポリゴンの数よりもハードウェアのパフォーマンスに影響するかどうかをすばやくテストできます。
デモビデオも合わせてご覧ください:

 

Qt Quick 3Dは、Qt 5.14でテクノロジープレビューとして導入されました。Qt 5.15のフルサポートバージョンは、後処理効果のサポート、カスタムジオメトリ用の新しいC ++ API、回転用のQuaternionベースのAPI、スポットライトのサポートなど、多くの追加機能を利用しています。3Dシーン内で2D Qt Quickをより簡単に使用できるようになりました。舞台裏での多くの作業のおかげで、全体的なパフォーマンスが向上しています。詳細については、Qt Virtual Tech ConのAndyの講演をご覧ください。

Qt Design Studio 1.5

Qt Quick 3Dは、ユーザーインターフェースに2D要素と3D要素の両方を含むカッコいいアプリケーションを作成するための膨大なオプションを追加します。ご存じかもしれませんが、Qt Design Studioを介してデザイナーがすべての機能を利用できるようにするために、かなりの労力を費やしてきました。そのため、Qt Quick 3Dのすべての機能が、今回リリースされたQt Design Studio 1.5でもサポートされました。詳細については、Qt Design Studioの別のブログ投稿をご覧ください。

Qt QML 

Qt QMLでは、Qt 6の準備に重点を置きました。これにより、Qt 5.15の便利な一連の新機能が実現しました。

QMLに、コンポーネントの「必須」プロパティの概念が追加されました。これらは、コンポーネントのユーザーが設定する必要があるプロパティです。コンポーネントをQMLファイルにインラインで指定できるようになりました。また、型を登録する新しい宣言的な方法も追加しました。

qmllintツールが改善され、QMLコードベースで発生する可能性のある問題に関する警告が大幅に改善されました。QMLコーディングスタイルガイドラインに従ってQMLファイルをフォーマットするのに役立つqmlformatツールも新たに追加しました。

最後に、Qt for MCUsで使用されているQMLとQt 5.15に互換性があることを確認する作業にも取り組みました。

Qt Quick 

Qt Quickにもいくつかの新機能が追加されました。Image要素に色空間のサポートを追加し、Qt Quick ShapesにPathText要素を新たに追加しました。ポインターハンドラーには、デスクトップシステムでマウスカーソルの形状を設定する新たなcursorShapeプロパティがあり、新たなHeaderViewアイテムを使用することにより、TableViewに水平または垂直のヘッダーを簡単に追加できます。

その他の改善

 デスクトップユーザーにとってQt5.15でクライアント側のウィンドウ装飾をカスタマイズ可能にしたのは非常に便利なものとなるでしょう。これにより、独自のウィンドウ装飾を定義し、カスタムコンテンツをウィンドウタイトルバーに配置できるようになります。

Qt 5.14でテクノロジープレビューとして導入したモジュールであるQt Lottieがフルサポートされるようになりました。このモジュールを使用すると、After EffectsアニメーションをQtベースのアプリケーションに統合できます。 Qt Lottieの詳細については、このウェビナーとこのブログ投稿をご覧ください。

Qt WebEngineは、Qt 5.14のChromium 77からChromium 80に更新され、そのChromium更新からのすべての新機能が付属しています。

Qt 3Dは、プロファイリングとデバッグのサポートが改善され、いくつかの小さな新機能が追加されました。

Qt Multimediaは、複数のサーフェスへのレンダリングをサポートするようになりました。 Qt GUIでは、画像のスケーリングと変換のルーチンが多くのユースケースに反映してマルチスレッドになりました。

Qt NetworkがTLS 1.3セッションチケットと設定可能なタイムアウトをサポートするようになりました。

Qt Coreでは、QRunnableとQThreadPoolがstd :: functionと連携できるようになり、新しいQFile :: moveToTrash()メソッドを使用して、クロスプラットフォームの方法でアイテムをゴミ箱に移動できるようになりました。

最後に、Androidのネイティブファイルダイアログのサポートも追加しました。

さらに詳しく

Qt 5.15とQt 6に関する多くの情報は、下記のQt Virtual Tech Summitの講演(英語)でご覧いただくことができます。

 

サポート期間

Qt 5.15はすべてのユーザーにご利用いただけるようになりました。オープンソースユーザーの場合、Qt 6のリリースまで、他の通常のQtリリースと同じようにサポートされます。商用ライセンスをご利用のお客様の場合、Qt 5.15は3年間長期サポート(LTS)され、Qt 6のリリース以降の定期的なバグ修正リリースが提供されます。

Qt 5.9は5月31日以降サポートを受けられなくなることにご注意ください。Qt 5.15を簡単にアップグレードできるようにするために多くの時間を費やしましたが、必要に応じてサポートを拡張するオプションがあります。Qt Virtual Tech ConによるAndy Shawの講演をご覧になり、オプションの詳細を確認するか、質問がある場合はお問い合わせください。

最後に、このリリースを可能にし、それに貢献してくれたすべての皆様に感謝します。

Qt 5.15をどうぞお楽しみください!