Qt

マルチプラットフォーム対応 C++ GUI開発フレームワーク「キュート」

株式会社SRA
トップページへ
評価版ダウンロードはこちら
LGPL版ダウンロードはこちら
Qt6つの特長
Qtライセンス
Qtトレーニング
コンサルティング
導入事例
Qt関連情報
Qt関連製品
イベントセミナー
お知らせ
お問い合わせ
FAQ
TROLLTECH
froglogic

Qt6つの特長

 1.マルチプラットフォーム | 2.パフォーマンス | 3.簡単で使いやすいAPI 
 4.多言語対応 | 5.柔軟性 | 6.サポート

マルチプラットフォーム


グラフ一度の開発で複数のプラットフォームをカバーできますので開発コストと、製品を市場へ投入するための時間を大幅に抑えることができます。最初は Windows 版のみをリリースする場合でも、Qt で開発することにより、 将来の Mac OS X や Linux への迅速な展開が保証されます。
デスクトップ用のアプリケーションと PDA や携帯電話などの組込みデバイス用のアプリケーションを同じ API で開発ができるというのも大きな特長です。開発者はたった 1 種類の API を習得するだけで、マルチプラットフォームアプリケーションを開発することができます。

True platform freedom

新しいプラットフォームへの対応が、数ヵ月、数年という単位ではなく、数日、数週間という時間で可能となります。
また、開発前から特定のプラットフォームを決める必要がありませんので、特定のプラットフォームにコミットするリスクを回避することが可能です。

プラットフォーム固有の GUI ツールキットよりも効果的

高度なアプリケーションの開発に適した充分な機能を持ち、拡張性と直交性の高い API により、単独プラットフォームでの製品を対象とする開発でも効果が発揮されます。

シングルソース

ソースコードがひとつであるということにより、メンテナンスの工数や費用を大幅におさえることができます。

Windows のバージョンアップにも対応

Qt は Windows XP、Windows Vista 等に対応しております。OS のバージョンアップにも遅れることなく対応しており、Windows XP リリース時の実績では、2 週間後に対応版をリリースしました。また、Windows Vista リリース時の実績では、そのリリースより前に対応が完了しました。プラットフォームだけでなく、Windows のバージョンが変更されても、Qt の API は変わりませんので、お客様のプログラムを変更する必要はありません。

ページトップへ

パフォーマンス

Qt と Java の最大の違いは仮想マシンを必要としないところです。
それぞれのプラットフォーム上のプリミティブな描画 API (Win 32 GDI+、Xlib) で実装されているので高速な動作のアプリケーションを開発することが可能です。

ページトップへ

簡単で使いやすいAPI

Qt を使いこなすために、高度な知識や技巧は必要ありません。単純かつ洗練されたオブジェクトモデルで実装された API は、直交性と柔軟性に優れ、自然な着想により、既知の API での経験から、未経験の API を類推しプログラムすることができます。
これにより、開発要員の開発作業そのものや、習得に関わる負担を軽減し、開発コストを抑えることが可能です。

シグナル・スロット機構

