Qt 5.11 をリリースしました

この記事は The Qt BlogQt 5.11 released を翻訳したものです。
執筆: Lars Knoll, 2018年05月22日

予定を少し前倒しして、本日 Qt 5.11 をリリースいたしました。いつもどおり、Qt 5.11 には多くの新機能が追加され、既存の機能に対する数多くのバグフィックスがなされています。この記事ではクールな新機能をいくつか紹介します。

Qt Core と Network

Qt Core には小さな修正が大量になされました。例えば、ツール系のクラスに対しては右辺値参照のオーバーロードが追加され、STL との互換性で不足していた部分を改善いたしました。Qt のモデル系のクラスにもいくつかの新機能が追加されています。詳細は こちらのブログ記事 を参照してください。

Qt Network では、ALPN および HTTP/2 のネゴシエーションが iOS でもサポートされました。QNetworkRequest には最初のネゴシエーションなしに HTTP/2 接続を開始するための Http2DirectAttribute が追加されています。

Qt Core の大きな変更の1つは Unicode 対応です。今回 QChar、QString、QTextBoundaryFinder と、双方向テキストを Unicode 10 に完璧に対応させました。

Qt GUI と Widgets

Qt 5.11 のフォーカスの1つは Windows でのアクセシビリティの対応です。Microsoft Active Accessibility framework を利用した既存のコードを Microsoft UI Automation に対応したものにすべて書き換えることで Windows 上でのアクセシビリティ対応が格段によくなりました。

Windows の高解像度ディスプレイ向けのウィジェットのスタイルの改善も行われました。Linux での印刷ダイアログも大幅に見直しをして、CUPS が提供しているすべてのオプションに対応いたしました。

Qt Widgets には多大なバグフィックスがなされ、QLineEdit ではマウスによる文字列の選択が改善されています。

デスクトップ向けの開発者にとって、これらすべてはとてもうれしい改善になります。

Qt QML

QML エンジン自体に対して多くの改善が行われて来ました。QML をパースしコンパイルをするコンパイラのパイプラインを全面的に書き直しました。この新しいパイプラインにより、パフォーマンスが大幅に改善され、メンテナンス性も向上しました。

この新しいパイプラインでは、QML をプラットフォーム非依存のバイトコードにコンパイルします。QML のエンジンはこのバイトコードのキャッシュを .qmlc ファイルとして保存します。このバイトコードは(今回オープンソースでも利用可能になった)qmlcompiler 機能を指定することで実行時ではなくコンパイル時に生成することが可能です。

新しいバイトコードのインタープリタは元々のものに比べると大幅にパフォーマンスが向上しています。ほとんどのテストケースにおいて、Qt 5.10 の JIT に対して 80~90% の時間で処理が完了します。また ホットスポット JIT という機能を新たに追加したことで、すべての処理において以前の JIT を完璧に上回る性能を叩き出しています。

詳細は こちらのブログ記事 をご覧ください。

Qt Quick と Qt Quick Controls

Qt Quick では、Image エレメントの圧縮テクスチャの読み込みを拡張し、.ktx と .kpm ファイルフォーマットのコンテナに対応しました。この画像を直接 GPU へ送る形で保持する新機能により、アプリケーションの起動時間の短縮やメモリ使用量を少なくすることが可能です。詳細は こちらのブログ記事 をご覧ください。

Qt Quick Controls 2 にも数多くの細かい機能追加やバグフィックスが行われています。例えば、Button の auto-repeat プロパティや ScrollBar のポジショニングの改善、SpinBox のスタイル対応の改善などです。

Qt Location

Qt Location は素敵な事がたくさん起こったエリアの一つです。もっとも大きな新機能はおそらくターンバイターンナビゲーションの実験的なサポートでしょう。しかしそれだけではありません。Qt Location には QQuickItem と直接関係の無いマップオブジェクトを生成するための API が実験的に追加されました。MapPolyline オブジェクトのパフォーマンスは大幅に改善され、Map アイテムと連携したレイヤーの操作も可能になりました。それから、ルート検索と場所検索の API を拡張可能にし、WayPoint エレメントを新たに追加しました。MapBox プラグインのジオコーディングとプレイスにも、ようやく対応することができました。

