Qtブログ(日本語)

Qt 5 ベータ版リリース

作成者: 朝木卓見|Sep 2, 2012 11:09:12 PM

この記事は Qt Blog の "Qt 5 Beta is here" を翻訳したものです。
執筆: Lars Knoll, 2012年8月30日

Qt Project 傘下における初のメジャーリリースとなる Qt 5 ベータ版 がリリースされました。協力してくださったすべての方々に感謝します。この Qt 5 ベータ版のリリースをきっかけに、Qt の次のメジャーバージョンである Qt 5 を是非皆さんに試していただきたいと思います。Qt 5.0 の正式リリースをできる限り良いものにするためにも、皆さんからのフィードバックが非常に重要です。

Qt 5 の開発スタートをアナウンスしてから15ヶ月が経ちました。これまでに達成した内容を確認して、本当にうれしく思います。計画していた 大規模なアーキテクチャ変更 のすべては実装されました。また同時に、Qt と qt-project.org を取り巻くコミュニティも立派に成長してきました。

Qt 5 では以下のものを簡単にかつ速く創る事が出来ます。

  • 限られたリソースでもスムーズでアクセラレーションされたグラフィックパフォーマンス。Qt 5 はそれほど高価ではないハードウェアにおいてもより良いパフォーマンスを実現するために GPU をより活用します。例えば Qt 5 を使えば、Raspberry Pi のような安価なシングルボードコンピュータにおいても 60 FPS のパフォーマンスを実現できます。詳しくは Qt on Pi プロジェクトを参照してください。
  • Qt Media Hub のように QML と JavsScript で書かれた高度な UI とアプリケーション。
  • Web と繋がる強力なアプリケーション

高パフォーマンスなアプリと UI

Qt 5 では、開発者が高パフォーマンスなアプリと UI を作成する際に直面する二つの核となる問題に取り組んでいます。

  1. UI をデザインするためのより良いツールと
  2. ビジョンを実現する際のよりパフォーマンスの良い描画です。

QML の新しい拡張や API で、キーボード入力のサポートに加えて、タッチスクリーンデバイス向けのリッチで直感的なアプリと UI をより簡単に作れるようになりました。Qt 5 の更新された WebKit と Qt Quick モジュールは、そのままでスムーズなユーザー・エクスペリエンス向けのタッチイベントの処理に対応しています。

新しいグラフィックスタックは、Qt Quick に完全に最適化されたシーングラフベースの、OpenGL を用いた全く新しいレンダリングパイプラインをサポートします。これによって、シェーダー効果やパーティクルのような OpenGL ベースのコンテンツとの統合が簡単になりました。テキストの描画もまた完全にハードウェアアクセラレーションを用いて、より速くより低消費電力になりました。これらの結果、Qt 5 はハイエンドのスマートフォンで実現していたような 60 FPS の滑らかさを Raspberry Pi のような比較的安価なハードウェアでも実現できるようになりました。

ソースコード互換性と連続性の提供(QWidget のポーティング)

皆さんのコードベースとスキルを Qt 4 から Qt 5 へ可能な限り簡単に移行できるように多くの努力が注がれました。また、Qt 4.x とのソースコード互換性もできる範囲内で保たれています。その一例として、Qt Creator を同じコードを用いて Qt 4.x と Qt 5 の双方でコンパイルして動かせるようにしています。

ポーティングの詳細な手順に関しては Qt 5 beta のページのリンクや KDAB のポーティングに関するページ のサンプルを参照してください。

ポーティング時には、第一にインクルードするヘッダファイルの変更と利用するモジュールの追加のためにプロジェクトの .pro ファイルを更新します。Qt 5 はそのためのスクリプトを提供しています。さらに、各プラットフォームのネイティブウィンドウシステムの機能に関連したコードは若干の調整が必要になるでしょう。

