NTT DATA TECH
🌏

僕らの仕事を楽にするかもしれない「データスペース」という技術

に公開

はじめに

昨今、欧州や日本を中心に発展しつつある「データスペース」について、皆さんに手を動かしながら体験頂けるようなブログを書いてみます。

本記事の想定読者

  • ITの基礎的素養はあるけど、データスペースのことをあまり知らない方
  • 様々な分野でデータ利活用を検討している方

そもそもデータスペースとは

データスペースとは、参加する組織・企業同士が互いに信頼できる仕組みのもとで、安全かつ自由にデータをやり取りできる制度と技術基盤が整った空間のことを指します。
こうした制度・技術の構築・標準化により、業界・組織・企業間のコラボレーションを加速し、横断的な課題解決や新たなデジタルサービスの創出を支えることができます。
データスペースは、近年欧州や日本を中心に広がりを見せています。以下の図はデータスペースの概念を表しています。データスペースの各参加者は、「コネクタ」と呼ばれるソフトウェアを用いて、「カタログ」を参照しながら、他の参加者とデータの受け渡しを行います。

NTT DATAでは、ヘルスケア、モビリティ、製造サプライチェーン、産学連携など、国内外で様々な取り組みを行っています。詳しくは、以下のウェブサイトや記事をご覧ください。

データスペースにおけるデータのやり取り

ここでは、データスペース参加者のうち、データを提供する「データ提供者」とデータを利用する「データ利用者」の2者間のやり取りにフォーカスし、データスペース上でのデータ交換の仕組みを説明します。

  1. まずデータ提供者は、提供可能なデータの場所、概要、利用条件を「カタログ」に登録し、データスペース参加者に公開します。

  2. データ利用者はこの「カタログ」の中から自分の利用したいデータを参照し、利用条件を確認します。

  3. データ利用者はその後、利用条件をもとにコネクタ経由でデータ提供者に契約交渉を実施します。

  4. データ提供者は、受信した契約交渉の内容と利用条件を評価し、問題なければ契約合意をデータ提供者に伝えます。契約合意後、データ転送プロセスが開始されます。

データスペースの安全性を支える設計

ここでは、1つのシステムにデータを集約管理する中央集権型のアーキテクチャと、参加者同士でのデータ交換をベースとするデータスペースのアーキテクチャを比較しながら、データスペースの安全性の鍵となっている設計について解説します。

1. 分散型アーキテクチャによるレジリエントな設計

以下の図は、中央集権型アーキテクチャにおいて、中央の基盤システムに障害が発生した際のイメージ図です。

このように、中央集権型アーキテクチャでは、「1か所に集約された基盤」が単一障害点となることが多く、システム障害やメンテナンスによって全体の可用性が大きく左右されるリスクがあります。
一方、データスペースでは、各参加者が自分の管理下でコネクタを動かし、個別に通信・契約・転送を行うため、単一障害点が発生しにくくなります。
特定の参加者やシステムに障害が起きても、他のやり取りには影響が及びにくい構造が、データスペースの特徴です。

2. 各々のデータ主権を尊重する設計

もうひとつの大きな特徴は、「データ主権」の考え方です。

ここで、データ主権とは、自分が保有するデータに対して、誰が・どのように・どの範囲でアクセスできるかを、自分自身で決定・管理できる権利を指します。

中央集権型アーキテクチャでは、以下の図のように利便性の裏で意図せずデータ主権を脅かしかねないリスクが存在します。

  • データ漏洩のリスク
    中央の基盤に多くのデータが集まる構造では、一度のセキュリティインシデントで複数の組織のデータが同時に漏洩する場合があります。

  • データの欠損・改ざんのリスク
    中央の基盤に預けたデータが、意図せず消去・上書き・改変されても、提供者がすぐに気づけない場合があります。

  • ログの不整合・不透明性
    通信やアクセスの履歴が中央の基盤の管理者側にしか残らず、提供者・利用者自身がアクセス状況を把握・検証できない場合があります。

データスペースでは、データ提供者が、常にデータの保管先・公開範囲・アクセス権限を自ら制御し、自分のデータの行き先を監視・記録できるよう設計されています。

データスペースによって私たちの仕事は楽になるのか

筆者は、データスペースを「私たちの仕事を楽にする可能性がある技術」と捉えています。その理由を、データの会社間取引を例として取り上げて説明します。

