Qt Protobuf
Qt Protobufジェネレータープラグインは、.proto
ファイルから Qt ベースのクラスを生成します。このクラスを使用して、関連する protobuf メッセージをシリアライズおよびデシリアライズできます。
概要
プロトコルバッファとは?
プロトコルバッファは、構造化されたデータをシリアライズするための、言語やプラットフォームに依存しない拡張可能なメカニズムです:
- ユーザーは
.proto
ファイルでデータの構造を定義します。 - Protoコンパイラは、ビルド時に
.proto
ファイルに対して起動され、さまざまなプログラミング言語のコードを生成します。
提供されるフォーマットは、ネットワーク・トラフィックや長期的なデータ保存に適しています。
プロトコル・バッファはどのような問題を解決するのか?
プロトコル・バッファは、数メガバイトまでの型付けされ構造化されたデータのパケットをシリアライズするフォーマットを提供します。さらに、既存のデータを無効にしたり、コードを更新したりすることなく、新しい情報で拡張することができます。詳細については、プロトコルバッファの概要を参照してください。
Qt Protobuf を使用する利点は何ですか?
どの Qt ベースのプロジェクトでもプロトコルバッファ機構を使用できます:
- プロトコルバッファコンパイラを明示的に呼び出す必要がありません。
- 生成されたコードを手動でプロジェクトツリーに統合する必要がありません。
- 便利なシリアライズ/デシリアライズ API。
- 生成されたprotobufメッセージのための統合されたプロパティメカニズム。
- 統合された gRPC クライアントのサポート (Qt GRPC モジュールを参照)
- 生成された protobuf メッセージに対する統合された QML-types サポート。Qt Protobuf QML Typesを参照してください。
- Qt Core と Qt GUI の型を *.proto スキーマの一部として使用可能。Protobuf Qt Core Types Module とProtobuf Qt GUI types module を参照してください。
受信機能
- gRPC-server サポートを有効にしました。
モジュールの使用
Google プロトコルバッファは、protoc
というジェネレータを提供し、拡張をサポートしています。qtprotobufgen Toolは protoc
の拡張で、ホストシステムにprotoc
をインストールする必要があります。インストールの詳細については、Protocのインストールを参照してください。
- aptを使用したLinuxへのインストール例:
apt install -y protobuf-compiler protoc --version # Ensure compiler version is 3+
- vcpkgを用いたWindowsへのインストール例
QML API
モジュールの QML タイプは、qt_add_protobufマクロの QML と QML_URI オプションで利用できます。インポート名は.proto
パッケージ名と同じか、qt_add_protobufマクロの QML_URI オプションで定義されます。型を使用するには、.qml ファイルに以下の import 文を追加します:
import my.proto.package.uri
C++ API
Qt モジュールの C++ API を使用するには、モジュールライブラリを直接リンクするか、他の依存関係を通 してリンクする必要があります。CMakeや qmakeなど、いくつかのビルドツールはこのための専用サポートを持っています。
CMake でのビルド
find_package()
コマンドを使用して、Qt6
パッケージの中から必要なモジュール・コンポーネントを探します:
find_package(Qt6 REQUIRED COMPONENTS Protobuf)
target_link_libraries(mytarget PRIVATE Qt6::Protobuf)
詳細については、CMakeによるビルドの概要を参照してください。
記事とガイド
参考文献
例
ライセンスと帰属
Qt Protobufモジュールは、The Qt Companyの商用ライセンスで利用できます。また、フリーソフトウェアライセンスでも提供されています:GNU Lesser General Public License, version 3、またはGNU General Public License, version 2、またはGNU General Public License, version 3です。詳細はQt ライセンスを参照してください。
さらに、Qt 6.8.0のqtprotobufgen
ツールには、以下の寛容なライセンスの下、サードパーティモジュールを含めることができます:
BSD 3-clause "New" または "Revised" ライセンス |
本ドキュメントに含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。