Kastle 2003:Qt4に何を期待するか - 旧 Wiki アーカイブ
元記事:"Kastle 2003: What to expect from Qt 4"
間違いを見つけたら、どんどん修正しちゃってください。
また、直接編集しにくい場合には、一番下のコメント投稿機能を利用してみてください。
翻訳 †
日曜日の午後、Qtの開発ディレクターであるMatthias Ettrich氏は、Nové Hradyで開催されたKDE Developers' Conference 2003において、企業(Trolltech)のプレゼンテーションとは別に、the KDE/FreeQt FoundationとQtの開発におけるのこれまでとQt4に対する展望について話をする機会を与えられた。Qt4は、2004年にリリースされる予定であり、スタートアップや実行時におけるパフォーマンスの向上、より高い柔軟性と生産性、そして、学習プロセスの簡素化のための変更などが提供されるはずです。Matthias氏の自作のプレゼンテーションプログラムを使って表示されたスライドショーからのより多くの引用を読んで下さい。
Qt4は、大概は、検索や置換や「互換モード」といったコンパイルスイッチをほとんど使うことなく、ソースコード互換性が維持されるように試みられています。より多くのポーティングは、メタオブジェクトシステムを直接使うようなスタイルとコードにとって必須でしょう。
シンボルの削減、データの読み書きを減らし、静的な初期化をより僅かにすることで、スタートアップのパフォーマンスの向上が達成されるでしょう。また、mallocの回数の低下、より速くそしてさらに最適化されたツールクラス、メモリ消費の減少によって実行時のパフォーマンスが向上し、今日のデスクトップコンピュータよりも遅く、少ないメモリしか積んでないような組み込みデバイス上でもQt4が動作することが可能になるでしょう。
これらの発言を確固としたものにするために、Matthias氏は、Qt4でコンパイルするために必要なだけの変更をし、ポーティングしたQtデザイナーについて、いくつかの数字を提供しました。その内容は次の通りです。libqtのサイズは5%減少し、Qtデザイナーのリロケーションの数は30%減少し、mallocの回数は51%減少し、メモリの使用量は15%減少しました。また、正確に計ったQtデザイナーの起動時間は、18%減少しました。
Qt4は、1つのライブラリにはならず、より細かい粒度を可能とするよう、複数のライブラリによって構成されるようになります。例えば、以下の通り。
- ツール、IO、スレッドなどのクラスやQObject/QKernelApplication?から成るQtカーネルライブラリ
- QApplication、ウィジェット、ペインタなどのQt GUIライブラリ
- ネットワーク、XML、SQL、openGLおよびその他の目的のためのその他のライブラリ
Qt4の新機能で、現時点で公開されているものの一部としては、以下のものがあります。
- Qtデザイナーは、コンポーネントに分割されます。これによってKDevelopのためのフォームエディタのプラグインを作ることが可能になります。
- リストボックス、ツリー・ビュー、アイコン・ビューのためのモデル/ビュークラスを分離します。
- タブ化したドックをサポートしている、ドックウィンドウとツールバーを区別したメインウィンドウ/ドッキングのアーキテクチャの一部を成す新しいクラスのセット。
- マッキントッシュプラットフォームとATKのためのアクセシビリティ・サポート。
- Pixmapリソースシステム。
- 異なるAPIの統合やコンセプトの数を削減するといった、APIのクリーンアップ。これは、一般的な使用法を簡略にし、柔軟性を増加させ、困惑させられることを無くすことを目的としています。
- 驚く程少ない生成コード量とconnect()における最小のメモリオーバヘッドを持つ、静的な読み込み専用データブロック(コンストラクタも無く、クリーンアップ・ハンドラも無く、リロケーションも無く、シンボルも無い)を含んだメタデータ・オブジェクト。
- connect()のシンタックスの改善。
- 文字列ベースのQObject::inherits()を置き換える新しいキャスト機構である"qt_cast(const QObject*)"。
- より軽くより速い、QGuardedPtr?の後継である新しいQPointerクラス。
- イベントフィルタは修正され、現在は、QObject::event()ではなくてQApplication::notify()から呼ばれている。
- スレッド化されたライブラリは、よりthread-safety/reentrancyなものとしてデフォルトになるでしょう。自動的な参照のカウントによってQDeepCopy?は無用の長物になります。
- スタイルのセクションにおいて、パレットと背景の処理が以下のように改善されました。
背景のポリシーは、トップレベルでないウィジェットが、その親ウィジェットから背景のポリシーを継承しているものとして提供されます。親ウィジェットは、小ウィジェットに、その内容を伝播させることができます。これは、ウィジェットに対して、本質的には(半)透明な性質を与えるでしょう。そして、最後に、システム全体にダブルバッファリングの機能は、及ぶ何のハックもなしに、フリッカー効果の自由なアップデートを許容するでしょう。
軽くて安全で使いやすい値ベースのコンテナ・ツールのクラスの、一貫した新しいセットをQt4は提供するでしょう。また、このコンテナ・ツールのクラスは、明示的に分けられ、スピードとメモリの使い方双方の点で高度に最適化されているでしょう。これを使うことは、Qt3.xやSTLの場合と比較されるようなわずかなコードまで拡大されていくでしょう。STLは、よりQtと共に使える状態になっているでしょう。
QStringとQByteArray?は、APIの改善の他に、パフォーマンスとメモリ使用の点について最適化されています。(そのAPIの改善における)重要な変更は、isNull()が無くなり、互換モードでのみ用意されます。latin1()のような関数は、常に妥当な値を返し、nullポインタを返すことは無くなるでしょう。この変更は、KDE開発者の間での議論となり反感をかいましたが、Matthias氏は、isEmpty()関数と演算子"!()"が存在していることを指摘しました。
Qt4は、来年中に最終リリース前の短いパブリックベータの期間を経て、1年以内に利用できるでしょう。これに加えて、Matthias氏がKDE開発者に対して質問をしました。その内容は、「KDEはQt4に移行するのか? 移行するとすればいつか?」、「KDEが移行するとき誰がどこで最初のポーティングを行うのか?」、「KDEのアーキテクチャのいくつかを書き直す機会としても使いますか?」といったものでした。多くのKDE開発者からの返答としては、hackfest週間において、KDEに必要とされていて長期間見あたらないと分かっているような追加されたクラスや機能について、Trolltech開発者にたずねるというものでしょう。
直接編集しにくい場合には、こちらからコメントを投稿してください。
コメントのリスト
投稿者 | サマリ | 投稿日 |
---|---|---|
Daisuke Kameda | コメント投稿のテスト | 2003-08-31 (日) 16:11:53 |