マジセミドライブ
ウェビナー関連のニュースやITサービス&ツールの最新情報を随時配信します。
OSS情報
2020.01.01
【OSS情報アーカイブ】Qt


※当記事に記載されている情報は、古くなっている場合があります。オフィシャルサイトで最新情報をご確認ください。
コンテンツ
「Qt」とは
概要
Qt(キュート)とは、クロスプラットフォームアプリケーション開発フレームワークです。さまざまなプラットフォームに対して同じコードベースを使用して、「高速動作」「高性能」「直感的」なアプリケーションやUIを開発できます。
基本説明
Qtは、1つのソースコードをコンパイルし直すだけで、複数のプラットフォームで動作させることが可能となるクロスプラットフォーム開発環境です。
LinuxやWindowsなどのさまざまなソフトウェアおよびハードウェアプラットフォームで実行されるクロスプラットフォームアプリケーションを迅速かつコスト効率よく「設計」「開発」「展開」「保守」できる統合フレームワークです。
直感的なツールやライブラリを備えており、グラフィカルユーザーインターフェースを作成するためのウィジェットツールキットとしても利用できます。
C++言語で実装されているため、高速動作できる点も特徴です。
経緯
・1995年:初回リリース
Qtは「プログラミングは速く、簡単で、楽しいものでなければなりません」という目標で、長年にわたりソフトウェア開発の改善に注力してきています。
ユースケース
■アプリケーションUIとソフトウェア
高速なクロスプラットフォーム開発により、幅広いオペレーティングシステムでネイティブパフォーマンスを提供できます。
■モバイルアプリ
QtはiOSやAndroidを含むモバイルプラットフォームで動作できます。
「シンプルなコンパニオンアプリ」から「高速描画が必要な3Dゲーム」まで対応できます。
■IoT
Qtは「高性能グラフィックスを備えた接続デバイス」や「非GPUの長寿命バッテリーUI」まで完全にスケーラブルであり、ハードウェアのパフォーマンスを引き出すIoTアプリケーションを開発できます。
■VR / AR
「ローエンドハードウェアでの効率の良い2Dグラフィックス」や「ハイエンドハードウェアでの強力な3Dグラフィックス」などのVR/ARアプリも開発できます。
■自動車
「単一のSoCで実行される車載インフォテインメント(IVI)」「デジタル計器クラスタ」「ヘッドアップディスプレイ(HUD)用インターフェース」などを開発できます。
■オートメーション
「各種センサー」や「他システム」を統合して、「スマート工場」「住宅」「サービス」向けの自動化システムを開発できます。
オフィシャルサイト情報
■オフィシャルサイト
■主要開発元
Qtは、Qt Companyが中心となり開発が進められています。
■ライセンス情報
Qtのライセンスは「GNU Lesser General Public License (LGPL) version 3」です。
詳細について、こちらを参照ください。
→Qt →Qt Documentation →Qt Licensing
■ダウンロード
各OS用のインストーラーが用意されています。
・macOS用
・Windows用
・Linux(32/64ビット)用
■導入事例
同様製品
同様な機能を提供する製品として、次のようなものがあります。
開発フレームワーク
Qtは、クロスプラットフォームおよびクロスコンパイルのサポートを提供する「Qt統合開発環境」の他にも、開発ライフサイクル全体を通して価値のあるツールを備えた完全な開発フレームワークを提供します。
成熟し包括的で直感的に利用できる一連のAPIにより、開発生産性を大幅に向上できます。
クロスプラットフォーム開発環境
■概要
Qtを使用すると、プラットフォームに依存しないコードを記述できます。
Qtはさまざまな32ビットおよび64ビットプラットフォームをサポートしており、「GCC」「ベンダー提供のコンパイラ」「サードパーティのコンパイラ」などを使用して各プラットフォームでビルドできます。
GUIアプリケーションを一度作成すればソースコードを書き直すことなく「デスクトップOS」「モバイルOS」「組み込みOS」など、あらゆるオペレーティングシステムやハードウェアに展開できます。
プラットフォーム固有の機能を使用してシステムライブラリと統合できるソリューションも提供しています。
→Qt →Qt Documentation →Supported Platforms
■ウィンドウシステム統合
Qtは「QPA(Qt Platform Abstraction)」を使用して、ターゲットプラットフォームのウィンドウシステムと統合します。
QPAは、Qtを該当プラットフォームに簡単かつ迅速に移植できるウィンドウシステムの抽象化機能を提供します。
Qtは「Waylandプロトコル」を利用することで、組み込みハードウェア上の軽量ウィンドウシステムと統合して、マルチプロセスグラフィカルユーザーインターフェースをサポートできます。
■サポートプラットフォーム
デスクトッププラットフォーム
・Linux/X11
・macOS
・Windows
モバイルプラットフォーム
・Android
・iOS/tvOS/watchOS
・WinRT
組み込みプラットフォーム
組み込みプラットフォーム用Qt開発フレームワーク「Qt for Device Creation(商用製品)」を利用することで、「組み込みLinux」「QNX」「INTEGRITY」「VxWorks」などの組み込みプラットフォームに展開できます。
→Qt →Qt Documentation →Qt 5.13.0 for Device Creation
C++パフォーマンス
QtのC++アプローチにより、ネイティブパフォーマンスレベルの高速動作を実現できます。
■C++言語の特徴
C++言語はハイパフォーマンスを特徴とするプログラミング言語で、「例外処理」「関数オーバーロード」「ハードウェアへの直接アクセス」などの機能を提供します。
ハイパフォーマンス性能により「GUIアプリケーション」「ゲームの3Dグラフィックス」「リアルタイム数学シミュレーション」など、特に高速処理が必要なアプリケーションにも対応できます。
また、C++は移植性が高いため、マルチデバイス(マルチプラットフォーム)アプリ開発に適しています。
「Qt」の主な機能
データストレージ機能
■概要
Qtは「ファイルアクセス」や「データストレージデバイスアクセス」などの機能を提供します。
→Qt →Qt Documentation →Data Storage
■主なサポート種類
SQL
QtのSQLのモジュールは、データベースAPIと通信するためのドライバプラグインを使用して各データベースにアクセスします。
Qtが提供する主なドライバ
・SQLite
・MySQL
・PostgreSQL
・Oracle
・ODBC など
Qtが必要なドライバを提供していない場合は、独自ドライバを開発して接続できます。
XML
Qtは「XMLストリームの読み取りと解析」および「ストリームへの書き込み」を実行するAPIを提供します。
JSON
QtはJSONもサポートしています。
JSONは、データ交換のためのテキストベースのオープンスタンダードであり、読みやすく解析しやすい点が特徴です。「オブジェクトと呼ばれる単純なデータ構造」や「連想配列」などを表現するために使用されます。
ローカルストレージ
「Local Storage API」は、QMLおよびJavaScriptから、SQLデータベースのローカルオフラインストレージにアクセスする機能を提供します。
ネットワーク機能
■概要
Qtは以下のネットワーク用クラスを提供します。
・ネットワーク通信用クラス—高レベルおよび低レベルに対応
・Web統合用クラス
・プロセス間通信用クラス
→Qt →Qt Documentation →Networking and Connectivity
■主なサポート種類
ネットワーク通信
Qtは「HTTP」「TCP」「UDP」に重点を置いた幅広いネットワーク通信をサポートしています。
WebSocket
「TCP通信」または「HTTP通信」の代替手段として「WebSocketプロトコル(RFC 6455)」を使用できます。
WebSocketプロトコルは、追加のクライアント/サーバベースの通信を作成することなく、既存のWebインフラストラクチャを利用するためのTCPプロトコルの上にある双方向通信プロトコルです。
QtのWebSocketモジュールは「QML」と「C++」の両方のAPIを提供します。
プロセス間通信
Qtは、Qtアプリケーションで「プロセス間通信(IPC)」を実装するためのいくつかの方法を提供します。
シリアルポート通信
Qtのシリアルポートモジュールは「RS-232標準」を使用して、シリアルポートを介して通信するための「C++API」を提供します。
物理ポートで動作し、これらのポートをエミュレートするドライバでも動作します。
シリアルポートエミュレータの例には「仮想COMポート」「com0comエミュレータ」「Bluetooth SPP」などが含まれます。
Bluetooth通信
QtのBluetoothモジュールは、「C++用」と「QML用」の両方をAPIを提供します。
「従来のBluetooth」および「Bluetooth Low Energy」をサポートします。
近距離無線通信
NFCは、非常に近距離(20センチメートル未満)用の無線プロトコルです。
QtのNFC通信モジュールも、「C++」と「QML」の両方のAPIを提供します。
Qt開発ツール「Qt Creator」
概要
Qt開発ツール「Qt Creator」には、「プロジェクトの作成」から「ターゲットプラットフォームへのアプリケーションのデプロイ」まで、アプリケーション開発ライフサイクル全体を通してタスクを達成するためのツールを提供します。
「Qt Creator IDE」「Qtライブラリ」「サンプル」「ドキュメント」などの開発ツールが含まれています。
→Qt →Qt Documentation →Qt Creator Manual
統合開発環境「Qt Creator IDE」
■概要
「Qt Creator IDE」は、クロスプラットフォーム統合開発環境です。
開発者とデザイナーの両方のための幅広い統合ツールが付属しています。
→Qt →Qt APIs & Libraries, Tools and IDE
UIデザインツール「Qt Design Studio/Qt 3D Studio」
■概要
UIデザインツール「Qt Design Studio」「Qt 3D Studio」を利用すると、「宣言型スクリプトプログラミング」「命令型デザイン」「HTML5を含むハイブリッド開発」を使用して、流動的で応答性の高い2D/3D UIを作成できます。
参考元サイト
※定期的にメンテナンスを実施しておりますが、一部情報が古い場合がございます。ご了承ください。
この記事のタグ一覧
フリーワード検索
カテゴリー一覧
アクセスランキング
- 🏆ランク1位🏆
【無料で使える】「 プロジェクト管理 」ツールまとめ - 🏆ランク2位🏆
【無料で使える】「 OCR 」ツールまとめ - 🏆ランク3位🏆
【OSS情報アーカイブ】SonarQube - 🏆ランク4位🏆
【無料で使える】「 翻訳 」ツールまとめ - 🏆ランク5位🏆
【無料で使える】「 ドキュメント管理 」ツールまとめ - 🏆ランク6位🏆
【無料で使える】「 RPA 」ツールまとめ - 🏆ランク7位🏆
【ツール紹介】無料で使えるオープンソース「 ヘルプデスク 管理ツール 」まとめ5選 - 🏆ランク8位🏆
【無料で使える】「 マルウェア 」対策ツールまとめ - 🏆ランク9位🏆
【OSS情報アーカイブ】fping - 🏆ランク10位🏆
【ChatGPT使ってみる実験室】 WordPress関数を作って記事リストを出力