Qtブログ(日本語)

Qt 6.4 がリリースされました

作成者: Qt Group 日本オフィス|Nov 2, 2022 9:34:56 AM

本稿は「Qt 6.4 Released」の抄訳です。

Qt の最新バージョン Qt 6.4 がリリースされました。この最新バージョンでは、新しいプラットフォームがサポート対象に加わり、多くの新機能(一部はテクノロジープレビュー(TP))が追加され、また多くの既存機能の改善が行われました。まず、最大のハイライトから見ていきましょう。

WebAssembly

Qt 6.4 よりWebAssembly がテクノロジープレビューからサポート機能に移行しました。Qt for WebAssembly により、Qt 開発者は既存のスキル、そして多くの場合既存のコードを活用して Web をターゲットにすることができます。WebAssembly プラットフォームをターゲットとしたアプリケーションは、ほとんどのモダンな Web ブラウザで実行でき、他の Web コンテンツと同じように簡単に展開をすることができます。ネイティブに近いパフォーマンスと、Qt Quick および Qt Quick 3D の豊富な UI および 3D 機能により、重いデータ処理や高度な視覚化を必要とするソリューションも簡単に Web 上に構築することができるようになりました。

正式なサポートとなった一方で WebAssembly は、Qt がサポートする他のプラットフォームとは少し状況が異なっていることも注意してください。アプリケーションはブラウザのサンドボックスで実行され、ローカルマシンやオペレーティングシステム内のサービスへのアクセスには一定の制限が設けられています。また、ブラウザ自身との連携が必要な環境で動作をしています。 Qt は、プラットフォームとの統合と専用 API の提供により、このプラットフォームの特殊性の抽象化を試みています。最良の結果を得るためには、このプラットフォームにおける特別な技術的要件をよく理解してください。WebAssemblyのウェビナーへの申し込みもできます。

WebAssemblyは進化の早いプラットフォームであり続けており、アプリケーション開発の業界に大きな影響を与える可能性を秘めています。私たちは WebAssembly をサポートし、WebAssembly 用に開発された Qt アプリケーションがエンドユーザに素晴らしいユーザ体験を提供し続けられるよう、Qt の改善と最適化を継続的に行っていくことを約束します。

新規および更新されたモジュール

Qt 6.4 では、新しいモジュールがテクノロジープレビュー(TP) として追加され、また、これまで Qt 6 では利用ができなかったモジュールの 1 つが復活をしました。

iOS スタイルの Qt Quick (TP)

Qt Quick Controls で開発されたユーザーインターフェイスは、Windows と macOS ではネイティブのスタイルが、Android では Material スタイルが自動的に使用されます。Qt 6.4 では、iOS で動作する Qt Quick アプリケーション用のネイティブなスタイルが追加されました。iOS スタイルは iOS プラットフォームのダークモードとライトモードをサポートし、macOS でも使用できるため、macOS の快適な開発環境からそのスタイルに最適化された UI を簡単に開発することができます。

Qt HTTP Server (TP)

この新しいモジュールにより、あらゆる Qt アプリケーションに HTTP サーバを簡単に追加することができるようになりました。このサーバは、HTTP 1.1 を部分的にサポートし、Transport Layer Security プロトコルを介したセキュアな通信をサポートしています。ただし、これは信頼できるネットワーク内でのデータの利用を想定して設計されています。

Qt Quick 3D Physics (TP)

Qt Quick 3D に物理シミュレーションを統合しました。これにより3D空間で自然に動き、相互作用をするオブジェクトを持つような シーンを簡単に構築できるようになりました。このようなシーンやアニメーションを手作りで構築するのは非常に手間がかかりますが、Qt Quick API を使用することで、様々な 3D シーンに簡単に物理現象を追加することができます。物理演算エンジンは十分に評価され、実績のある、高性能なエンジン PhysXをベースとしています。

Qt TextToSpeech

Qt アプリケーションは、デフォルトでスクリーンリーダのような支援技術をサポートしています。しかし、多くのアプリケーションでは、音声合成技術をさらに幅広く活用することができます。イベントや変更を音声で通知することで、特にスクリーンに常に注意を向けることができないようなユーザの条件下においても簡単に情報を伝えることができます。今回 Qt 5 の QtSpeech モジュールにわずかな変更が加えられ Qt 6 に音声合成サポートが移植されました。このモジュールは、デスクトップ、モバイル、組み込みプラットフォームにおいて幅広く音声合成機能をサポートし、また QML API も追加されました。

新しい機能

既存のモジュールにも多くの改良が施されています。

Qt Quick 3D

事前に生成されたライトマップによるグローバルイルミネーション処理が可能になりました。これによりランタイムのパフォーマンス負荷を最小限に抑えながら、様々な光源を使用したリアルな 3D シーンの作成が可能になりました。この機能は初期のテクノロジープレビューであり、皆様からのフィードバックをお待ちしています。

さらに、ラインパーティクル、鏡面光沢材料のサポート、反射プローブ、スカイボックス、カスタムマテリアル、テクスチャの設定オプションがツールボックスに追加されました。

Qt Quick Item Views

Qt Quick の TableView と TreeView タイプに機能が追加されました。キーボードナビゲーションで行や列の選択ができるようになりました。アプリケーション開発者は、セルの位置決め、アニメーション、ツリーノードの展開と折りたたみに関してより自由にコントロールすることができるようにもなりました。

Qt Quick におけるよりスムーズなアニメーション

