IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ソフトバンクモバイル株式会社の特許一覧

特開2022-68630情報処理装置、情報処理システム、情報処理方法、情報処理システムの製造方法、プログラム、及び記録媒体
<>
  • 特開-情報処理装置、情報処理システム、情報処理方法、情報処理システムの製造方法、プログラム、及び記録媒体 図1
  • 特開-情報処理装置、情報処理システム、情報処理方法、情報処理システムの製造方法、プログラム、及び記録媒体 図2
  • 特開-情報処理装置、情報処理システム、情報処理方法、情報処理システムの製造方法、プログラム、及び記録媒体 図3
  • 特開-情報処理装置、情報処理システム、情報処理方法、情報処理システムの製造方法、プログラム、及び記録媒体 図4
  • 特開-情報処理装置、情報処理システム、情報処理方法、情報処理システムの製造方法、プログラム、及び記録媒体 図5
  • 特開-情報処理装置、情報処理システム、情報処理方法、情報処理システムの製造方法、プログラム、及び記録媒体 図6
  • 特開-情報処理装置、情報処理システム、情報処理方法、情報処理システムの製造方法、プログラム、及び記録媒体 図7
  • 特開-情報処理装置、情報処理システム、情報処理方法、情報処理システムの製造方法、プログラム、及び記録媒体 図8
  • 特開-情報処理装置、情報処理システム、情報処理方法、情報処理システムの製造方法、プログラム、及び記録媒体 図9
  • 特開-情報処理装置、情報処理システム、情報処理方法、情報処理システムの製造方法、プログラム、及び記録媒体 図10
  • 特開-情報処理装置、情報処理システム、情報処理方法、情報処理システムの製造方法、プログラム、及び記録媒体 図11
  • 特開-情報処理装置、情報処理システム、情報処理方法、情報処理システムの製造方法、プログラム、及び記録媒体 図12
  • 特開-情報処理装置、情報処理システム、情報処理方法、情報処理システムの製造方法、プログラム、及び記録媒体 図13
  • 特開-情報処理装置、情報処理システム、情報処理方法、情報処理システムの製造方法、プログラム、及び記録媒体 図14
  • 特開-情報処理装置、情報処理システム、情報処理方法、情報処理システムの製造方法、プログラム、及び記録媒体 図15
  • 特開-情報処理装置、情報処理システム、情報処理方法、情報処理システムの製造方法、プログラム、及び記録媒体 図16
  • 特開-情報処理装置、情報処理システム、情報処理方法、情報処理システムの製造方法、プログラム、及び記録媒体 図17
  • 特開-情報処理装置、情報処理システム、情報処理方法、情報処理システムの製造方法、プログラム、及び記録媒体 図18
  • 特開-情報処理装置、情報処理システム、情報処理方法、情報処理システムの製造方法、プログラム、及び記録媒体 図19
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022068630
(43)【公開日】2022-05-10
(54)【発明の名称】情報処理装置、情報処理システム、情報処理方法、情報処理システムの製造方法、プログラム、及び記録媒体
(51)【国際特許分類】
   G06F 13/00 20060101AFI20220427BHJP
   G06F 21/62 20130101ALI20220427BHJP
