Qtブログ(日本語)

Qt 5 における C++ と Qt Widgets

作成者: 鈴木 佑|Apr 27, 2012 3:41:07 AM

この記事は Qt Blog の "Qt 5, C++ and Qt Widgets" を翻訳したものです。
執筆: Lars Knoll, 2012年4月18日

Qt 5 における C++ と QWidget に対する我々の姿勢に関して様々な関心や質問が寄せられています。ちょうど良いタイミングかもしれないので、この記事で回答することにしました。

Qt 5 アルファ版」のリリース記事では、我々が Qt 5 で新たに 行いたいこと、追加したいもの にフォーカスを絞っていました。

ここで1つ明らかにしておきたいことがあります。

Qt 5 では QWidget およびすべての派生クラスはデスクトップ系で重要な位置を占めます。

これまで Qt 4.x で行ってきたのとまったく同じ方法で、アプリケーションを書くことは引き続き可能です。

我々は Qt 4.x に対するソースコードの互換性を可能な限り保持することを約束しています。これにはもちろん QWidget や C++ で書かれたみなさんのアプリケーションも含まれます。これはなくなりはしません。Qt 5 での Qt Widgets モジュールは現在は 'Done' というステータスで、これは現在、我々の中にはこのモジュールに対して新機能の追加をアクティブに行っている開発者がいないことを意味します。しかし、このモジュールに対して興味がある方や、開発を行う必要がある方がいるのであれば、いつでもこのステータスを変更することはできます。

Qt 5 に対してこれまで行ってきたことは QML でアプリケーションを開発するという新しい方法の 追加 です。私個人としてはこの方法が長期的な視点で、より良いソリューションであると信じていますし、この方法で書かれるアプリケーションの数は時間とともに増えていくと信じています。

例えば、Windows 8 の Metro UI のような新たなユーザーインターフェースには、既存の QWidget の仕組みへの単純な機能追加では対応できません。QWidget は数年前まで主流であった静的なユーザーインターフェース向けに設計されてきたため、Metro UI などで使用されている様々なアニメーションなどへの対応はとても難しいのです。

スマートフォンやタブレットなどの端末上で動作するような滑らかにアニメーションをするユーザーインターフェースは、デスクトップ上でも広がりつつあります。そして、こういうものは QWidget の仕組みでは実装できないのです。

これは何か別の選択肢が必要だということを意味します。そして QML/Qt Quick がこの問題を解決するために辿り着いた結論です。というわけで、我々はそのエリアにフォーカスしているのです。

ここ数年の経験上、QML は UI を構築するとても優れた技術であることは間違いありません。この強力な QML は .ui ファイルの代わりに使用することもできると思いますし、アプリケーションのロジックを JavaScript で記述することも可能です。

Qt 5 での開発手法についてはいくつかの選択肢がありますが、どれを選ぶかは実際のところみなさん次第で、一番好きなものを使ってもらえればと思います。

C++ はこれからもメインのプログラミング言語であり続けます。

Qt 5 では様々な C++ の API が追加されています。例えば、C++11 対応を様々なところで行いました。大規模なアプリケーションについては今後も C++ で書かれる部分の割合が多くなると考えているため、C++ の API についても今後も開発を続けていきます。なにも問題はありません。

我々が Qt 5 に対して行ったことは選択肢を1つ 追加しただけ です。我々は JavaScript を C++ と同様にサポートしたいと考えました。C++ 以上にという意味ではないですし、JavaScript のみに限定するということはしていません。アプリケーションを書く方法に新たな選択肢が増えたということはいいことでしょう。

QML では小規模であればアプリケーションのロジックも書くことができます。これは簡単にプロトタイプを作成したいのであればとても便利な機能でしょう。もちろんその部分を後から C++ の実装に置き換えることも可能です。アプリケーションのスクリプト対応も可能になります。また、アプリケーションの大半の機能を QML と JavaScript で実装するという 選択肢 も増えたのです。

まとめ

Qt 5 でも、以前と同じように Qt を使いたいのであれば、是非そうしてください。その方法はすべてサポートされます。
しかしながら、数年先まで考えた場合、これまでの Qt 4 の方法よりもっと良い方法が必要になると私は思っています。アプリケーションの UI に対する期待は劇的に変化していています。一般の消費者が使うような製品ではこの傾向が特に顕著です。

Qt をこれからも素晴らしいものにしたいのであれば、そういうニーズに対応できる選択肢を持つ必要があります。Qt 5 とはつまりそういうことです。

それでは。
Lars