Qt Protobuf
Qt Protobuf ジェネレーター・プラグインは、.proto
ファイルから Qt ベースのクラスを生成します。このクラスを使用して、関連するprotobufメッセージをシリアライズおよびデシリアライズできます。
概要
プロトコルバッファとは?
プロトコルバッファは、構造化されたデータをシリアライズするための、言語やプラットフォームに依存しない拡張可能なメカニズムです:
- ユーザーは
.proto
ファイルでデータの構造を定義します。 - Protoコンパイラは、ビルド時に
.proto
ファイルに対して起動され、さまざまなプログラミング言語のコードを生成します。
提供されるフォーマットは、ネットワーク・トラフィックや長期的なデータ保存に適しています。
プロトコル・バッファはどのような問題を解決するのか?
プロトコル・バッファは、数メガバイトまでの型付けされ構造化されたデータ・パケットのシリアライズ形式を提供します。これにより、既存のデータを無効にしたり、コードを更新したりすることなく、新しい情報を拡張することができます。詳細については、プロトコル・バッファの概要を参照してください。
使用するメリットQt Protobuf
どの Qt ベースのプロジェクトでも、プロトコルバッファ機構を使用することができます:
- プロトコルバッファコンパイラを明示的に呼び出す必要がありません。
- 生成されたコードを手動でプロジェクトツリーに統合する必要がありません。
- シリアライズとデシリアライズの API にアクセスする。
- 生成されたprotobufメッセージのプロパティメカニズムの統合。
- 統合されたgRPCクライアントのサポートについては、Qt GRPC モジュールを参照してください。
- 生成されたprotobufメッセージの統合されたQML-typesサポート。
- 有効な Qt Coreおよび Qt GUI型を *.proto スキーマの一部として使うため。
モジュールの使用
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劣等一般公衆ライセンス、バージョン3、またはGNU一般公衆ライセンス、バージョン2、またはGNU一般公衆ライセンス、バージョン3。詳細はQt ライセンスを参照してください。
さらに、Qt 6.8.2のqtprotobufgen
ツールには、以下の寛容なライセンスの下、サードパーティモジュールを含めることができます:
BSD 3条項「新規」または「改訂」ライセンス |
© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.