進化するQt-Qt最新事情2009

第1回Qt Creatorが拓くQtアプリ開発新時代[前編]

はじめに

Qt 4.5とQt Creatorが2009年3月初めにリリースされて半年経ちました。年末には、次のリリースのQt 4.6がリリースされる予定です。これから数回に分けて、Qtの最新動向をお伝えします。

まず最初の話題として、Qtのアプリケーション開発のために作られた統合開発環境Qt Creatorを紹介しましょう。

Qt Creatorとは

Qt Creatorは、Qtアプリケーションの開発に特化したマルチプラットフォームで利用できる軽量統合開発環境です。大規模で複雑な開発では、汎用的な既存の統合開発環境を用い、うまく使い分けようという意図で開発されています。したがって、今までのQt向けの他の統合開発環境との統合化は、今後も提供される予定です。

Qt Creatorの主な機能を挙げてみましょう。

マルチプラットフォーム
Linux、Mac OS X、Windowsのすべてで利用できる唯一のQt向けの統合開発環境です。
洗練されたコードエディタ
シンタックスハイライティング、コード補完、コードの折畳み表示などの機能を備えたコードエディタです。
Qt 4 プロジェクト作成ウィザード
コンソールアプリケーション、GUI アプリケーション、C++ ライブラリなどのプロジェクトを作成するウィザードです。
Qt ヘルプインテグレーション
ボタンクリックだけで、Qt の全ドキュメントを参照できます。
Qt Designerインテグレーション
Qt Creator のウィンドウ内で、ユーザインターフェースフォームを作成できます。
ロケータ
少ないキー入力で、ファイル、クラス、メソッドやドキュメントなどに直ぐにアクセスできます。
プロジェクト
qmake、CMake、そして一般のMakefileを扱えます。
デバッグ
GNUシンボリックデバッガ(GDB)とMicrosoft Console Debugger(CDB)のフロントエンドが用意されていて、グラフィカルにソースコードを見ながらデバッグできます。

Qt Creator登場以前の統合開発環境

Qt Creatorが現れるまでに、Qtが統合開発環境とどのように関って来たかを見てみましょう。何故Qt Creatorが作られたかが想像できると思います。

qmakeによる統合環境用プロジェクトの生成

Visual StudioやXcodeのプロジェクトをqmakeの.proファイルから生成する機能です。生成のみの一方通行で、生成後にプロジェクト構成を変更すると.proには戻せません。古くからある機能で、今でも使えます。

Qt 3 Designerのプロジェクト機能

Qt 3のDesignerには、qmakeの.proファイルベースのプロジェクト管理機能があり、ソースファイルやフォーム(ウィジェットを配置したGUI部品)を扱え、フォームに独自のシグナルやスロットを記述できました。ソースコード編集でのコード補完、ビルドやデバッグ機能はありませんが、Qt Designerを使って、動くアプリケーションを一通り作れます。