新しい UI デザインにはモバイルや組み込みアプリケーション向けに更新された QML が便利ですが、既存のウィジェットベースのデザインも依然として実行可能であることも重要です。Widget 関連の API は無くなりません。QWidget とその派生クラス群はデスクトップ向け Qt 5 のコアであり、残ります。

新しい API とモジュール

内部構造の変更に加えて、多くの新しい API が Qt 5 で追加されました。QtCore にも JSON サポートや MIME タイプの認識、標準パス、その他多数の新クラスがあります。

OpenGL のサポートは QtGui に不可欠なものとなり、多くの素晴らしい改善が成されました。QWindow は以前の QWidget よりもより良いトップレベルウィンドウの抽象化を提供します。

いくつかの新モジュールが Qt 5 で追加されました。特に Qt 4.x で存在した Qt と Qt Mobility の区別はなくなりました。その代わりにより多くのモジュール化された構造を持ち、各モジュール(共有ライブラリもしくは QML から import されるモジュール)は Qt Essential と Add-On のどちらかに分類されます。

この新しい構造は、将来的に新しい機能を提供するモジュールが Qt に統合されるのを簡単にします。例えば、KDE がそのフレームワークを Qt のアドオンとして提供できるようになります。

より多くの環境へ

できる限り最良の開発環境の提供に加えて重要な事は、Qt が皆さんのプロジェクトをより多くのユーザーに届ける機会を増大させる事です。

Qt 5 でも、引き続き複数のオペレーティングシステムをサポートします。QPA 抽象化層によって新しいプラットフォームへの移植は以前よりも簡単にシームレスになりました。既に QNX と Blackberry 10 へ移植するための多くの開発が Qt 5 に取り込まれていくのを見てきました。Digia は既に Qt 5 を Android と iOS へ移植する計画をアナウンスしています。

それに加えて、多数の努力と貢献が特に組み込み Linux 開発におけるユースケースを改善するために取り込まれています。これによってオートモーティブや IPTV/STB、その他の IP コミュニケーション製造業者の現世代および次世代の情報システムで Qt が大きく成長してきたのを目撃してきました。

Qt 5.1 で追加される改良に関する議論では、デスクトップでのユースケースや高速な開発がありました。例えば、Qt デスクトップコンポーネント の統合は進行中ですし、200人近くが参加し六月末に三日間にわたってベルリンで開催された Qt Contributor Summit のセッションでもそれに関するものがありました。

既知の問題

ベータ版の現状に関して、ほとんどの部分については満足していますが、既知の問題のページ に記載してあるようにいくつかの問題が残っています。最も顕著なものとしては Windows で Qt Quick を動かすにはそれなりの OpenGL ドライバーが必要となるでしょう。また、Linux 以外のプラットフォームでは Qt Multimedia に問題があります。

これらの問題は Qt 5.0 の正式リリースまでに解決するつもりです。Windows ではデフォルトで ANGLE を OpenGL から DirectX への接続レイヤーとして用いる予定です(もちろん、Windows 上でネイティブの OpenGL を使うためのオプションは残します)。Multimedia に残っている問題も解決します。

まとめ

Qt Project がスタートして、オープンガバナンスに移行した事によって、Qt の改善がどのくらい加速したかという事が今見えはじめました。昨年を渡って、アクティブで情熱的な開発者のコミュニティを Qt の周りに築く事が出来ました。Qt 5 に成された改善の多くはそのコミュニティの活動無しには成し得なかったでしょう。

その一例として、KDE のライブラリから Qt 5 へともたらされたすべての改善について言及したいと思います。これらの改善に伴って、KDE アプリケーションはよりモジュール的なアプローチをもたらし、KDE と Qt アプリ 間の差違を完全になくす事を実現可能にするでしょう。

Qt 5 で達成した事をとても誇りに思います。Qt 5 を今ここへもたらすために何らかの貢献をしてくれたすべての人々に感謝します。Qt Project の傘下における初のメジャーベータリリースに行われたすべてのハードワークに対して、束の間のお祝いをしましょう。

Lars Knoll