【FI】
G06F13/00 520C
G06F21/62
【審査請求】有
【請求項の数】19
【出願形態】OL
(21)【出願番号】P 2020177414
(22)【出願日】2020-10-22
(71)【出願人】
【識別番号】501440684
【氏名又は名称】ソフトバンク株式会社
(74)【代理人】
【識別番号】110000338
【氏名又は名称】特許業務法人HARAKENZO WORLD PATENT & TRADEMARK
(72)【発明者】
【氏名】堀場 勝広
【テーマコード(参考)】
5B084
【Fターム(参考)】
5B084AA01
5B084AB26
5B084AB38
5B084BB17
5B084CB02
5B084CB06
5B084CB23
5B084DB04
5B084DC05
5B084DC06
5B084FA04
5B084FA12
(57)【要約】
【課題】分散型ネットワークにおいて何れのノードを介してどのようにデータが提供されたのかを事後的に検証できる技術を提供する。
【解決手段】情報処理装置(10)は、提供元から第1のデータを取得するデータ取得部(124)と、提供先に第2のデータを提供するデータ提供部(126)と、前記データに関する関連情報、前記提供元を識別するための第1の識別情報、及び前記提供先を識別するための第2の識別情報を含むトランザクションデータを生成する生成部(132)とを備えている。
【選択図】図2
【特許請求の範囲】
【請求項1】
ネットワークに含まれる提供元から、第1のデータを取得する取得部と、
前記第1のデータ、及び前記第1のデータに基づいて生成されたデータ、の少なくとも何れかを含む第2のデータを、前記ネットワークに含まれる提供先に提供する提供部と、
前記ネットワークにおける所定のコンセンサスアルゴリズムを用いて更新されるブロックチェーンに追加するトランザクションデータであって、
前記第1のデータ及び前記第2のデータの少なくとも何れかに関する関連情報、
前記提供元を識別するための第1の識別情報、及び
前記提供先を識別するための第2の識別情報
を含むトランザクションデータを生成する生成部と
を備える情報処理装置。
【請求項2】
前記関連情報には、
前記第1のデータの名前、データ量、及び前記第1のデータを取得した際の通信帯域、
の少なくとも何れかが含まれている
請求項1に記載の情報処理装置。
【請求項3】
前記関連情報には、
前記第2のデータの名前、データ量、及び前記第2のデータを提供した際の通信帯域、
の少なくとも何れかが含まれている
請求項1又は2に記載の情報処理装置。
【請求項4】
前記関連情報には、
前記第1のデータから前記第2のデータを生成するための処理の内容、及び処理量の少なくとも何れかが含まれている
請求項1から3の何れか1項に記載の情報処理装置。
【請求項5】
前記第1の識別情報には、
前記提供元に付された、IPアドレス、物理アドレス、及び、IPアドレスに変換可能な識別子の少なくとも何れかが含まれており、
前記第2の識別情報には、
前記提供先に付された、IPアドレス、物理アドレス、及び、IPアドレスに変換可能な識別子の少なくとも何れかが含まれている
請求項1から4の少なくとも何れかに記載の情報処理装置。
【請求項6】
前記生成部が生成したトランザクションデータを、前記ブロックチェーンに登録する登録部を備えている
請求項1から5の何れか1項に記載の情報処理装置。
【請求項7】
前記登録部が登録した前記トランザクションデータに基づいて決定されるインセンティブを受領する受領部を備えている
請求項6に記載の情報処理装置。
【請求項8】
(1)ネットワークに含まれるあるノードが前記ネットワークに含まれる提供元から取得した第1のデータ、並びに、(2)前記第1のデータ及び前記第1のデータに基づいて生成されたデータの少なくとも何れかを含む第2のデータであって、前記ノードが前記ネットワークに含まれる提供先に提供した第2のデータ、の少なくとも何れかに関する関連情報、
前記提供元を識別するための第1の識別情報、及び
前記提供先を識別するための第2の識別情報
を取得する取得部と、
前記ネットワークにおける所定のコンセンサスアルゴリズムを用いて更新されるブロックチェーンに、前記取得部が取得した情報を含むトランザクションデータを登録する登録部と
を備える情報処理装置。
【請求項9】
ネットワークにおける所定のコンセンサスアルゴリズムを用いて更新されるブロックチェーンを参照して、前記ネットワークに含まれる複数のノードの少なくとも何れかに関して、
(1)当該ノードが前記ネットワークに含まれる提供元から取得した第1のデータ、並びに、(2)前記第1のデータ及び前記第1のデータに基づいて生成されたデータの少なくとも何れかを含む第2のデータであって、当該ノードが前記ネットワークに含まれる提供先に提供した第2のデータ、の少なくとも何れかに関する関連情報、
前記提供元を識別するための第1の識別情報、及び
前記提供先を識別するための第2の識別情報
を取得する取得部と
前記取得部が取得した情報に基づいて、1又は複数のノードを介したデータの流れに関する情報を生成する生成部と
を備える情報処理装置。
【請求項10】
ネットワークに含まれる複数のノードを含む情報処理システムであって、
前記ノードの各々は、
ネットワークに含まれる提供元から、第1のデータを取得する取得部と、
前記第1のデータ、及び前記第1のデータに基づいて生成されたデータ、の少なくとも何れかを含む第2のデータを、前記ネットワークに含まれる提供先に提供する提供部と、
前記ネットワークにおける所定のコンセンサスアルゴリズムを用いて更新されるブロックチェーンに、
前記第1のデータ及び前記第2のデータの少なくとも何れかに関する関連情報、
前記提供元を識別するための第1の識別情報、及び
前記提供先を識別するための第2の識別情報
を含むトランザクションデータを登録する登録部と
を備える情報処理システム。
【請求項11】
ネットワークに含まれる複数のノードを含む情報処理システムであって、
第1のノード及び第2のノードを少なくとも含み、
前記第1のノードは、
前記ネットワークに含まれる提供元から、第1のデータを取得する取得部と、
前記第1のデータ、及び前記第1のデータに基づいて生成されたデータ、の少なくとも何れかを含む第2のデータを、前記ネットワークに含まれる提供先に提供する提供部と、
前記ネットワークにおける所定のコンセンサスアルゴリズムを用いて更新されるブロックチェーンに追加するトランザクションデータであって、
前記第1のデータ及び前記第2のデータの少なくとも何れかに関する関連情報、
前記提供元を識別するための第1の識別情報、及び
前記提供先を識別するための第2の識別情報
を含むトランザクションデータを生成する生成部と
を備えており、
前記第2のノードは、
前記関連情報、前記第1の識別情報、及び前記第2の識別情報を取得する取得部と、
前記ブロックチェーンに、前記取得部が取得した情報を含むトランザクションデータを登録する登録部と
を備える情報処理システム。
【請求項12】
ネットワークに含まれる提供元から、第1のデータを取得する取得ステップと、
前記第1のデータ、及び前記第1のデータに基づいて生成されたデータ、の少なくとも何れかを含む第2のデータを、前記ネットワークに含まれる提供先に提供する提供ステップと、
前記ネットワークにおける所定のコンセンサスアルゴリズムを用いて更新されるブロックチェーンに追加するトランザクションデータであって、
前記第1のデータ及び前記第2のデータの少なくとも何れかに関する関連情報、
前記提供元を識別するための第1の識別情報、及び
前記提供先を識別するための第2の識別情報
を含むトランザクションデータを生成する生成ステップと
を含む情報処理方法。
【請求項13】
(1)ネットワークに含まれるあるノードが前記ネットワークに含まれる提供元から取得した第1のデータ、並びに、(2)前記第1のデータ及び前記第1のデータに基づいて生成されたデータの少なくとも何れかを含む第2のデータであって、前記ノードが前記ネットワークに含まれる提供先に提供した第2のデータ、の少なくとも何れかに関する関連情報、
前記提供元を識別するための第1の識別情報、及び
前記提供先を識別するための第2の識別情報
を取得する取得ステップと、
前記ネットワークにおける所定のコンセンサスアルゴリズムを用いて更新されるブロックチェーンに、前記取得ステップにおいて取得した情報を含むトランザクションデータを登録する登録ステップと
を含む情報処理方法。
【請求項14】
ネットワークにおける所定のコンセンサスアルゴリズムを用いて更新されるブロックチェーンに基づいて、前記ネットワークに含まれる複数のノードの各々に関して、
(1)当該ノードが前記ネットワークに含まれる提供元から取得した第1のデータ、並びに、(2)前記第1のデータ及び前記第1のデータに基づいて生成されたデータの少なくとも何れかを含む第2のデータであって、当該ノードが前記ネットワークに含まれる提供先に提供した第2のデータ、の少なくとも何れかに関する関連情報、
前記提供元を識別するための第1の識別情報、及び
前記提供先を識別するための第2の識別情報
を取得する取得ステップと
前記取得ステップにおいて取得した情報に基づいて、前記複数のノードを介したデータの流れに関連した情報を生成する生成ステップと
を含む情報処理方法。
【請求項15】
請求項1に記載の情報処理装置としてコンピュータを機能させるためのプログラムであって、前記取得部、前記提供部、及び前記生成部としてコンピュータを機能させるためのプログラム。
【請求項16】
請求項8に記載の情報処理装置としてコンピュータを機能させるためのプログラムであって、前記取得部、及び前記登録部としてコンピュータを機能させるためのプログラム。
【請求項17】
請求項9に記載の情報処理装置としてコンピュータを機能させるためのプログラムであって、前記取得部、及び前記生成部としてコンピュータを機能させるためのプログラム。
【請求項18】
請求項15から17の何れか1項に記載のプログラムを記録したコンピュータ読み取り可能な記録媒体。
【請求項19】
情報処理システムが含む複数の情報処理装置の各々に対して、プログラムを配信する配信ステップを含み、
前記プログラムは、請求項1に記載の情報処理装置としてコンピュータを機能させるためのプログラムであって、前記取得部、前記提供部、及び前記生成部としてコンピュータを機能させるためのプログラムである
ことを特徴とする情報処理システムの製造方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理装置、情報処理システム、情報処理方法、プログラム、情報処理システムの製造方法、及び記録媒体に関する。
【背景技術】
【0002】
近年、サーバ及びクライアントによる中央集権型のネットワーク技術に加え、P2P(Peer to Peer)ネットワークのような分散型のネットワーク技術について盛んに開発が行われている。
【0003】
また、分散型ネットワークの発展形として、NDN(Named Data Network)やNFN(Named Function Network)と呼ばれるネットワークの技術についても盛んに提案が行われている。NDNとは、IPアドレスやドメインネームのようなネットワーク上の所在を示す情報ではなく、データ名によってネットワーク上のデータを特定しようとする思想又は技術のことである。また、NFNとは、NDNの思想に加え、データ処理を行うファンクション名またはそのようなファンクションを提供するカーネル名によって、ネットワーク上のデータ処理を特定しようとする思想又は技術のことである(例えば非特許文献1参照)。
【0004】
このような分散型ネットワークでは、ネットワーク中の各ノードが、他のノードから取得したデータを転送したり、他のノードから取得したデータに処理を行ったうえで送信したりといった中継処理を行うことにより、ユーザに所望のデータが提供される。
【先行技術文献】
【特許文献】
【0005】
【非特許文献1】‘NFaaS: Named Function as a Service’ M. Krol, and I. Psaras, Proceedings of the 4thACM Conference on Information-Centric Networking (p134-144), 2017.
【発明の概要】
【発明が解決しようとする課題】
【0006】
分散型ネットワークでは、ネットワークに含まれる1又は複数のノードによってデータの中継処理が行われるが、従来の技術では分散型ネットワーク技術において、何れのノードを介してどのようにユーザにデータが提供されたのかを事後的に検証することが困難であった。
【課題を解決するための手段】
【0007】
本発明の一態様に係る情報処理装置は、ネットワークに含まれる提供元から、第1のデータを取得する取得部と、前記第1のデータ、及び前記第1のデータに基づいて生成されたデータ、の少なくとも何れかを含む第2のデータを、前記ネットワークに含まれる提供先に提供する提供部と、前記ネットワークにおける所定のコンセンサスアルゴリズムを用いて更新されるブロックチェーンに追加するトランザクションデータであって、前記第1のデータ及び前記第2のデータの少なくとも何れかに関する関連情報、前記提供元を識別するための第1の識別情報、及び前記提供先を識別するための第2の識別情報を含むトランザクションデータを生成する生成部とを備えている。
【0008】
本発明の一態様に係る情報処理装置は、(1)ネットワークに含まれるあるノードが前記ネットワークに含まれる提供元から取得した第1のデータ、並びに、(2)前記第1のデータ及び前記第1のデータに基づいて生成されたデータの少なくとも何れかを含む第2のデータであって、前記ノードが前記ネットワークに含まれる提供先に提供した第2のデータ、の少なくとも何れかに関する関連情報、前記提供元を識別するための第1の識別情報、及び前記提供先を識別するための第2の識別情報を取得する取得部と、前記ネットワークにおける所定のコンセンサスアルゴリズムを用いて更新されるブロックチェーンに、前記取得部が取得した情報を含むトランザクションデータを登録する登録部とを備えている。
【0009】
本発明の一態様に係る情報処理装置は、ネットワークにおける所定のコンセンサスアルゴリズムを用いて更新されるブロックチェーンを参照して、前記ネットワークに含まれる複数のノードの少なくとも何れかに関して、(1)当該ノードが前記ネットワークに含まれる提供元から取得した第1のデータ、並びに、(2)前記第1のデータ及び前記第1のデータに基づいて生成されたデータの少なくとも何れかを含む第2のデータであって、当該ノードが前記ネットワークに含まれる提供先に提供した第2のデータ、の少なくとも何れかに関する関連情報、前記提供元を識別するための第1の識別情報、及び前記提供先を識別するための第2の識別情報を取得する取得部と前記取得部が取得した情報に基づいて、1又は複数のノードを介したデータの流れに関する情報を生成する生成部とを備えている。
【0010】
本発明の一態様に係る情報処理システムは、ネットワークに含まれる複数のノードを含む情報処理システムであって、前記ノードの各々は、ネットワークに含まれる提供元から、第1のデータを取得する取得部と、前記第1のデータ、及び前記第1のデータに基づいて生成されたデータ、の少なくとも何れかを含む第2のデータを、前記ネットワークに含まれる提供先に提供する提供部と、前記ネットワークにおける所定のコンセンサスアルゴリズムを用いて更新されるブロックチェーンに、前記第1のデータ及び前記第2のデータの少なくとも何れかに関する関連情報、前記提供元を識別するための第1の識別情報、及び前記提供先を識別するための第2の識別情報を含むトランザクションデータを登録する登録部とを備えている。
【0011】
本発明の一態様に係る情報処理システムは、ネットワークに含まれる複数のノードを含む情報処理システムであって、第1のノード及び第2のノードを少なくとも含み、前記第1のノードは、前記ネットワークに含まれる提供元から、第1のデータを取得する取得部と、前記第1のデータ、及び前記第1のデータに基づいて生成されたデータ、の少なくとも何れかを含む第2のデータを、前記ネットワークに含まれる提供先に提供する提供部と、前記ネットワークにおける所定のコンセンサスアルゴリズムを用いて更新されるブロックチェーンに追加するトランザクションデータであって、前記第1のデータ及び前記第2のデータの少なくとも何れかに関する関連情報、前記提供元を識別するための第1の識別情報、及び前記提供先を識別するための第2の識別情報を含むトランザクションデータを生成する生成部とを備えており、前記第2のノードは、前記関連情報、前記第1の識別情報、及び前記第2の識別情報を取得する取得部と、前記ブロックチェーンに、前記取得部が取得した情報を含むトランザクションデータを登録する登録部とを備えている。
【0012】
本発明の一態様に係る情報処理方法は、ネットワークに含まれる提供元から、第1のデータを取得する取得ステップと、前記第1のデータ、及び前記第1のデータに基づいて生成されたデータ、の少なくとも何れかを含む第2のデータを、前記ネットワークに含まれる提供先に提供する提供ステップと、前記ネットワークにおける所定のコンセンサスアルゴリズムを用いて更新されるブロックチェーンに追加するトランザクションデータであって、前記第1のデータ及び前記第2のデータの少なくとも何れかに関する関連情報、前記提供元を識別するための第1の識別情報、及び前記提供先を識別するための第2の識別情報を含むトランザクションデータを生成する生成ステップとを含んでいる。
【0013】
本発明の一態様に係る情報処理方法は、(1)ネットワークに含まれるあるノードが前記ネットワークに含まれる提供元から取得した第1のデータ、並びに、(2)前記第1のデータ及び前記第1のデータに基づいて生成されたデータの少なくとも何れかを含む第2のデータであって、前記ノードが前記ネットワークに含まれる提供先に提供した第2のデータ、の少なくとも何れかに関する関連情報、前記提供元を識別するための第1の識別情報、及び前記提供先を識別するための第2の識別情報
を取得する取得ステップと、前記ネットワークにおける所定のコンセンサスアルゴリズムを用いて更新されるブロックチェーンに、前記取得ステップにおいて取得した情報を含むトランザクションデータを登録する登録ステップとを含んでいる。
【0014】
本発明の一態様に係る情報処理方法は、ネットワークにおける所定のコンセンサスアルゴリズムを用いて更新されるブロックチェーンに基づいて、前記ネットワークに含まれる複数のノードの各々に関して、(1)当該ノードが前記ネットワークに含まれる提供元から取得した第1のデータ、並びに、(2)前記第1のデータ及び前記第1のデータに基づいて生成されたデータの少なくとも何れかを含む第2のデータであって、当該ノードが前記ネットワークに含まれる提供先に提供した第2のデータ、の少なくとも何れかに関する関連情報、前記提供元を識別するための第1の識別情報、及び前記提供先を識別するための第2の識別情報を取得する取得ステップと、前記取得ステップにおいて取得した情報に基づいて、前記複数のノードを介したデータの流れに関連した情報を生成する生成ステップとを含んでいる。
【0015】
本発明の各態様に係る情報処理装置は、コンピュータによって実現してもよく、この場合には、コンピュータを前記情報処理装置が備える各部(ソフトウェア要素)として動作させることにより前記情報処理装置をコンピュータにて実現させるプログラム、およびそれを記録したコンピュータ読み取り可能な記録媒体も、本発明の範疇に入る。
【0016】
また、本発明の一態様に係る情報処理システムの製造方法は、情報処理システムが含む複数の情報処理装置の各々に対して、プログラムを配信する配信ステップを含み、前記プログラムは、前記情報処理装置としてコンピュータを機能させるためのプログラムであって、前記取得部、前記提供部、及び前記生成部としてコンピュータを機能させるためのプログラムである。
【図面の簡単な説明】
【0017】
図1】実施形態1に係るネットワークの構成を示す図である。
図2】実施形態1に係る情報処理装置10の構成を示すブロック図である。
図3】実施形態1に係るネットワークに含まれる複数のノードが関与するデータ配信処理の流れの一例を示すシーケンス図である。
図4】実施形態1に係る情報処理装置10による処理の流れを示すフローチャートである。
図5】実施形態1に係る情報処理装置10が生成するトランザクションデータの例を示す図である。
図6】実施形態1に係る情報処理装置10によってブロックが追加されたブロックチェーンを示す図である。
図7】実施形態1に係る情報処理装置20の構成を示すブロック図である。
図8】実施形態1に係る情報処理装置20が生成するルート情報及び表示用データを示す図である。
図9】実施形態1に係る情報処理装置30の構成を示すブロック図である。
図10】実施形態2に係る情報処理装置50の構成を示すブロック図である。
図11】実施形態2に係る情報処理装置50が記憶するFIB、PIT、及びCSの構成を示す図である。
図12】実施形態2に係る情報処理装置50が生成するトランザクションデータの例を示す図である。
図13】実施形態2に係る情報処理装置20が生成するルート情報及び表示用データを示す図である。
図14】実施形態3に係る情報処理装置70の構成を示すブロック図である。
図15】実施形態3に係る情報処理装置70が記憶するFIB、PIT、CS、及びKSの構成を示す図である。
図16】実施形態3に係る情報処理装置70が生成するトランザクションデータの例を示す図である。
図17】実施形態3に係る情報処理装置70が生成するトランザクションデータの例を示す図である。
図18】実施形態3に係る情報処理装置20が生成するルート情報及び表示用データを示す図である。
図19】各実施形態に係る情報処理装置等として利用可能なコンピュータの構成を例示したブロック図である。
【発明を実施するための形態】
【0018】
〔実施形態1〕
<概要>
本実施形態の具体的な構成例について説明を行う前に、本実施形態の概要について説明する。本実施形態に係るネットワークは、一例として分散型のネットワークとして構成されており、ネットワークに含まれる各ノードを介してデータの中継処理が行われる。従来の技術では、データの中継処理が何れのノードを介してどのように行われたのかを事後的に検証することは困難であったが、本実施形態に係るネットワークでは、発明者の知見に基づき、中継処理が何れのノードを介してどのように行われたのかを事後的に検証することができる技術が導入される。
【0019】
これにより、一例として、データの中継に際して、何れのノードがより重要な役割を果たしたのかを事後的に検証することが可能となる。また、データの中継に際して事後的に問題が発見された場合に、何れのノードに問題があったのかを事後的に検証することが可能となる。このように、本実施形態の技術によれば、データの中継処理へのプラスの貢献及びマイナスの貢献を事後的に適切に特定することができる。これにより、データの中継処理への貢献に応じたインセンティブをノードの運営事業が受け取るといったことも可能になる。このため、本実施形態の技術によれば、ノードの運営事業への参加が促進され、分散型ネットワークが大きく発展する契機にもなり得る。
【0020】
<構成例>
以下では、本実施形態の構成例について図面を参照して説明する。図1は本実施形態に係るネットワーク1の構成例を示す図である。ネットワーク1は、一例として、複数のエンドノードEN1,EN2,・・・と複数の中継ノードTN1,TN2,・・・とが互いに通信可能に接続されたネットワークとして実現される。
【0021】
ここで、本実施形態において、中継ノードとは、あるノードと他のノードとを中継する機能を実現しているノードであってよい。また、エンドノードとは、あるノードと他のノードとを中継する機能を実現していないノードのことであってよい。ただし、本実施形態では、中継ノードとエンドノードとが厳密に区別されることを要するものではない。例えば、ネットワーク1における接続態様の変更に応じて、エンドノードが中継ノードとしての機能を実現したり、又はその逆が実現されたりといったことも起こり得る。したがって、本実施形態において、中継ノード及びエンドノードとの名称の区別は本質的なものではなく、単に便宜上のものである。なお、本実施形態に係る中継ノードは、従来技術においてスーパーノードと呼称されるノードに対応するものと捉えることもできる。
【0022】
また、ネットワーク1は、本実施形態では、一例として、インターネット(IPネットワーク)上に構築された分散型のオーバーレイネットワークとして実現されるが、これも本実施形態を限定するものではない。
【0023】
ネットワーク1は、情報処理機能を有する複数のルータを中継ノードとして備えるグローバルなIPネットワーク、ワイドエリアネットワーク、又はローカルエリアネットワーク等の種々のネットワークを含んで構成されてもよい。
【0024】
また、ネットワーク1に含まれる各ノードは、互いに有線接続されていてもよいし、無線接続されていてもよいし、それらの組み合わせによって接続されていてもよい。
【0025】
なお、ネットワーク1に含まれる少なくとも2つの任意のノードを含む部分ネットワークは、本実施形態に係る情報処理システムを構成する。
【0026】
また、以下では、エンドノードと中継ノードとを特に区別しない場合、単にノードと表現することもある。
【0027】
また、本実施形態における用語の約束として、「要求元」とは、当該要求が発信される始点を表し、「要求先」とは当該要求の行きつく先である終点を表す。また、「配信元」とは、当該配信が行われる始点を表し、「配信先」とは当該配信の行きつく先である終点を表す。一方で、「(データの)提供元」とは、当該データを提供するノード等のことを指し、当該データが発信される始点に限られない。また、「(データの)提供先」とは、当該データが提供されるノード等のことを指し、当該データの行きつく先である終点に限られない。
【0028】
なお、データの具体例は本実施形態を限定するものではないが、例えば、「静的コンテンツ」、「ストリーミング」、「シグナリング」等のデータが挙げられる。
【0029】
<情報処理装置10>
続いて、参照する図面を替えて、本実施形態に係る中継ノードの構成について説明する。図2は本実施形態に係る情報処理装置10の構成例を示すブロック図である。中継ノードTN1,TN2,・・・のそれぞれは、一例として情報処理装置10として実現されてよい。
【0030】
本実施形態に係る情報処理装置10は、制御部12、通信部14、メモリ16、及び記憶部18を備えてよい。
【0031】
通信部14は、ネットワーク1に含まれる他のノードからデータを受信したり、他のノードにデータを送信したりする。
【0032】
メモリ16には、制御部12が実行する各種のプログラム及びそれらのプログラムによって参照される各種のデータが一時的に格納される。
【0033】
記憶部18には、制御部12によって読み出され、制御部12によって参照される各種の情報が格納されている。記憶部18には、一例として、ノードテーブル、後述する第1の識別情報、第2の識別情報、及び関連情報が格納されている。
【0034】
ここで、ノードテーブルとは、情報処理装置10が他のノードを検索する際に参照するテーブルであり、ネットワーク1に含まれる全てのノードの識別情報、又はネットワーク1に含まれる一部のノードの識別情報の一覧を含むテーブルである。
【0035】
制御部12は、データ転送管理部120、及びブロックチェーン管理部130を備えてよい。
【0036】
(データ転送処理部)
データ転送管理部120は、あるノードから取得したデータを他のノードに提供したり、あるノードから受信したデータを加工したうえで他のノードに提供したり、といったデータ転送処理を行う。
【0037】
データ転送管理部120は、一例として、図2に示すように、データ取得部124、及びデータ提供部126を備えている。
【0038】
データ取得部124は、ネットワーク1に含まれる提供元から、データを取得する。データ取得部124が取得するデータのことを、本実施形態では第1のデータとも呼ぶ。
【0039】
ここで、「提供元」は、情報処理装置10と通信可能に接続されている何れのノードであってもよいし、何れかのノードにおいて実行されるアプリケーションであってもよいし、何れかのノードが備えている記憶部であってもよい。
【0040】
同様に、「提供先」は、情報処理装置10と通信可能に接続されている何れのノードであってもよいし、何れかのノードにおいて実行されるアプリケーションであってもよいし、何れかのノードが備えている記憶部であってもよい。
【0041】
データ提供部126は、第1のデータ、及び第1のデータに基づいて生成されたデータ、の少なくとも何れかを含むデータを、ネットワーク1に含まれる提供先に提供する。ここで、データ提供部126が提供先に提供するデータのことを、本実施形態では、第2のデータとも呼ぶ。
【0042】
(ブロックチェーン管理部)
ブロックチェーン管理部130は、ネットワーク1に含まれるノード間での所定のコンセンサスアルゴリズムを用いて更新されるブロックチェーンを管理する。
【0043】
ここで、コンセンサスアルゴリズムとは、ネットワーク1に含まれる複数のノードによる合意を形成するためのアルゴリズムである。代表的なコンセンサスアルゴリズムとしては、一例としてPoW(Proof of Work)が挙げられる。PoWでは、複数のノードのうち所定の条件を満たすノンス値を最初に算出したノードによって生成されたブロックが、ブロックチェーンに追加するブロックとして承認される。なお、所定条件の一例としては、当該ノンス値を含むブロックのハッシュ値が、先頭に所定数の連続する0を有するとの条件を用いることができるが、これは本実施形態を限定するものではない。また、本実施形態において採用可能なコンセンサスアルゴリズムは上述したPoWに限定されるものではなく、PoS(Proof of Stake)、PoI(Proof of Importance)、及びPoH(Proof of Human-work)等を用いてもよい。
【0044】
ブロックチェーン管理部130は、一例として、図2に示すように、トランザクションデータ生成部132、及び、ブロック登録部134を備えている。
【0045】
(トランザクションデータ生成部)
トランザクションデータ生成部132は、ブロックチェーンに追加するトランザクションデータを生成する。ここで、トランザクションデータ生成部132が生成するトランザクションデータには、一例として、
・上述した第1のデータ及び上述した第2のデータの少なくとも何れかに関する関連情報
・上記第1のデータの提供元を識別するための第1の識別情報
・上記第2のデータの提供先を識別するための第2の識別情報
が含まれてよい。
【0046】
ここで、第1の識別情報は、一例として、第1のデータの提供元に付された、IPアドレス、物理アドレス、及び、IPアドレスに変換可能な識別子の少なくとも何れかを含んでよい。また、第1の識別情報は、ポート番号を含む構成としてもよい。また、第1の識別情報は、これらの何れとも異なる識別子であってもよい。すなわち、第1の識別情報に含まれる情報は、第1のデータの提供元を識別できる情報であれば特に限定されない。例えば、第1の識別情報は、URLスキームを含んでもよい。
【0047】
また、第2の識別情報は、一例として、第2のデータの提供先に付された、IPアドレス、物理アドレス、及び、IPアドレスに変換可能な識別子の少なくとも何れかを含んでよい。また、第2の識別情報は、ポート番号を含む構成としてもよい。また、第2の識別情報は、これらの何れとも異なる識別子であってもよい。すなわち、第2の識別情報に含まれる情報は、第2のデータの提供先を識別できる情報であれば特に限定されない。例えば、第2の識別情報は、URLスキームを含んでもよい。
【0048】
なお、IPアドレスに変換可能な識別子の具体例は本実施形態を限定するものではないが、一例として、ドメインネームサーバによってIPアドレスに変換されるドメインネームのような識別子であってもよい。
【0049】
また、上述した関連情報には、第1のデータ自体及び第2のデータ自体に関する情報、並びに、ネットワーク1における第1のデータ及び第2のデータの送受信の態様に関する情報が含まれ得る。一例として、関連情報には、第1のデータを取得し第2のデータを提供するという中継処理における処理の負荷に関連する情報が含まれ得る。関連情報の具体例についでは後述する。
【0050】
なお、トランザクションデータ生成部134が生成したトランザクションデータは、一例として、以下に説明するブロック登録部134によってブロックチェーンに登録されるが、これは本実施形態を限定するものではない。
【0051】
トランザクションデータ生成部134が生成したトランザクションデータをネットワーク1に含まれる他のノードにブロードキャストし、他のノードにおいてブロックチェーンに登録される構成も本実施形態に含まれてよい。
【0052】
(ブロック登録部)
ブロック登録部134は、トランザクションデータ生成部132が生成したトランザクションデータを、ブロックチェーンに登録する。ここで、ブロック登録部134は、トランザクションデータ生成部132が生成したトランザクションデータに加えて、又は当該トランザクションデータに代えて、他のノードにて生成され情報処理装置10が取得したトランザクションデータを、ブロックチェーンに登録する構成としてもよい。ブロック登録部134による具体的なブロック登録処理例については後述する。
【0053】
このように、本実施形態に係る情報処理装置10では、供給元から供給された第1のデータ、及び当該第1のデータに基づいて生成されたデータ、の少なくとも何れかを含む第2のデータを、ネットワーク1に含まれる提供先に提供する中継処理を行う。そして、当該中継処理により、情報処理装置10によってどのように行われたのかを示す情報を含むトランザクションデータが生成され、当該トランザクションデータがブロックチェーンBCに登録される。
【0054】
ここで、中継処理がどのように行われたのかを示す情報を含むトランザクションデータには、上述のように、第1のデータ及び第2のデータの少なくとも何れかに関する関連情報、提供元を識別するための第1の識別情報、及び、提供先を識別するための第2の識別情報が含まれてよい。
【0055】
したがって、本実施形態に係る情報処理装置10によれば、何れのノードを介してどのようにユーザにデータが提供されたのかを事後的に検証することが可能となる。
【0056】
(データ配信処理の概要)
続いて、図3を参照して、ネットワーク1におけるデータ配信処理の概要について説明する。図3は、ネットワーク1に含まれるエンドノードEN1、中継ノードTN2、中継ノードTN3、及びエンドノードEN4が関与するデータ配信処理の流れの一例を示すシーケンス図である。本例は、エンドノードEN1がエンドノードEN4から配信用データの配信を受ける場合を示している。
【0057】
図3に示す例では、エンドノードEN1、中継ノードTN2、中継ノードTN3、及びエンドノードEN4は、それぞれ、識別情報ID_EN1、ID_TN2、ID_TN3、及びID_TN4によって他のノードから識別されている。ここで、これらの識別情報には、一例として、IPアドレス、物理アドレス、及び、IPアドレスに変換可能な識別子の少なくとも何れかが含まれ得る。
【0058】
図3に示す例では、まず、エンドノードEN1が中継ノードTN2に対してリクエストを送信する。当該リクエストには、一例として、
・配信用データの要求元であるエンドノードEN1の識別情報ID_EN1
・配信用データの要求先であるエンドノードEN4の識別情報ID_EN4
・配信用データの要求先であるエンドノードEN4において配信用データを特定するための情報
が少なくとも含まれてよい。
【0059】
エンドノードEN1からリクエストを受信した中継ノードTN2は、自装置の記憶部に格納されているノードテーブルを参照し、当該ノードテーブルにおいて配信用データの要求先であるエンドノードEN4の識別情報ID_EN4を検索する。
【0060】
図3に示す例では、中継ノードTN2が、自装置のノードテーブルにおいてエンドノードEN4の識別情報ID_EN4を検出することができないため、上記のリクエストを中継ノードTN3に転送する場合を示している。
【0061】
そして、中継ノードTN2からリクエストを受信した中継ノードTN3は、自装置の記憶部に格納されているノードテーブルを参照し、当該ノードテーブルにおいて配信用データの要求先であるエンドノードEN4の識別情報ID_EN4を検索する。
【0062】
図3に示す例では、中継ノードTN3が、自装置のノードテーブルからエンドノードEN4の識別情報ID_EN4を検出し、検出した識別情報ID_EN4によって特定されるエンドノードEN4に対して、上記のリクエストを送信する場合を示している。
【0063】
中継ノードTN3からリクエストを受信したエンドノードEN4は、当該リクエストによって特定される配信用データを、当該リクエストへの応答として、当該リクエストの提供元である中継ノードTN3に対して送信する。
【0064】
中継ノードTN3は、エンドノードEN4から受信した配信用データを、リクエストの提供元である中継ノードTN2に対して送信する。そして、中継ノードTN2は、中継ノードTN3から受信した配信用データを、リクエストの提供元であるエンドノードEN1に対して送信する。
【0065】
このようにして、ネットワーク1において、エンドノードEN1はエンドノードEN4から配信用データの配信を受けることができる。
【0066】
(中継ノードの動作例)
続いて、上記のようなデータ配信処理における中継ノードの具体的動作の一例について、中継ノードTN2として動作する情報処理装置10の構成、及び図4に示すフローチャート1を参照しつつ説明する。
【0067】
以下では、
・リクエスト転送処理、及びそれに伴うトランザクションデータ生成処理
・配信用データ転送処理、及びそれに伴うトランザクションデータ生成処理
・トランザクションデータの登録処理
の順に具体的に説明を行う。
【0068】
(リクエスト転送処理)
まず、図3に示したリクエストの転送処理において、情報処理装置10の備えるデータ取得部124は、提供元であるエンドノードEN1から、上述したリクエストを第1の情報として取得する(図4のフローチャート1におけるステップS11)。
【0069】
そして、情報処理装置10の備えるデータ転送管理部120は、記憶部18に格納されているノードテーブルを参照し、リクエストの転送先を決定する。一例として、データ転送管理部120は、当該ノードテーブルに、上記リクエストに含まれる識別情報が含まれている場合には、当該識別情報によって特定されるノードに上記リクエストを転送する。データ転送管理部120は、当該ノードテーブルに、上記リクエストに含まれる識別情報が含まれていない場合には、他の中継ノードに対して上記リクエストを転送する。
【0070】
図3に示した例では、データ転送管理部120は、ノードテーブルに上記リクエストに含まれる識別情報が含まれていないと判断し、第1のデータである当該リクエストを、中継ノードTN3に対して、第2のデータとして提供する(図4のフローチャート1におけるステップS12)。
【0071】
(リクエスト転送処理に伴うトランザクションデータ生成処理)
情報処理装置10の備えるデータ転送管理部120が上記のようにリクエスト転送処理を行った後、情報処理装置10の備えるトランザクションデータ生成部132は、ブロックチェーンに追加するトランザクションデータを生成する(図4のフローチャート1におけるステップS13)。
【0072】
図5の上段は、上述のリクエスト転送処理に伴い、トランザクションデータ生成部132が生成するトランザクションデータTD_TN2_UL1の構成例を示す図である。
【0073】
図5上段に示すように、トランザクションデータ生成部132は、
・第1の識別情報として、第1のデータであるリクエストの提供元であるエンドノードEN1の識別情報ID_EN1
・第2の識別情報として、第2のデータであるリクエストの提供先である中継ノードTN3の識別情報ID_TN3
を含むトランザクションデータTD_TN2_UL1を生成する。
【0074】
また、トランザクションデータ生成部132は、さらに、リクエストに関する関連情報として、
・関連情報1:リクエストの要求元であるエンドノードEN1の識別情報ID_EN1
・関連情報2:リクエストの要求先であるエンドノードEN4の識別情報ID_EN4
・関連情報3:第1のデータ及び第2のデータとしてのリクエストのデータ量(図5上段の例では0.001Gbyte)
・関連情報4:リクエストを第1のデータとしてエンドノードEN1から取得した際の通信帯域(図5上段の例では100Mbps)
・関連情報5:リクエストを第2のデータとして中継ノードTN3に提供した際の通信帯域(図5上段の例では50Mbps)
を含むトランザクションデータTD_TN2_UL1を生成する。
【0075】
ここで、関連情報3~5は、第1のデータであるリクエストを取得し、第2のデータであるリクエストを提供するという中継処理における処理の負荷に関連する情報と捉えることもできる。
【0076】
なお、トランザクションデータ生成部132は、自ノードの識別子をトランザクションデータに更に含める構成としてもよいし、自ノードの識別子をトランザクションデータのデータ名に含ませる構成としてもよい。このような構成とすることにより、トランザクションデータが何れのノードにおいて作成されたものであるのかを明確に区別することができる。本例では、トランザクションデータ生成部132は、自ノードの識別子「TN2」をデータ名に含むトランザクションデータを生成する例を示している。
【0077】
また、トランザクションデータ生成部132は、トランザクションデータを生成する度に、後述するブロック登録処理を行ってもよいし、トランザクションデータを所定回数生成した後にブロック登録処理を行ってもよい。または、トランザクションデータのデータ量の総和が所定のデータ量を超えるまでトランザクションデータの生成を行い、その後にブロック登録処理を行ってもよい。
【0078】
ここでは、トランザクションデータ生成部132が、リクエスト転送処理に伴うトランザクションデータの生成を行った後、更に配信用データ転送処理に伴うトランザクションデータの生成を行った後に、ブロック登録部134がブロック登録処理を行うものとして説明を続ける。
【0079】
(配信用データ転送処理)
続いて、図3に示した配信用データ転送処理において、情報処理装置10の備えるデータ取得部124は、提供元である中継ノードTN3から、配信用データを第1のデータとして取得する。
【0080】
そして、情報処理装置10の備えるデータ提供部126は、リクエストの提供元であるエンドノードEN1に対して、当該配信用データを第2のデータとして提供する。
【0081】
(配信用データ転送処理に伴うトランザクションデータ生成処理)
情報処理装置10の備えるデータ転送管理部120が上記のように配信用データ転送処理を行った後、情報処理装置10の備えるトランザクションデータ生成部132は、ブロックチェーンに追加するトランザクションデータを生成する。
【0082】
図5の中段は、上述の配信用データ転送処理に伴い、トランザクションデータ生成部132が生成するトランザクションデータTD_TN2_DL1の構成例を示す図である。
【0083】
トランザクションデータ生成部132は、
・第1の識別情報として、第1のデータである配信用データの提供元である中継ノードTN3の識別情報ID_TN3
・第2の識別情報として、第2のデータである配信用データの提供先であるエンドノードEN1の識別情報ID_EN1
を含むトランザクションデータTD_TN2_DL1を生成する。
【0084】
また、トランザクションデータ生成部132は、さらに、配信用データに関する関連情報として、
・関連情報1:配信用データの配信元であるエンドノードEN4の識別情報ID_EN4
・関連情報2:配信用データの配信先であるエンドノードEN1の識別情報ID_EN1
・関連情報3:第1のデータ及び第2のデータとしての配信用データのデータ量(図5中段の例では5.0Gbyte)
・関連情報4:配信用データを第1のデータとして中継ノードTN3から取得した際の通信帯域(図5中段の例では50Mbps)
・関連情報5:配信用データを第2のデータとしてエンドノードEN1に提供した際の通信帯域(図5中段の例では100Mbps)
を含むトランザクションデータTD_TN2_DL1を生成する。
【0085】
ここで、関連情報3~5は、第1のデータである配信用データを取得し、第2のデータである配信用データを提供するという中継処理における処理の負荷に関連する情報と捉えることもできる。
【0086】
このように、トランザクションデータが中継処理における処理の負荷に関連する情報を含むことにより、当該トランザクションデータを参照すれば、中継処理において、どのようなノードにどのような処理負担が生じていたのかを事後的に好適に特定することができる。
【0087】
なお、上記の説明では、情報処理装置10が中継ノードTN2として動作する場合を例に挙げたが、情報処理装置10が他の中継ノードとして動作する場合も同様の動作を実行してよい。
【0088】
一例として、情報処理装置10が中継ノードTN3として動作する場合に、上述した配信用データ転送処理に伴って情報処理装置10が生成するトランザクションデータTD_TN3_DL1の一例を、図5の下段に示す。
【0089】
(ブロック登録処理)
情報処理装置10のブロック登録部134は、トランザクションデータ生成部132が生成したトランザクションデータTD_TN2_UL1、及びトランザクションデータTD_TN2_DL1を含むブロックを生成し、生成したブロックを、ブロックチェーンに登録する。ここで、ブロック登録部134がブロックを登録するブロックチェーンは、上述したように、ネットワーク1における所定のコンセンサスアルゴリズムを用いて更新されるブロックチェーンである。
【0090】
なお、情報処理装置10のブロック登録部134が登録するブロックには、他のノードが有するトランザクションデータ生成部によって生成され、情報処理装置10が取得したトランザクションデータを含める構成としてもよい。
【0091】
図6は、トランザクションデータを含むブロックがブロック登録部134によって登録されたブロックチェーンBCを示す図である。
【0092】
ブロックチェーンBCには、複数のブロック(・・・、BL1、BL2、BL3)が含まれてよい。各ブロックは、ブロックヘッダ、及びトランザクションデータを含んでよい。ブロックヘッダには、一例として、前ブロックのブロックヘッダのハッシュ値、当該ブロックのトランザクションデータのハッシュ値、及びノンス値が含まれてよい。各ブロックが直前のブロックのハッシュ値を含むことにより、ブロック間の順序関係が規定される。
【0093】
ブロック登録部134は、ブロックチェーンBCにブロックを登録するために一例として以下の処理を行う。
・ブロックに追加すべきトランザクションデータの特定と特定したトランザクションデータのハッシュ値の算出
・前ブロックのハッシュ値の算出
・所定条件を満たすノンス値の算出
そして、ブロック登録部134は、トランザクションデータのハッシュ値、前ブロックのハッシュ値、及びノンス値を含むブロックヘッダを生成し、生成したブロックヘッダとトランザクションデータとを含むブロックを生成する。ここで、ブロックヘッダにタイムスタンプを含める構成としてもよいし、ブロックヘッダにトランザクションデータを特定するトランザクションIDを含める構成としてもよい。
【0094】
ブロック登録部134は、生成したブロックを、ネットワーク1に含まれる他のノードにブロードキャストする。そして、他のノードによって、当該ブロックが所定のコンセンサスアルゴリズムに基づき承認された場合に、ブロック登録部134は、当該ブロックをブロックチェーンBCに登録する。
【0095】
図6は、ブロック登録部134が、トランザクションデータTD_TN2_UL1、及びトランザクションデータTD_TN2_DL1と、ブロックヘッダとを含むブロックBL3を、ブロックチェーンBCに追加した場合を示している。
【0096】
このように、トランザクションデータ生成部132が生成したトランザクションデータをブロック登録部134がブロックチェーンに登録するので、何れのノードを介してどのようにユーザにデータが提供されたのかに関する情報を、高い信頼性を保ちつつ保存しておくことができる。このため、当該情報を好適に事後的に検証することが可能となる。
【0097】
(インセンティブ受領処理)
情報処理装置10の制御部12は、ブロック登録部134がブロックチェーンBCに登録したトランザクションデータに基づいて決定されるインセンティブを受領する受領部として機能してもよい。
【0098】
ここで、トランザクションデータに基づくインセンティブの決定処理は、一例として、後述する情報処理装置20において行われてもよいし、ネットワーク1が備える他の情報処理装置において行われてもよい。また、決定したインセンティブを、情報処理装置10に送信する処理は、一例として、後述する情報処理装置20において行われてもよいし、ネットワーク1が備える他の情報処理装置において行われてもよい。
【0099】
なお、インセンティブの具体例は本実施形態を限定するものではないが、一例として、インセンティブとして暗号資産を採用することができる。
【0100】
このように、情報処理装置10の制御部12が、インセンティブを受領する構成とすることによって、一例として、中継処理における処理の負荷に応じて、中継ノードがインセンティブを受領することができる。これにより、ノードの運営事業への参加が促進され、分散型ネットワークが大きく発展する契機になり得る。
【0101】
<情報処理装置20>
続いて、参照する図面を替えて、本実施形態に係る情報処理装置20について説明する。本実施形態に係る情報処理装置20は、一例として、ネットワーク1に含まれる何れかのエンドノードを構成する。ただし、これは本実施形態を限定するものではなく、情報処理装置10が備える構成と同様の構成を更に備え、ネットワーク1に含まれる中継ノードとして実現される構成としてもよい。
【0102】
情報処理装置20は、ブロックチェーンBCからトランザクションデータを読み出し、読みだしたトランザクションデータに基づき、データの流れを示すルート情報を生成する。
【0103】
図7は、情報処理装置20の構成を示すブロック図である。また、図4のフローチャート2は、情報処理装置20によるルート情報生成処理の流れを示すフローチャートである。情報処理装置20は、一例として、制御部22、通信部24、表示部25、メモリ26、及び記憶部28を備えてよい。
【0104】
通信部24は、ネットワーク1に含まれる他のノードからデータを受信したり、他のノードにデータを送信したりする。
【0105】
表示部25は、一例として表示パネルを備え、制御部22が生成した表示用データを表示パネルに表示する。
【0106】
メモリ26には、制御部22が実行する各種のプログラム及びそれらのプログラムによって参照される各種のデータが一時的に格納される。また、記憶部28には、制御部22によって読み出され、制御部22によって参照される各種の情報が格納されている。
【0107】
制御部22は、ルート情報管理部220、及びブロックチェーン管理部230を備えてよい。
【0108】
ブロックチェーン管理部230は、ネットワーク1に含まれるノード間での所定のコンセンサスアルゴリズムを用いて更新されるブロックチェーンBCを管理する。ブロックチェーン管理部230は、トランザクションデータ取得部232を備えてよい。
【0109】
(トランザクションデータ取得部)
トランザクションデータ取得部232は、ブロックチェーンBCを参照して、ネットワーク1に含まれる少なくとも何れかのノードに関するトランザクションデータを当該ブロックチェーンから読み出す。そして、読み出したトランザクションデータに含まれる以下の情報を取得してよい(図4のフローチャート2におけるステップS21)。
・当該ノードがネットワーク1に含まれる提供元から取得した第1のデータ及び、当該ノードがネットワーク1に含まれる提供先に提供した第2のデータの少なくとも何れかに関する関連情報
・前記提供元を識別するための第1の識別情報、及び
・前記提供先を識別するための第2の識別情報。
【0110】
ここで、第2のデータとは、情報処理装置10に関して上述したように、第1のデータ及び第1のデータに基づいて生成されたデータの少なくとも何れかを含むデータのことであってよい。また、関連情報、第1の識別情報、及び第2の識別情報も情報処理装置10に関して説明した各情報と同じものであってよい。
【0111】
トランザクションデータ取得部232が取得したトランザクションデータは、一例として、記憶部28に格納される。なお、トランザクションデータ取得部232は、任意の手法により記憶部28に格納されたトランザクションの読み出し処理を実行してよい。トランザクションデータ取得部232は、例えば、ブロックチェーンBCのブロックヘッダに含まれるタイムスタンプやトランザクションIDを参照することで、読み出すべきトランザクションを特定し、特定したトランザクションを読み出してよい。なお、トランザクションデータ取得部232は、任意の手法により読み出し処理を実行してよく、読み出し処理の具体例はこれに限定されない。
【0112】
ルート情報管理部220は、ルート情報生成部224及び表示情報生成部226を備えている。
【0113】
(ルート情報生成部)
ルート情報生成部224は、トランザクションデータ取得部232が取得した情報に基づいて、ネットワーク1に含まれる1又は複数のノードを介したデータの流れに関するルート情報を生成する(図4のすフローチャート2におけるステップS22)。
【0114】
図8の上段は、ルート情報生成部224が生成したルート情報の一例を示している。図8は、ルート情報生成部224が、ブロックチェーンBCから、中継ノードTN2による中継処理に伴い生成されたトランザクションデータTD_TN2_DL1(図5の中段)、及び中継ノードTN3による中継処理に伴い生成されたトランザクションデータTD_TN3_DL1(図5の下段)を読み出し、読み出した情報に基づきルート情報ROUTE_DL1を生成する例を示している。
【0115】
より具体的には、まず、ルート情報生成部224は、トランザクションデータTD_TN3_DL1に含まれる第1の識別情報に基づき、中継ノードTN3への配信用データの提供元がエンドノードEN4であることを特定する。
【0116】
また、ルート情報生成部224は、トランザクションデータTD_TN3_DL1に含まれる第2の識別情報に基づき、中継ノードTN3からの配信用データの提供先が中継ノードTN2であることを特定する。
【0117】
また、ルート情報生成部224は、トランザクションデータTD_TN2_DL1に含まれる第1の識別情報に基づき、中継ノードTN2への配信用データの提供元が中継ノードTN3であることを特定する。
【0118】
また、ルート情報生成部224は、トランザクションデータTD_TN2_DL1に含まれる第2の識別情報に基づき、中継ノードTN2からの配信用データの提供先がエンドノードEN1であることを特定する。
【0119】
更に、ルート情報生成部224は、トランザクションデータTD_TN2_DL1に含まれる関連情報1に基づき、配信用データの配信元がエンドノードEN4であることを特定する。
【0120】
また、ルート情報生成部224は、トランザクションデータTD_TN2_DL1に含まれる関連情報2に基づき、配信用データの配信先がエンドノードEN1であることを特定する。
【0121】
そして、ルート情報生成部224は、特定した上記情報に基づき、配信用データの始点、中継点、及び終点を示す情報を含むルート情報を生成する。より具体的には、ルート情報生成部224は、特定した上記情報に基づき、
・配信用データの始点である配信元ノードの識別情報:ID_EN4
・配信用データの中継点(中継点1)のノードの識別情報:ID_TN3
・配信用データの中継点(中継点2)のノードの識別情報:ID_TN2
・配信用データの終点である配信先ノードの識別情報:ID_EN1
を含むルート情報ROUTE_DL1を生成する。
【0122】
ルート情報生成部224が上記のようにルート情報を生成することにより、当該ルート情報を参照すれば、データの中継処理が何れのノードを介してどのように行われたのかについての事後的な検証を容易に行うことができる。
【0123】
(表示情報生成部)
表示情報生成部226は、ルート情報生成部224が生成したルート情報を視覚的に表現する表示用データを生成する。
【0124】
図8の下段は、表示情報生成部226が生成する表示用データの一例を示している。図8の下段に示す例では、表示情報生成部226は、ルート情報生成部224が生成したルート情報ROUTE_DL1を参照して、配信用データの始点、中継点、及び終点を特定する。そして、表示情報生成部226は、一例として、特定した始点、中継点、及び終点、並びにそれらの間における配信用データの流れの向き矢印で示した有向グラフを、表示用データとして生成する。
【0125】
表示情報生成部226が上記のようにルート情報を視覚的に示した表示用データを生成することにより、ユーザに対して、データの中継処理が何れのノードを介してどのように行われたのかについての情報を効果的に提示することができる。したがって、ユーザは、データの中継処理が何れのノードを介してどのように行われたのかについての事後的な検証を容易に行うことができる。
【0126】
(インセンティブ決定処理)
情報処理装置20の制御部22は、ブロックチェーンBCに登録されたトランザクションデータに基づき、各ノードへのインセンティブの値を決定するインセンティブ決定部としても機能する。
【0127】
ここで、インセンティブの値の具体的な決定処理は、本実施形態を限定するものではないが、一例として、制御部22は、ブロックチェーンBCに登録されたトランザクションデータに基づき、データの中継処理における各ノードの処理の負荷と、各ノードへのインセンティブの値とが正の相関を有するようにインセンティブを決定する構成とすることができる。
【0128】
(インセンティブ送信処理)
また、情報処理装置20の制御部22は、上記のように決定したインセンティブを、各ノードに対して送信する送信部としても機能する。一例として、情報処理装置20の制御部22は、上記のように決定したインセンティブを仮想通貨として各ノードに対して送信する。
【0129】
このように、情報処理装置20の制御部22が、インセンティブを決定し、送信する構成とすることによって、一例として、中継処理における処理の負荷に応じて、中継ノードがインセンティブを受領することができる。これにより、ノードの運営事業への参加が促進され、分散型ネットワークが大きく発展する契機になり得る。
【0130】
<情報処理装置30>
上述した例では、情報処理装置10がブロック登録部134を備え、トランザクションデータ生成部132が生成したトランザクションデータをブロックチェーンBCに登録する構成について説明したが、本実施形態はこれに限定されるものではない。
【0131】
一例として、情報処理装置10は、ブロック登録部を備えずに、ネットワーク1に含まれる他の情報処理装置がブロック登録部を備える構成としてもよい。一例として、情報処理装置10が生成したトランザクションデータを、ネットワーク1に含まれる各ノードに対して情報処理装置10がブロードキャストし、ネットワーク1に含まれる他のノード(他の情報処理装置)がブロックチェーンに登録する構成としてもよい。
【0132】
図9は、そのような他の情報処理装置の例として、ブロック登録部334を備える情報処理装置30の構成を示すブロック図である。また、図4のフローチャート3は、情報処理装置30よるブロック登録処理の流れを示すフローチャートである。
【0133】
情報処理装置30は、制御部32、通信部34、メモリ36、及び記憶部38を備えてよい。
【0134】
通信部34は、ネットワーク1に含まれる他のノードからデータを受信したり、他のノードにデータを送信したりする。
【0135】
メモリ36には、制御部32が実行する各種のプログラム及びそれらのプログラムによって参照される各種のデータが一時的に格納される。また、記憶部38には、制御部22によって読み出され、制御部32によって参照される各種の情報が格納されている。
【0136】
制御部32は、ブロックチェーン管理部330を備えてよい。ブロックチェーン管理部330は、トランザクションデータ取得部332、及びブロック登録部334を備えてよい。
【0137】
トランザクションデータ取得部332は、ネットワーク1に含まれる少なくとも何れかのノードに関する以下の情報を含むトランザクションデータを、当該何れかのノード又は他のノードから取得する(図4のフローチャート3におけるステップS31)。
・当該ノードがネットワーク1に含まれる提供元から取得した第1のデータ及び、当該ノードがネットワーク1に含まれる提供先に提供した第2のデータの少なくとも何れかに関する関連情報
・前記提供元を識別するための第1の識別情報、及び
・前記提供先を識別するための第2の識別情報。
【0138】
ここで、第2のデータとは、情報処理装置10に関して上述したように、第1のデータ及び第1のデータに基づいて生成されたデータの少なくとも何れかを含むデータのことを指す。また、関連情報、第1の識別情報、及び第2の識別情報も情報処理装置10に関して説明した各情報と同じものを指す。
【0139】
トランザクションデータ取得部332が取得したトランザクションデータは、一例として、記憶部38に格納される。
【0140】
ブロック登録部334は、トランザクションデータ取得部332が取得したトランザクションデータを、ブロックチェーンBCに登録する(図4のフローチャート3におけるステップS32)。ブロック登録部334による具体的なブロック登録処理は、情報処理装置10が備えるブロック登録部134が実行するブロック登録処理と同様の処理であってよい。
【0141】
上記のように、あるノードが生成したトランザクションデータを他のノードがブロックチェーンに登録する構成によっても、何れのノードを介してどのようにユーザにデータが提供されたのかに関する情報を、高い信頼性を保ちつつ保存しておくことができる。このため、当該情報を好適に事後的に検証することが可能となる。
【0142】
〔実施形態2〕
本発明の他の実施形態について、以下に説明する。なお、説明の便宜上、上記実施形態にて説明した部材と同じ機能を有する部材については、同じ符号を付記し、その説明を省略する場合がある。
【0143】
(ネットワーク1)
本実施形態に係るネットワーク1の大域的な接続関係は、実施形態1において図1を参照して説明したネットワーク1と同様の構成であってよい。ただし、本実施形態に係る中継ノードTN1,TN2,・・・の具体的構成は、図2に示した情報処理装置10とは異なる。図10は、本実施形態に係る情報処理装置50の構成例を示すブロック図である。本実施形態に係る中継ノードTN1,TN2,・・・のそれぞれは、一例として情報処理装置50として実現されてよい。
【0144】
本実施形態に係るネットワーク1は、データ名によってネットワーク上のデータを特定しようとする技術的思想であるNDN(Named Data Network)の一実現例として捉えることができる。ただし、NDNという名称によって本実施形態が限定的に解釈されるものではない。
【0145】
本実施形態に係るネットワーク1では、大きく分けて、「Interest」と「Data」という2種類のデータパケットが用いられる。ここで、「Interest」は、コンテンツ等のデータの要求のために用いられるパケットであり、データ名(コンテンツ名)を含んでよい。「Data」は、コンテンツ等のデータを運ぶために用いられるパケットであり、コンテンツのデータそのものを含んでよい。
【0146】
また、本実施形態に係るネットワーク1では、同一ノード内のあるアプリケーションから他のアプリケーションにデータを転送することもあり得る。そのため、以下の説明では、ノードをより一般化した概念としてFaceという文言を用いる。Faceは、ノード、アプリケーション、記録媒体等のように、データが提供されたり、データが出力されたりする任意の構成を含み得る。Faceとの文言は、Interfaceとの文言の拡張である。
【0147】
本実施形態に係るネットワーク1では、一例として、「Interest」の発信度合いに応じて、当該「Interest」への応答としての「Data」がより短い経路又は時間で配信されるよう、各Faceにおいて「Data」が適応的にキャッシュされる。例えば、あるFaceが、あるデータ名を含む「Interest」を高い頻度で発信した場合、当該Faceの近傍のFaceに、当該あるデータ名で特定されるデータを含む「Data」がキャッシュされる。そして、当該あるFaceが同様の「Interest」を発信した場合に、当該近傍のFaceから「Data」が配信される。本実施形態に係るネットワーク1では、このように各ノードが適応的に「Data」をキャッシュすることにより、「Data」の配信経路及び配信時間を低減させることができる。
【0148】
(情報処理装置50)
実施形態に係る情報処理装置50は、制御部52、通信部54、メモリ56、及び、記憶部58を備えてよい。
【0149】
通信部54は、ネットワーク1に含まれる他のFaceからデータを受信したり、他のFaceにデータを送信したりする。
【0150】
メモリ56には、制御部52が実行する各種のプログラム及びそれらのプログラムによって参照される各種のデータが一時的に格納される。
【0151】
記憶部58には、制御部52によって読み出され、制御部52によって参照される各種の情報が格納されている。記憶部58には、一例として、情報処理装置10が備える記憶部18と同様に、第1の識別情報、第2の識別情報、及び関連情報が格納されている。
【0152】
ここで、第1の識別情報は、実施形態1と同様に、第1のデータの提供元を識別するための識別情報であり、第2の識別情報は、第2のデータの提供先を識別するための識別情報である。第1の識別情報、及び第2の識別情報として、実施形態1と同様の識別情報を採用してもよいし、上記の機能を満たす限りにおいて実施形態1とは異なる識別情報を採用してもよい。一方、本実施形態に係る関連情報の具体的構成は、実施形態1において説明した関連情報とは異なり得る。本実施形態に係る関連情報の具体的構成については後述する。
【0153】
また、記憶部58には、FIB(Forwarding Information Base)、PIT(Pending Interest Table)、及びCS(Content Store)が格納されている。FIB、PIT、及びCSについて説明すれば以下の通りである。
【0154】
(FIB)
FIBは、データ名またはデータ名の一部であるプリフィックス(Prefix)とFaceとを対応付けるテーブルであり、「Interest」をルーティングするために参照される。ここで、FIBにおけるFaceは、「Interest」の提供先を示すことから、Next Faceと呼称されることもある。
【0155】
FIBの一例を図11の上段に示す。図11の上段に示す例では、データ名「/amusement/movie/Movie1」に、Next Faceとして、中継ノードTN3の識別情報ID_TN3が対応付けられている。また、プリフィックス「/amusement/sport」に、Next Faceとして、中継ノードTN4の識別情報ID_TN4が対応付けられている。
【0156】
(PIT)
PITは、「Interest」に含まれているデータ名と、当該「Interest」の提供元であるFaceとを対応付けるテーブルである。PITは、「Interest」に対する「Data」が、「Interest」の逆経路をたどることができるように、情報処理装置50が「Interest」を転送してから「Data」が戻ってくるまでの間、記憶部58に一時的に格納されるテーブルである。PITにおけるFaceは、「Interest」の提供元を示すことから、Requested Faceと呼称されることもある。
【0157】
PITの一例を図11の中段に示す。図11の中段に示す例では、「Interest」に含まれているデータ名である「/amusement/movie/Movie1」に、Requested Faceとして、当該「Interest」の提供元であるエンドノードEN1の識別情報ID_EN1が対応付けられている。
【0158】
(CS)
CSには、当該ノードでキャッシュされたデータ(コンテンツ)と、当該データ(コンテンツ)のデータ名とを対応付けるテーブルである。
【0159】
CSの一例を図11の下段に示す。図11の下段に示す例では、データ名である「/amusement/cooking/Cooking1」に、当該データ名によって特定されるデータ「00100100111010・・・」が対応付けられている。
【0160】
(データ転送処理部)
データ転送管理部520は、あるFaceから取得したデータを他のFaceに提供したり、あるFaceから受信したデータを加工したうえで他のFaceに提供したり、といったデータ転送処理を行う。
【0161】
データ転送管理部520は、一例として、データ取得部524、及びデータ提供部526を備えてよい。
【0162】
データ取得部524は、ネットワーク1に含まれる提供元としてのFaceから、データを取得する。データ取得部524が取得するデータのことを、実施形態1と同様に第1のデータとも呼ぶ。
【0163】
取得したデータが「Interest」である場合、データ取得部524は、当該「Interest」に含まれるデータ名と、提供元のFaceの識別情報とを対応付けてPITに格納する。
【0164】
データ提供部526は、第1のデータ、及び第1のデータに基づいて生成されたデータ、の少なくとも何れかを含むデータを、前記ネットワークに含まれる提供先としてのFaceに提供する。ここで、データ提供部526が提供先に提供するデータのことを、実施形態1と同様に、第2のデータとも呼ぶ。
【0165】
データ提供部526は、データ取得部524が取得したデータが「Interest」である場合、当該「Interest」に含まれるデータ名を有するデータが、CSに含まれているか否かを判定する。そして、当該「Interest」に含まれるデータ名を有するデータが、CSに含まれている場合、PITを参照して、提供先のFaceを特定し、特定したFaceに、当該データを含む「Data」を提供する。一方で、当該「Interest」に含まれるデータ名を有するデータが、CSに含まれていない場合、FIBを参照して提供先のFaceを特定し、特定したFaceに、当該「Interest」を提供する。
【0166】
また、データ提供部526は、提供先に提供するデータが「Data」である場合、PITを参照して、提供先のFaceを特定し、特定したFaceに当該「Data」を提供する。
【0167】
(ブロックチェーン管理部)
ブロックチェーン管理部530は、実施形態1におけるブロックチェーン管理部130と同様に、ネットワーク1に含まれるノード間での所定のコンセンサスアルゴリズムを用いて更新されるブロックチェーンを管理してよい。
【0168】
ブロックチェーン管理部530は、一例として、トランザクションデータ生成部532、及び、ブロック登録部134を備えてよい。
【0169】
(トランザクションデータ生成部)
トランザクションデータ生成部532は、実施形態1におけるトランザクションデータ生成部132と略同様にトランザクションデータを生成する。ただし、トランザクションデータ生成部532が生成するトランザクションデータには、データ名が含まれている。
【0170】
図12の上段は、中継ノードTN2として動作する情報処理装置50による「Interest」の転送処理に伴い、トランザクションデータ生成部532が生成するトランザクションデータTD_TN2_UL1aの具体的構成例を示している。
【0171】
図12の上段に示す例は、
・「Interest」にデータ名「/amusement/movie/Movie1」が含まれており、
・データ取得部524が、「Interest」の要求元かつ提供元であるエンドノードEN1から「Interest」を第1のデータとして取得し、
・データ取得部524が取得した「Interest」を、データ提供部526が、第2のデータとして、中継ノードTN3に対して提供した
場合にトランザクションデータ生成部532が生成するトランザクションデータTD_TN2_UL1aを示している。
【0172】
実施形態1において図5の上段に示したトランザクションデータTD_TN2_UL1には、関連情報2として、リクエストの要求先であるエンドノードEN4の識別情報ID_EN4を含んでいたが、本実施形態に係る「Interest」は、リクエストの要求先のノードを指定してデータを要求するためのものではなく、データ名を指定してデータの要求を行うためのものである。このため、図12の上段に示すように、本実施形態に係るトランザクションデータTD_TN2_UL1aは、一例として、関連情報2として、第1のデータ及び第2のデータである「Interest」に含まれるデータ名「/amusement/movie/Movie1」を含んでいる。
【0173】
トランザクションデータTD_TN2_UL1aのその他の構成は、実施形態1に係るトランザクションデータTD_TN2_UL1と同様であるのでここでは説明を省略する。
【0174】
図12の下段は、中継ノードTN2として動作する情報処理装置50による「Data」の転送処理に伴い、トランザクションデータ生成部532が生成するトランザクションデータTD_TN2_DL1aの具体的構成例を示している。
【0175】
図12の下段に示す例は、
・「Interest」への応答としての「Data」のデータ名が「/amusement/movie/Movie1」であり、
・データ取得部524が、「Data」の配信元かつ提供元である中継ノードTN3から「Data」を第1のデータとして取得し、
・データ取得部524が取得した「Data」を、データ提供部526が、第2のデータとして、エンドノードEN1に対して提供した
場合にトランザクションデータ生成部532が生成するトランザクションデータTD_TN2_DL1aを示している。
【0176】
図12の下段に示すように、本実施形態に係るトランザクションデータTD_TN2_DL1aは、一例として、実施形態1の図5の中段に示した関連情報2に代えて、
・関連情報2a:第1のデータ及び第2のデータである「Data」の配信先であるエンドノードEN1の識別情報ID_EN1
・関連情報2b:第1のデータ及び第2のデータである「Data」のデータ名「/amusement/movie/Movie1」
を含んでいる。
【0177】
(ブロック登録部)
本実施形態に係るブロック登録部134は、実施形態1において説明したブロック登録部134と同様の構成であるのでここでは説明を省略する。
【0178】
(ルート情報の生成)
本実施形態に係るネットワーク1は、実施形態1と同様に、情報処理装置20によりルート情報を生成することができる。
【0179】
図13は、本実施形態に係る情報処理装置20が備えるルート情報生成部224が生成したルート情報の一例を示している。図13は、ルート情報生成部224が、ブロックチェーンBCから、中継ノードTN2による中継処理に伴い生成されたトランザクションデータTD_TN2_DL1aを読み出し、読み出した情報に基づきルート情報ROUTE_DL1aを生成する例を示している。
【0180】
より具体的には、まず、本実施形態に係るルート情報生成部224は、トランザクションデータTD_TN2_DL1aに含まれる第1の識別情報に基づき、「Data」の提供元が中継ノードTN3であることを特定する。
【0181】
また、本実施形態に係るルート情報生成部224は、トランザクションデータTD_TN2_DL1aに含まれる第2の識別情報に基づき、「Data」の提供先がエンドノードEN1であることを特定する。
【0182】
更に、本実施形態に係るルート情報生成部224は、トランザクションデータTD_TN2_DL1aに含まれる関連情報1に基づき、「Data」の配信元が中継ノードTN3であることを特定する。
【0183】
また、ルート情報生成部224は、トランザクションデータTD_TN2_DL1aに含まれる関連情報2aに基づき、「Data」の配信先がエンドノードEN1であることを特定する。
【0184】
そして、ルート情報生成部224は、特定した上記情報に基づき、「Data」の始点、中継点、及び終点を示す情報を含むルート情報を生成する。より具体的には、ルート情報生成部224は、特定した上記情報に基づき、
・「Data」の始点である配信元ノードの識別情報:ID_TN3
・「Data」の中継点(中継点1)のノードの識別情報:ID_TN2
・「Data」の終点である配信先ノードの識別情報:ID_EN1
を含むルート情報ROUTE_DL1aを生成する。
【0185】
本実施形態においても、ルート情報生成部224が上記のようにルート情報を生成することにより、当該ルート情報を参照すれば、データの中継処理が何れのノードを介してどのように行われたのかについての事後的な検証を容易に行うことができる。
【0186】
(表示情報生成部)
本実施形態に係る情報処理装置20が備える表示情報生成部226は、ルート情報生成部224が生成したルート情報を視覚的に表現する表示用データを生成する。
【0187】
図13の下段は、表示情報生成部226が生成する表示用データの一例を示している。図13の下段に示す例では、表示情報生成部226は、ルート情報生成部224が生成したルート情報ROUTE_DL1aを参照して、「Data」の始点、中継点、及び終点を特定する。そして、表示情報生成部226は、一例として、特定した始点、中継点、及び終点、並びにそれらの間における「Data」の流れの向き矢印で示した有向グラフを、表示用データとして生成する。なお、表示情報生成部226は、データの流れを示す矢印に付随して、データ名(図13下段の例では「/amusement/movie/Movie1」)を表示用データに含める構成としてもよい。
【0188】
本実施形態においても、表示情報生成部226が上記のようにルート情報を視覚的に示した表示用データを生成することにより、ユーザに対して、データの中継処理が何れのノードを介してどのように行われたのかについての情報を効果的に提示することができる。したがって、本実施形態においても、ユーザは、データの中継処理が何れのノードを介してどのように行われたのかについての事後的な検証を容易に行うことができる。
【0189】
〔実施形態3〕
本発明の他の実施形態について、以下に説明する。なお、説明の便宜上、上記実施形態にて説明した部材と同じ機能を有する部材については、同じ符号を付記し、その説明を省略する場合がある。
【0190】
(ネットワーク1)
本実施形態に係るネットワーク1の大域的な接続関係は、実施形態1及び2において図1を参照して説明したネットワーク1と同様の構成であってよい。たたし、本実施形態に係る中継ノードTN1,TN2,・・・の具体的構成は、図2に示した情報処理装置20、及び図10に示した情報処理装置50とは異なる。図14は本実施形態に係る情報法処理装置70の構成例を示すブロック図である。なお、本実施形態に係る中継ノードTN1,TN2,・・・のそれぞれは、一例として情報処理装置70として実現されてよい。
【0191】
本実施形態に係るネットワーク1は、NDNの思想に加え、データ処理を行うファンクション名またはそのようなファンクションを提供するカーネル名によって、ネットワーク上のデータ処理を特定しようとする技術的思想であるNFN(Named Function Network)の一実現例として捉えることができる。ただし、NFNという名称によって本実施形態が限定的に解釈されるものではない。
【0192】
本実施形態に係るネットワーク1では、実施形態2と同様に、大きく分けて、「Interest」と「Data」という2種類のデータパケットが用いられる。ただし、本実施形態に係る「Interest」は、コンテンツ等のデータの要求、及びデータに適用されるファンクションの要求の少なくとも何れかのために用いられるパケットであり、データ名(コンテンツ名)及びファンクション名の少なくとも何れかを含んでよい。「Data」は、コンテンツ自体のデータや、ファンクションを提供するカーネルのデータを運ぶために用いられるパケットであり、コンテンツやカーネル等のデータそのものを含んでよい。ここで、本実施形態に係る「Data」には、ファンクションが適用された後のデータも含み得る。
【0193】
(情報処理装置70)
本実施形態に係る情報処理装置70は、制御部72、通信部74、メモリ76、及び、記憶部78を備えてよい。
【0194】
通信部74は、情報処理装置50の備える通信部54と同様に、ネットワーク1に含まれる他のFaceからデータを受信したり、他のFaceにデータを送信したりする。
【0195】
メモリ76には、制御部72が実行する各種のプログラム及びそれらのプログラムによって参照される各種のデータが一時的に格納される。
【0196】
記憶部78には、制御部72によって読み出され、制御部72によって参照される各種の情報が格納されている。記憶部78には、一例として、情報処理装置50が備える記憶部58と同様に、第1の識別情報、第2の識別情報、及び関連情報が格納されてよい。
【0197】
ただし、本実施形態に係る関連情報の具体的構成は、実施形態2において説明した関連情報とは異なり得る。本実施形態に係る関連情報の具体的構成については後述する。
【0198】
また、記憶部78には、FIB(Forwarding Information Base)、PIT(Pending Interest Table)、及びCS(Content Store)に加え、KS(Kernel Store)が格納されてよい。
【0199】
(FIB)
本実施形態に係るFIBは、データ名、ファンクション名、またはデータ名の一部であるプリフィックス(Prefix)とFaceとを対応付けるテーブルであり、「Interest」をルーティングするために参照される。ここで、本実施形態に係るデータ名には、データに対して適用されるファンクション名が含まれ得る。
【0200】
本実施形態に係るFIBの一例を図15の上段に示す。図15の上段に示す例では、ファンクション名「/filter1」に、Next Faceとして、中継ノードTN1の識別情報ID_TN1が対応付けられている。また、実施形態2と同様に、データ名「/amusement/movie/Movie1」に、Next Faceとして、中継ノードTN3の識別情報ID_TN3が対応付けられており、プリフィックス「/amusement/sport」に、Next Faceとして、中継ノードTN4の識別情報ID_TN4が対応付けられている。なお、ファンクション名「/filter1」によって特定される具体的なファンクションは本実施形態を限定するものではないが、一例として、画像データに対して適用される画像処理等のファンクションが挙げられる。
【0201】
(PIT)
本実施形態に係るPITは、実施形態2と同様に、「Interest」に含まれているデータ名と、当該「Interest」の提供元であるFaceとを対応付けるテーブルであってよい。ただし、上述のように、本実施形態に係るデータ名には、データに対して適用されるファンクション名が含まれ得る。
【0202】
PITの一例を図15の中段に示す。図15の中段に示す例では、「Interest」に含まれているデータ名である「/filter1/amusement/movie/Movie1」に、Requested Faceとして、当該「Interest」の提供元であるエンドノードEN1の識別情報ID_EN1が対応付けられている。
【0203】
(CS)
CSには、当該ノードでキャッシュされたデータ(コンテンツ)と、及び当該データ(コンテンツ)のデータ名とを対応付けるテーブルであり、実施形態2と同様の構成である。
【0204】
(KS)
KSには、当該ノードでキャッシュされたカーネルであって、ファンクションを提供するためのカーネルと、当該カーネルのカーネル名とを対応付けるテーブルである。
【0205】
KSの一例を図15の下段に示す。図15の下段に示す例では、ファンクション「/filter1」を提供するためのカーネルのカーネル名である「Ker_filter1」に、当該カーネルのデータ「111001010000101・・・」が対応付けられている。
【0206】
(データ転送処理部)
データ転送管理部720は、あるFaceから取得したデータを他のFaceに提供したり、あるFaceから受信したデータを加工したうえで他のFaceに提供したり、といったデータ転送処理を行う。
【0207】
データ転送管理部720は、一例として、データ取得部724、データ提供部726、及びファンクション実行部728を備えてよい。
【0208】
データ取得部724は、ネットワーク1に含まれる提供元としてのFaceから、データ又はカーネルを取得する。データ取得部724が取得するデータ又はカーネルのことを、実施形態1及び2と同様に第1のデータとも呼ぶ。
【0209】
取得したデータが「Interest」である場合、データ取得部724は、当該「Interest」に含まれるデータ名と、提供元のFaceの識別情報とを対応付けてPITに格納する。
【0210】
データ提供部726は、第1のデータ、及び第1のデータに基づいて生成されたデータ、の少なくとも何れかを含むデータを、前記ネットワークに含まれる提供先としてのFaceに提供する。ここで、データ提供部726が提供先に提供するデータのことを、実施形態1及び2と同様に、第2のデータとも呼ぶ。
【0211】
データ取得部724が取得したデータが「Interest」である場合、データ提供部726は、当該「Interest」に含まれているデータ名にファンクション名が含まれているか否かを判定する。
【0212】
データ名にファンクション名が含まれている場合、データ提供部726は、当該ファンクション名を有するファンクションを提供するカーネルが、KSに含まれているか否かを判定する。KSに当該カーネルが含まれていない場合、データ提供部726は、FIBに含まれている当該ファンクション名に基づき、「Interest」を提供する提供先のFaceを特定し、特定したFaceに「Interest」を提供する。
【0213】
一例として、データ取得部724が取得した「Interest」に含まれるデータ名が「/filter1/amusement/movie/Movie1」であり、「/filter1」がファンクション名である場合、データ提供部726は、図15の上段に示すFIBに含まれているファンクション名「/filter1」に基づき、「Interest」を提供する提供先のFaceを、中継ノードTN1と特定する。そして、データ提供部726は、特定した中継ノードTN1に対して、「/filter1」を要求する「Interest」を提供する。
【0214】
また、データ提供部726は、「Interest」に含まれるデータ名「/filter1/amusement/movie/Movie1」からファンクション名「/filter1」を取り去ってできるデータ名「/amusement/movie/Movie1」に関し、実施形態2に係るデータ提供部526と同様の処理を行う。
【0215】
一方で、提供先に提供するデータが「Data」である場合、データ提供部726は、PITを参照して、提供先のFaceを特定する。
【0216】
ファンクション実行部728は、自ノードにキャッシュされているカーネルに含まれるファンクション又は他のノードから取得したカーネルに含まれるファンクションを、データ取得部724が取得した「Interest」を参照して、対象データに対して適用する。一例として、中継ノードTN1から取得したカーネルに含まれるファンクション名「/filter1」のファンクションを、「Interest」に基づき、中継ノードTN3から取得したデータ名「/amusement/movie/Movie1」の「Data」に対して適用することによって、データ名「/filter1/amusement/movie/Movie1」を有する「Data」を生成する。そして、生成された「Data」は、データ提供部726によって他のノードに提供される。
【0217】
このように、データ提供部726が提供する「Data」には、ファンクション実行部728によってファンクションが適用されたデータも含まれ得る。
【0218】
(ブロックチェーン管理部)
ブロックチェーン管理部730は、実施形態2におけるブロックチェーン管理部530と同様に、ネットワーク1に含まれるノード間での所定のコンセンサスアルゴリズムを用いて更新されるブロックチェーンを管理する。
【0219】
ブロックチェーン管理部730は、一例として、トランザクションデータ生成部732、及び、ブロック登録部134を備えてよい。
【0220】
(トランザクションデータ生成部)
トランザクションデータ生成部732は、実施形態2におけるトランザクションデータ生成部532と略同様にトランザクションデータを生成する。ただし、トランザクションデータ生成部732が生成するトランザクションデータには、データ名又はファンクション名が含まれている。
【0221】
図16は、中継ノードTN2として動作する情報処理装置70による「Interest」の転送処理に伴い、トランザクションデータ生成部732が生成するトランザクションデータTD_TN2_UL1b、及びトランザクションデータTD_TN2_UL1cの具体的構成例を示している。
【0222】
図16に示す例は、
・データ取得部724が取得した「Interest」に、ファンクション名「/filter1」とデータ名「/amusement/movie/Movie1」とを含むデータ名「/filter1/amusement/movie/Movie1」が含まれており、
・データ取得部724が、上記「Interest」の要求元かつ提供元であるエンドノードEN1から上記「Interest」を第1のデータとして取得し、
・データ取得部724が取得した上記「Interest」から抽出したファンクション名「/filter1」を含む「Interest」を、データ提供部726が、第2のデータとして、中継ノードTN1に対して提供し、
・データ取得部724が取得した上記「Interest」から抽出したデータ名「/amusement/movie/Movie1」を含む「Interest」を、データ提供部726が、第2のデータとして、中継ノードTN3に対して提供した
場合にトランザクションデータ生成部732が生成するトランザクションデータTD_TN2_UL1b及びトランザクションデータTD_TN2_UL1cを示している。
【0223】
トランザクションデータTD_TN2_UL1bは、実施形態2におけるトランザクションデータTD_TN2_UL1aと同様の構成であってよい。図16の上段に示す例において、トランザクションデータTD_TN2_UL1bは、データ名「/amusement/movie/Movie1」を含む「Interest」が、中継ノードTN3に対して提供されたことを示している。
【0224】
一方、トランザクションデータTD_TN2_UL1cには、関連情報2としてファンクション名「/filter1」が含まれてよい。図16の上段に示す例において、トランザクションデータTD_TN2_UL1cは、ファンクション名「/filter1」を含む「Interest」が、中継ノードTN1に対して提供されたことを示している。
【0225】
トランザクションデータTD_TN2_UL1b及びトランザクションデータTD_TN2_UL1cに含まれるその他の情報については、実施形態1及び実施形態2において説明した情報と同様であってよい。
【0226】
一方で、図17は、中継ノードTN2として動作する情報処理装置70による「Data」の転送処理に伴い、トランザクションデータ生成部732が生成するトランザクションデータTD_TN2_DL1bの具体的構成例を示している。
【0227】
図17に示す例は、
・データ取得部724が、データ名「/amusement/movie/Movie1」を有する「Data」を、第1のデータとして中継ノードTN3から取得し、
・データ取得部724が、ファンクション名「/filter1」を有するファンクションを提供するカーネルを、中継ノードTN1から取得し、
・ファンクション実行部728が、データ名「/amusement/movie/Movie1」を有する「Data」に対して、ファンクション名「/filter1」を有するファンクションを適用することによってデータ名「/filter1/amusement/movie/Movie1」を有する「Data」である第2のデータを生成し、
・生成された第2のデータを、データ提供部726が、エンドノードEN1に対して提供した
場合にトランザクションデータ生成部732が生成するトランザクションデータTD_TN2_DL1bを示している。
【0228】
本実施形態に係るトランザクションデータTD_TN2_DL1bは、
・関連情報1a:データ名「/amusement/movie/Movie1」によって特定される第1のデータの配信元である中継ノードTN3の識別情報ID_TN3
・関連情報1b:ファンクション名「/filter1」によって特定されるファンクションを提供するカーネルの配信元である中継ノードTN1の識別情報ID_TN1
・関連情報2a:データ名「/filter1/amusement/movie/Movie1」によって特定される第2のデータの配信先であるエンドノードEN1の識別情報ID_EN1
・関連情報2b:第2のデータのデータ名「/filter1/amusement/movie/Movie1」
・関連情報3a:第1のデータ又は第2のデータのデータ量
・関連情報3b:カーネルのデータ量
・関連情報4a:第1のデータを中継ノードTN3から取得した際の通信帯域
・関連情報4b:カーネルを中継ノードTN1から取得した際の通信帯域
・関連情報5:第2のデータをエンドノードEN1に提供した際の通信帯域
・関連情報6:ファンクション実行部728がファンクション「/filter1」を実行する際の処理負荷を示すインデックス
を含んでいる。
【0229】
ここで、関連情報2bには、第2のデータを生成するための処理の内容を示す情報として、ファンクション名「/filter1」が含まれている。また、関連情報6は、第2のデータを生成するための処理量を示す情報としての意味も有する。
【0230】
(ブロック登録部)
ブロック登録部134は、実施形態1及び2において説明したブロック登録部134と同様の構成であってよい。
【0231】
(ルート情報の生成)
本実施形態に係るネットワーク1は、実施形態1及び2と同様に、情報処理装置20によりルート情報を生成することができる。
【0232】
図18は、本実施形態に係る情報処理装置20が備えるルート情報生成部224が生成したルート情報の一例を示している。図18は、ルート情報生成部224が、ブロックチェーンBCから、中継ノードTN2による中継処理に伴い生成されたトランザクションデータTD_TN2_DL1bを読み出し、読み出した情報に基づきルート情報ROUTE_DL1bを生成する例を示している。
【0233】
より具体的には、まず、本実施形態に係るルート情報生成部224は、トランザクションデータTD_TN2_DL1bに含まれる第1の識別情報に基づき、データ名「/amusement/movie/Movie1」を有する第1のデータ提供元が中継ノードTN3であることを特定する。
【0234】
また、本実施形態に係るルート情報生成部224は、トランザクションデータTD_TN2_DL1bに含まれる第2の識別情報に基づき、データ名「/filter1/amusement/movie/Movie1」を有する第2のデータの提供先がエンドノードEN1であることを特定する。
【0235】
更に、本実施形態に係るルート情報生成部224は、トランザクションデータTD_TN2_DL1bに含まれる関連情報1aに基づき、第1のデータの配信元が中継ノードTN3であることを特定する。
【0236】
また、トランザクションデータTD_TN2_DL1bに含まれる関連情報1bに基づき、ファンクション名「/filter1」を有するファンクションを提供するカーネルの配信元が中継ノードTN1であることを特定する。
【0237】
また、ルート情報生成部224は、トランザクションデータTD_TN2_DL1bに含まれる関連情報2aに基づき、第2のデータの配信先がエンドノードEN1であることを特定する。
【0238】
そして、ルート情報生成部224は、特定した上記情報に基づき、第1のデータ及びカーネルの始点、中継点、並びに第2のデータの終点を示す情報を含むルート情報を生成する。より具体的には、ルート情報生成部224は、特定した上記情報に基づき、
・第1のデータの始点である配信元ノードの識別情報:ID_TN3
・カーネルの始点であるファンクション配信元の識別情報:ID_TN1
・第1のデータの中継点(中継点1)のノードの識別情報:ID_TN2
・第2のデータの終点である配信先ノードの識別情報:ID_EN1
を含むルート情報ROUTE_DL1bを生成する。
【0239】
本実施形態においても、ルート情報生成部224が上記のようにルート情報を生成することにより、当該ルート情報を参照すれば、データの中継処理が何れのノードを介してどのように行われたのかについての事後的な検証を容易に行うことができる。
【0240】
(表示情報生成部)
本実施形態に係る情報処理装置20が備える表示情報生成部226は、ルート情報生成部224が生成したルート情報を視覚的に表現する表示用データを生成する。
【0241】
図18の下段は、表示情報生成部226が生成する表示用データの一例を示している。図18の下段に示す例では、表示情報生成部226は、ルート情報生成部224が生成したルート情報ROUTE_DL1bを参照して、第1のデータ及びカーネルの始点、中継点、並びに第2のデータの終点を特定する。そして、表示情報生成部226は、一例として、特定した始点、中継点、及び終点、並びにそれらの間におけるデータ又はカーネルの流れの向き矢印で示した有向グラフを、表示用データとして生成する。なお、図18の下段に示すように、表示情報生成部226は、データの流れを示す矢印に付随して、データ名(図18の下段の例では「/amusement/movie/Movie1」、「/filter1/amusement/movie/Movie1」)、及びカーネルが実行するファンクションのファンクション名(図18下段の例では「/filter1」)を表示用データに含める構成としてもよい。
【0242】
本実施形態においても、表示情報生成部226が上記のようにルート情報を視覚的に示した表示用データを生成することにより、ユーザに対して、データの中継処理が何れのノードを介してどのように行われたのかについての情報を効果的に提示することができる。したがって、本実施形態においても、ユーザは、データの中継処理が何れのノードを介してどのように行われたのかについての事後的な検証を容易に行うことができる。
【0243】
〔ハードウェア構成およびソフトウェアによる実現例〕
情報処理装置10、20、30、50、及び70の制御ブロック(特に制御部12、22、32、52、及び72に含まれる各部等)は、集積回路(ICチップ)等に形成された論理回路(ハードウェア)によって実現してもよいし、CPU(Central Processing Unit)を用いてソフトウェアによって実現してもよい。後者の場合、情報処理装置10、20、30、50、及び70は、図19に示すようなコンピュータ(電子計算機)を用いて構成されてよい。
【0244】
図19は、情報処理装置10、20、30、50、及び70として利用可能なコンピュータ910の構成を例示したブロック図である。コンピュータ910は、バス911を介して互いに接続された演算装置912と、主記憶装置913と、補助記憶装置914と、入出力インターフェース915とを備えている。演算装置912、主記憶装置913、および補助記憶装置914は、それぞれ、例えばCPU、RAM(random access memory)、ハードディスクドライブであってもよい。入出力インターフェース915には、ユーザがコンピュータ910に各種情報を入力するための入力装置920、および、コンピュータ910がユーザに各種情報を出力するための出力装置930が接続される。入力装置920および出力装置930は、コンピュータ910に内蔵されたものであってもよいし、コンピュータ910に接続された(外付けされた)ものであってもよい。例えば、入力装置920は、キーボード、マウス、タッチセンサなどであってもよく、出力装置930は、ディスプレイ、プリンタ、スピーカなどであってもよい。また、タッチセンサとディスプレイとが一体化されたタッチパネルのような、入力装置920および出力装置930の双方の機能を有する装置を適用してもよい。そして、通信インターフェース916は、コンピュータ910が外部の装置と通信するためのインターフェースである。
【0245】
補助記憶装置914には、コンピュータ910を、情報処理装置10、20、30、50、及び70として動作させるための情報処理プログラムが格納されている。そして、演算装置912は、補助記憶装置914に格納された上記情報処理プログラムを主記憶装置913上に展開して該情報処理プログラムに含まれる命令を実行することによって、コンピュータ910を、情報処理装置10、20、30、50、及び70が備える各部として機能させる。なお、補助記憶装置914が情報処理プログラム等の情報の記録に用いる記録媒体は、コンピュータ読み取り可能な「一時的でない有形の媒体」であればよく、例えば、テープ、ディスク、カード、半導体メモリ、プログラマブル論理回路などであってもよい。
【0246】
また、コンピュータ910の外部の記録媒体に記録されているプログラム、あるいは任意の伝送媒体(通信ネットワークや放送波等)を介してコンピュータ910に供給されたプログラムを用いてコンピュータ910を機能させる構成を採用してもよい。そして、本発明は、上記プログラムが電子的な伝送によって具現化された、搬送波に埋め込まれたデータ信号の形態でも実現され得る。
【0247】
〔情報処理システムの製造方法〕
本明細書に記載の発明には、ネットワーク1に含まれる複数の情報処理装置によって構成される情報処理システムを製造する方法も含まれる。
【0248】
このような情報処理システムの製造方法には、一例として以下のステップが含まれ得る。
【0249】
(プログラム作成ステップ)
まず、本ステップにて、上述した情報処理プログラムを作成する。すなわち、コンピュータを、情報処理装置10、20、30、50、及び70として動作させるための情報処理プログラムを作成する。本ステップは、プログラムを作成するコンピュータ又はプログラムの作成を補助するコンピュータによって自動的又は半自動的に行われてもよい。
【0250】
(プログラム配信ステップ)
続いて、プログラム作成ステップにて作成した上記情報処理プログラムを、互いに通信可能に構成された複数の情報処理装置に対して配信する。ここで、情報処理プログラムの配信は、一例として、ネットワーク1に含まれるプログラム配信サーバによって行うことができるがこれは本ステップを限定するものではない。
【0251】
(プログラム実行ステップ)
続いて、プログラム配信ステップにて配信された情報処理プログラムを、上記複数の情報処理装置の各々が実行することによって、当該複数の情報処理装置を含み、各実施形態において説明したネットワーク1として機能する情報処理システムを製造する。本ステップには、上記複数の情報処理装置の各々が、上記情報処理プログラムを当該情報処理装置上にインストールするステップが含まれ得る。
【0252】
また、一例として、上記情報処理プログラムを、上記複数の情報処理装置の各々が自動的にインストールできるように作成しておくことにより、本ステップを、一例として上記プログラム配信サーバによって実行することもできる。
【0253】
〔付記事項〕
本明細書に記載の発明の一部は以下の付記のようにも記載されうるが、以下には限られない。
【0254】
(付記1)
ネットワークに含まれる提供元から、第1のデータを取得する取得部と、
前記第1のデータ、及び前記第1のデータに基づいて生成されたデータ、の少なくとも何れかを含む第2のデータを、前記ネットワークに含まれる提供先に提供する提供部と、
前記ネットワークにおける所定のコンセンサスアルゴリズムを用いて更新されるブロックチェーンに追加するトランザクションデータであって、
前記第1のデータ及び前記第2のデータの少なくとも何れかに関する関連情報、
前記提供元を識別するための第1の識別情報、及び
前記提供先を識別するための第2の識別情報
を含むトランザクションデータを生成する生成部と
を備える情報処理装置。
【0255】
(付記2)
前記関連情報には、
前記第1のデータの名前、データ量、及び前記第1のデータを取得した際の通信帯域、
の少なくとも何れかが含まれている
付記1に記載の情報処理装置。
【0256】
(付記3)
前記関連情報には、
前記第2のデータの名前、データ量、及び前記第2のデータを提供した際の通信帯域、
の少なくとも何れかが含まれている
付記1又は2に記載の情報処理装置。
【0257】
(付記4)
前記関連情報には、
前記第1のデータから前記第2のデータを生成するための処理の内容、及び処理量の少なくとも何れかが含まれている
付記1から3の何れか1項に記載の情報処理装置。
【0258】
(付記5)
前記第1の識別情報には、
前記提供元に付された、IPアドレス、物理アドレス、及び、IPアドレスに変換可能な識別子の少なくとも何れかが含まれており、
前記第2の識別情報には、
前記提供先に付された、IPアドレス、物理アドレス、及び、IPアドレスに変換可能な識別子の少なくとも何れかが含まれている
付記1から4の少なくとも何れかに記載の情報処理装置。
【0259】
(付記6)
前記生成部が生成したトランザクションデータを、前記ブロックチェーンに登録する登録部を備えている
付記1から5の何れか1項に記載の情報処理装置。
【0260】
(付記7)
前記登録部が登録した前記トランザクションデータに基づいて決定されるインセンティブを受領する受領部を備えている
付記7に記載の情報処理装置。
【0261】
本発明は上述した各実施形態に限定されるものではなく、請求項に示した範囲で種々の変更が可能であり、異なる実施形態にそれぞれ開示された技術的手段を適宜組み合わせて得られる実施形態についても本発明の技術的範囲に含まれる。
【符号の説明】
【0262】
1 ネットワーク
10、20、30、50、70 情報処理装置
12、22、32、52、72 制御部
120、520、720 データ転送管理部
124、524、724 データ取得部(取得部)
126、526、726 データ提供部(提供部)
130、230、330、530、730 ブロックチェーン管理部
132、532、732 トランザクションデータ生成部(生成部)
134、334 ブロック登録部(登録部)
220 ルート情報管理部
224 ルート情報生成部(生成部)
226 表示情報生成部
232、332 トランザクションデータ取得部(取得部)
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19