しかし、問題もありました。まず、安定性には問題があり、安定したのは、Qt3の最後のバージョンQt 3.3.8の近くのリリースになってからでしょう(Qt 4のDesignerもよく落ちましたが、ここ最近は安定しているようです⁠⁠。 また、テンプレートにコードを書いて、継承をすると、どのコードを使えばよいかが特定できなくなるという不整合性もありました。フォームに付随して、ヘッダーファイルや実装ファイルが増え過ぎるのも煩わしいものでした。

Qt 4が開発段階だった頃に、開発者からQt 3のDesignerをどう思うかと訊かれ、機能が多過ぎると返事をすると、その通り、だから、Qt 4のDesignerでは、すっきりとした機能にした。元々Designerは、ウィジェットを配置するのを助けるためのツールだったのですが、色々と余計な機能が付けられておかしくなっていたのです。

Qt Visual Studio Integration

Qt 1.4: Qt Visual Studio .NET Integration

Qt商用版のみで利用できる統合環境です。Visual Studioでの開発に慣れていて、Qtでの開発をしようという場合には、最良の開発環境でしょう。かなりの完成度で、シームレスに統合されていて、Visual Studioでの手法に添って、同じ環境でプログラミングやデバッグができます。Qt用のプロジェクトテンプレートが用意されていて、qmakeを知らなくても、Qtのプロジェクトが容易に作れます。コード編集時には、Qt APIのマニュアル参照ができ、Qt APIに対して、IntelliSense機能が使えます。フォーム作成時にはVisual Studio内で、フォームの編集もできます。

限界と言える問題もあります、QStringなどの値がマルチバイトの場合に、デバッガで値を見られません。signalsやslotsのキーワード絡みで、インテリセンスで、コード補完ができない場合があり、以下のようにしてセミコロンを付加するという回避策が必要です。

public slots: ;

この問題については、以下のタスクトラッカーに、詳しく説明されています。

Qt Visual Studio Add-in

Qt 4.5と同時にリリースされたVisual Studioとの統合化機能で、オープンソース版でも利用できます。前述のQt Visual Studio Integrationのサブセットで、見劣りがします。Visual Studio内でフォーム編集はできず、Qt Designerを外部ツールとして併用します。Qtのリソース管理機能はなく、リソース編集に別にリソースエディタが用意されています。ロードマップには、今後の改良確定機能として挙げられていますが、十分な統合化がされるのがいつになるかは、公表されていません。

Qt Eclipse Integration

LinuxとWindowsでは、Eclipse CDTと合わせて使って、Qtアプリケーションを作成できる統合化が提供されています。ほぼ、Qt Visual Studio Integration と同じ機能が実現されています。ただし、Windowsでは、MinGWを用いることになります。また、Mac OS X向けには、長い間リリース予定のままで、まだリリースされていません。そして、Eclipseは、どのプラットフォームでもとても重い統合開発環境です。

プラットフォームごとの統合開発環境の選択肢

Qtアプリケーション作成に利用できる統合開発環境を表1にまとめました。

表1
OS利用可能な統合開発環境
LinuxKDevelop(GDB⁠⁠、Eclipse/Qt Eclipse Integration(GDB⁠⁠、Qt Creator(GDB)
Mac OS XXcode(GDB⁠⁠、Qt Creator(GDB)
WindowsVisual Studio/Qt Visual Studio Integration、Eclipse/Qt Eclipse Integration(GDB⁠⁠、Qt Creator(GDB/CDB)

Qt Creatorのみが上記3つのプラットフォームで共通に使える統合開発環境です。ただし、Qt Creatorを選択肢にする場合に、以降の考慮が必要でしょう。

サポートプラットフォーム

QtのSupported Platformsのページに、以下がサポート対象と記載されています。

  • Windows XP Service Pack 2
  • Windows Vista
  • (K)Ubuntu Linux 5.04
  • (K)Ubuntu Linux 7.04 32bit and 64 bit
  • Mac OS 10.4 and later

UNIX/Linux

サポートされるのは、Linuxのみと考えた方がよさそうです。Solarisで動かすには、修正が必要でした。Webで調べた限りでは、FreeBSDで動かすにも修正が必要なようです。GCCとGDBのみが使えるコンパイラとデバッガで、他のコンパイラとデバッガは使えません。

Windows

MinGWで作成したアプリケーションは、Visual Studioのコンパイラで作成したものよりも実行速度が遅く、見て判別できます。製品開発過程では、一般に開発用、出荷用、保守用でコンパイラを分けることはしませんので、MinGWではなく、Visual StudioやIntelコンパイラを使うことも必要となる場合も少なくないでしょう。

現バージョンの問題点

Qt Creatorはリリースされてまだ半年です。問題もあり、これから解決されて行くでしょう。数週に渡ってQt Creatorを使っていて、些細なものを含めると数十の問題がありました。いくつか気になるものを挙げてみます。

ドキュメント

フォーム上で右クリックで表示されるコンテキストメニューの「Go toslot...」によって、シグナルに対応するスロットのスケルトンコードを作成できますが、この説明はなく、リファレンスの「Writing a SimpleProgram with Qt Creator」でも直接スロットを記述するように書かれているなど、リファレンスマニュアルが機能に追いついていません。

なお、ドキュメントはQt CreatorをインストールするとQt Creatorで参照できるようになりますが、同じものが以下のURLで参照できます。

Qt Creator Manual
URL:http://doc.trolltech.com/qtcreator-1.2/index.html

コードペースター

[Qt-creator] Code Paster???

上記のメーリングリストでのやり取りのように、現時点では、開発元で内部的にのみ使えるようです。リファレンスにも記述は何もありません。

日本語ローカライズ

.tsファイルがソースコードと一致していないため、英語のままの文言が残っています。

Mac OS Xでは、メニューのショートカットに(F)などが削除されずに残ります。開発元では、QTranslatorをカスタマイズして、アプリケーション側が対応すべきことだという姿勢なので、Qt Creatorでの対応が必要でしょう。アバウトメニューがアプリケーションメニューではなくヘルプにあったり、環境設定(オプション)がアプリケーションメニューではなく、ツールメニューにあるなどスタイルガイドに合っていず、他のアプリケーションと違うので、少し使い勝手がよくありません。この部分は、Qt 3のころには、開発元とやり取りして、正しく動くようにはできたのですが、復活してしまいました。

デバッガ

Mac OS Xでは、以下の行にブレーポイントを設定しても止まらず、次の行を実行してしまいます。

QApplication app(argc, argv);

GDBを直接使った場合や、同じようにGDBを使っているXcodeでは止まります。

Windowsでは、GCC でのデバッグ実行時に、qDebug()で日本語を表示すると文字化けします。MinGWのGDBでは、GDB/MIを介すると文字化けしてしまうので、MinGWのGDBが原因の問題です。

Qt/X11で、ブレーポイントでの停止時に、Qt CreatorのCPU使用率が80%になることがあります。Retrieving data for watch view (1 requestspending)...というメッセージが繰返し表示されるので、GDBと不要なやり取りをしていると思われます。

外部Qt Designer

フォームを外部Qt Designer で開こうとすると、Designerが2つ立ち上がります。これは、簡単に修正できました。

キーバインディング

後述するように、マウス操作を減らしキーボード操作で使えるようにすることを目標にしているのですから、しっかりと練られた既定値となっていた方が、使い易いでしょう。

Mac OS Xでは、メニューのショートカット表記が間違っていたり、定義されているキーストロークのままでは動かないものが多いです。たとえば、⁠メニューバー⁠⁠→⁠編集⁠⁠→⁠拡張」で表示されるメニューの「外部エディタで開く」「Vimスタイルでの編集の切替」は、それぞれAlt-V Alt-VとAlt-V Alt-Iで、これらのショートカットはQt/Mac OS Xの制限のために、最初の1文字のみしかメニューに表示されませんが、ショートカット自体は機能します。しかし、メニュー項目に「(****)」とゴミも表示され、何を意味しているのかと不安になります。

Ctrl+E Ctrl+VやCtrl+E Ctrl+Wなど、Ctrl+Eで始まるショートカットは、Ctrl+AとCtrl+Eで行頭と行末への移動のためか未定義になっていますが、良いキーストロークを考えて定義する方がよいでしょう。

Ctrl+数字がモード切替に割り当てられていますが、Ctrl+数字は、Mac OSX 10.5ではデフォルトでSpacesの画面切替に割り当てられているので、競合しています。他の割当てにすべきでしょう。

フォームエディタのフォーム上で右メニューを表示して、レイアウト項目を選ぶと表示されるメニューで、そのメニュー項目が間違っています。たとえば、Command-1、Command-2などが横と縦のレイアウトに割り当てられていますが、実際には、Command-1やCommand-2は出力ペインの切替に割り当てられています。

この他にもありますが、Mac OS Xでは、キーバインディングがどうなのかを把握し、うまく使えるように定義し直すには、少しばかり時間を使ってしまいました。LinuxでもフォームのプレビューがKubuntu KDE4のKlipperのバインディングCtrl+Alt+Rと重複してしまい、バインディングの調整が必要でした。プレビューの使用度は高いので、QtのサポートプラットフォームとなっているKubuntuならば、このような重複がないようにしておくべきでしょう。

クラッシュ

ソースコード編集画面の横分割後に、フォームを開こうとしたら落ちました。少なくとも2度発生しています。サイドバーでプロジェクトを表示し、右クリックすると暫く固まった後に落ちました。

入手方法とインストール

Qt Creatorを使うには、4通りの方法があります。

Qt SDKを用いる

Downloads ― Qt - A cross-platform application and UI frameworkからダウンロードしてインストーラを実行するだけで、QtとQt Creatorの両方がインストールされて使えるようになります。Windowsでは、MinGWもインストールされ、すべてが揃います。

Qtがインストールされておらず、とりあえず使えるようにしたいという場合には、最も手軽な方法です。

バイナリパッケージを用いる

前述のダウンロードサイトに、Qt Creatorのみのバイナリパッケージがあります。すでにQtが利用可能になっていて、Qt Creatorを利用してみようという場合に向いています。

ソースからビルドする

同じダウンロードサイトからソースを入手できます。Qt がインストールしてあれば、以下の手順でインストールできます。

$ qmake
$ make
$ make docs

Windowsならばmakeの代わりにmingw32-makeかnmakeになります。

公開リポジトリのソースを用いてビルドする

Qt Creator - Qt by Nokia

開発中のものを動かしてみたいという場合によいでしょう。Qtをインストールしておいてから、以下の手順でインストールします。

$ git clone git://gitorious.org/qt-creator/qt-creator.git
$ cd qt-creator
$ qmake
$ make
$ make docs
インストール後、Qt Creatorを起動したところ
インストール後、Qt Creatorを起動したところ

今回はここまで。次回は、実際にQt Creatorを使った開発について解説します。

おすすめ記事

記事・ニュース一覧