シグナルとスロットは、オブジェクト間の通信を提供する機構で、簡単に理解し使うことができます。GUI アプリケーションはユーザのアクションをきっかけにして動作します。例えば、メニューアイテムやツールバーボタンがクリックされた場合、アプリケーションはあるコードを実行します。
プログラマーは特定のイベントを、それに応じた処理コードに結びつけなければいけません。旧来のツールキットは、パラメータ型保証がなく柔軟性に乏しいオブジェクト指向に対応していない機構を使用しています。
Digia (旧 Trolltech 時) はシグナルとスロットと呼ばれる方法を考案しました。これは、強力なオブジェクト間通信の機構で、コールバックやメッセージマップといった、古いツールキットで使用されていた不完全な機能を完全に置き換えるものです。シグナルとスロットは、柔軟性に富み、完全にオブジェクト指向に対応した機構で、C++ で実装されています。
旧来のコールバックのメカニズムを使用し、ある処理コードをボタンと関連付けるには、関数のポインタをボタンに書いておき、ボタンが押下されるとこれが呼び出されるようにする必要がありました。このようなコールバック機構では、与えられた引数の型が正しいかどうか確認されないので、クラッシュが発生しやすくなります。また別の問題があり、GUI の一要素に特定の処理が深く結び付いてしまうので、クラスを独立して設計することが困難です。
Qt のシグナルとスロットの機構はこのような方式とは一線を画しています。イベントがあると、Qt ウィジットはシグナルを出します。例えば、ボタンは押下されると clicked() シグナルを出します。プログラマーはシグナルを特定の機能を持ったスロットを選んで接続することにより、あるオブジェクトで生じたイベントを他の (または自分自身の) 処理コードに関連付けることができます。
Qt のシグナルとスロット機構では、結び付けるオブジェクト同士がお互いに相手のことを知っている必要はありませんので、再利用性の高い独立したクラスを作ることができます。また、シグナルとスロットの接続は型保証されています。型の不一致が実行時に警告されますので、型不一致が原因でアプリケーションがクラッシュすることはありません。
シグナルとスロットは、アプリケーションの実行中にも動的に接続と切断ができ、シグナルが出された時にスロットが実行されるようにもできますし、シグナルをキューに入れておき、後で実行することもできます。さらには、違うスレッド間にあるオブジェクト間を接続することもできます。

Qt Designer

Qt Designer は強力な GUI レイアウト・フォームビルダーで、高パフォーマンスかつそれぞれのプラットフォームでネイティブな見映えのユーザインターフェースの開発を可能にします。Qt Designer は単独での使用はもちろん、Microsoft Visual Studio .NET に統合することも可能です。Qt Designer は先進的なユーザインターフェースをヴィジュアルに設計することを可能にします。
Qt Designer は強力なスタンドアローンツールとして設計されましたが、Qt4 からは、ユーザが選んだ IDE 環境の中で使用できるようになりました。Qt Designer は違和感無く Microsoft Visual Studio (Windows)、Eclipse (Windows、Linux) に統合され、どちらの場合でも、現在使用している IDE での経験を元に、スキルを向上することができます。
Qt Linguist の Form Preview 機能を使用することにより、開発者と翻訳者は、Qt Designer で作成したレイアウトを、簡単に他言語で表示し確認することができます。Qt が持つ、フォントを考慮した自動スケーリングレイアウトシステムも活用でき、プラットフォームに具備されているスタイル、フォントサイズ、ディスプレイ等に煩わされずに、品位の高いダイアログをデザイン出来ます。
Qt Designer にはプレビューモードがあり、設計したフォームを様々なスタイルを適用してプレビューすることができます。また、カスタムウィジット (カスタムコントロール) を Qt Designer の部品箱に置いて使うことも可能です。

ページトップへ

多言語対応

ソフトウェア製品を多言語対応することができれば、それだけで、ユーザの大幅な広がりを期待することができます。
Qt はアプリケーションの国際化作業を大幅に単純化することができる機能を持っています。

Qt Linguist

Qt Linguist は GUI 翻訳作業を簡単かつ、順序立ったものにするインターフェースを提供します。Qt Linguist は GUI 上に表示されているテキストを集めて、簡単な操作のウィンドウで翻訳者に提供します。自動的に次に翻訳を行うテキストが提示されますので、翻訳者は、作業を行うテキストの順序に注意を払う必要がありません。

強力なレイアウト機能

同じ用語であっても、使用する言語やフォントによって全く違う表示サイズになります。Qt のレイアウトエンジンは、表示する文字列の実際の大きさを考慮に入れたレイアウトを行いますので、言語に応じた細かいレイアウトの調整は必要ありません。

バージョン変更時の再翻訳作業が容易

