Qt Protobuf
Qt Protobuf ジェネレータプラグインは、.proto ファイルからQtベースのクラスを生成します。これらのクラスを使用して、関連付けられたprotobufメッセージのシリアライズおよびデシリアライズを行うことができます。
概要
プロトコルバッファとは?
プロトコルバッファは、構造化データをシリアライズするための、言語非依存、プラットフォーム非依存、かつ拡張可能なメカニズムであり、コンパクトで使いやすいのが特徴です:
- ユーザーは、
.protoファイル内でデータの構造を定義します。 - ビルド時に
.protoファイルに対してProtoコンパイラが呼び出され、さまざまなプログラミング言語のコードが生成されます。
提供されるフォーマットは、ネットワークトラフィックや長期的なデータ保存に適しています。
プロトコルバッファはどのような問題を解決しますか?
プロトコルバッファは、数メガバイトまでのサイズの型付きかつ構造化されたデータパケット向けのシリアライズ形式を提供します。これにより、既存のデータを無効にしたり、コードの更新を必要とすることなく、新しい情報を追加して拡張することが可能です。詳細については、「プロトコルバッファの概要」を参照してください。
使用のメリットQt Protobuf
Qt ベースのプロジェクトであれば、どのプロジェクトでも Protocol Buffers のメカニズムを利用できます:
- プロトコルバッファコンパイラを明示的に呼び出す必要はありません。
- 生成されたコードをプロジェクトツリーに手動で統合する必要はありません。
- シリアライズおよびデシリアライズAPIを利用できます。
- 生成されたProtobufメッセージ用の統合プロパティメカニズムを利用できます。
- gRPCクライアントの統合サポートについては、Qt GRPC モジュールを参照してください。
- 生成された Protobuf メッセージに対する統合されたQML タイプのサポートについては、こちらをご覧ください。
- 有効化された Qt Core および Qt GUI タイプを *.proto スキーマの一部として使用する方法については、以下を参照してください。
モジュールの使用
Google Protocol Buffers は、拡張機能をサポートする「protoc 」というジェネレータを提供しています。qtprotobufgen ツールは protoc 向けの拡張機能であり、ホストシステムにprotoc をインストールする必要があります。インストールに関する詳細については、「Protoc のインストール」を参照してください。
- Linux でのapt を使用したインストール例:
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 my.proto.package.uriC++ API
Qt モジュールの C++ API を使用するには、モジュールライブラリに対して、直接または他の依存関係を通じてリンクを行う必要があります。CMakeやqmake を含むいくつかのビルドツールは、これを専用にサポートしています。
CMake を使用したビルド
find_package() コマンドを使用して、Qt6 パッケージ内の必要なモジュールコンポーネントを特定します:
find_package(Qt6 REQUIRED COMPONENTS Protobuf)
target_link_libraries(mytarget PRIVATE Qt6::Protobuf)詳細については、「CMake を使用したビルド」の概要を参照してください。
記事とガイド
- Qt6 Protobuf における CMake コマンド
- Protobuf Qt Core Types
- Protobuf Qt GUI Types
- Qt Protobuf Well-Known types
- Qt Protobuf 変更可能なゲッター
参考文献
例
ライセンスおよび帰属表示
Qt Protobuf モジュールは、The Qt Companyから商用ライセンスの下で提供されています。さらに、フリーソフトウェアライセンス(GNU Lesser General Public License バージョン3、 GNU General Public License バージョン2、 またはGNU General Public License バージョン3)の下でも利用可能です。詳細については、「Qtのライセンス」を参照してください。
さらに、Qt 6.12.0に含まれるqtprotobufgen ツールには、以下の寛容なライセンスに基づくサードパーティ製モジュールが含まれている場合があります:
BSD 3条項「New」または「Revised」ライセンス |
© 2026 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.