はじめに#
近年、企業間でのデータ共有・流通の重要性が高まっています。しかし、単純にAPIを公開するだけでは、「誰が」「どんな条件で」「どのデータに」アクセスできるかを制御することが困難です。
データスペース(Dataspace) は、この課題を解決するための概念です。データの所有者が主権を持ちながら、信頼できる相手とデータを安全に共有できる仕組みを提供します。
本記事では、データスペースの実装基盤である Eclipse EDC(Eclipse Dataspace Components) を使って、ローカル環境でデータ交換フローを体験します。
- データスペースとは?
- Eclipse EDCの概要
- 環境構築
- データ交換フローの実行
- GUIダッシュボードの作成
- まとめ
データスペースとは?#
従来のデータ共有の課題#
従来のAPI連携では、以下のような課題がありました:
- アクセス制御が困難 : APIキーを渡すと、どんなデータでも取得できてしまう
- 利用条件の管理 : 「このデータは社内利用のみ」といった条件を技術的に強制できない
- 監査・追跡 : 誰がいつデータを取得したか追跡しづらい
データスペースの解決策#
データスペースは以下の仕組みで解決します:
主要な用語#
| 用語 | 説明 |
|---|
| Connector | データスペースに参加するためのソフトウェア。ProviderとConsumerそれぞれが持つ |
| Provider | データを提供する側 |
| Consumer | データを取得する側 |
| Catalog | Providerが公開しているデータの一覧 |
| Policy | データアクセスの条件(誰が、いつ、どのように使えるか) |
| Contract | ProviderとConsumer間で結ばれる契約 |
| EDR | Endpoint Data Reference。データ取得用の一時的なアクセス情報 |
Eclipse EDCの概要#
Eclipse EDC は、Eclipse Foundationが開発するオープンソースのデータスペース実装基盤です。
アーキテクチャ#
主要なAPIエンドポイント#
| エンドポイント | 用途 |
|---|
/management/v3/assets | アセット(データ)の管理 |
/management/v3/policydefinitions | ポリシーの管理 |
/management/v3/contractdefinitions | コントラクト定義の管理 |
/management/v3/catalog/request | カタログの取得 |
/management/v3/contractnegotiations | 契約交渉 |
/management/v3/transferprocesses | データ転送 |
/management/v3/edrs | EDR(アクセストークン)の取得 |
環境構築#
前提条件#
- Docker & Docker Compose
- Java 17(Gradleビルド用)
- Python 3(プロキシサーバー用)
1. EDC Samplesのクローン#
2. コネクタのビルド#
3. Docker設定ファイルの作成#
Dockerfile.consumer
Dockerfile.provider
docker-compose.yml
4. コネクタの起動#
起動確認:
データ交換フローの実行#
フロー全体像#
Step 1: Providerにデータを登録#
アセット作成 (提供するデータの定義)
0
ポリシー作成 (アクセス条件の定義)
1
コントラクト定義作成 (アセットとポリシーの紐付け)
2
Step 2: カタログ取得#
Consumerから、Providerが公開しているデータを確認します:
3
レスポンスには、Providerが公開している「製品データ」とそのOffer IDが含まれます。
Step 3: 契約交渉#
カタログから取得したOffer IDを使って契約交渉を開始します:
4
交渉が完了すると、状態が FINALIZED になり、contractAgreementId が発行されます。
Step 4: データ転送#
契約が締結されたら、データ転送を開始します:
5
Step 5: データ取得#
Transfer状態が STARTED になったら、EDRを取得してデータを取得します:
6
レスポンス例:
7
GUIダッシュボードの作成#
CLIでの操作は学習には良いですが、実際の運用では視覚的なダッシュボードが便利です。
今回、Next.js + TypeScriptでEDCダッシュボードを作成しました。

- コネクタタブ : Consumer/Providerのアセット・ポリシー・コントラクト管理
- データ交換フロータブ : GUIでフルフロー実行
- 契約交渉タブ : 契約交渉の一覧・状態確認
- データ転送タブ : データ転送の一覧・状態確認
データ交換フローの実行#
ダッシュボードの「データ交換フロー」タブでは、5つのステップでデータ交換を実行できます。
Step 1-2: カタログ取得とオファー選択

「カタログ取得」ボタンをクリックすると、Providerが公開しているデータ(製品データ)が表示されます。
Step 3-4: 契約交渉とデータ転送

契約交渉が完了すると、転送タイプ(HTTP Pull/Push)を選択してデータ転送を開始できます。
Step 5: データ取得完了

全てのステップが完了すると、Providerから取得した実際のデータがJSON形式で表示されます。
契約交渉・データ転送の管理#
契約交渉一覧

データ転送一覧

各タブで契約交渉やデータ転送の状態を確認できます。
CORSの解決#
ブラウザからEDC Management APIに直接アクセスするとCORSエラーが発生するため、
Pythonで簡易プロキシサーバーを作成しました:
8
まとめ#
今回学んだこと#
- データスペースの概念 : 従来のAPI連携との違い、主権を維持したデータ共有
- Eclipse EDCの構成 : Control Plane / Data Plane、Management API
- データ交換フロー : カタログ取得 → 契約交渉 → データ転送 → データ取得
- 実践 : Docker環境でのEDC構築、GUIダッシュボードの作成
次のステップ#
- ポリシーの活用 : 特定の条件(時間制限、地域制限など)を持つポリシーの設定
- 認証・認可 : 実運用向けのVault統合、証明書管理
- Federated Catalog : 複数のProviderを横断したカタログ検索
- Catena-X / GAIA-X : 自動車業界やEUのデータスペースイニシアチブとの連携
参考リンク#
この記事で使用したコードはGitHub をベースに作成しました。