lupdate コマンドの高度なマージングアルゴリズムが、アプリケーションがバージョンアップした際の再翻訳作業を簡単にします。
lupdate はバージョンアップ時に、ソースコード上の文字列の変更を自動的に検出し、変更されたテキストのみを未翻訳テキストとして Qt Linguist に渡します。これにより、アプリケーションバージョンアップ時の翻訳作業が軽減され、翻訳者のチェックも容易になります。

多言語対応

Qt は内部表現に Unicode (UCS-2) を使用しており、38 種類の外部エンコーディングに対応しています。アラビア語、中国語、ヘブライ語、日本語、韓国語を含むほとんどの文字を扱うことができます。

双方向記述をサポート

Qt には Unicode の双方アルゴリズム (Bidirectional Algorithm) が実装されていますので、アラビア語やヘブライ語のように右から左へ記述される言語も簡単に表示することができます。

多国語の混合

Qt では、ひとつのページに、通常の左から右へ記述する欧州言語と、右から左へ記述する言語、記号等を混在させて表示し、カーソルを記述方向に応じて動かすことが可能です。

ページトップへ

柔軟性

Qt はウィジット (コントロール) を描画するのに、既存のツールキットを使用していません。例えば、Windows 上でボタンを表示するのにも、MFC で提供されているボタンを使用しているのではなく、低レベルの API (Win32 GDI+) を使用して描画しています。
そして、それぞれのプラットフォームで一般的に使用されている見映えと操作感に合わせて、Windows、Motif といったスタイルと同じようにウィジット (コントロール) を描画します。
このように、一からボタンなどを描画することと Qt がソースコードで提供されることにより、 独自の見映えと操作感にカスタマイズする際の自由度が高く、実現も効果的にできます。

ページトップへ

サポート

SRA は Digia のサポートに加えて、日本語による時差の無いローカルサポート窓口、日本語環境に特化した問題の迅速な解決支援、カスタムトレーニングや開発支援サービス等を提供します (サービスによってはオプションとなります)。

SRA では、API の使用方法に関するご質問は、Digia にエスカレーションすることなく対応します。

問題の内容によっては、SRA のサポートの方が対応が早い場合もあります。特に、日本語特有の問題等が生じた場合には、どうしても Digia の技術者だけでは、不具合内容の確認が困難となります。そのような場合には、Digia が対策を行う前に、弊社が先行で暫定パッチを作成して提供することもあります。

以前 Qt Windows 版において、特定の日本語フォントの指定が反映されないという不具合がありました。この時には、弊社の技術者が Latin-1 Supplement のグリフが無いフォントの指定を許容しないという不適切な処理があることを、いち早くつきとめ、パッチを作成し、お客様に提供させていただきました。後程、このパッチは正式に Digia により採用されております。

お客様に対して、営業担当もつかせていただきますので、様々なご要望に対しても迅速に対応させていただくことが可能です。Qt の良いところは、巨大な企業が独断で作った機能を押しつける製品ではなく、柔軟で小回りの良い対応で、お客様からのご要望を反映する形で生まれた、お客様指向の製品であるところです。
SRA は、お客様とメーカの Digia との間の橋渡しとして、製品が本当の意味でお客様の開発のお役に立てるツールになるよう努力しています。


Digia サポート

Digia の保守サポートプログラムは、Qt に関する API、関数やメソッド、プログラミングテクニックについての一般的なアドバイスとガイダンスを提供し、可能であればサンプルコードを提供します。

サービスレベル
それぞれのオプションはお客様の開発プロセスが最高の生産性を保持できるように考慮されています。
標準サポート・保守 (Standard Support and Maintenance)
標準サポート・保守オプションでは、個人的な質疑応答が可能です。受付時間は営業日の 10:00 から 17:00 で、受付の翌営業日から 4 営業日以内には最初の回答が行われることになっていますが、休暇期および頻忙時を除き、ほとんどの場合数時間以内に最初の回答が行われます。必要に応じて、製品開発に携わるスタッフも参加した、エキスパートによってサポート対応が行われます。
プライオリティーサポート (Priority Support)
標準サポートに、 プライオリティーサポートを追加で購入した場合には、優先度の高いサポート窓口を使用することができます。
サービスの違い
サービス内容
  Standard Priority
