レポート

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

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

はじめに

6月11,12日の2日間,ノルウェーのオスロで「Qt Contributors' Summit 2018」⁠以下QtCS)が開催されました。QtCSはQtの開発者・貢献者たちが集まって今後のQt自体の開発について議論をするイベントです。一昨年はQtCon,昨年はQt World Summitとの同時開催(共にドイツにて)という形でしたが,3年ぶりに単独開催となった今年は,場所も3年前と同じくThe Qt CompanyのQtの開発拠点があるオスロでの開催となりました。会場はオスロのBIというビジネススクールで,The Qt Companyのオスロオフィスのすぐそばにあるビルです。

Qt Contributors' Summit会場

Qt Contributors' Summit会場

2日間にわたって実施されたイベントから,興味深かったセッションをいくつか紹介しようと思います。

QtCSの詳細については,Qt Contributors' Summit 2018の公式ページをご覧ください。

Keynote:“Path towards Qt 6”

QtコミュニティマネージャのTero Kojoによる挨拶,諸注意と,スポンサーへの謝辞の後,Qt ProjectのChief MaintainerであるLars Knollのキーノートでイベントの幕が開きます。

まずは「Why do we development Qt?」という問いかけからスタートしました。人によってその答は異なるとは思いますが,Larsが提示したのは「Make software development fun and easy」という一文でした。

それをふまえた上で,QtのAPI design conceptsが提示されます。その内容は,昨年のQtCS 2017やQt World Summit 2017のキーノートと同じですが,まとめると

  • 直感的でわかりやすく
  • 柔軟で
  • 効率の良い

APIを目指そうということになります。方針としてはわかりやすさ・使いやすさを重視し,パフォーマンスのためにそれらを犠牲にしないことなどが説明されました。

また,Qtを取り巻く環境として,他のクロスプラットフォームアプリケーションフレームワークについても図で示しました。現状はQtやUnityなどが成熟期にあると考えられ,Qtとしてはこの後衰退期に入らずに,さらに飛躍したいということでした。

Qtと対抗フレームワーク

Qtと対抗フレームワーク

これからのアプリケーションフレームワークに求められる機能としては,

  • アプリの開発だけではなくパッケージングや配布の手間の削減
  • モバイルプラットフォームの最重要視
  • SiriやCortana,AlexaなどのデジタルアシスタントによるUIへの影響
  • AI

などが挙げられました。

その他にも,新しいC++の規格や,クラウド,MR/VRなども関連する技術として挙げられます。これらの状況に,Qtとしては「Qt 6」で対応していくことになります。

Qt 6のビジョンとしては

  • 2020年代の10年間に対応できること
  • Qt 5系からのスムーズな移行ができること
  • そのためにC++17を活用すること
  • フレームワークとそのツールの統合
  • メンテナンスコストの削減

が挙げられました。

しかし,C++17を採用することで古いコンパイラがサポート対象外となり,Qt 5からの移行の妨げになるのではないかとの指摘もありました。かといって,古い環境をいつまでもサポートするのではQt 6を作る意義が薄れてしまいます。

そういった古い環境が必要な場合は,Qt 5を使い続けてもらえばいいのではないかなどの意見も出ました。実際,The Qt Companyでは未だにQt 3向けの開発者ライセンスの販売が毎年行われているそうです。

またC++についても,C++20を使用しないのかとの意見もありました。これについては,C++11でもコンパイラの実装が出そろうのにかなり時間がかかったことから,C++20の使いたい機能がQtのサポートするプラットフォームのすべてで利用できるようになるまで時間がかかる見込みであり,そのためC++20の採用はアグレッシブすぎるのではないかとの話が出ました。

Qt 6のビジョン

Qt 6のビジョン

より具体的な Qt 6 の検討課題として,Qt Coreモジュールでは以下の項目などが挙げられました。

  • 利用頻度の低い機能の別モジュール化(Qt Coreのスリム化)
  • 新しいC++の機能の活用
  • QMLからの機能の取り込み(バインディングなど)

グラフィック関連ではOpenGLへの強い依存性を解消し,VulkanやMetalなどのAPIへも対応できるようにすること,2Dと3Dのより良い統合などが主な課題となります。

QML/Qt Quickでは,QMLの採用事例が増えてきたことから,より大規模なアプリへの対応についての検討,コードをより厳密に解釈するStrictモード,ECMAScriptのバージョンアップ,パフォーマンスの改善などが挙げられます。

また,以前から要望の多いQt QuickのAPIをC++から使えるように検討することも,項目として挙げられました。

この他にはデザイン系ツールの改善・統合や,リポジトリ構成やサードパーティ製のOSSライブラリの扱いの検討なども課題となります。

Qt 6のリリースまでのタイムラインとして,これまではQt 5系としては今年の年末の5.12 LTSまでのリリースが決定されていましたが,その後に5.13~5.15までのリリースを追加して,5.15をQt 5系の最終バージョンとしてLTSにすること,その後にQt 6.0を2020年末にリリースする案が提案されました。この案ではQt 5とQt 6の開発は並行して行われる形となります。

今後のリリースタイムライン案

今後のリリースタイムライン案

ただし,その場合にQt 5とQt 6のリポジトリ管理をどのように行うかが課題となります。早めにQt 6用ブランチを作成すればそれだけQt 6の開発を速く行うことが可能になりますが,Qt 5の開発の成果を取り込むための手間が増えます。かといって,ブランチの作成が遅れれば,それだけQt 6に使える時間が少なくなる形となります。この段階ではその時期は議論対象となっており決まっていませんが,5.14以後になるかもしれません。

Qt 6の開発プロセスとしては,まずはJIRA上での開発要件の定義から始まります。必要なタスクはこちらのタスクのサブタスクとして作成する形となります。

また,Qt 6で削除したいAPIに関しては,今後Qt 5で非推奨にマークした後にQt 6で削除する形となります。このため,今後のアプリケーション開発で非推奨(Deprecated)なAPIを使用するとQt 6では使えなくなることに注意してください。

以上がキーノートの概要です。キーノートの最中にもさまざまな議論が始まりそうになり,長めのセッションとなりました。

著者プロフィール

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

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

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

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

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

Officially Certified Qt Specialist

コメント

コメントの記入