Qt WebEngine

マイナーリリースでは恒例となっていますが、Qt WebEngine の下回りの Chromium のバージョンを Chromium 65 にアップデートしました。これに加えて、組み込みの DevTools を外部のブラウザやインストール可能なクッキーのフィルタやクォータの制限なしに使えるようにしました。

Qt for Device Creation

これまでに紹介したすべての新機能は当然 Qt for Device Creation でも利用可能です。それに加えて、組み込み向けの専用機能も改善いたしました。

新機能の1つは、ハードウェアによるグラフィックスのレイヤー対応です。現時点ではテクノロジープレビューという位置づけで VSP2 によるハードウェアのレイヤー合成に対応しています。例えば動画を背後で流すといったユースケースではパフォーマンスの改善や消費電力の抑制が可能になります。今後のリリースにおいて様々なプラットフォームやハードウェアの組み合わせに対応していく予定です。

Qt SerialBus の CAN Bus 対応が改善されています。KNX モジュールには 大きな更新 がありました。また、Qt 5.11 には OPC/UA 対応のモジュールが新たに追加されています。このモジュールは Qt 5.11 ではテクノロジープレビューとして利用可能です。

その他

qdoc は C++ のパースに libclang を利用するようになり、ドキュメントのモダンな C++ への対応が改善されました。Qt Bluetooth では BTLE 対応の改善がなされています。

Qt 5.11 で対応をやめた古いコンパイラやプラットフォームも存在します。MSVC 2013、QNX 6.6 それから macOS 10.10 はサポート対象外になりました。

Qt 3D と Qt 3D Studio

Qt 3D Studio の2番目のリリースに向けた作業を行っています。このリリースではランタイムを Qt 3D ベースに完全に書き直したものに置き換える予定です。これにより Qt 3D Studio 以外の部分の Qt との連携性が向上することになります。この作業の一環として、Qt 3D 自体にも数多くの新機能の追加や パフォーマンスの改善、バグフィックスが行われています。Qt 3D Studio 2.0 は現在はベータ版で、数週間以内の正式リリースに向けて絶賛作業中です。

Qt for Webassembly と Python

Qt for Webassembly は Qt のユーザーがウェブとブラウザを Qt アプリケーションのターゲットにするというクロスプラットフォーム戦略に関する最後のヤマに取りかかっています。最初のバージョンはテクノロジープレビューとして本日リリースいたしました。詳細は こちらのブログ記事 をご覧ください。

これらとは別に、Qt on Python のサポートに向けた活動も行っています。最初のリリースは6月を予定しています。詳細も都度公開予定ですのでお楽しみに。

Qt Community への感謝

Qt 5.11 では数多くの新機能の追加や改善が行われました。その中には、新機能の開発やバグフィックス、ドキュメントの整備、サンプルの追加、バグ報告などを行ってくれている企業や個人による素晴らしいコミュニティの助けなしには実現できなかったものがいくつもあります。すべての方の名前を個々であげることはできませんが、特に Qt Core のメンテナンスを継続してくれている Intel の Thiago Maciera に感謝をしたいと思います。パートナー企業の basysKom からは、OPC/UA の開発に対して Jannis Voelker と Frank Meerkötter に感謝をしたいと思います。同じくパートナーの KDAB からは、CUPS の印刷関連の対応をしてくれた Albert Astals Cid と、Qt 3D に対する作業を継続し、Qt の様々なエリアのメンテナンスを行ってくれている Sean Harmer と Paul Lemire に対して感謝をしたいと思います。

最新のリリース版を試そう

いつもどおり、Qt 5.11 は今後1年に渡ってサポートが継続されます。それ以上の期間のサポートが必要な方は LTS(長期サポート) として2020年の6月までサポートされれる Qt 5.9 もご検討ください。Qt 5.11 に対する延長サポートをご希望の方は The Qt Company から購入することも可能です。Qt 5.11 の次のリリースは Qt 5.12 で、今年の11月を予定しています。こちらも LTS となる予定です。

Qt 5.11 は Qt Account もしくは www.qt.io/download よりダウンロード可能です。今回のリリースも気に入っていただけることを願っています。


Blog Topics:

Comments