---
title: "プロトバッファの変換と変換処理"
date: "2022-02-10"
categories: 
  - "data-integration"
  - "database"
  - "json"
  - "protocol-buffers"
  - "xml"
tags: 
  - "data-integration"
  - "data-mapping"
  - "flowforce-server"
  - "mapforce"
  - "mapforce-server"
description: Altova MapForceを使って、Protocol Buffers (Protobuf) を効率的にマッピングおよび変換する方法を学びましょう。XML、JSON、データベースとの連携により、データ管理を効率化できます。
---
Status: #blog

Tags:  #data-integration #data-mapping #flowforce-server #mapforce #mapforce-server

Categories: [data-integration](/blog/ja/category/data-integration.md) | [database + sql](/blog/ja/category/database-sql.md) | [json](/blog/ja/category/json.md) | [data-integration](/blog/ja/category/data-integration.md) | [xml](/blog/ja/category/xml.md)
# プロトバッファの変換と変換処理

MapForceは、プロトコルバッファ（Protobuf）を、他の構造化データ形式との間で、[マッピングのソースまたはターゲット](https://www.altova.com/ja/mapforce)としてサポートしています。 Googleは、より効率的に大規模な構造化データセットを転送、操作、管理するための方法を常に模索しており、その結果、XMLに似た、しかしXMLよりも小型で高速かつシンプルなデータ形式であるProtobufを開発しました。 Protobufを使用するためのツールは、Java、Python、C++、C#、Rubyなど、さまざまなプログラミング言語で利用可能です。

Protobufメッセージの構造は、各フィールド名と値の型を定義する.protoファイルによって定義されます。Altova MapForceでは、ユーザーがこれらの.protoファイルを、XML、JSON、リレーショナルデータベース、Excel、フラットファイル、RESTおよびSOAPウェブサービスなど、他のデータとともに、データマッピングのソースまたはターゲットとして利用できます。.protoファイルのバージョン2と3がサポートされています。

MapForceのデータマッピング機能は、既存のXML、JSON、データベース、またはレガシーデータ形式と、Protobufの効率性を活用した新しいアプリケーションとの互換性を実現します。

[![](/blog/images/shutterstock_59314045.jpg)](shutterstock_59314045.jpg)

<!--more-->

Protobufの変換と加工を開始するには、まず「挿入」メニューを使用するか、クイックアクセスツールバーのボタンをクリックして、.protoファイルをマッピングに追加してください。

[![Altova MapForceにおけるデータマッピングのためのProtocol Buffers](/blog/images/insert-new.png)](insert-new.png)

MapForceには、以下に示すように、Protobuf形式のデータマッピングのサンプルが含まれています

[![MapForceにおけるデータマッピングプロトコルバッファのサンプル](/blog/images/protocol-buffers-data-mapping.png)](protocol-buffers-data-mapping.png)

出力対象として使用される.protoファイルは、オンラインドキュメントに記載されている「Persons」連絡先リストの例と一致しています。ソースデータは、このProtobufストリームには不要な多くの追加要素を含むXMLファイルです。データマッピングを実行すると、必要な要素がXMLファイルから抽出され、出力ストリームが作成されます。

Protobuf形式の出力ファイルは、BLOB（Binary Large Object、バイナリラージオブジェクト）というファイルタイプになります。MapForceを使用すると、開発者はJava、C++、その他の言語でソースコードを生成したり、コンパイルしたり、実行したりすることなく、Protocol Bufferのデータストリームを作成したり、Protocol Bufferの入力データを読み取ったりすることができます。これは、新しい.protoファイルに基づいて、各Protocol Bufferのバイナリデータに対して処理を行うことを意味します。

### 変換されたデータを表示します 

メインのMapForceデータマッピングウィンドウの最下部にある「出力」ボタンをクリックすると、マッピング処理が実行され、データソースとして「Altova_Hierarchical.xml」ファイルが使用されます。その結果得られたデータストリームは、出力プレビューウィンドウにJSON形式に近い形で表示されます

[![データマッピングプロトコルの出力プレビュー](/blog/images/output-preview.png)](output-preview.png)

特定の要件に対応する場合、MapForceのユーザーは、出力メニューにあるオプションを通じて、バイナリファイルを保存することができます

[![データマッピングプロトコルバッファによって生成されたバイナリ出力ファイルを保存します](/blog/images/data-mapping-save-output.png)](data-mapping-save-output.png)

以下に、一般的な16進数表示ツールで表示される、実際に生成されたバイナリデータの抜粋を示します

[![データマッピングプロトコルバッファから生成されたバイナリ出力の表示](/blog/images/protocol-buffers-binary-view.png)](protocol-buffers-binary-view.png)

Protobufストリームの効率性は、そのバイナリデータに明確に表れています。XMLやJSONにおける要素名に付随する余分な情報や、人間が読みやすくするために通常含まれるスペース、タブ、括弧、その他の文字がすべて取り除かれています。

### プロトバッファのマップと変換 

Protobuf形式のデータストリームを受け取った場合、それを社内で使用しているデータ形式に変換することができます。以下の図は、データベースへの変換例を示しています

[![Protocol Bufferのデータ構造を、ソースデータとして、データベースのテーブルをターゲットとするデータマッピング。](/blog/images/protobuf-source-mapping.png)](protobuf-source-mapping.png)

このマッピング機能は、受信したバイナリデータを既存のデータベーステーブルの構造に合わせて処理するために、いくつかのデータ処理変換関数を使用します。MapForceは、主要なリレーショナルデータベースおよびNoSQLデータベースとの間でデータマッピングをサポートしています。詳細はこちらをクリックしてください [完全なリストを見る](https://www.altova.com/ja/mapforce#db_mapping).

このマッピング処理の結果として生成されるのは、バイナリデータからデータベースにデータを挿入するためのSQLスクリプトです

[![プロトバッファからデータベースへのマッピング処理の結果として生成されるSQLスクリプト。](/blog/images/db-insert-script.png)](db-insert-script.png)

スクリプトの実行後、DatabaseSpy（Altova社製）を使用して、データベースの内容を確認することができます [SQLエディタ](https://www.altova.com/ja/databasespy):

[![プロトコルバッファからデータベースへのマッピング処理を実行した後、生成されるテーブルの内容。](/blog/images/table-contents.png)](table-contents.png)

### 自動実行

データ処理のワークフローでは、同じ.proto定義に基づいて新しいデータストリームを生成するために、[データマッピングを繰り返し実行する必要がある](https://www.altova.com/ja/mapforce-server)場合があります。ただし、その際、異なるソースデータを使用します。上記の最初の例では、異なるXMLインスタンスドキュメントが提供される可能性があります。また、データベースやREST WebサービスからProtobufへのデータマッピングは、更新されたソースデータを取り込むために、定期的なスケジュールで実行する必要がある場合があります。

繰り返し処理が必要な場合、またはその他の同様の状況において、MapForceのユーザーは、簡単なメニュー操作を通じて、データマッピングを[MapForce Server](https://www.altova.com/ja/mapforce-server)の実行ファイルとして保存することができます

[![データマッピングプロトコルバッファ用のMapForce Server実行ファイル](/blog/images/MapForce-Server-execution-file.png)](MapForce-Server-execution-file.png)

実行ファイルは、データに対して適用される入力、出力、および中間処理ステップ（ソート、フィルタリング、カスタム関数など）を定義し、サーバー環境での実行に最適化された形式で記述されています。MapForce Serverは、これらのコンパイルされたデータ変換処理を、コマンドラインまたはAPIインターフェースを通じて自動的に実行します。

MapForce Serverは、企業のニーズに応じて、FlowForce Server、RaptorXML Server、またはStyleVision Serverと連携するように構成できます。MapForce ServerがFlowForce Serverによって管理されている場合、データマッピングは、特定の時間や時間間隔で実行されるFlowForce Serverのジョブステップとして実行されるか、監視フォルダに新しいファイルが到着するなど、特定のイベントに基づいて実行されます。

Protobufデータマッピングにおいて、データソースがデータベースクエリやRESTリクエストの場合、そのクエリはマッピング処理の一部として実行されます。一方、入力がJSONやXMLなどのファイルである場合、新しいファイルは実行時にFlowForceジョブのパラメータとして指定されます。

今すぐ、以下の機能を試すことができます [完全機能を持つMapForceの無料トライアル版](https://www.altova.com/ja/mapforce/download).
