指標構成ジェネレータ

Metrics Configuration Generator(MCG)は、SDV テレメトリー構成の作成を簡素化するサービスです。MCG は、人が読める JSON 構成を、車載テレメトリー キャンペーンに必要なバイナリ MetricsConfiguration プロトコル バッファ(protobuf)ファイル形式に変換します。

MCG は、標準の HTTP リクエストを使用してやり取りするウェブサービスです。この API ベースのアプローチでは、curl などのコマンドライン ツールを使用して手動で生成とデバッグを行うことができます。また、MCG をバックエンドとして統合して、ビルド構成を構築するためのグラフィカル インターフェースなどのより高度なツールを使用することもできます。

機能

車両のテレメトリー サービスには、MetricsConfiguration バイナリの protobuf メッセージが必要です。このメッセージはデバッグ用に textproto 形式で表すことができますが、この形式を直接作成するには、低レベルの構造に関する詳細な知識が必要であり、面倒でエラーが発生しやすくなります。MCG は、構成の作成をユーザー フレンドリーな JSON 形式に移行することで、このプロセスを効率化します。

MCG には次の機能が含まれています。

  • JSON ベースの構成: データソース、処理ロジック、レポートルールなどの指標構成は、人が読める JSON 形式で定義できます。MCG は、これを必要なバイナリ protobuf 形式にコンパイルします。
  • 組み込みの検証: 生成プロセスでは、シグナル定義とスキーマ ルールに照らして構成が自動的に検証され、デプロイ前にエラーが検出されます。
  • メッセージ タイプの自動生成: アグリゲータとレポートは、最終的なバイナリ構成で protobuf メッセージ記述子を使用して定義する必要がある結果を生成します。MCG は、入力シグナルタイプと集計ロジックに基づいてこれらの結果の構造を推測し、必要なメッセージ記述子を自動的に生成します。これにより、中間データ構造やレポート固有のデータ構造のスキーマを手動で定義する必要がなくなります。
  • 式を簡単に作成できる: 式を定義するための、人が読める形式のカスタム文法により、式ツリーを手動で作成する必要がなくなります。

ワークフロー

MCG を使用して指標構成を生成するには、主に 2 つのフェーズがあります。1 つは、使用する各車両信号カタログ バージョンを 1 回アップロードすること、もう 1 つは、個々の指標構成を作成して生成することです。

  1. シグナル定義をアップロードする: この手順は、Vehicle Signal Catalog のバージョンごとに 1 回だけ実行する必要があります。検証と型推論を有効にするには、MCG が、構成で参照する車両信号定義にアクセスできる必要があります。これらの定義は、VSIDL カタログの一部として、プロジェクトに protobuf ファイルとしてすでに存在している必要があります(または、サンプル定義を使用してテストすることもできます)。MCG で使用できるようにするには、車両シグナル カタログにパッケージ化し、API を使用してアップロードします。

  2. 書き込み構成: カタログ バージョンが MCG にアップロードされたら、それを参照する指標構成をいくつでも書き込むことができます。JSON 構成では、使用するデータソース、そのデータに対して計算または集計を実行する方法、結果が生成されるタイミングを決定するトリガーを定義します。

  3. 生成: JSON 構成を MCG API に送信します。API は構成を検証し、MetricsConfiguration 形式にコンパイルします。これは、車載用のバイナリ protobuf(application/x-protobuf)として、またはレビューやデバッグ用の textproto(text/x-protobuf)としてリクエストできます。

すべてのエンドポイント、リクエストとレスポンスの形式、使用例の詳細については、MCG API リファレンスをご覧ください。

デプロイ

クラウドネイティブ サービスとして、MCG はクラウド環境(Google Cloud Run など)にデプロイされるように設計されており、チーム全体で構成の生成と検証を一元的に行うことができます。デプロイの手順については、Google Cloud にデプロイするをご覧ください。

ローカルでの開発とテストでは、MCG をデベロッパー マシンでスタンドアロン サービスとして実行することもできます。設定手順については、ローカルで実行するをご覧ください。