Qt Qucik でのアニメーション処理に関して、破綻した vsync スロットリングに関する Qt レンダリングスレッドループの改善といった内部的な改良に加え、新たにアニメーションフレームと同期した処理を記述することができるアニメーションタイプ FrameAnimation が追加されました。

完全な RHI 対応となった QQuickWidget

QQuickWidget を使用することで、Qt Quick と Qt Widget の要素が共存するアプリケーションのユーザーインターフェイスを構築することができます。QQuickWidge はこれまでは、OpenGL を使用する必要がありました。Qt 6.4 では、このクラスを一から再設計、これによりサポートされているすべてのグラフィックスAPI: OpenGLに加えて、Metal、Vulkan、Direct3D 11でも利用できるようになりました。

QSslServer による安全なデータ配信

Qt のネットワークモジュールは、扱いやすい TCP サーバを簡単に構築できるようにします。Qt 6.4 ではさらに 、TLS で通信するサーバに関しても同様に簡単に構築できるようになりました。

Qt Multimedia

FFMPEG ベースのマルチメディアバックエンドを追加し、すべてのプラットフォームで一貫したオーディオとビデオ機能が提供されるようになりました。ビデオ再生では、色空間の処理と HDR のサポートが改善され、また、アプリケーションから QVideoFrame に字幕を挿入することができるようになりました。

テクノロジープレビューとして追加された新機能は、空間オーディオのサポートです。Qt で部屋の大きさ、壁や床の材質、聞く人の位置に応じた音響特性を持つ仮想の部屋をエミュレートする 3次元のサウンドシーンを作成することができるようになりました。この機能はテクノロジープレビュー版です。

Qt Widgets の便利な新機能

QFormLayout は、ユーザからの入力を構造化されたフォームを通して取得するためのユーザーインターフェイスを簡単に構築することを可能とし、QWizard は、順番に作業が必要な込み入ったタスクについて、その流れをユーザに案内するための古典的なソリューションを提供しています。Qt 6.4 では、フォームレイアウトの行の可視性を制御する API と、ウィザード内の任意のページにジャンプするための API が追加されました。QKeySequenceEditについてはオプションでクリアボタンを追加することができるようになりました。これは多くのキーボードショートカットを使用する複雑なアプリケーションを構築する場合に設定すると便利です。

QML

値型へのサポートが強化されました。C++からQMLへの値型と構造化された値型のデータの公開がより簡単に、より効率的にできるようになりました。今回の改善により値型や値型のリストは、QObjectラッパーのオーバーヘッドなしに、プロパティとして使用することができるようになりました。

ツール面では、QML言語サーバが、QML対応のIDEにリアルタイムにフィードバックを提供できるようになりました。また、QMLの解析ツールは、Qt Quick および Qt Quick Controls の非効率な使い方や適切ではない使い方を特定し、ビルド時に警告を発することができるようになりました。

QML Type Compiler はデフォルトで有効化されるように、そしてより多くの QML を C++ にコンパイルできるようになりました。

そのほかの改善

これまで紹介したことに加えて、コードの中で文字列リテラルをより簡単に扱えるようにするために多くの作業が行われました。QStringEncoderQStringDecoder は、ICU がサポートするすべてのコーデックをサポートするようになりました(Qt が ICU をサポートしてビルドされている限りにおいて)。Qt の日付と時刻のクラスと std::chrono との相互運用性が改善され、また、QTextDocuments は入力と出力の両方で Markdown がサポートされるようになりました。

Android プラットフォームをターゲットとする開発者は、QJniObject QJniEnvironment メソッドの新しい可変テンプレート オーバーロードを使用して、C++ から Android API を簡単に呼び出すことができるようになりました。

商用ライセンスのアドオン

商用ライセンスをお持ちの方は Qt VNC Server をテクノロジープレビューとしてダウンロードすることができます。これは Qt 6.4 上で動作し、任意の Qt Quick アプリケーションを VNC 互換のクライアントに展開することができます。

QML Script Compiler は、商用 Qt Quick Compiler Extensions の一部で、Qt 6.4 では、値型のリストに対する操作の C++ コードを生成し、型変換のためのより良いコードを生成することを可能にしています。

今後の展望

Qt 6.4 では、多くの新機能をテクノロジープレビューとして追加しました。引き続き Qt for Python 6.4 と、Qt Design Studio の次期リリースでのQt 6.4 のフルサポートにご注目ください。

次のリリースである Qt 6.5 では、商用ユーザを対象とした長期サポートを予定しており、皆様からのフィードバックを元に、機能を安定させ、最終的に完成させることに注力しています。さらに、Qt Location の Qt 6 への移植、Windows 11 と Linux デスクトップのテーマサポートの改善、また、より効率的な値型のサポートとコンパイラツール群の改善による QML の性能向上などの作業も継続して行っています。

Qt 6.5 と以降の詳細については、「Qt の今後のロードマップ」ウェビナーを参照してください。

最後に

最後に、Qt 6.4 の実現に協力してくれたすべての人に感謝します。Qt のソースコードに貢献してくださった方々の完全なリストは、リリースノートの最後にあります。また、バグを報告してくれたり、フィードバックを送ってくれたり、継続的インテグレーションのインフラストラクチャを稼働させてくれたりと、他にも多くの人々が Qt 6.4 の実現に協力をしてくれています。

いつものように、新しいリリースはQtインストーラーで入手できます。また、Qt のダウンロードページQtのアカウントページからリリースを入手することができます。