「データの会社間取引」となると、データを提供する側、利用する側、それぞれいろいろなことを考えないといけません。(筆者はまさにこの年次になりつつあります)

前述の通り、「データスペース」においては、契約交渉、合意形成、データ提供といった一連のプロセスをコネクタおよびデータスペースプロトコルによって効率化できる可能性があります。

これまで人間同士が対面やメールでやり取りしていたプロセスがコネクタ同士の通信によって置き換えられ、関係者がやるべきことがとてもシンプルになると考えています。

  • データ提供者:提供可能なデータとその利用条件をあらかじめ定義し、カタログに公開しておく
  • データ利用者:カタログを検索し、必要なデータを選定。そのデータの利用条件に合意できる場合、コネクタを通じて契約交渉を開始

一方、利用条件や契約交渉といった要素を、機械判読可能な形式でどこまで表現できるのか、という点は重要な検討課題です。

データスペースでは、データ提供者が提示する利用条件や、データ利用者との契約に関する情報を、ODRL(Open Digital Rights Language) という機械判読可能な形式で表現します。

しかし、実際のビジネスにおける契約交渉や条件設定には、文脈依存の判断や、あえて曖昧にしておく合意事項、相手との関係性に基づいた柔軟な調整など、ODRL含めた機械判読可能な形式で表現し切れない要素が多く含まれます。データスペースの仕組みが私たちの仕事を楽にするかどうかは、これまで人間のコミュニケーションが担ってきた契約条件の調整を、ODRLなどの形式記述でどこまで表現出来るかがキーになると考えています。

自分のPCでデータスペースを体験してみよう

前置きが長くなりました。ここでは、データスペースにおけるデータ交換プロセスを実際に体験頂くデモの方法をステップバイステップで説明します。

デモの概要

本デモでは、データ提供者側、データ利用者それぞれのコネクタを読者自身で操作し、データ交換の一連の流れを体験します。
なお、今回のデモでは、筆者が github.com/nttdata-dataspace にて公開している資材を用います。こちらの資材は、コネクタ部分にOSSのEclipse Dataspace Components (EDC)ベースのコネクタを、操作用のユーザーインターフェースには、ドイツのスタートアップ企業であるSovity社がオープンソースで公開しているWebフロントエンドを使用しています。

動作前提環境

このデモを実行するには、以下の表に記載されたソフトウェアがインストールされたLinux環境が必要となります。

ソフトウェア 説明
Docker コンテナ環境の構築・実行に使用します。
Docker Compose 複数のコンテナを定義・起動するために使用します(docker compose コマンドが利用可能なこと)。
Git GitHub からソースコードを取得するために使用します。

なお、筆者はWindows 11 + WSL2(Ubuntu22.04) + Docker Engine環境で動作を確認しております。

デモ環境の構築手順

  • 本手順で操作するコンポーネントは以下の表のとおりです。環境構築が完了すると、すべて読者のブラウザからアクセスすることが出来ます。
コンポーネント種別 コンポーネントの役割 読者の端末からのアクセスURL
データ提供者のデータサーバ データ提供者がデータを保存する http://localhost:8080
データ提供者のコネクタダッシュボード データ提供者がコネクタを操作する http://localhost:11000
データ利用者のコネクタダッシュボード データ利用者がコネクタを操作する http://localhost:22000
データ利用者のデータサーバ データ利用者がデータを保存する http://localhost:8081
  • まず、GitHubからデモ資材をご自身の端末にクローンします。
git clone https://github.com/nttdata-dataspace/edc-demo.git
  • 次に、Dockerコンテナを構築します。
cd edc-demo-with-ui
docker compose up -d
[+] Running 10/10
 ✔ Container edc-demo-consumer-ui-1            Running                                                                     0.0s 
 ✔ Container edc-demo-consumer-connector-db-1  Healthy                                                                     4.2s 
 ✔ Container edc-demo-provider-connector-db-1  Healthy                                                                     4.7s 
 ✔ Container edc-demo-consumer-connector-1     Running                                                                     0.0s 
 ✔ Container edc-demo-provider-connector-1     Running                                                                     0.0s 
 ✔ Container edc-demo-consumer-1               Running                                                                     0.0s 
 ✔ Container edc-demo-provider-ui-1            Running                                                                     0.0s 
 ✔ Container edc-demo-provider-1               Running                                                                     0.0s 
 ✔ Container edc-demo-consumer-data-server-1   Started                                                                     1.8s 
 ✔ Container edc-demo-provider-data-server-1   Started                                                                     1.9s
  • 以下の表に記載の各コンポーネントのURLにブラウザからアクセスし、動作確認を行います。
