Qt Framework 6.12 がリリースされました。サイバーセキュリティの強化、UI パフォーマンスの向上、そしてアーキテクチャの各レイヤーから自由に組み合わせて使える豊富な機能を備えています。Qt 6.12 は長期サポート(Long-Term Support LTS)リリースであり、単なる小規模アップデートではなく、何年も前から続けてきたさまざまな取り組みの集大成です。詳しく見ていきましょう。
ハイライト動画
前回の LTS 以降の2年間で Qt Framework に追加された内容を、QtプロダクトリードMaycon Stamboroskiが動画で簡潔に紹介します。
動画が表示されない場合は、YouTubeでご覧いただけます。
5年間のメンテナンスを提供する長期サポート
Qt 6.12 は長期サポート(LTS)リリースです。Qt の LTS リリースは、5年間のメンテナンス期間にわたって安定性と信頼性を提供することを第一の目的としています。特にプロプライエタリなソフトウェアの開発で重宝されており、各 LTS リリースの期間が重なっているため、新しいバージョンへの移行を計画的に進められます。
Qt の LTS リリースは2年ごとに登場し、現在の最新が 6.12 です。

Qt LTS リリースの詳細: qt.io/development/qt-framework/qt-lts
これまで以上に安全な製品づくり
特に欧州市場向けにプロプライエタリ製品を販売している方にとって、新しい EU サイバーレジリエンス法 EU Cyber Resilience Act (CRA)への準拠は急務です。ただし、規制対応のために進めてきたセキュリティ強化は、CRA の対象外の方にもメリットがあります。
規制にとどまらないサイバーセキュリティ
規制要件とは別に、より安全なソフトウェアを構築するための改善を数多く行っています。Qt 6.12 LTS は、既知の悪用可能な脆弱性なしで出荷され、デフォルトで安全な設計になっています。継続的なセキュリティアップデート、新しい脆弱性開示プロセス、商用ライセンスのお客様向けの対応時間保証(SLA)も用意しています。セキュリティ上重要な箇所は Qt のソースコード内に明示され、実施したセキュリティテストの情報も透明性をもって公開しています。さらに、サードパーティライブラリは常に最新のものを取り込むようにしています。
サードパーティに関連して、依存関係がソフトウェアスタックの複雑さをどのように増大させるのか、そしてなぜ思っている以上にリスクが高いのかを解説したMaurice Kalinowski の動画もぜひご覧ください。
Qt 6.12 は CRA に準拠
商用版の Qt 6.12 LTS は CRA に準拠しており、お客様の製品を期限内に準備し、準拠させることができます。最初の CRA 期限は9月11日にすでに過ぎており、最終期限も目前に迫っています。この規制では、社内プロセスや法的評価、製品関連の要件など、多くのことが求められます。
Qt 6.12 は、現時点で把握している、2027年12月に施行される CRA の要件を満たすように作られています。今後のメンテナンスリリースでも、5年間のサポート期間を通じて、6.12 がこの規制に適合し続けるようにします。これにより、製品を期限内に準備できるだけでなく、長年にわたって頼れる基盤が得られます。Qt 6.12 には CRA 適合宣言が付属しています。これによって製品が自動的に CRA に準拠するわけではなく(お客様自身による CRA 対応は常に必要です)、Qt が担う部分については、多くの項目があらかじめ用意された状態になります。
さらに Qt Framework は、デフォルトで安全な認証と検証、ソフトウェア部品表(SBOM)、セキュアバイデザインのソフトウェアなど、CRA が求める技術的な機能要件への対応も支援します。
Qt 6.12 が CRA 関連の工数とリスクをどのように大幅に軽減できるか、詳しくはこちらをご覧ください。
ブログ記事「Qt 6.12 と CRA 準拠:Qt Group 初の適合宣言リリース」
qt.io/development/qt-framework/easier-cra-compliance
充実した UI 機能
UI フレームワークでは、モダンなユーザーインターフェースを作成するための新機能を追加し続けています。ここ数年で、Safe Area、Context Menu、Search Field、Double Spin Box といった新しい Qt Quick Controls や、FlexBox レイアウトという新しいレイアウトタイプが加わりました。Vector Image モジュールも拡張し、SVG や Lottie ファイルのプロパティとアニメーションのサポートを広げています。
まったく新しい機能としては、新しいアクセラレーション対応の命令型描画エンジンと、手軽に使える新しい QML Canvas2D 型を取り上げます。これらはグラフのパフォーマンスも向上させます。あわせて、新しい StyleKit もぜひお試しください。
Qt CanvasPainter が 技術プレビューを卒業
高パフォーマンスな新しい描画手法
Qt CanvasPainter は、今年初めに Qt 6.11 でテクノロジープレビューとして導入して以来、多くの貴重なフィードバックをいただきました。GPU によるハードウェアアクセラレーションを利用し、シェーダーでリッチかつ高性能なビジュアルエフェクトも実現できる、C++ と QML 向けのペインター型の命令型レンダリング API は、Qt に長らく欠けていたものだったことが明らかになりました。Qt 6.12 では、かなりの最適化、API の改良、機能ギャップの解消を経て、このモジュールのコア API をテクノロジープレビューから外します。C++ 開発者にも QML 開発者にも、本番環境で使える状態です。皆さんがこれで何を作るのか、とても楽しみにしています。
最大の追加機能は Canvas2D 要素です。Canvas2D API は HTML Canvas をモデルにしており、JavaScript で図形を簡単に描画できます。描画された図形は、Qt の Rendering Hardware Interface (QRhi)を介して、Qt CanvasPainter により GPU 上で効率的にレンダリングされます。Canvas2D は、Qt Quick の Canvas 要素に代わる、アーキテクチャ面で大幅にアップグレードされたモダンな後継です。

