Qt Protobuf

Qt Protobufジェネレータープラグインは.proto ファイルから Qt ベースのクラスを生成します。このクラスを使用して、関連する protobuf メッセージをシリアライズおよびデシリアライズできます。

概要

プロトコルバッファとは?

プロトコルバッファは、構造化されたデータをシリアライズするための、言語やプラットフォームに依存しない拡張可能なメカニズムです:

  • ユーザーは.proto ファイルでデータの構造を定義します。
  • Protoコンパイラは、ビルド時に.proto ファイルに対して起動され、さまざまなプログラミング言語のコードを生成します。

提供されるフォーマットは、ネットワーク・トラフィックや長期的なデータ保存に適しています。

プロトコル・バッファはどのような問題を解決するのか?

プロトコル・バッファは、数メガバイトまでの型付けされ構造化されたデータ・パケットのシリアライズ形式を提供します。これにより、既存のデータを無効にしたり、コードを更新したりすることなく、新しい情報を拡張することができます。詳細はプロトコルバッファの概要を参照してください。

Qt Protobuf を使用する利点

Qt プロトコルバッファは Qt ベースのプロジェクトで使用できます:

  • プロトコルバッファコンパイラを明示的に呼び出す必要がありません。
  • 生成されたコードを手動でプロジェクトツリーに統合する必要がありません。
  • シリアライズとデシリアライズの API にアクセスする。
  • 生成されたprotobufメッセージのプロパティメカニズムの統合。
  • 統合された gRPC クライアントのサポートについては、Qt GRPC モジュールを参照してください。
  • 生成されたprotobufメッセージの統合されたQML-typesサポート。
  • .protスキーマの一部として有効なQt CoreQt GUI

モジュールの使用

Googleプロトコルバッファはprotoc という拡張機能をサポートするジェネレータを提供しています。qtprotobufgen Toolprotoc 用の拡張で、ホスト・システムに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.1の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.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。