レポート

Qt 6に向けた議論が深まる ―「Qt Contributors' Summit 2018」参加レポート

この記事を読むのに必要な時間:およそ 4.5 分

Plenary session:Graphics vision 2020

このセッションでは,Qt 6に向けてグラフィック関連のアーキテクチャをどのように変えていくかが議題となりました。

Qt 5では,描画パフォーマンスの向上のためにOpenGLをそのベースとして採用し,それまでオプションモジュールであったOpenGL用クラスの標準モジュール化や,OpenGLを活かしたQt Quick Scene Graphの開発などが行われました。しかし,グラフィック用APIの抽象化は行われておらず,特にQt Quick 2などはOpenGLに強い依存性を持ったAPIとなってしまいました。このため,Qtの利用者は時には OpenGLの命令やシェーダー(GLSL)などを直接使用する必要があります。また,他のグラフィックAPIに対応する場合(たとえばDirect3D12)には,それぞれのAPI用に個別にシェーダーを作成する必要があります。

Qt 5の開発初期には,OpenGLへ対応すればほとんどのプラットフォームに対応できるであろうとの予測がありました。しかし,その後の3D系APIの変化は激しく,Metal,Direct3D12,Vulkanと,次々に新たなAPIが登場し,今後はOpenGLだけではすべてのプラットフォームへは対応できなくなることが予想されています。

実際,Apple社はOpenGLを非推奨にして,MetalのみをグラフィックAPIとして推進していく予定です。このことから,キーノートでもあったようにOpenGL以外へのグラフィックAPIへの対応がQt 6の課題としてあげられました。

もうひとつの課題がQt Quickモジュール(2D)とQt 3Dモジュールの統合です。Qt 3D Studio 2.0にQt 3Dベースのランタイムエンジンが実装されたことで,Qtの2D(Qt Quick)と3D(Qt 3D)機能が一通りそろいました。しかし,これらはOpenGLを使用しているにもかかわらず,それぞれが全く別のエンジンとなっています。

Qt 5でも機能的には2D(Qt Quick)のUIに3Dを埋め込んだり,その逆を行うことは可能です。しかし,それらの同期を取るのは(Qtの開発者にとっては)簡単なことではなく,また描画内容の取り込みはどちらも OpenGL のテクスチャを経由して行っているため効率的ではありません。

このセッションでは,Qt QuickのシーングラフをQt 3D側へ取り込むことで2Dと3Dを透過的に扱う方法が提案されました。2020年代のグラフィックエンジンとして2Dと3Dを同じシーングラフで統合的に扱うための仕組みを,Qt 6では目指すことになりそうです。

Qt 5.11とQt 6の2D/3Dアーキテクチャ案

Qt 5.11とQt 6の2D/3Dアーキテクチャ案

Qt Widgets

Qt 5ではバグ修正や小さな機能追加などがメインであったQt Widgetsモジュールですが,重要なモジュールであることには変わりなく,Qt 6でも引き続きメンテナンスしていく予定です。

Qt 5の途中でメンテナンスの主体がThe Qt CompanyからKDAB社に移っていることもあり,この巨大なモジュールの現状の説明からセッションが開始しました。

リリースブロッカーとも呼ばれる致命的(P0)なバグは現状無いそうですが,P1が60,P2,P3ではそれぞれ数百のバグが登録されているそうです。マンパワーの問題ですべてのバグの確認はできておらず,コミュニティの助けが必要なこと,おそらく重複した報告もあると思われること,再現が困難な特殊ケースが含まれることなどが報告されました。特にバグが多い機能としては MDI(Multiple Document Interface)⁠ドックエリア・ドックウィジェット,グラフィックスビューなどがあり,これらはバグ修正が別のバグの原因となることも少なくないようです。

このセッションでの主な議題はスタイル機能でした。Qtでウィジェットアプリのスタイルを変更する際は,QStyleクラスやその派生クラスを継承してC++で書くか,スタイルシートを使って書くかのどちらかになります。スタイルシートは比較的わかりやすいものの,パフォーマンスに問題があります。Qt的にはC++でスタイルを書いて欲しいところですが,QStyleの派生クラスの実装はQtのスタイルへの理解が必要なため,簡単ではないという問題があります。

パレットクラス(QPalette)のQStyleへの統合など,Qtの開発者側・利用者側のそれぞれからさまざまな意見がでてくるセッションとなりました。スタイルシートに関してはQt内部に特別扱いをするようなコードもあるとのことで,Qt 6ではスタイル関連機能は整理が行われそうです。

著者プロフィール

朝木卓見(あさきたくみ)

1996年からQtを使い始める。

2006年,Qtの開発元であったTrollTech ASAにてQtのコンサルティングやサポートに従事。

2008年,TrollTech買収によりNokiaに移籍し,Qtの啓蒙活動なども行う。

現在は株式会社SRAでQtコンサルタントとして活動中。

Officially Certified Qt Specialist

コメント

コメントの記入