Canvas2D 要素は新しい API であるため、QCanvasCustomBrush C++ クラスとともにテクノロジープレビューのままとなります。
Qt Canvas Painter について詳しくは、Kaj のブログ記事をご覧ください。
Graphs の進化
柔軟性と高パフォーマンス
Qt Graphs にも多くの改善を加えました。要望の多かった対数軸を Graphs2D に追加し、軸ラベルのカスタマイズオプションも増やしました。エンドユーザーの操作も容易になり、ズームとパンの機能を標準で搭載したほか、パフォーマンスと使い勝手にも複数の改善を加えています。
大量かつ高速に変化するデータを可視化するような高パフォーマンスが求められるユースケース向けに、CanvasPainter を使った 2D グラフのレンダリングバックエンドを実装しました。現時点ではコンフィグ時に有効化するオプトイン方式です。デフォルトにする前に十分な安定性を確保したいので、このバックエンドをお試しいただいたご感想をお待ちしています。
StyleKit が Labs で利用可能に
新しい StyleKit モジュールは、複数の課題を一度に解決します。Widgets と Qt Quick の両方を使うハイブリッドアプリケーションで一貫したスタイルを作成できること。Figma などのツールで定義されるデザインシステムにきれいに対応する、モダンでデザインシステムやツールと親和性の高い方法でそれを行えること。そして、UI コンポーネントの構造とスタイル可能な属性をきちんと分離することで、「ボタンとはラベル付きの矩形である」といった定義を繰り返し指定しなくても、ダーク、ライト、ハイコントラストの各テーマを簡単に定義できることです。
Qt StyleKit は QML ベースのスタイリング API を提供します。ジオメトリや色などのプロパティと値のペアを設定する単一のソースから、Widgets と Qt Quick の両方をスタイリングできます。