バグ修正バージョン
新バージョン
開発版スナップショット
プレリリース版
オンラインフォーラムへの参加
オンラインナレッジベース、 FAQ 等
オンラインタスクトラッキング
製品インストールサポート
製品使用サポート
サポート対応方法 Email Email
最初の回答迄の標準期間 4 営業日
Qt Quarterly
プレミアムサポート窓口  
プレミアムインシデント   12 回
プレミアムインシデント応答時間   1 営業日
訪問 (オプション)  
製品寿命に応じた保守延長 (オプション)  
Qt カスタマイズ (オプション)  

※ 営業日は、土日、祝祭日、ゴールデンウィーク、盆休暇、年末年始休暇、クリスマス休暇、イースター休暇、復活祭、会社記念日を除く平日。遠方への訪問には別途実費が必要です。

提供条件
サポートサービスは商用ライセンスを購入した全てのお客様が利用することができます。商用ライセンスには、1 年間の標準サポート・保守が含まれています。次年度以降は、任意でサポートサービスを購入し継続することができます。
プレミアムサポートは、商用ライセンスを使用している全てのお客様が購入することができます。
バージョンサポート
ある製品のバージョン x.y.z については、次のバージョン (x.y+1.0 もしくは x+1.0.0) が出た日から 1 年間あるいは、さらに次のバージョンが出る迄保守されます。これは、正式にリリースされたバージョンに対してのみ提供され、スナップショット、ベータ版、プレビュー版、その他のサポートされないリリースは対象外となります。バージョンのリリース後には、最新のバージョンがサポート対象となり、旧バージョンはサポート対象外となります。
プレミアムサポートを購入されているお客様は、保守期間の延長サービスを別途のオプションとして購入することができます。
サポートの流れ
サポートは電子メールベースでのみ提供されます。電話によるサポートはありません。
迅速な対応を確保するために、ライセンスをお持ちの開発者の方が、お持ちのライセンス ID に対して登録されている電子メールアドレスから、以下の内容を含んだ、平文テキストのメールを送付いただくようお願いします。
  • 内容 (不具合の申告、質問、要望) に関する分かりやすく詳細な説明
  • 対象となる製品のバージョン
  • 使用環境 (OS、ハードウェアプラットフォーム、開発環境)
  • 問題の確実な再現手順あるいは、問題を再現する単独で完成しているコンパイルと実行が可能な、500 行未満のサンプルコード。
スクリーンショットなどの、問題に付帯するコンテンツがあれば添付ファイルで送付してください。イメージのフォーマットは JPEG か PNG でいただけると幸いです (圧縮する場合は、zip もしくは tar.gz でお願いします)。実行形式のファイルや、プラットフォーム固有のフォーマットで書かれた文書 (Microsoft Office 文書等) は受け付けておりません。また、ファイル名を半角英数字にしていただくようお願いします。問題の原因が Qt に起因するものかどうかを切り分ける作業、プラットフォーム固有の API に関する質問、Qt が利用している他者によって作成された機能に関する質問はサポートの対象外です。
サポートシステム
Digia は Qt ベースでバックエンドで PostgreSQL が動いている内製サポートシステムを使用しています。このシステムは、世界中にある Digia の全部門で使用されており、様々なオペレーティングシステムやウィンドウシステムで稼働しています。
一次サポート技術者は全てのメールを定期的に確認します。サポート対応が必要な場合には案件番号が採番されます。一次サポート技術者が対応できる場合にはすぐに回答され、問題が検証を必要とする内容だった場合には、二次サポート技術者が割り当てられます。この場合には、自動返信で採番された案件番号が通知されます。
対応履歴の管理
質問対応中メールは、自動的に対応する案件に関連付けて保存されます。担当するサポート技術者は、問題が解決するか回避策等のアドバイスが受け入れられる、もしくは、バグとして認知される状況になるまで、お客様とやり取りを継続します。プレミアムサポートでは、これらのプロセスが優先して行われます。
不具合対応方針
製品の変更 (バグ修正、指摘事項の実装など) が必要という結果になった場合には、サポート技術者は、製品開発チームのための新しいタスクを作成します。
製品開発チームは、これらの問題を適宜見直し、優先度を設定してスケジュールを決定します。優先度のランクは、 P1 から P5 まであり、P1 が最高の優先度を持ちます。問題の修正は、次回のメンテナンスリリース、マイナー更新もしくは、将来の製品バージョンでの対応がスケジュールされます。以下のような典型的問題の対応は、次回のメインテナンスリリース時に行われます。
  • 過去に問題の無かったコードを変更した結果生じた不具合
  • サポートされているプラットフォームでのビルド不具合
  • 特定のプラットフォームにおいてのみ生じる不具合
  • クラッシュ、データ破壊、データ損失、競合状態等、Qt ライブラリ上の致命的な不具合
  • ドキュメントとライセンス情報の変更が必要な場合
