Qt 5.1.0 がリリースされ、開発の焦点は Qt 5.2 へと移ってきました。development メーリングリストでは 5.1.0 リリース前から(主に Qt Quick 関連で) 5.2 に向けた議論がいくつかありました。Qt Contributors Summit 2013(QtCS) が終わり、それ以外のモジュールでも 5.2 に向けた方向性が見えてきました。
スケジュール
Qt 5.2.0 のリリースは今年の11月を目標にしています。しかし、Qt 5.1 のスケジュールが遅れた原因の解析や対策が必要だという意見や、Qt Creator がベータ版からリリースまで8週間かけているのに、それよりも規模の大きい Qt がアルファ版からリリースを8週間で行うのは難しいのではないかとの意見もあります。
Qt Core
Qt Core に関しては QtCS で議論されています。
主な予定としては
- QFileSelector
Qt Quick のところで出てくる File Selector API 用のクラスです。 - connect() の新文法の適用範囲拡大
QObject::connect() の文法が Qt5 から拡張されましたが、QTimer::singleShot() のスロットの指定などは拡張されていません。そういったクラスでも容易に新しい仕様に対応できるように API を追加しようとのことです。 - スレッド関連 API やドキュメントの改善
- ICU の利用法に関する議論
Qt5 ではロケール関連の実装やデータを ICU を使うことで独自実装をなくそうと当初計画していましたが、さまざまな理由から ICU への移行が簡単ではないことがわかってきました。詳しくは “Qt ICU” を参照してください。
また、今後の新機能の実装には C++11 を前提にするようです。
Qt Quick
Qt 5.2 のもっとも大きな変更になるのが QML の JavaScript エンジンの変更 です。まだ iOS などで問題は残っているようですが、既に wip/v4 ブランチではテストも一通りパスしているようなので、dev ブランチに取り込まれるのは時間の問題でしょう。Qt 5.1 → 5.2 で(特に C++ とのインターフェース関連で) QML の細かな挙動の違いが発生する可能性はありますので、Qt Quick 2 を使用している人は注意してください。
なお、この変更によって Qt5 の目玉の一つだったはずの V8 JavaScript エンジンは使用されなくなります。現状の Qt JSBackend モジュールの今後の扱いについては不明です。
それ以外に QML 関連では pragma 文の追加と、singleton サポートの実装が 5.2 に向けて予定されています。
pragma singleton import QtQml 2.0 //OtherType.qml QtObject { property int foo: 3 }
singleton は QML でコンポーネントを作成する際に、そのコンポーネントを singleton として定義するものです。従来はこういったエレメントはグローバルに一つ作成して id 経由でアクセスするケースが多かったと思いますが、言語側で singleton がサポートされることにより、より手軽に扱えるようになることが期待できます。
また、QML 専用ではないですが、 asset プレフィックスと File Selector API、画面の解像度などのプロパティの実装も予定されています。
asset プレフィックスはプラットフォームごとに異なるアプリにバンドルするファイルのパスを抽象化するものです。ただし、Android の場合は Android の asset フォルダになる予定です。asset プレフィックスが実装されると、一般的なアプリケーションでは QML ファイルなどがインストールされる具体的なパスを意識する必要がなくなります。
File Selector API は同一パスで異なるファイルにアクセスするためのものです。たとえば、settings.js にアクセスするとして、プラットフォームでそれぞれを別々のファイルにしたいときに使用します。
- +blackberry/settings.js
- +android/settings.js
QtCS ではセッションはありませんでしたが、Qt Quick が別プロセスのアプリケーションと Drag & Drop するためのパッチの開発も進んでいます。
- QTBUG-27498: support external drag & drop in Qt Quick
- [Development] QtQuick External Drag Drop Partial Patch — Help Requested
5.2 ではなくそれ以降になる見込みですが、QML では他にもさまざまな拡張を行う予定になっています。
- QML enum
- グループプロパティ
- const プロパティ
- pragma strict
また、具体的なスケジュールは見えていませんが、シングルタッチであるマウスとマルチタッチがそれぞれ別々に扱われていることによる問題の解消や、Flickable や ListView などの View 系エレメントの再設計も将来的には行いたいとのことです。
その他
その他にも OpenGL 関連や Qt3D 関連などで予定されているものはいろいろありますが、QtCS の議論を受けたサマリが見当たらないため、詳細がわかり次第フォローしたいと思います。
気になる人は Qt Contributors Summit 2013 の Program ページからリンクをたどってみてください。