[データ駆動型社会を支える「データスペース」の実像─ハンズオンで理解するその価値と可能性]
Eclipse Dataspace Components(EDC)を使ってデータスペースを体験しよう(1):第8回
2024年10月23日(水)角井 健太郎、土橋 昌、八木 拓馬、渡邊 凜太郎(NTTデータグループ 技術革新統括本部)
ビジネスの高度化はもちろん、社会運営にとってもデータ活用の重要性は論を俟たない。一方で、データがサイロ化しシステムや組織内で留まっていては、その真価は発揮されない。データを十全に生かすには、信頼性を担保しながら組織や国境を越えて共有・連携するためのプラットフォーム、すなわち「データスペース」が必要となる。第8回からは、欧州で開発されたデータスペース構築用フレームワーク「Eclipse Dataspace Components(EDC)」をハンズオン形式で説明する。EDCを実際に動かしてみることで、データスペースへの理解を深めていただきたい。まずは、データ連携に必要となるEDCの中核コンポーネント「EDC Connector」を起動するための手順を解説する。
第7回では、データスペースの起源や国際的な動向と、Eclipse Projectによるデータスペースの実装、「Eclipse Dataspace Components(EDC)」について紹介しました。本稿では、EDCのサンプルを提供するEDC Samplesプロジェクトを利用して、実際にEDCを利用したデータ交換を行うための準備作業を説明していきます。
EDCを構成するコンポーネント
「Eclipse Dataspace Components(EDC)」は、複数のコンポーネントを開発対象とするオープンソースプロジェクトです(表1)。
リポジトリ名 | 概要 |
---|---|
Connector | コネクタの中核機能。共有対象データの管理、Dataspace Protocolによる他コネクタとの通信、ODRL処理などを担う。 |
Identity Hub | データスペース参加者のIDとなるDecentralized Identifier (DID)とVerifiable Credential (VC)を管理・提供する機能。 |
Federated Catalog | 他のコネクタが共有対象としているデータをクローリングしてキャッシュし、一覧できるようにするカタログ機能。 |
Technology Aws | AWSに固有のサービス(Amazon S3等)に対応するための機能拡張を集めたもの。 |
Technology Azure | Microsoft Azureに固有のサービス(Azure Blob Storage等)に対応するための機能拡張を集めたもの。 |
Technology GCP | Google Cloudに固有のサービス(Google Cloud Storage等)に対応するための機能拡張を集めたもの。 |
Technology Huawei Cloud | Huawei Cloudに固有のサービス(Object Storage Service等)に対応するための機能拡張を集めたもの。 |
表1:EDCの主要コンポーネント
データスペースの技術的な要件に応じて、これらのコンポーネントから必要なものを取捨選択して組み合わせ、場合によっては独自の機能拡張を追加してコネクタを構成するのが、典型的なEDCの利用方法です(図1)。
拡大画像表示
その中でも中核となるコンポーネントが「EDC Connector」となります。このEDC Connectorをユーザーや他のシステムが操作する際に使われるのが「Management API」です。Management APIは、データスペース内で共有対象とするデータをEDC Connectorに登録したり、他のコネクタが共有対象とするデータを取得したりといった、データスペース参加者として最も基本的なアクティビティを可能にします。
ユーザーや他のシステムによる操作だけではなく、コネクタ同士通信もまたEDC Connectorの重要な役割です。この通信には「Dataspace Protocol」が用いられ、他のコネクタとの間で共有対象データの一覧(カタログ)の取得やデータの利用条件への合意(コントラクト)といった処理を行います(※1)。
データスペースの技術的理解を深めるために、今回から4回に分けて、EDCを用いたデータ共有方法を実際の操作を示しながら説明するハンズオン形式でお届けします。
そのためには、EDCの多様なコンポーネントの中でも、最も基本的な部分のみを抽出した最小構成となるコネクタが有用です。以下では、その一例である「EDC Samples」を題材として、コネクタのビルド(実行可能にする処理)からデータ交換に至るまでの手順を解説します。
EDC Samplesは、サンプルコードやビルドツールのコンフィグレーションをまとめたものです。 これらのサンプルを通じ、開発者はEDCの基本的な概念、コンポーネントの動作、設定方法を理解し、自身のプロジェクトで EDCを効果的に活用するための基礎を身につけられます。
EDC Connectorによるデータ連携の仕組み
EDC Connectorは、Java言語で実装されたソフトウェアで、基本的な構造はControl PlaneとData Planeという2つの構成要素からなります。主にControl Planeがデータのやり取りに関する管理面を担い、Data Planeは実際のデータ転送・取得を担います。両要素が連携し、データ提供のための手続きから実際にデータが相手に届くまでの一連の流れを実現します。
EDC Connectorにはデータ提供側用/利用側用といった種類はありませんが、データ提供側と利用側のそれぞれで動作させる必要があります(図2)。
拡大画像表示
本稿ではデータ提供側を「Provider」、データ利用側を「Consumer」と呼ぶこととします。データ連携の大まかな流れの一例として、まずConsumerがProviderにデータ提供のリクエストを送信し、両者の間で合意がなされた後、合意結果に基づきProviderからConsumerにデータが提供されます。
このとき、データの利用権(だれが、どの合意の下で、データを利用できるようになったかなど)を管理し、適切なConsumerが適切な権利に基づいて利用できるようにします。いわば、それぞれのコネクタがデータ連携の代表者ないしエージェントの役割を担い、企業・組織間のデータ連携を、所定のルールに基づいて機械的に実現しているものと考えることができます(図3)。
拡大画像表示
EDC Sampleには、ConsumerとProviderのコネクタを実行し、それぞれの役割を体験できるシナリオに基づくサンプルソースコードが複数含まれています。EDC Connectorを用いたデータ連携は複数のデータ転送方式に対応していますが、最も基本的なデータ転送シナリオのサンプルも体験できるようになっています。
具体的には、ConsumerがProviderにリクエストしながらデータを取得する「Consumer-Pull方式」と呼ばれる方式と、ProviderからConsumer側の受け取り口に対してデータを転送する「Provider-Push方式」の2通りに対応しています。ここではコネクタの起動、次回以降では起動したコネクタを利用したConsumer-Pull方式のデータ連携の手順を紹介します。なお、本稿で紹介する手順は、2024年9月時点のEDC Samples公式レポジトリの情報に基づいています。
実行環境の構成
本稿では多くの読者が利用できる簡単な方法を重視し、Linuxディストリビューション「Ubuntu」上で実行する手順を説明します。動作確認には「WSL2(Windows Subsystem for Linux 2)」上のUbuntu環境を用いました。別の方法を用いて実行環境を構成する場合は、適宜読み替えたり、各ソフトウェアの公式Webサイトなどの情報を参考に構成してください。
以下で、WSL2をインストールし、続いてWSL2上でEDC Samplesの動作を確認していきます。
WSL2環境の構築
まずはPowerShellを管理者権限で立ち上げ、次のコマンドを実行し、WSL2のUbuntuをインストールします。
wsl --install –d ubuntu
インストールが完了したら一度ウィンドウを閉じてUbuntuを起動し、ユーザーネームとパスワードを設定してください。
EDC Connectorの構築
上述のとおり、EDC ConnectorはJavaで実装されています。またビルドツールとして「Gradle」を採用しています(図4)。
拡大画像表示
まずUbuntuを起動し、EDC Samplesの公式ソースコードレポジトリからソースコード群をクローンします。gitコマンドを実行できない場合は、あらかじめaptコマンドなどを利用し、gitをインストールしてください(※2)。本稿ではmainブランチのコミットハッシュ「b7e2220」のソースコードを使用しています。
git clone https://github.com/eclipse-edc/Samples.git
lsコマンド等を利用し、クローンされたソースコード群が存在することを確認してください。続いて、Javaをインストールします。
sudo apt update
sudo apt install -y openjdk-17-jdk
Javaコマンドを利用し、以下のような実行結果が得られればインストールは完了です。なお、今回はEDC Samplesで用いられているバージョンに合わせたものをインストールしました。他のバージョンでは動作しない可能性があるので注意してください。
java –version
コマンド例
openjdk 17.0.12 2024-07-16
OpenJDK Runtime Environment (build 17.0.12+7-Ubuntu-1ubuntu220.04)
OpenJDK 64-Bit Server VM (build 17.0.12+7-Ubuntu-1ubuntu220.04, mixed mode, sharing)
実行結果例
続いて、作業ディレクトリをクローンしたSamplesディレクトリに移動します。
cd Samples
クローンしたプロジェクトのディレクトリトップにて、ソースコード群をビルドします。実行結果内に「BUILD SUCCESSFUL
」という記載があれば成功です。
./gradlew transfer:transfer-00-prerequisites:connector:build
コマンド例
Downloading https://services.gradle.org/distributions/gradle-8.6-bin.zip
(途中省略)
BUILD SUCCESSFUL in 8m 53s
14 actionable tasks: 14 executed:::
実行結果例
[参考文献]
※1:データスペース技術動向~Eclipse Dataspace Components(EDC)とDataspace Protocol~, DATA INSIGHT, 岩崎 正剛、土橋 昌(https://www.nttdata.com/jp/ja/trends/data-insight/2023/1030/)
※2:AptGet/Howto,Ubuntu documentation(https://help.ubuntu.com/community/AptGet/Howto)
●Next:データ連携の前提となるコネクタの起動方法
会員登録(無料)が必要です
- 1
- 2
- 次へ >
- データスペースが拓く将来─エコシステム形成と国際連携で新たなデータ経済圏の構築へ:第12回(2024/11/20)
- Eclipse Dataspace Components(EDC)を使ってデータスペースを体験しよう(4):第11回(2024/11/13)
- Eclipse Dataspace Components(EDC)を使ってデータスペースを体験しよう(3):第10回(2024/11/06)
- Eclipse Dataspace Components(EDC)を使ってデータスペースを体験しよう(2):第9回(2024/10/30)
- 欧州発のデータスペースの動向とOSSプロジェクトの最前線:第7回(2024/10/16)