マジセミドライブ

ウェビナー関連のニュースやITサービス&ツールの最新情報を随時配信します。

OSS情報

2020.01.01

【OSS情報アーカイブ】Qt

【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.io

■主要開発元

Qtは、Qt Companyが中心となり開発が進められています。

→Qt →About Us

■ライセンス情報

Qtのライセンスは「GNU Lesser General Public License (LGPL) version 3」です。

詳細について、こちらを参照ください。
→Qt →Qt Documentation →Qt Licensing

■ダウンロード

各OS用のインストーラーが用意されています。

・macOS用
・Windows用
・Linux(32/64ビット)用

→Qt →Install Qt

■導入事例

→Qt →Qt Resource Center

同様製品

同様な機能を提供する製品として、次のようなものがあります。

オープンソース製品:「Xamarin」「Mono」など。

開発フレームワーク

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を作成できます。

→Qt →Qt UI Design Tools

 

参考元サイト

※定期的にメンテナンスを実施しておりますが、一部情報が古い場合がございます。ご了承ください。

この記事のタグ一覧

おすすめの記事

【デジタル寺田の3分用語解説】「 経済産業省:コンテンツ制作のための 生成AI 利活用ガイドブック 」とは?📘

デジタル寺田の3分用語解説

2024.11.18

【デジタル寺田の3分用語解説】「 経済産業省:コンテンツ制作のための 生成AI 利活用ガイドブック 」とは?📘

経済産業省による「 生成AI 利活用ガイドブック 」は、企業やクリエイター向けに、安心して「生成AI」を利用するための、「指針」「実例」「注意点」を明示しています。「業務効率化」や「新しいアイデア創出」の支援を目的としています。

【デジタル寺田の3分用語解説】「 2029年問題 」とは?📅

デジタル寺田の3分用語解説

2024.11.18

【デジタル寺田の3分用語解説】「 2029年問題 」とは?📅

「 2029年問題 」とは、高校でのデジタル教育改革により、新入社員と既存社員間でデジタルスキル格差が拡大する懸念を指します。企業は早急に対応が求められています。この格差は、企業競争力や業務効率にも、影響を及ぼす可能性があります。

【デジタル寺田の3分用語解説】「 VMWare 問題 」とは?🖥️

デジタル寺田の3分用語解説

2024.11.18

【デジタル寺田の3分用語解説】「 VMWare 問題 」とは?🖥️

「 VMWare 」の仮想化技術は、「ITインフラの効率化」に大きく貢献する技術ですが、Broadcomによる買収後のライセンス変更が大きな問題として注目されています。柔軟で慎重な契約見直しが今後の鍵となります。