コンポーネント種別 読者の端末からのアクセスURL
データ提供者のデータサーバ http://localhost:8080
データ提供者のコネクタ http://localhost:11000
データ利用者のコネクタ http://localhost:22000
データ利用者のデータサーバ http://localhost:8081
  • 以下のようなUIが確認出来たら、動作確認完了です。

    • データ提供者/利用者のコネクタダッシュボードの画面イメージ
    • データ提供者のデータサーバの画面イメージ
    • データ利用者のデータサーバの画面イメージ

データ交換のデモンストレーション

本手順では、「Provider Data Server」にある「Sample.txt」を「Consumer Data Server」にコネクタ経由で転送するシナリオでデータ交換を行います。

分かりやすさのため、以下のように画面を2分割します。

画面 コンポーネント URL
左画面 データ提供者のコネクタダッシュボード http://localhost:11000
データ提供者のデータサーバ http://localhost:8080
右画面 データ利用者のコネクタダッシュボード http://localhost:22000
データ利用者のデータサーバ http://localhost:8081

以下が画面分割のイメージです。

1.データ提供者側の操作

まずは、左画面でデータ提供者の操作を行います。

データ提供者側は、データの在り処、およびデータの利用規約をカタログに登録する必要があります。

画面左側のメニューから「Create Data Offer」を選択し、以下の情報を入力します。他の情報はデフォルト値/空欄で問題ありません。本手順により、Provider Data Serverに格納されているデータに対して「すべての契約交渉を受け入れる」という利用規約を紐づけることが出来ます。

入力が完了したら、「Publish」を押下します。

画面左側のメニューの「Data Offer」を選択した際、作成した”test”というData OfferがあればOKです。

これでデータ提供者側の操作は以上です。

2. データ利用者側の操作

次に、右画面でデータ利用者の操作を行います。

画面左側のメニューから、「Catalog Browser」を選択してください。先ほどデータ提供者がカタログに登録した「Test」というデータの情報が確認できます。

この「Test」を選択し、「Negotiate」ボタンを押下すると、データ提供者に対して契約交渉を行うことが出来ます。

以下は契約が成立した場合の画面です。

画面左側のメニューから「Contracts」を選択すると、先ほど成立した契約を確認できます。

「test」を選択し、「Transfer」を押下すると、「Provider Data Server」にある「Sample.txt」を「Consumer Data Server」にコネクタ経由で転送するプロセスを開始することが出来ます。

なお、「Transfer」を押下した際に入力を求められるURLの値は「http://consumer-data-server:8080/upload 」としてください。「Initiate Transfer」を押下すると、データ転送が開始されます。

データ利用者のサーバにデータが転送されたか確認してみましょう。先ほどまで何もなかったフォルダに、何かファイルが追加されていることが分かると思います。

このファイルを任意のエディタで開いてみると…データ提供者から無事データが届きました!

おわりに

最後までお読み頂きありがとうございました。
今回はごく簡単なシナリオによるチュートリアルをご説明しましたが、これはデータスペースのごく入口にすぎません。データスペースは、組織・業界の枠を越えて、全く新しいデジタルサービスを生み、加速する礎となり得る技術だと筆者は考えています。NTT DATAは今後もデータスペース関連の研究開発・およびそれらを活用した業界共通プラットフォームの構築、普及展開などの活動を継続していきます。筆者自身も、「生成AIのバックエンドにコネクタを組み込みたい…」「普段使っているビデオ通話アプリケーションにこの技術を取り入れてみたい…」など、やってみたいことがたくさんあります。今後も引き続きデータスペース関連の記事を投稿していきます。少しでも多くの人にデータスペースが届くと嬉しいです。

(次は「コネクタは人間同士の交渉をどこまで再現できるのか」とか「生成AIとのインテグレーション」とか書こうかな…)

NTT DATA TECH
NTT DATA TECH

Discussion