(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-04-10
(45)【発行日】2023-04-18
(54)【発明の名称】データ処理方法及びデータ処理プログラム
(51)【国際特許分類】
G06F 21/62 20130101AFI20230411BHJP
【FI】
G06F21/62
(21)【出願番号】P 2019174498
(22)【出願日】2019-09-25
【審査請求日】2022-06-09
(73)【特許権者】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】100092978
【氏名又は名称】真田 有
(74)【代理人】
【識別番号】100189201
【氏名又は名称】横田 功
(72)【発明者】
【氏名】西口 直樹
(72)【発明者】
【氏名】岡林 美和
(72)【発明者】
【氏名】司波 章
(72)【発明者】
【氏名】松本 達郎
【審査官】吉田 歩
(56)【参考文献】
【文献】特開2019-133579(JP,A)
【文献】特開2007-189668(JP,A)
【文献】山岡 久俊,組み立て型のサービス開発を実現するIoT向けイベント処理基盤の提案,第10回データ工学と情報マネジメントに関するフォーラム (第16回日本データベース学会年次大会) [Online] ,日本,電子情報通信学会データ工学研究専門委員会 日本データベース学会 情報処理学会データベースシステム研究会,2018年04月17日
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/62
(57)【特許請求の範囲】
【請求項1】
データが更新されたことに応じて実行される処理を規定した第1のプログラムの第1のオブジェクトへの設定依頼を受け付け、
事前に規定されている第1のアクセス許可情報に基づいて、前記データに対する前記第1のプログラムのアクセス許可の有無を判定し、
前記第1のプログラムのアクセス許可が有ると判定された場合に、
前記第1のプログラムを含む第2のオブジェクトを生成し、
前記第1のオブジェクトにおいて、前記データを前記第2のオブジェクトへ複写する第2のプログラムを生成し、
前記第2のオブジェクトに対する、前記第2のプログラムの第2のアクセス許可情報を設定する、
データ処理方法。
【請求項2】
前記第2のプログラムは、
前記データが更新されたことに応じて、前記第2のアクセス許可情報を参照して、前記第2のオブジェクトに対する前記第2のプログラムのアクセス許可の有無を判定し、
前記第2のプログラムのアクセス許可が有ると判定された場合に、前記データを前記第2のオブジェクトへ複写し、
前記第1のプログラムは、
前記第2のオブジェクトにおいて、前記データが複写されたことに応じて、前記規定されている処理を実行する、
請求項1に記載のデータ処理方法。
【請求項3】
前記第2のプログラムは、更新された前記データに限って、前記第2のオブジェクトへの複写を行なう、
請求項2に記載のデータ処理方法。
【請求項4】
前記第2のプログラムは、複数の前記データのうちの少なくとも一部が所定の条件を満たす場合に限って、前記第2のオブジェクトへの複写を行なう、
請求項2又は3に記載のデータ処理方法。
【請求項5】
コンピュータに、
データが更新されたことに応じて実行される処理を規定した第1のプログラムの第1のオブジェクトへの設定依頼を受け付け、
事前に規定されている第1のアクセス許可情報に基づいて、前記データに対する前記第1のプログラムのアクセス許可の有無を判定し、
前記アクセス許可が有ると判定された場合に、
前記第1のプログラムを含む第2のオブジェクトを生成し、
前記第1のオブジェクトにおいて、前記データを前記第2のオブジェクトへ複写する第2のプログラムを生成し、
前記第2のオブジェクトに対する、前記第2のプログラムの第2のアクセス許可情報を設定する、
処理を実行させる、データ処理プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、データ処理方法及びデータ処理プログラムに関する。
【背景技術】
【0002】
ストリーム処理では、処理に必要なデータを使用して処理を組み立てていく技術が登場している。これにより、ストリーム処理においてデータの共用が可能となり、データ毎にアクセス可能か否かの判定を行なうアクセス制御が実施される。
【先行技術文献】
【特許文献】
【0003】
【文献】特開2015-158943号公報
【文献】国際公開第2015/136843号
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、データ毎にアクセス可能か否かを判定する手法では、時々刻々と処理を行なうストリーム処理においては、処理負荷の増大等、性能面での問題が発生する。
【0005】
ストリーム処理では、更新されるデータと参照されるデータとを使って処理結果が出力されるため、例えば、1つのデータが更新された際に、10個のデータを参照する場合には、アクセス可能かのチェックが11回実施される。
【0006】
また、ストリーム処理では、頻繁にデータが更新されるため、その都度、アクセス可能かのチェックが実施される。
【0007】
1つの側面では、ストリーム処理において、負荷が増大しないアクセス制御を設定する。
【課題を解決するための手段】
【0008】
1つの側面では、前記データが更新されたことに応じて実行される処理を規定した第1のプログラムの設定依頼を受け付け、事前に規定されているプラグイン情報に基づいて、前記データに対する前記第1のプログラムのアクセス許可の有無を判定し、前記第1のプログラムのアクセス許可が有ると判定された場合に、前記第1のプログラムを含む第2のオブジェクトを生成し、第1のオブジェクトにおいて、前記データを前記第2のオブジェクトへ複写する第2のプログラムを生成し、前記第2のオブジェクトに対する、前記第2のプログラムのアクセス許可情報を設定する。
【発明の効果】
【0009】
1つの側面では、ストリーム処理において、負荷が増大しないアクセス制御を設定できる。
【図面の簡単な説明】
【0010】
【
図1】関連例としてのストリーム処理における参照制御を説明する図である。
【
図2】関連例としてのストリーム処理における更新制御を説明する図である。
【
図3】関連例としてのストリーム処理におけるアクセス可否の判定を説明する図である。
【
図4】関連例としてのストリーム処理におけるプラグインの登録処理を説明する図である。
【
図5】関連例としてのストリーム処理におけるプラグインの動作の第1の例を説明する図である。
【
図6】関連例としてのストリーム処理におけるプラグインの登録処理とデータアクセス許可情報の登録とを説明する図である。
【
図7】関連例としてのストリーム処理におけるプラグインの動作の第2の例を説明する図である。
【
図8】関連例及び実施形態の一例におけるストリーム処理の概要を説明する図である。
【
図9】実施形態の一例における情報処理装置のハードウェア構成例を模式的に示すブロック図である。
【
図10】
図9に示した情報処理装置の機能構成例を模式的に示すブロック図である。
【
図11】
図9に示した情報処理装置におけるプラグインの登録と紐づけ情報の登録とを説明する図である。
【
図12】
図9に示した情報処理装置におけるプラグインの動作を説明する図である。
【
図13】
図9に示した情報処理装置におけるユーザ登録及びログインの画面表示例を説明する図である。
【
図14】
図9に示した情報処理装置におけるオブジェクト登録の画面表示例を説明する図である。
【
図15】
図9に示した情報処理装置におけるプラグイン追加の画面表示例を説明する図である。
【
図16】
図9に示した情報処理装置における処理空間の作成処理を説明するフローチャートである。
【
図17】関連例におけるアクセス判定による負荷を説明する図である。
【
図18】
図9に示した情報処理装置におけるアクセス判定による負荷を説明する図である。
【
図19】変形例としての情報処理装置における機能構成例を模式的に示すブロック図である。
【
図20】
図19に示した情報処理装置におけるデータコピーを行なう処理の入れ替え動作を説明する図である。
【発明を実施するための形態】
【0011】
以下、図面を参照して一実施の形態を説明する。ただし、以下に示す実施形態はあくまでも例示に過ぎず、実施形態で明示しない種々の変形例や技術の適用を排除する意図はない。すなわち、本実施形態を、その趣旨を逸脱しない範囲で種々変形して実施することができる。
【0012】
また、各図は、図中に示す構成要素のみを備えるという趣旨ではなく、他の機能等を含むことができる。
【0013】
以下、図中において、同一の各符号は同様の部分を示しているので、その説明は省略する。
【0014】
〔A〕関連例
図1は、関連例としてのストリーム処理における参照制御を説明する図である。
【0015】
ストリーム処理を構成する複数のオブジェクト6のそれぞれは、1以上のステート61(「データ」と称してもよい。)及び1以上の処理部62を含む。
【0016】
図1に示す例では、オブジェクト#1は、処理部#11及び#12を含む。処理部#11及び#12は、それぞれ2つのステート61の参照を許可されている。また、オブジェクト#2は処理部#21を含み、オブジェクト#3は処理部#31を含む。
【0017】
処理部#11は、参照許可されている2つのステート61を使用して、オブジェクト#2に対する書き込みを行なう。また、処理部#12は、許可されている2つのステート61を使用して、オブジェクト#3に対する書き込みを行なう。
【0018】
ここで、オブジェクト6内におけるステート61の共用が行なわれると、符号A1に示すように、処理部#11は、参照を許可されていないステート61に対してアクセスするおそれがある。
【0019】
そこで、符号A2に示すように、参照を許可されていないステート61に対するアクセスができないように、アクセス制限が実施される。
【0020】
図2は、関連例としてのストリーム処理における更新制御を説明する図である。
【0021】
図2に示す例では、オブジェクト#1は処理部#11を含み、オブジェクト#3は処理部#31を含む。処理部#11及び#31は、それぞれ2つのステート61の参照を許可されている。また、オブジェクト#2は処理部#21を含み、オブジェクト#4は処理部#41を含む。
【0022】
処理部#11は、参照許可されている2つのステート61を使用して、オブジェクト#2に対する書き込みを行なう。また、処理部#31は、参照許可されている2つのステート61を使用して、オブジェクト#4に対する書き込みを行なう。
【0023】
ここで、符号B1に示すように、処理部#11は、書き込みを許可されていないオブジェクト#4に対して書き込みを行なうおそれがある。
【0024】
そこで、符号B2に示すように、書き込みが許可されていないオブジェクト#4に対するアクセスができないように、アクセス制限が実施される。
【0025】
図3は、関連例としてのストリーム処理におけるアクセス可否の判定を説明する図である。
【0026】
図3に示す例では、オブジェクト#1は、ステート#11~#13及び処理部#11,#12を含む。処理部#11はステート#11,#12の参照を許可されており、処理部#12はステート#12、#13の参照を許可されている。また、オブジェクト#2はステート#21を含み、オブジェクト#3はステート#31を含み、オブジェクト#4はステート#41を含む。
【0027】
処理部#11はオブジェクト#2,#3に対する書き込みを許可されており、処理部#12はオブジェクト#4に対する書き込みを許可されている。
【0028】
符号C1に示すように、各ステート61に対するパーミッション(「参照許可」と称してもよい。)が設定される。
【0029】
符号C2に示すように、処理部62は、ステート61の使用時にアクセスが許可されているかをチェックする(符号C2参照)。図示する例では、処理部#11は、ステート#11に対するアクセスが許可されている。
【0030】
一方、符号C3に示すように、処理部62は、アクセスが許可されていないステート61に対してアクセスしようとすると、アクセスが拒否される。図示する例では、処理部#11は、ステート#13に対するアクセスを許可されていないため、ステート#13に対するアクセスを実施できない。
【0031】
符号C4に示すように、処理部62は、書き込み時に書き込み先のオブジェクト6のステート61に対する書き込みが許可されているかをチェックする。図示する例では、処理部#11は、オブジェクト#2のステート#21に対する書き込みが許可されている。
【0032】
一方、符号C5に示すように、処理部62は、書き込みが許可されていないオブジェクト6のステート61に対して書き込みを行なおうとすると、書き込みが拒否される。図示する例では、処理部#11は、オブジェクト#4のステート#41に対する書き込みを許可されていないため、ステート#41に対する書き込みを実施できない。
【0033】
図4は、関連例としてのストリーム処理におけるプラグイン602の登録処理を説明する図である。
【0034】
図4に示す例において、プラグイン602(「プログラムA」と称してもよい。)は、オブジェクト#1において実行され、足し算の結果をオブジェクト#2に出力する。
【0035】
ステートリスト601は、オブジェクト#1におけるステート61のうちx又はyが更新された際に、プログラムAが実行されることを示す。また、ステートリスト601は、プログラムAが参照可能なステート61がx及びyであることを示す。
【0036】
プログラムA及びステートリスト601は、オブジェクト#1に登録される(符号D1参照)。これにより、オブジェクト#1には、オブジェクト#2に対して、ステート61としてxとyとの和であるsを出力する処理部62(「処理部A」と称してもよい。)が定義される。
【0037】
また、プログラムA及びステートリスト601のオブジェクト#1への登録により、プログラムAがx及びyのステート61にアクセス可能であることを示す実行条件テーブル63が生成される。
【0038】
図5は、関連例としてのストリーム処理におけるプラグイン602の動作の第1の例を説明する図である。
【0039】
符号E1に示すように、外部からオブジェクト6に対するデータ600の投入により、オブジェクト6のステート61が更新される。
【0040】
図示する例では、符号E2に示すように、オブジェクト#1のx,y,zのステート61に対して“1”,“2”,“text”がそれぞれ投入され、プログラムAによりオブジェクト#2のsのステート61にxとyとの和として“3”が出力される。
【0041】
ここで、実行条件テーブル63には、プログラムAに対して、x及びyのステート61が対応付けられている。すなわち、x又はyのステート61が更新された際に、プログラムAが実行される。
【0042】
プログラムAは、プラグイン実行部60が実行条件テーブル63を参照することにより実行されてよい。プラグイン実行部60は、プログラムAからのステート61の参照や出力を中継して、オブジェクト6におけるステート61の読み書きを行なう。
【0043】
図6は、関連例としてのストリーム処理における処理部62の登録処理とアクセス許可情報64の登録とを説明する図である。
【0044】
符号F1に示すように、プラグイン602としてのプログラムA及び(x,y)のステートリスト601がオブジェクト#1に登録される。プログラムAは、足し算の結果をオブジェクト#2のステート61であるsに出力する。ステートリスト601は、x又はyが更新された際にプログラムAを実行することを表わす。これにより、プログラムAがx及びyのステート61にアクセス可能であることを示す実行条件テーブル63が生成される。
【0045】
また、符号F2に示すように、オブジェクト#1には、プログラムAがx及びyのステート61にアクセスしてよいことを表わすアクセス許可情報642が登録される。これにより、x及びyはプログラムAによるアクセスが許可されているが、zはプログラムAによるアクセスが許可されていないことを表わすアクセス許可情報64が生成される。
【0046】
更に、符号F3に示すように、オブジェクト#2には、プログラムAがsのステート61にアクセスしてよいことを表わすアクセス許可情報642が登録される。これにより、sはプログラムAによるアクセスが許可されていることを表わすアクセス許可情報64が生成される。
【0047】
図7は、関連例としてのストリーム処理における処理部62の動作の第2の例を説明する図である。
【0048】
符号G1に示すように、オブジェクト#1のステート61であるx,y,zが更新される。
【0049】
これにより、符号G2に示すように、アクセス許可情報64の参照により、プログラムAによるオブジェクト#1のステートx,yのアクセス許可の有無がチェックされ、プログラムAによる計算が実行される。オブジェクト#1に対応するアクセス許可情報64には、x及びyはプログラムAによるアクセスが許可されているが、zはプログラムAによるアクセスが許可されていないことが登録されている。
【0050】
そして、符号G3に示すように、オブジェクト#2のステートsへのアクセス許可の有無がチェックされ、プログラムAの実行結果がオブジェクト#2のステート61であるsに出力される。オブジェクト#2に対応するアクセス許可情報64には、sはプログラムAによるアクセスが許可されていることが登録されている。
【0051】
ここで、プログラムAは、プラグイン実行部60によって実行される。また、プラグイン実行部60は、プログラムAからの実行条件テーブル63の参照や計算結果の出力を行なう。更に、プラグイン実行部60は、アクセス許可情報64に基づき、オブジェクト6のステート61の読み書きを行なう。
【0052】
〔B〕実施形態の一例
〔B-1〕システム構成例
図8は、関連例及び実施形態の一例におけるストリーム処理の概要を説明する図である。
【0053】
符号H1では、関連例における3つのオブジェクト6(「処理空間#1~#3」と称してもよい。)が示されている。
【0054】
処理空間#1には、3つのステート61及び1つの処理部62(処理部#1)が含まれる。処理空間#2及び#3には、それぞれ1つのステート61が含まれる。処理空間#1の処理部62は、処理空間#1の2つのステート61と処理空間#2の1つのステート61と処理空間#3の1つのステート61へのアクセスが許可されている。
【0055】
一方、符号H2では、実施形態の一例における5つのオブジェクト2(「処理空間#1~#5」と称してもよい。)が示されている。処理空間や処理部の番号は、H1と合わせてあり、実施形態での実現例となっている。
【0056】
実施形態の一例におけるストリーム処理では、処理部22とオブジェクト2(別言すれば、処理空間)とが対応付けられることにより、対応付けられている処理部22の処理結果に限ってオブジェクト2が受け付けるように、送信先を制限する制御が行なわれる。
【0057】
また、オブジェクト2への入力を行なう処理部22は、オブジェクト2で利用するデータを更新の際に送信することにより、利用データが制限される。
【0058】
符号H2に示す例において、処理空間#1には、3つのステート21及び2つの処理部22(「処理部#11,#12」と称してもよい。)が含まれる。また、処理空間#5には、2つのステート21及び1つの処理部22(「処理部#1」と称してもよい。)が含まれる。更に、処理空間#2~#4には、それぞれ1つのステート21が含まれる。
【0059】
符号H21に示すように、処理空間#1の処理部#11は、処理空間#1の2つのステート21へのアクセスが許可されていると共に、処理空間#5の2つのステート21へのアクセスが許可されている。
【0060】
一方、符号H22に示すように、処理空間#1の処理部#12は、処理空間#1の2つのステート21へのアクセスが許可されているが、処理空間#5へのアクセスは許可されていない。
【0061】
符号H23に示すように、処理空間#5の処理部#1は、処理空間#5の2つのステート21へのアクセスが可能であると共に、処理空間#2及び#3の各ステート21へのアクセスが許可されている。
【0062】
一方、符号H24に示すように、処理空間#5の処理部#1は、処理空間#4のステート21へのアクセスが許可されていない。
【0063】
図9は、実施形態の一例における情報処理装置1のハードウェア構成例を模式的に示すブロック図である。
【0064】
情報処理装置1は、CPU11,メモリ12,表示制御部13,記憶装置14,入力Interface(I/F)15,読み書き処理部16及び通信I/F17を備える。
【0065】
メモリ12は、記憶部の一例であり、例示的に、Read Only Memory(ROM)及びRandom Access Memory(RAM)を含む記憶装置である。メモリ12のROMには、Basic Input/Output System(BIOS)等のプログラムが書き込まれてよい。メモリ12のソフトウェアプログラムは、CPU11に適宜に読み込まれて実行されてよい。また、メモリ12のRAMは、一次記録メモリあるいはワーキングメモリとして利用されてよい。
【0066】
表示制御部13は、表示装置130と接続され、表示装置130を制御する。表示装置130は、液晶ディスプレイやOrganic Light-Emitting Diode(OLED)ディスプレイ,Cathode Ray Tube(CRT),電子ペーパーディスプレイ等であり、オペレータ等に対する各種情報を表示する。表示装置130は、入力装置と組み合わされたものでもよく、例えば、タッチパネルでもよい。
【0067】
記憶装置14は、例示的に、データを読み書きして記憶する装置であり、例えば、Hard Disk Drive(HDD)やSolid State Drive(SSD),Storage Class Memory(SCM)が用いられてよい。
【0068】
入力I/F15は、マウス151やキーボード152等の入力装置と接続され、マウス151やキーボード152等の入力装置を制御してよい。マウス151やキーボード152は、入力装置の一例であり、これらの入力装置を介して、オペレータが各種の入力操作を行なう。
【0069】
読み書き処理部16は、記録媒体160が装着可能に構成される。読み書き処理部16は、記録媒体160が装着された状態において、記録媒体160に記録されている情報を読み取り可能に構成される。本例では、記録媒体160は、可搬性を有する。例えば、記録媒体160は、フレキシブルディスク、光ディスク、磁気ディスク、光磁気ディスク、又は、半導体メモリ等である。
【0070】
通信I/F17は、外部装置との通信を可能にするためのインタフェースである。
【0071】
CPU11は、種々の制御や演算を行なう処理装置であり、メモリ12に格納されたOperating System(OS)やプログラムを実行することにより、種々の機能を実現する。
【0072】
情報処理装置1全体の動作を制御するための装置は、CPU11に限定されず、例えば、MPUやDSP,ASIC,PLD,FPGAのいずれか1つであってもよい。また、情報処理装置1全体の動作を制御するための装置は、CPU,MPU,DSP,ASIC,PLD及びFPGAのうちの2種類以上の組み合わせであってもよい。なお、MPUはMicro Processing Unitの略称であり、DSPはDigital Signal Processorの略称であり、ASICはApplication Specific Integrated Circuitの略称である。また、PLDはProgrammable Logic Deviceの略称であり、FPGAはField Programmable Gate Arrayの略称である。
【0073】
図10は、
図9に示した情報処理装置1の機能構成例を模式的に示すブロック図である。
【0074】
処理受付部111は、ユーザからの処理を受け付け、処理に利用する処理部22を処理保存部141に保存する。処理受付部111は、例えば
図15のプラグイン情報27を参照して、処理部22を構成する情報であるステートリスト201のアクセス許可の有無を判定し、アクセスが許可されていなければ、受付処理を終了する。アクセスが許可されていれば、処理空間制御部112に処理部22の登録を依頼する。
【0075】
処理空間制御部112は、処理保存部141に保存されているプラグイン202及びステートリスト201(共に
図11を用いて後述)を読み出して、オブジェクト2を作成してプラグイン202を設定し、設定先オブジェクト2にステートリスト201のステートをコピーするプラグイン202をコピー処理保存部142から読み出して設定する。コピー処理保存部142のプラグイン202は、あらかじめ用意しておいてもよいし、処理空間制御部112において、動的に作成してもよい。処理空間制御部112の詳細については、
図16を用いて後述する。
【0076】
処理実行部113は、処理空間制御部112によって定義されたオブジェクト2を使用して、ストリーム処理を実行する。詳細は、
図12を用いて後述する。
【0077】
図11は、
図9に示した情報処理装置1における処理部22の登録と紐づけ情報23の登録とを説明する図である。
【0078】
初期状態として、
図8の符号H1に示したオブジェクト#1,#2が定義されているものとする。
【0079】
符号I1に示すように、プログラムAのプラグイン202と、(x,y)のステートリスト201と、紐づけ情報23とが、オブジェクト#1に登録される。この紐づけ情報23は、プログラムAのアクセス許可情報24に設定される。処理空間制御部112により、オブジェクト#mが生成されてプログラムAが設定される。また、処理空間制御部112により、オブジェクト#1にプログラムMが設定され、プログラムMのアクセス許可情報24が設定され、オブジェクト#mとプログラムMの紐づけを行い、プログラムMのアクセス許可情報24の紐づけと、オブジェクト#mの紐づけ23にmが設定される。また、符号I2に示すように、紐づけ情報23がオブジェクト#2に登録される。オブジェクト#2の紐づけ情報23としては、aが登録される。符号I1にて、プログラムAのアクセス許可情報24の紐づけにaが設定されているため、プログラムAは、オブジェクト#2へのアクセス権を持つことになる。
【0080】
すなわち、処理受付部111は、ステートリスト201と、ステートリスト201が更新されたことに応じて実行される処理を規定した第1のプログラムとの設定依頼を受け付ける。また、処理受付部111は、事前に規定されているプラグイン情報27(
図15にて後述)に基づいて、ステートリスト201に対する第1のプログラムのアクセス許可の有無を判定する。処理空間制御部112は、第1のプログラムのアクセス許可が有ると判定された場合に、第1のプログラムを含む第2のオブジェクト2を生成し、第1のオブジェクト2において、データを第2のオブジェクト2へ複写する第2のプログラムを生成し、第2のオブジェクト2に対する、第2のプログラムの第2のアクセス許可情報24を設定する。
【0081】
図12は、
図9に示した情報処理装置1におけるプラグインの動作を説明する図である。
【0082】
符号J1に示すように、外部からのデータ投入により、オブジェクト#1のステート21が更新される。
【0083】
符号J2に示すように、更新されたステート21に応じて、プログラムMが実行され、オブジェクト#mのx,yのステート21が更新される。ステート21の更新は、紐づけ情報23とアクセス許可情報24の紐づけがチェックされることにより、紐づけが一致する場合に限って実行される。プログラムMのアクセス許可情報24の紐づけがmであり、オブジェクト#mの紐づけ情報23がmであり一致するため、オブジェクト#mのx、yのステート21は更新される。
【0084】
符号J3に示すように、更新されたステート21に応じて、プログラムAが実行され、オブジェクト#2のsのステート21が更新される。ステート21の更新は、紐づけ情報23とアクセス許可情報24の紐づけがチェックされることにより、紐づけが一致する場合に限って実行される。プログラムAのアクセス許可情報24の紐づけがaであり、オブジェクト#2の紐づけ情報23がaであり一致するため、オブジェクト#2のsのステート21は更新される。
【0085】
すなわち、処理実行部113は、第2のプログラムにおいて、ステートリスト201が更新されたことに応じて、アクセス許可情報24を参照して、第2のオブジェクト2に対する第2のプログラムのアクセス許可の有無を判定する。また、処理実行部113は、第2のプログラムにおいて、第2のプログラムのアクセス許可が有ると判定された場合に、ステートリスト201を第2のオブジェクト2へ複写する。更に、処理実行部113は、第2のオブジェクト2の第1のプログラムにおいて、ステートリスト201が複写されたことに応じて、規定されている処理を実行する。
【0086】
処理実行部113は、アクセス許可情報24のステートリストに従い、ステート21の更新に伴いプログラムAを実行する。プログラムAからのステート21の参照や出力は、処理実行部113を経由して行い、オブジェクト2のステート21の読み書きは、プログラムAが直接行うのではなく、処理実行部113が代行する。また、処理実行部113は、別のオブジェクト2への書き込みの際に限ってアクセス許可情報24の紐づけを参照してアクセス可否のチェックを行なう。
【0087】
別言すれば、処理実行部113は、第2のプログラムにおいて、ステートリスト201のうち、更新されたステート21に限って、第2のオブジェクト2への複写を行なうことで、ステート21更新の数を削減することができる。
【0088】
図13は、
図9に示した情報処理装置1におけるユーザ登録及びログインの画面表示例を説明する図である。ここでいうユーザとは、アクセス権付与の対象となるユーザのことである。このユーザ毎にアクセス権が付与され、ユーザは、ログインすることで、設定されたアクセス権に従い、オブジェクト作成やプラグインを登録することが可能である。
【0089】
ユーザ登録画面31は、新規ユーザのID及びパスワードを登録するための画面である。ユーザ登録画面31を用いて登録されたID及びパスワードは、ユーザ情報25として管理される。
【0090】
ログイン画面32は、ユーザ情報25に登録済みのユーザのログインを受け付ける画面である。ログイン画面32にID及びパスワードが入力されると、ユーザ情報25が参照され、入力されたID及びパスワードとユーザ情報25に登録されているID及びパスワードが一致する場合に、ログインが許可される。
【0091】
図14は、
図9に示した情報処理装置1におけるオブジェクト登録の画面表示例を説明する図である。
【0092】
オブジェクト作成画面33は、オブジェクトIDを入力することにより、オブジェクト操作画面34に、新たなオブジェクト2を作成して表示させるための画面である。
【0093】
オブジェクト操作画面34は、オブジェクト2を表示し、オブジェクト作成画面33、アクセス許可画面35、ステート作成画面36への遷移を制御する。
【0094】
オブジェクト操作画面34においてオブジェクト2のステート21が選択されることにより、アクセス許可画面35が表示される。アクセス許可画面35は、ステート21へのアクセスを許可するユーザを登録するための画面である。
【0095】
オブジェクト操作画面34においてオブジェクト2が選択されることにより、ステート作成画面36が表示される。ステート作成画面36は、オブジェクト2に追加するステート21を入力するための画面である。
【0096】
オブジェクト作成画面33,アクセス許可画面35及びステート作成画面36に対する情報の入力により、オブジェクト情報26が生成される。オブジェクト情報26には、オブジェクトIDとオーナーとステートと許可ユーザとが対応付けられている。
【0097】
オブジェクトIDは、オブジェクト2の識別子である。オーナーは、オブジェクト2を作成したユーザのIDである。ステートは、オブジェクト2に登録されているステート21である。許可ユーザは、ステート21へのアクセスが許可されているユーザのIDである。
【0098】
図15は、
図9に示した情報処理装置1におけるプラグイン追加の画面表示例を説明する図である。
【0099】
図15においては、
図14においてオーナーとしてオブジェクト2を作成したユーザU1以外のユーザU2による操作を示す。
【0100】
オブジェクト作成画面33において、オブジェクトIDが入力されることにより、オブジェクト操作画面34に新たなオブジェクト2が作成され表示される。図示する例では、オブジェクト#O2が新たに表示される。
【0101】
ここで、オブジェクト操作画面34では、各ユーザがアクセスを許可されているステート21に限って表示される。オブジェクト情報26のオブジェクト#O1において、ユーザU2に許可されているステートは、xとyなので、オブジェクト操作画面34のオブジェクト#O1には、xとyのステート21のみが表示され、zは表示されない。
【0102】
オブジェクト操作画面34において、オブジェクト2が選択されることにより、プラグイン登録画面37が表示される。プラグイン登録画面37は、オブジェクト2において登録するプラグイン202を入力するための画面である。プラグイン登録画面37では、利用するステート21と、プラグインファイルと、紐づけと、紐づけ先のオブジェクト2とを登録できる。
【0103】
オブジェクト作成画面33によるオブジェクト#O2の追加により、図示する例では、オブジェクト情報26において、オブジェクト#O2に関する情報が追加される。ステートsの作成については説明を省略する。
【0104】
また、プラグイン登録画面37による処理部22の登録により、プラグイン情報27が生成される。プラグイン情報27では、プラグインIDとオーナーと紐づけとオブジェクトIDとステートとが対応付けられている。
【0105】
プラグインIDは、処理部22の識別子である。オーナーは、処理部22を登録したユーザのIDである。紐づけは、他のオブジェクト2との紐づけを示す。オブジェクトIDは、処理部22が登録されているオブジェクト2の識別子である。ステートは、処理部22が利用するステート21である。プラグイン情報27は、オブジェクト情報26の許可ユーザに従い作成されるため、プラグイン情報27のステートは、許可されたステートのみが登録される。そのため、プラグイン情報27は、プラグインのアクセス許可情報としても機能する。
【0106】
〔B-2〕動作例
図9に示した情報処理装置1における処理空間の作成処理を、
図16に示すフローチャート(ステップS1~S6)に従って説明する。
図10の処理空間制御部112の詳細フローチャートである。
【0107】
処理空間制御部112は、処理受付部111より、ユーザによって登録された処理登録依頼を受け付ける(ステップS1)。
【0108】
処理空間制御部112は、ユーザからの登録に基づき、処理空間としてオブジェクト2を作成する(ステップS2)。
【0109】
処理空間制御部112は、作成された処理空間へ、対象ステートのコピーを行う処理の登録を行なう(ステップS3)。コピー処理は、コピー処理保存部142より取得する。
【0110】
処理空間制御部112は、作成された処理空間と、対象ステートのコピーを行う処理の紐づけを行なう(ステップS4)。
【0111】
処理空間制御部112は、登録依頼された処理を作成した処理空間に登録する(ステップS5)。登録依頼された処理は、処理保存部141から取得する。
【0112】
なお、処理空間制御部112は、処理実行部113に対して、オブジェクト2の作成や、処理の登録を行なう。また、処理実行部113は、ステート21の更新を契機に、アクセス許可情報24を参照して、プラグインの実行を行なう。
【0113】
〔B-3〕効果
図17は、関連例におけるアクセス判定による負荷を説明する図である。
【0114】
図17では、物体の位置の入力に基づいた速度の算出を行なうストリーム処理が例示されている。緯度経度が入力であり、前回の緯度経度との差と、前回時刻と現在時刻との差を用いて速度を計算し、閾値を超えているときに、速度として出力する例である。次の速度計算のために、緯度経度および現在時刻を前回緯度、前回経度、前回時刻として保存する。
【0115】
図示する例において、オブジェクト#1は6つのステート61を含み、オブジェクト#2は1つのステート61を含む。別言すれば、処理部62からの各ステート61に対するアクセス可否を示すアクセス制御情報の数は、オブジェクト#1で6データであり、オブジェクト#2で1データであるので、合計7データである。
【0116】
オブジェクト#1の処理部62は、オブジェクト#1の各ステート61に対して、読み込みに6回、書き込みに3回で、計9回のアクセス判定を行ない、オブジェクト#2のステート61に対して書き込み1回のアクセス判定を行なう。これにより、合計10回のアクセス判定が行なわれる。
【0117】
図18は、
図9に示した情報処理装置1におけるアクセス判定による負荷を説明する図である。
【0118】
図18においても、物体の位置の入力に基づいた速度の算出を行なうストリーム処理が例示されている。
【0119】
図示する例において、オブジェクト#1の処理部22はオブジェクト#3に対する1回のアクセス判定を行ない、オブジェクト#3の処理部22はオブジェクト#2に対する1回のアクセス判定が行なわれる。これにより、合計2回のアクセス判定が行なわれる。
【0120】
また、オブジェクト#3におけるアクセス制御情報は1データであり、オブジェクト#2におけるアクセス制御情報は1データであるので、アクセス制御情報の数は合計2データである。
【0121】
このように、実施形態の一例におけるストリーム処理では、関連例におけるストリーム処理と比較して、アクセス判定の回数及びアクセス制御情報の数を低減できる。
【0122】
処理受付部111は、ステートリスト201と、ステートリスト201のステート21が更新されたことに応じて実行される処理を規定した第1のプログラムとの設定依頼を受け付ける。また、処理受付部111は、事前に規定されているプラグイン情報27に基づいて、ステートリスト201に対する第1のプログラムのアクセス許可の有無を判定する。処理空間制御部112は、第1のプログラムのアクセス許可が有ると判定された場合に、第1のプログラムを含む第2のオブジェクト2を生成し、第1のオブジェクト2において、データを第2のオブジェクト2へ複写する第2のプログラムを生成し、第2のオブジェクト2に対する、第2のプログラムのアクセス許可情報24を設定する。
【0123】
これにより、ストリーム処理において、負荷が増大しないアクセス制御を設定できる。
【0124】
処理実行部113は、第2のプログラムにおいて、ステートリスト201のステート21が更新されたことに応じて、アクセス許可情報24を参照して、第2のオブジェクト2に対する第2のプログラムのアクセス許可の有無を判定する。また、処理実行部113は、第2のプログラムにおいて、第2のプログラムのアクセス許可が有ると判定された場合に、ステートリスト201のステート21を第2のオブジェクト2へ複写する。更に、処理実行部113は、第2のオブジェクト2の第1のプログラムにおいて、ステートリスト201のステート21が複写されたことに応じて、規定されている処理を実行する。
【0125】
これにより、ストリーム処理において、負荷を増大させることなく、アクセス制御を実施できる。
【0126】
処理実行部113は、第2のプログラムにおいて、ステートリスト201のうちの更新されたステート21に限って、第2のオブジェクト2への複写を行なう。
【0127】
これにより、ステートリスト201のステート21に対する不要なアクセスを抑制できる。
【0128】
〔C〕変形例
変形例においては、オブジェクト2へのデータコピーを行なう処理が入れ替えられることにより、データの更新を止めたり、条件に応じた更新を行なったりする。
【0129】
図19は、変形例としての情報処理装置1における機能構成例を模式的に示すブロック図である。
【0130】
図19に示す機能構成では、
図10に示した実施形態の一例における機能構成例と比較して、利用可能データ対比表143が備えられる。
【0131】
利用可能データ対比表143には、処理に対して提供するデータが登録される。利用可能データ対比表143から、コピーするデータソースが変更されて、コピー処理が登録される。コピー処理そのものが変更されてもよい。コピー処理IDが、コピー処理のプラグインのIDを示しており、プラグインは、コピー処理保存部142に保存されている。
【0132】
利用可能データ対比表143には、1つの処理空間IDに対して、それぞれ1以上の入力データと出力データ、そして、1つのコピー処理IDとが対応付けられる。
ユーザが登録するプラグインのステートリスト201と合致する出力があるときに、コピー処理IDのコピー処理を用いる。この例では、ステートリスト201が、データ#Aとデータ#Bの場合に、コピー処理IDが#11のプラグインを使用する。
【0133】
図20は、
図19に示した情報処理装置1におけるデータコピーを行なう処理の入れ替え動作を説明する図である。
【0134】
ユーザは、処理空間ID#1のデータ#Aとデータ#Bをステートリスと201として
処理部22を登録する。利用可能データ対比表143に、処理空間ID#1に対して、出力にデータ#Aとデータ#Bの項目が存在するため、処理空間ID#1の処理部22には、コピー処理保存部142からコピー処理ID#11のプラグインを取得して、処理空間ID#1にステートリスト201をデータ#1、データ#2、データ#3で登録する。処理空間ID#1の処理部22は、例えば、データ#3を条件として、データ#1及び#2をデータ#A及び#Bにそれぞれ提供する。これにより、後段の処理空間ID#2の処理部22に対するデータの提供方法を変えることができる。
【0135】
変形例における情報処理装置1によれば、上述した実施形態の一例において奏することができる効果に加えて、例えば、以下の効果を奏することができる。
【0136】
第2のプログラムは、ステートリスト201で指定される複数のステート21のうちの少なくとも一部が所定の条件を満たす場合に限って、第2のオブジェクト2へステート21の複写を行なう。
【0137】
これにより、オブジェクト2へのデータコピーを行なう処理が入れ替えられることにより、データの更新を止めたり、条件に応じた更新を行なったりできる。また、単純なコピーではなく、計算を行って、データを加工した上で、データを提供することも可能である。
【0138】
〔D〕その他
開示の技術は上述した実施形態に限定されるものではなく、本実施形態の趣旨を逸脱しない範囲で種々変形して実施することができる。本実施形態の各構成及び各処理は、必要に応じて取捨選択することができ、あるいは適宜組み合わせてもよい。
【0139】
〔E〕付記
以上の実施形態に関し、さらに以下の付記を開示する。
【0140】
(付記1)
データが更新されたことに応じて実行される処理を規定した第1のプログラムの第1のオブジェクトへの設定依頼を受け付け、
事前に規定されている第1のアクセス許可情報に基づいて、前記データに対する前記第1のプログラムのアクセス許可の有無を判定し、
前記第1のプログラムのアクセス許可が有ると判定された場合に、
前記第1のプログラムを含む第2のオブジェクトを生成し、
前記第1のオブジェクトにおいて、前記データを前記第2のオブジェクトへ複写する第2のプログラムを生成し、
前記第2のオブジェクトに対する、前記第2のプログラムの第2のアクセス許可情報を設定する、
データ処理方法。
【0141】
(付記2)
前記第2のプログラムは、
前記データが更新されたことに応じて、前記第2のアクセス許可情報を参照して、前記第2のオブジェクトに対する前記第2のプログラムのアクセス許可の有無を判定し、
前記第2のプログラムのアクセス許可が有ると判定された場合に、前記データを前記第2のオブジェクトへ複写し、
前記第1のプログラムは、
前記第2のオブジェクトにおいて、前記データが複写されたことに応じて、前記規定されている処理を実行する、
付記1に記載のデータ処理方法。
【0142】
(付記3)
前記第2のプログラムは、更新された前記データに限って、前記第2のオブジェクトへの複写を行なう、
付記2に記載のデータ処理方法。
【0143】
(付記4)
前記第2のプログラムは、複数の前記データのうちの少なくとも一部が所定の条件を満たす場合に限って、前記第2のオブジェクトへの複写を行なう、
付記2又は3に記載のデータ処理方法。
【0144】
(付記5)
コンピュータに、
データが更新されたことに応じて実行される処理を規定した第1のプログラムの第1のオブジェクトへの設定依頼を受け付け、
事前に規定されている第1のアクセス許可情報に基づいて、前記データに対する前記第1のプログラムのアクセス許可の有無を判定し、
前記第1のプログラムのアクセス許可が有ると判定された場合に、
前記第1のプログラムを含む第2のオブジェクトを生成し、
前記第1のオブジェクトにおいて、前記データを前記第2のオブジェクトへ複写する第2のプログラムを生成し、
前記第2のオブジェクトに対する、前記第2のプログラムの第2のアクセス許可情報を設定する、
処理を実行させる、データ処理プログラム。
【0145】
(付記6)
前記第2のプログラムにおいて、
前記データが更新されたことに応じて、前記第2のアクセス許可情報を参照して、前記第2のオブジェクトに対する前記第2のプログラムのアクセス許可の有無を判定し、
前記第2のプログラムのアクセス許可が有ると判定された場合に、前記データを前記第2のオブジェクトへ複写し、
前記第1のプログラムにおいて、
前記第2のオブジェクトにおいて、前記データが複写されたことに応じて、前記規定されている処理を実行する、
処理を前記コンピュータに実行させる、付記5に記載のデータ処理プログラム。
【0146】
(付記7)
前記第2のプログラムは、更新された前記データに限って、前記第2のオブジェクトへの複写を行なう、
処理を前記コンピュータに実行させる、付記6に記載のデータ処理プログラム。
【0147】
(付記8)
前記第2のプログラムは、複数の前記データのうちの少なくとも一部が所定の条件を満たす場合に限って、前記第2のオブジェクトへの複写を行なう、
処理を前記コンピュータに実行させる、付記6又は7に記載のデータ処理プログラム。
【符号の説明】
【0148】
1 :情報処理装置
11 :CPU
111 :処理受付部
112 :処理空間制御部
113 :処理実行部
12 :メモリ
13 :表示制御部
130 :表示装置
14 :記憶装置
141 :処理保存部
142 :コピー処理保存部
143 :利用可能データ対比表
15 :入力I/F
151 :マウス
152 :キーボード
16 :読み書き処理部
160 :記録媒体
17 :通信I/F
201 :ステートリスト
202 :プラグイン
2,6 :オブジェクト
21,61 :ステート
22,62 :処理部
23 :紐づけ情報
24,64 :アクセス許可情報
25 :ユーザ情報
26 :オブジェクト情報
27 :プラグイン情報
31 :ユーザ登録画面
32 :ログイン画面
33 :オブジェクト作成画面
34 :オブジェクト操作画面
35 :アクセス許可画面
36 :ステート作成画面
37 :プラグイン登録画面
600 :データ
601 :ステートリスト
602 :プラグイン
60 :プラグイン実行部
63 :実行条件テーブル
642 :アクセス許可情報