プロパティの伝播により、StyleKit でスタイルを定義すれば、繰り返しの記述を大幅に減らせます。また、確立された QML のプロパティアニメーション手法を使うことで、コントロールやウィジェットの状態間のスムーズな遷移も簡単に定義できます。テーマ対応、コントロールのバリエーション、カスタムコントロール向けの拡張性により、StyleKit は、さまざまなデバイスやシステム構成、ユーザーの好みに合わせて美しく表示される、複雑なユーザーエクスペリエンスのデザインを定義する強力なソリューションとなります。
詳細と、ご意見の共有は、関連するフォーラムのディスカッションをご覧ください: https://forum.qt.io/topic/165049/stylekit
シンプルになる技術スタック
UI にとどまらず、アーキテクチャの各レイヤーで効率を高め、複雑さを減らすための取り組みを数多く行っています。既存コードと新規コードの統合を容易にし、アーキテクチャのレイヤー、API からツール、デスクトップから MCU に至るまで、すでに知っていることを再利用できるよう、継続的に工夫しています。ここでは、6.12 リリースのハイライトをいくつかご紹介します。
QRangeModel
QRangeModel は Qt 6.10 で導入され、6.10 以降も改善を重ね、今回のリリースでも成長を続けています。簡単におさらいすると、QRangeModel は、通常の反復可能な C++ コンテナを、Qt のモデル/ビューフレームワークで簡単に表示できる型に変換するヘルパークラスです。
Qt 6.12 で新たに、ビルトインのソートに対応しました。別のクラスを使わなくても、モデル自身がデータを直接ソートできます。また、許可するドラッグ&ドロップのアクションの種類と、その操作時に既存データをどう扱うかを制御する新しいプロパティも追加されました。さらに、match() メソッドによる検索の高速化、ヘッダーデータや行単位・アイテム単位の動作に対するカスタマイズの拡充も、今回のリリースの変更点です。
gRPC
QtGrpc モジュールでは、6.12 はネットワーク効率に重点を置いています。メッセージのクライアント側圧縮により、利用可能な圧縮アルゴリズムを選択して適用でき、通信帯域を節約できます。さらに、サーバーからの受信メッセージの最大サイズを制限できるようになり、予期せぬ巨大なレスポンスや不正な形式のレスポンスからクライアントを保護できます。
その他の注目すべき改善点
注目すべき点は多数ありますが、ここでは QML のホットリロードと、新しいプラットフォーム HarmonyOS のサポートに絞ってご紹介します。
QML のホットリロード
作業の流れを途切れさせない
QML Engine を拡張して、ホットリロード機構をネイティブにサポートできるようにし、qmlpreview ツールもこれを使うように作り直しました。これにより、実行中の QML コードのライブプレビューが可能になり、編集した内容が UI にどう反映されるかを、編集しながら IDE 上で視覚的に確認できます。
ホットリロードは Qt Creator で、またコマンドラインでは qmlpreview から利用できます。
QML ホットリロードの仕組みや今後の予定など、詳しくは Ulf Hermann のブログ記事をご覧ください。
https://www.qt.io/blog/hot-reload-in-qt-6.12
HarmonyOS のサポート
Qt 6.12 から、Qt は HarmonyOS を長期サポート(LTS)対象のプラットフォームとして正式にサポートします。Qt が他の主要プラットフォームですでに提供している安定性、メンテナンス、サポートの保証が、HarmonyOS でも受けられます。これは Qt のクロスプラットフォームという特長をさらに強化するものです。既存の Qt アプリケーションを、コードベースを再設計することなく HarmonyOS に展開できるため、開発期間の短縮と市場投入までの時間短縮につながります。
HarmonyOS は、中国において IoT や車載からパソコン、タブレットまで幅広いデバイスカテゴリに普及しています。Qt のサポートは、このエコシステムを双方向に開きます。中国の Qt アプリケーションはグローバルな市場に展開でき、中国市場に参入する企業は、LTS に裏付けられた実績ある方法で Huawei のプラットフォームに進出できます。
その他の新機能
ここまでご紹介したのは、Qt 6.12 の大きな追加機能の一部です。「Qt 6.12 の新機能」ドキュメントには、新しい QtQuick.Controls.Native スタイル、Qt Quick 3D Physics の追加ジョイントタイプ、WebAssembly のオーディオ・ビデオの改善、リソースコンパイラ(rcc)のコンテンツ重複排除によるコンパイル済みリソースの小型化など、ほかにも多くの内容が掲載されています。
謝辞
Qt 6.12 は、Qt コミュニティの多くの方々の成果であり、すべての皆さんに感謝します。このリリースに向けて Qt のソースコードにパッチをマージしてくださった方々は、リリースノートの末尾に名前が記載されています。
コードは全体の一部にすぎません。バグ報告、機能リクエスト、ベータリリースやテクノロジープレビューモジュールへのフィードバックが、Qt 6.12 の内容を形作りました。時間を割いて共有してくださったすべての皆さんに感謝します。そして、リリースを届けるために舞台裏で尽力してくれたすべての人にも、心から感謝します。
今すぐアップデート
これまでどおり、新しいリリースは Qt インストーラーから入手できます。Web サイトや Qt アカウントのページからもダウンロードできます。