上記の対応がスケジュールされます。以下のような典型的問題の対応は、上記に該当しない、致命的ではない不具合の修正は、製品を不安定にするデメリットの方が大きいので、将来のメジャーバージョンで修正となります。プレミアムサポートのインシデントは、担当となったサポート技術者が至急の優先度で対応し、お客様には、いつまでに問題を解決するというスケジュールが提案されます。
対応状況の確認
開発チームに与えられたタスクは Task Tracker により公にされています。お客様は、お客様ポータルサイトから Task Tracker にログインし、投票、コメント、バグ情報と推奨事項の確認をオンラインで行うことができます。
解決
不具合を担当する技術者は、次回に予定されているリリース用に修正コードを作成します。修正コードは見直しが行われ、スナップショットに入れる前にレグレッションテストされます。

SRA による Qt 開発サポート

SRA では Qt による開発を専門に手がけている技術者を多く抱えております。Qt によるシステムを開発の際に、要員や専門の技術サポートが必要な場合には、Digia 社公認のトレーナの下、弊社の技術者がお手伝いさせていただきます。

Qt で開発を行なう優位点
それぞれのオプションはお客様の開発プロセスが最高の生産性を保持できるように考慮されています。
  • 独自のアンケート調査では、Qt を採用された方の 83% の方が他のツールより使いやすく、プロジェクトがうまくいっていると考えています。単一プラットフォームの場合でも、Qt の持つ分かりやすい、直交性に優れた API や、柔軟な拡張性は、開発効率を上げるのに役立ちます。
  • 複数プラットフォーム向けアプリケーションの場合、初期開発コストを削減することができます。
  • 複数のプラットフォーム向けアプリケーションを、ひとつのソースコードで管理できますので、保守が容易になります。
  • 開発当初はひとつのプラットフォーム向けのアプリケーションであっても、将来の他 OS 展開を容易に行うことができます。
  • OS がバージョンアップ (例えば Windows XP から Windows Vista) した場合でも、Qt の API は保持されますので、アプリケーションを作りなおす必要がありません。
  • アンケート結果
    グラフ
    2005 年にミュンヘンとサンノゼで行われた Developer Days において、参加者全員 (顧客、パートナー、オープンソース開発者 ) に対してアンケート調査が行われました。その結果、回答者の 83% は、Qt プロジェクトが他のツールによるものよりもうまくいっていると述べました。

    質問は、"Are the Qt development projects in your company more successful than others?" で、これに対して Yes もしくは No と回答していただきました。
ページトップへ
 1.マルチプラットフォーム | 2.パフォーマンス | 3.簡単で使いやすいAPI 
 4.多言語対応 | 5.柔軟性 | 6.サポート