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 ModuleProtobuf Qt GUI types module を参照してください。

受信機能

  • gRPC-server サポートを有効にしました。

モジュールの使用

Google プロトコルバッファは、protoc というジェネレータを提供し、拡張をサポートしています。qtprotobufgen Toolは protoc の拡張で、ホストシステムにprotoc をインストールする必要があります。インストールの詳細については、Protocのインストールを参照してください。

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 ツールには、以下の寛容なライセンスの下、サードパーティモジュールを含めることができます:

protobuf, version 21.9

BSD 3-clause "New" または "Revised" ライセンス

本ドキュメントに含まれる文書の著作権は、それぞれの所有者に帰属します 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。