(57)【要約】【課題】データの複製コストを抑えながら、共有されるデータに対する更新処理および参照処理の順番を変更可能とするイベント処理技術を提供すること。【解決手段】イベントデータを記憶するイベント記憶部１１と、入力イベントに基づいて、イベント記憶部１１に記憶されたイベントデータの更新を要求する第１のイベント処理部１２と、入力イベントに基づいて、イベント記憶部１１に記憶されたイベントデータの参照を要求する第２のイベント処理部１３と、第１のイベント処理部１２による更新要求に応じて、イベント記憶部１１における更新対象のイベントデータの更新前の複製を保持してから該イベントデータを更新するとともに、第２のイベント処理部１３による参照要求に応じて、イベント記憶部１１から、参照対象のイベントデータまたは保持しておいた更新前の複製を読み出して応答するイベント記憶管理部１４と、を備える。【選択図】図１
2015052884.tif 000002
【特許請求の範囲】
【請求項１】
イベントＩＤに対応付けてイベントデータを記憶するイベント記憶部と、
入力されたイベントに基づいて、更新対象のイベントＩＤに対応付けられて前記イベント記憶部に記憶されたイベントデータの更新を要求する第１のイベント処理部と、
入力されたイベントに基づいて、参照対象のイベントＩＤに対応付けられて前記イベント記憶部に記憶されたイベントデータの参照を要求する第２のイベント処理部と、
前記第１のイベント処理部による更新の要求に応じて、前記イベント記憶部において、前記更新対象のイベントＩＤに対応付けられたイベントデータの更新前の複製を保持してから該イベントデータを更新するとともに、前記第２のイベント処理部による参照の要求に応じて、前記イベント記憶部から、前記参照対象のイベントＩＤに対応付けられたイベントデータまたは該イベントデータの更新前の複製を読み出して応答するイベント記憶管理部と、
を備えたイベント処理装置。
【請求項２】
前記入力されたイベントに対して前記イベントの順序を表す通番を付与する通番付与部をさらに備え、
前記イベント記憶部は、前記イベントＩＤに関連付けて、該イベントＩＤに対応付けられたイベントデータが更新されたイベントの通番をさらに記憶し、
前記イベント記憶管理部は、前記第２のイベント処理部によって処理中のイベントの通番（ロック通番）を記憶しておき、前記更新対象のイベントＩＤに関連付けられた通番および前記ロック通番の大小に基づいて、前記イベントデータの更新前にその複製を保持するか否かを判断するとともに、前記参照対象のイベントＩＤに関連付けられた通番および前記ロック通番の大小に基づいて、前記参照対象のイベントＩＤに対応付けられたイベントデータおよび前記更新前の複製のいずれを応答するかを判断することを特徴とする請求項１に記載のイベント処理装置。
【請求項３】
前記イベント記憶部は、前記イベントＩＤの属するグループに対応付けて前記通番を記憶し、
前記イベント記憶管理部は、前記更新対象のイベントＩＤの属するグループに対応付けられた通番および前記ロック通番の大小に基づいて、前記イベントデータの更新前にその複製を保持するか否かを判断するとともに、前記参照対象のイベントＩＤの属するグループに対応付けられた通番および前記ロック通番の大小に基づいて、前記参照対象のイベントＩＤに対応付けられたイベントデータおよび前記更新前の複製のいずれを応答するかを判断することを特徴とする請求項２に記載のイベント処理装置。
【請求項４】
前記イベント記憶管理部は、前記イベントデータの更新前にその複製を保持すると判断した場合、前記更新対象のイベントＩＤの属するグループに含まれる各イベントＩＤに対応付けられたイベントデータの更新前の複製をそれぞれ保持することを特徴とする請求項３に記載のイベント処理装置。
【請求項５】
イベントＩＤに対応付けてイベントデータを記憶するイベント記憶部を用いて、
入力されたイベントに基づいて、更新対象のイベントＩＤに対応付けられて前記イベント記憶部に記憶されたイベントデータの更新前の複製を保持してから該イベントデータを更新し、
入力されたイベントに基づいて、参照対象のイベントＩＤに対応付けられたイベントデータまたは該イベントデータの更新前の複製を、前記イベント記憶部から読み出す、イベント処理方法。
【請求項６】
前記入力されたイベントに対して前記イベントの順序を表す通番を付与し、
前記イベント記憶部に、前記イベントＩＤに関連付けて、該イベントＩＤに対応付けられたイベントデータが更新されたイベントの通番をさらに記憶させ、
前記参照対象のイベントＩＤの読み出し処理が継続している間、前記読み出し処理を生じたイベントの通番（ロック通番）を記憶しておき、
前記更新対象のイベントＩＤに関連付けられた通番および前記ロック通番の大小に基づいて、前記イベントデータの更新前にその複製を保持するか否かを判断し、
前記参照対象のイベントＩＤに関連付けられた通番および前記ロック通番の大小に基づいて、前記参照対象のイベントＩＤに対応付けられたイベントデータおよび前記更新前の複製のいずれを応答するかを判断することを特徴とする請求項５に記載のイベント処理方法。
【請求項７】
前記イベント記憶部に、前記イベントＩＤの属するグループに対応付けて前記通番を記憶させ、
前記イベントデータの更新前にその複製を保持するか否かを、前記更新対象のイベントＩＤの属するグループに対応付けられた通番および前記ロック通番の大小に基づいて決定し、
前記参照対象のイベントＩＤに対応付けられたイベントデータおよび前記更新前の複製のいずれを応答するかを、前記参照対象のイベントＩＤの属するグループに対応付けられた通番および前記ロック通番の大小に基づいて決定することを特徴とする請求項６に記載のイベント処理方法。
【請求項８】
イベントＩＤに対応付けてイベントデータを記憶するイベント記憶部を用いて、
入力されたイベントに基づいて、更新対象のイベントＩＤに対応付けられて前記イベント記憶部に記憶されたイベントデータの更新を要求する更新要求ステップと、
入力されたイベントに基づいて、参照対象のイベントＩＤに対応付けられて前記イベント記憶部に記憶されたイベントデータの参照を要求する参照要求ステップと、
前記更新の要求に応じて、前記イベント記憶部において、前記更新対象のイベントＩＤに対応付けられたイベントデータの更新前の複製を保持してから該イベントデータを更新する更新ステップと、
前記参照の要求に応じて、前記イベント記憶部から、前記参照対象のイベントＩＤに対応付けられたイベントデータまたは該イベントデータの更新前の複製を読み出して応答する参照ステップと、
をコンピュータ装置に実行させるコンピュータ・プログラム。
【請求項９】
前記入力されたイベントに対して前記イベントの順序を表す通番を付与する通番付与ステップと、
前記イベント記憶部に、前記イベントＩＤに関連付けて、該イベントＩＤに対応付けられたイベントデータが更新されたイベントの通番をさらに記憶させる通番記憶ステップと、
前記参照ステップが継続している間、前記参照の要求を生じたイベントの通番（ロック通番）を保持する通番ロックステップと、
を、さらに前記コンピュータ装置に実行させ、
前記更新ステップにおいて、前記更新対象のイベントＩＤに関連付けられた通番および前記ロック通番の大小に基づいて、前記イベントデータの更新前にその複製を保持するか否かを判断し、
前記参照ステップにおいて、前記参照対象のイベントＩＤに関連付けられた通番および前記ロック通番の大小に基づいて、前記参照対象のイベントＩＤに対応付けられたイベントデータおよび前記更新前の複製のいずれを応答するかを判断することを特徴とする請求項８に記載のコンピュータ・プログラム。
【請求項１０】
前記通番記憶ステップにおいて、前記イベント記憶部に、前記イベントＩＤの属するグループに対応付けて前記通番を記憶させ、
前記更新ステップにおいて、前記更新対象のイベントＩＤの属するグループに対応付けられた通番および前記ロック通番の大小に基づいて、前記イベントデータの更新前にその複製を保持するか否かを判断し、
前記参照ステップにおいて、前記参照対象のイベントＩＤの属するグループに対応付けられた通番および前記ロック通番の大小に基づいて、前記参照対象のイベントＩＤに対応付けられたイベントデータおよび前記更新前の複製のいずれを応答するかを判断することを特徴とする請求項９に記載のコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、並列に実行される複数の処理でデータを共有するイベント処理装置に関する。
【背景技術】
【０００２】
一般に、並列に実行される複数の処理でデータを共有するイベント処理装置では、データの一貫性の維持が問題になる。ここで、イベント処理装置は、イベント列として連続的に受信するデータに対する処理を行う装置である。一例として、図５３に示すように、一方の処理部Ａが共有記憶部のデータ更新を行い、他方の処理部Ｂが共有記憶部のデータ参照を行うことを想定する。このとき、データの更新処理と参照処理とで、処理の順番を変更できないという課題がある。これは、処理の順番を不用意に変更すると、所望の結果が得られない場合があるためである。例えば、処理部Ｂが共有記憶部において必要とするデータを参照する前に、処理部Ａがそのデータを更新してしまうと、処理部Ｂは必要なデータを読み出せなくなる。
【０００３】
このように更新処理および参照処理の順番を変更できないイベント処理装置は、処理のデッドラインを守れないことがある。例えば、処理部Ｂによるデータ参照に時間がかかる場合、処理部Ａはデータ更新を待たされることになる。特に、処理部Ｂで多数のデータが参照される場合、処理部Ａの待ち時間が長くなる。その結果、イベント処理装置は、処理部Ａに設定された処理の制限時間（デッドライン）を守れないことがある。
【０００４】
このような問題に対応する関連技術が、特許文献１に記載されている。この関連技術は、マテリアライズドビューと呼ばれるデータの複製を用意する。この関連技術を用いることにより、上述の処理部Ｂは、マテリアライズドビューを参照して必要なデータを取得し、処理部Ａは、処理部Ｂの参照の実行に関係なくデータを更新できる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００６−６５８４６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、特許文献１に記載された関連技術には、以下の課題がある。この関連技術は、データの複製にコストがかかるため、完全なマテリアライズドビューの代わりに、共有されるデータの一部のみを複製した部分マテリアライズドビューを用意する。ところが、共有されるデータに対する更新処理および参照処理の順番を変更可能とするには、一部のデータのみの複製では不十分であるという課題がある。
【０００７】
本発明は、上述の課題を解決するためになされたもので、データの複製コストを抑えながら、共有されるデータに対する更新処理および参照処理の順番を変更可能とするイベント処理技術を提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明のイベント処理装置は、イベントＩＤに対応付けてイベントデータを記憶するイベント記憶部と、入力されたイベントに基づいて、更新対象のイベントＩＤに対応付けられて前記イベント記憶部に記憶されたイベントデータの更新を要求する第１のイベント処理部と、入力されたイベントに基づいて、参照対象のイベントＩＤに対応付けられて前記イベント記憶部に記憶されたイベントデータの参照を要求する第２のイベント処理部と、前記第１のイベント処理部による更新の要求に応じて、前記イベント記憶部において、前記更新対象のイベントＩＤに対応付けられたイベントデータの更新前の複製を保持してから該イベントデータを更新するとともに、前記第２のイベント処理部による参照の要求に応じて、前記イベント記憶部から、前記参照対象のイベントＩＤに対応付けられたイベントデータまたは該イベントデータの更新前の複製を読み出して応答するイベント記憶管理部と、を備える。
【０００９】
また、本発明のイベント処理方法は、イベントＩＤに対応付けてイベントデータを記憶するイベント記憶部を用いて、入力されたイベントに基づいて、更新対象のイベントＩＤに対応付けられて前記イベント記憶部に記憶されたイベントデータの更新前の複製を保持してから該イベントデータを更新し、入力されたイベントに基づいて、参照対象のイベントＩＤに対応付けられたイベントデータまたは該イベントデータの更新前の複製を、前記イベント記憶部から読み出す。
【００１０】
また、本発明のコンピュータ・プログラムは、イベントＩＤに対応付けてイベントデータを記憶するイベント記憶部を用いて、入力されたイベントに基づいて、更新対象のイベントＩＤに対応付けられて前記イベント記憶部に記憶されたイベントデータの更新を要求する更新要求ステップと、入力されたイベントに基づいて、参照対象のイベントＩＤに対応付けられて前記イベント記憶部に記憶されたイベントデータの参照を要求する参照要求ステップと、前記更新の要求に応じて、前記イベント記憶部において、前記更新対象のイベントＩＤに対応付けられたイベントデータの更新前の複製を保持してから該イベントデータを更新する更新ステップと、前記参照の要求に応じて、前記イベント記憶部から、前記参照対象のイベントＩＤに対応付けられたイベントデータまたは該イベントデータの更新前の複製を読み出して応答する参照ステップと、をコンピュータ装置に実行させる。
【発明の効果】
【００１１】
本発明は、データの複製コストを抑えながら、共有されるデータに対する更新処理および参照処理の順番を変更可能とするイベント処理技術を提供することができる。
【図面の簡単な説明】
【００１２】
【図１】本発明の第１の実施の形態としてのイベント処理装置の機能ブロック図である。
【図２】本発明の第１の実施の形態としてのイベント処理装置のハードウェア構成図である。
【図３】本発明の第１の実施の形態としてのイベント処理装置の全体の動作を説明するフローチャートである。
【図４】本発明の第１の実施の形態としてのイベント処理装置の第１のイベント処理を説明するフローチャートである。
【図５】本発明の第１の実施の形態としてのイベント処理装置の第２のイベント処理を説明するフローチャートである。
【図６】本発明の第２の実施の形態としてのイベント処理装置の機能ブロック図である。
【図７】本発明の第２の実施の形態としてのイベント処理装置によって入出力される情報を説明する図である。
【図８】本発明の第２の実施の形態における入力イベントのデータ構造の一例を説明する図である。
【図９】本発明の第２の実施の形態における出力イベントのデータ構造の一例を説明する図である。
【図１０】本発明の第２の実施の形態における通番付きイベントのデータ構造の一例を説明する図である。
【図１１】本発明の第２の実施の形態においてイベント記憶部に記憶される情報の一例を説明する図である。
【図１２】本発明の第２の実施の形態におけるイベント記憶管理部の構成の一例を説明する図である。
【図１３】本発明の第２の実施の形態としてのイベント処理装置の全体の動作を説明するフローチャートである。
【図１４】本発明の第２の実施の形態における第１のイベント処理部の動作を説明するフローチャートである。
【図１５】本発明の第２の実施の形態における第２のイベント処理部の動作を説明するフローチャートである。
【図１６】本発明の第２の実施の形態におけるイベント記憶管理部の動作を説明するフローチャートである。
【図１７】本発明の第２の実施の形態におけるイベント記憶管理部によるイベントデータの更新処理を説明するフローチャートである。
【図１８】本発明の第２の実施の形態におけるイベント記憶管理部による通番のロック処理を説明するフローチャートである。
【図１９】本発明の第２の実施の形態におけるイベント記憶管理部によるイベントデータの参照処理を説明するフローチャートである。
【図２０】本発明の第２の実施の形態の具体例における入力イベントとしての車両速度イベントを説明する図である。
【図２１】本発明の第２の実施の形態の具体例における入力イベントとしての平均車両速度計算要求イベントを説明する図である。
【図２２】本発明の第２の実施の形態の具体例における出力イベントとしての平均車両速度イベントを説明する図である。
【図２３】本発明の第２の実施の形態の具体例においてイベント記憶部に記憶される情報を説明する図である。
【図２４】本発明の第２の実施の形態の具体例において連続して発生する入力イベントを説明する図である。
【図２５】本発明の第２の実施の形態の具体例において車両速度イベントが受信された際にイベント処理装置内で入出力される情報を模式的に示す図である。
【図２６】本発明の第２の実施の形態の具体例において更新要求の受信に応じてイベント記憶管理部およびイベント記憶部の内部で入出力される情報を模式的に示す図である。
【図２７】図２６に続いてイベント記憶管理部およびイベント記憶部の内部で入出力される情報を模式的に示す図である。
【図２８】本発明の第２の実施の形態の具体例において連続して発生する入力イベントに通番が付与された通番付きイベントを説明する図である。
【図２９】本発明の第２の実施の形態の具体例において一部が更新されたイベント記憶部に記憶される情報を説明する図である。
【図３０】本発明の第２の実施の形態の具体例において平均車両速度計算イベントが受信された際にイベント処理装置内で入出力される情報を模式的に示す図である。
【図３１】本発明の第２の実施の形態の具体例においてロック要求の受信に応じてイベント記憶管理部およびイベント記憶部の内部で入出力される情報を模式的に示す図である。
【図３２】本発明の第２の実施の形態の具体例において参照要求の受信に応じてイベント記憶管理部およびイベント記憶部の内部で入出力される情報を模式的に示す図である。
【図３３】本発明の第２の実施の形態の具体例において他の更新要求の受信に応じてイベント記憶管理部およびイベント記憶部の内部で入出力される情報を模式的に示す図である。
【図３４】図３３に続いてイベント記憶管理部およびイベント記憶部の内部で入出力される情報を模式的に示す図である。
【図３５】本発明の第２の実施の形態の具体例において他の参照要求の受信に応じてイベント記憶管理部およびイベント記憶部の内部で入出力される情報を模式的に示す図である。
【図３６】本発明の第３の実施の形態としてのイベント処理装置の機能ブロック図である。
【図３７】本発明の第３の実施の形態においてイベント記憶部に記憶される情報の一例を説明する図である。
【図３８】本発明の第３の実施の形態におけるイベント記憶管理部の構成の一例を説明する図である。
【図３９】本発明の第３の実施の形態におけるイベント記憶管理部によるイベントデータの更新処理を説明するフローチャートである。
【図４０】本発明の第３の実施の形態におけるイベント記憶管理部によるイベントデータの参照処理を説明するフローチャートである。
【図４１】本発明の第３の実施の形態の具体例においてイベント記憶部に記憶される情報を説明する図である。
【図４２】本発明の第３の実施の形態の具体例において更新要求の受信に応じてイベント記憶管理部およびイベント記憶部の内部で入出力される情報を模式的に示す図である。
【図４３】図４２に続いてイベント記憶管理部およびイベント記憶部の内部で入出力される情報を模式的に示す図である。
【図４４】本発明の第３の実施の形態の具体例において一部が更新されたイベント記憶部に記憶される情報を説明する図である。
【図４５】本発明の第３の実施の形態の具体例において参照要求の受信に応じてイベント記憶管理部およびイベント記憶部の内部で入出力される情報を模式的に示す図である。
【図４６】本発明の第３の実施の形態の具体例において他の更新要求の受信に応じてイベント記憶管理部およびイベント記憶部の内部で入出力される情報を模式的に示す図である。
【図４７】図４６に続いてイベント記憶管理部およびイベント記憶部の内部で入出力される情報を模式的に示す図である。
【図４８】本発明の第３の実施の形態の具体例において他の参照要求の受信に応じてイベント記憶管理部およびイベント記憶部の内部で入出力される情報を模式的に示す図である。
【図４９】本発明の第３の実施の形態の具体例においてさらに他の更新要求の受信に応じてイベント記憶管理部およびイベント記憶部の内部で入出力される情報を模式的に示す図である。
【図５０】図４９に続いてイベント記憶管理部およびイベント記憶部の内部で入出力される情報を模式的に示す図である。
【図５１】本発明の第３の実施の形態の具体例においてさらに他の更新要求の受信に応じてイベント記憶管理部およびイベント記憶部の内部で入出力される情報を模式的に示す図である。
【図５２】図５１に続いてイベント記憶管理部およびイベント記憶部の内部で入出力される情報を模式的に示す図である。
【図５３】関連技術のイベント処理装置の機能ブロック図である。
【発明を実施するための形態】
【００１３】
以下、本発明の実施の形態について、図面を参照して詳細に説明する。
【００１４】
（第１の実施の形態）
本発明の第１の実施の形態としてのイベント処理装置１は、次々と連続して入力されるイベントを受信しながら、イベントに基づく第１のイベント処理および第２のイベント処理を並列に実行する装置である。本発明の第１の実施の形態としてのイベント処理装置１の構成を図１に示す。図１において、イベント処理装置１は、イベント記憶部１１と、第１のイベント処理部１２と、第２のイベント処理部１３と、イベント記憶管理部１４とを含む。
【００１５】
また、イベント処理装置１は、図２に示すように、ＣＰＵ（Central Processing Unit）１００１と、ＲＡＭ（Random Access Memory）１００２と、ＲＯＭ（Read Only Memory）１００３と、ハードディスク等の記憶装置１００４と、入力装置１００５と、出力装置１００６とによって構成されていてもよい。この場合、イベント記憶部１１は、記憶装置１００４によって構成される。また、第１のイベント処理部１２および第２のイベント処理部１３は、入力装置１００５と、出力装置１００６と、ＲＯＭ１００３および記憶装置１００４に記憶されたコンピュータ・プログラムおよび各種データをＲＡＭ１００２に読み込んで実行するＣＰＵ１００１とによって構成される。また、イベント記憶管理部１４は、ＲＯＭ１００３および記憶装置１００４に記憶されたコンピュータ・プログラムおよび各種データをＲＡＭ１００２に読み込んで実行するＣＰＵ１００１によって構成される。なお、イベント処理装置１およびその各機能ブロックを構成するハードウェア構成は、上述の構成に限定されない。
【００１６】
以下、図１を参照しながら、各機能ブロックの詳細について説明する。
【００１７】
イベント記憶部１１は、イベントＩＤに対応付けてイベントデータを記憶する。
【００１８】
第１のイベント処理部１２には、イベントが入力される。また、第１のイベント処理部１２は、入力されたイベントに基づいて、更新対象のイベントＩＤに対応付けられてイベント記憶部１１に記憶されたイベントデータの更新を、後述のイベント記憶管理部１４に対して要求する。例えば、第１のイベント処理部１２は、入力されたイベントが、更新対象となるイベントデータの更新を伴う第１のイベント処理を示す場合に、第１のイベント処理に含まれる更新処理の要求を行ってもよい。この場合、第１のイベント処理を示すイベントは、更新対象のイベントＩＤおよびイベントデータを含む情報であってもよい。
【００１９】
第２のイベント処理部１３には、イベントが入力される。また、第２のイベント処理部１３は、入力されたイベントに基づいて、参照対象のイベントＩＤに対応付けられてイベント記憶部１１に記憶されたイベントデータの参照を、後述のイベント記憶管理部１４に対して要求する。例えば、第２のイベント処理部１３は、入力されたイベントが、参照対象となるイベントデータの参照を伴う第２のイベント処理を示す場合に、第２のイベント処理に含まれる参照処理の要求を行ってもよい。この場合、第２のイベント処理を示すイベントは、参照対象のイベントＩＤを含む情報であってもよい。あるいは、第２のイベント処理を示すイベントは、該イベントの入力時点でイベント記憶部１１に記憶されている１つ以上のイベントＩＤを参照対象とする処理を定めた情報であってもよい。
【００２０】
イベント記憶管理部１４は、第１のイベント処理部１２による更新の要求に応じて、イベント記憶部１１において、更新対象のイベントＩＤに対応付けられたイベントデータの更新前の複製を保持する。その後、イベント記憶管理部１４は、イベント記憶部１１において、更新対象のイベントＩＤに対応付けられたイベントデータを更新する。例えば、イベント記憶管理部１４は、イベント記憶部１１において、該当するイベントＩＤに対応付けてイベントデータが記憶される領域とは異なる退避用の領域に、該当するイベントＩＤに対応付けて更新前のイベントデータの複製を記憶させてもよい。
【００２１】
また、イベント記憶管理部１４は、第２のイベント処理部１３による参照の要求に応じて、イベント記憶部１１から、参照対象のイベントＩＤに対応付けられたイベントデータまたはそのイベントデータの更新前の複製を読み出して応答する。例えば、イベント記憶部１１において、参照対象のイベントＩＤに対応付けられているイベントデータが、第２のイベント処理部１３によって処理中のイベントの受信後に受信されたイベントにより更新されている場合がある。このような場合に、イベント記憶管理部１４は、複製を保持しておいた更新前のイベントデータを応答するようにしてもよい。
【００２２】
以上のように構成されたイベント処理装置１の動作について、図３〜図５を参照して説明する。
【００２３】
まず、イベント処理装置１全体の動作の概略を、図３に示す。
【００２４】
図３では、まず、イベント処理装置１は、イベントを受信する（ステップＳ１）。このイベントは、第１のイベント処理部１２および第２のイベント処理部１３に入力される。
【００２５】
次に、第１のイベント処理部１２および第２のイベント処理部１３は、入力されたイベントに基づいて、第１のイベント処理および第２のイベント処理を並列に実行する（ステップＳ２）。
【００２６】
次に、イベント処理装置１は、第１のイベント処理部１２からの出力情報があれば、その情報を出力する（ステップＳ３）。
【００２７】
次に、イベント処理装置１は、第２のイベント処理部１３からの出力情報があれば、その情報を出力する（ステップＳ４）。
【００２８】
以上の動作を、イベント処理装置１は繰り返す。
【００２９】
次に、ステップＳ２における第１のイベント処理の詳細を図４に示す。
【００３０】
図４では、まず、第１のイベント処理部１２は、入力されたイベントを受信する（ステップＳ１１）。
【００３１】
次に、第１のイベント処理部１２は、入力されたイベントが、第１のイベント処理を示すか否かを判断する（ステップＳ１２）。
【００３２】
ここで、入力されたイベントが第１のイベント処理を示さない場合、第１のイベント処理部１２は、このイベントに基づく処理を終了する。
【００３３】
一方、入力されたイベントが第１のイベント処理を示す場合、第１のイベント処理部１２は、イベント記憶部１１において更新対象のイベントＩＤに対応付けられたイベントデータの更新を、イベント記憶管理部１４に対して要求する（ステップＳ１３）。
【００３４】
次に、更新の要求を受けたイベント記憶管理部１４は、イベント記憶部１１において、更新対象のイベントＩＤに対応付けられたイベントデータの更新前の複製を保持する（ステップＳ１４）。
【００３５】
次に、イベント記憶管理部１４は、イベント記憶部１１において、更新対象のイベントＩＤに対応付けられたイベントデータを更新する（ステップＳ１５）。その後、第１のイベント処理部１２は、第１のイベント処理に含まれる所定の処理を実行してもよい。
【００３６】
以上で、第１のイベント処理の詳細な説明を終了する。
【００３７】
次に、ステップＳ２における第２のイベント処理の詳細を図５に示す。
【００３８】
図５では、まず、第２のイベント処理部１３は、入力されたイベントを受信する（ステップＳ２１）。
【００３９】
次に、第２のイベント処理部１３は、入力されたイベントが、第２のイベント処理を示すか否かを判断する（ステップＳ２２）。
【００４０】
ここで、入力されたイベントが第２のイベント処理を示さない場合、第２のイベント処理部１３は、このイベントに基づく処理を終了する。
【００４１】
一方、入力されたイベントが第２のイベント処理を示す場合、第２のイベント処理部１３は、イベント記憶部１１において参照対象のイベントＩＤに対応付けられたイベントデータの参照を、イベント記憶管理部１４に対して要求する（ステップＳ２３）。
【００４２】
次に、参照の要求を受けたイベント記憶管理部１４は、イベント記憶部１１から、参照対象のイベントＩＤに対応付けられたイベントデータまたはその更新前の複製を読み出し、第２のイベント処理部１３に応答する（ステップＳ２４）。
【００４３】
例えば、前述のように、イベント記憶管理部１４は、イベント記憶部１１に記憶された参照対象のイベントデータが、第２のイベント処理部１３によって処理中のイベントの受信時点より後に更新されていた場合に、複製を保持しておいた更新前のイベントデータを応答してもよい。その後、第２のイベント処理部１３は、応答されたイベントデータを用いて、第２のイベント処理に含まれる所定の処理を実行してもよい。
【００４４】
以上で、第２のイベント処理の詳細な説明を終了する。
【００４５】
次に、本発明の第１の実施の形態の効果について述べる。
【００４６】
本発明の第１の実施の形態としてのイベント処理装置は、データの複製コストを抑えながら、共有されるデータに対する更新処理および参照処理の順番を変更可能とする。
【００４７】
その理由は、入力されたイベントが第１のイベント処理を示す場合に、第１のイベント処理部が、そのイベントに基づく更新対象のイベントＩＤ、に対応付けられてイベント記憶部に記憶されたイベントデータの更新を要求し、入力されたイベントが第２のイベント処理を示す場合に、第２のイベント処理部が、そのイベントに基づく参照対象のイベントＩＤ、に対応付けられてイベント記憶部に記憶されたイベントデータの参照を要求し、イベント記憶管理部が、更新の要求に応じて、イベント記憶部において、更新対象のイベントＩＤに対応付けられたイベントデータの更新前の複製を保持してから該当するイベントデータを更新し、参照の要求に応じて、イベント記憶部から、参照対象のイベントＩＤに対応付けられたイベントデータまたはその更新前の複製を読み出して応答するからである。
【００４８】
これにより、本実施の形態は、イベントデータの参照を要する第２のイベント処理によって必要なイベントデータが、参照される前に第１のイベント処理によって更新されても、第２のイベント処理においてイベントデータの更新前の複製を参照することができる。したがって、本実施の形態は、第１のイベント処理および第２のイベント処理の順序を変更しても所望の結果を得ることができる。しかも、本実施の形態は、イベント記憶部に保持される全てのイベントデータについて複製を保持する必要はなく、更新の要求があったイベントデータについてのみ複製を保持すればよいので、複製コストを抑えることができる。
【００４９】
（第２の実施の形態）
次に、本発明の第２の実施の形態について図面を参照して詳細に説明する。なお、本実施の形態の説明において参照する各図面において、本発明の第１の実施の形態と同一の構成および同様に動作するステップには同一の符号を付して本実施の形態における詳細な説明を省略する。
【００５０】
＜構成＞
まず、本発明の第２の実施の形態としてのイベント処理装置２の構成を図６に示す。図６において、イベント処理装置２は、イベント記憶部２１と、第１のイベント処理部２２と、第２のイベント処理部２３と、イベント記憶管理部２４と、通番付与部２５とを含む。例えば、イベント処理装置２は、図２を参照して説明した本発明の第１の実施の形態としてのイベント処理装置１と同一のハードウェア要素によって構成可能である。この場合、通番付与部２５は、ＲＯＭ１００３および記憶装置１００４に記憶されたコンピュータ・プログラムおよび各種データをＲＡＭ１００２に読み込んで実行するＣＰＵ１００１によって構成される。なお、イベント処理装置２およびその各機能ブロックを構成するハードウェア構成は、上述の構成に限定されない。
【００５１】
ここで、イベント処理装置２は、図７に示すように、入力イベントを受信すると、入力イベントに基づくイベント処理をおこない、イベント処理に伴い生成される出力イベントを出力する装置である。イベント処理装置２には、入力イベントが次々と連続して入力される。また、イベント処理装置２からは、出力イベントが次々と連続して出力される。なお、入力イベントと出力イベントとの間には必ずしも対応関係がある必要はない。すなわち、入力イベントの受信に対応して、常に出力イベントが出力されるとは限らない。同様に、出力イベントに対応する入力イベントが必ずしも存在するとは限らない。
【００５２】
イベント処理装置２に入力される入力イベントの一例を図８に示す。図８において、入力イベントは、イベント型（Ｔｙｐｅ）と、イベントＩＤ（ＩＤ）と、イベントデータ（Ｄａｔａ）とを含む。例えば、イベント型は、イベントの種類を表す情報であってもよい。一例として、イベント型は、走行する車両から発生される車両速度イベントであることを表す値であってもよい。
【００５３】
また、例えば、イベントＩＤは、イベントの発生源を識別する情報であってもよい。一例として、イベントＩＤは、走行する車両を識別する値であってもよい。
【００５４】
また、例えば、イベントデータは、イベントのデータを含む情報であってもよい。一例として、イベントデータは、走行する車両の速度を含んでいてもよい。また、イベントデータは、走行する車両の位置や加速度を含んでいてもよい。
【００５５】
イベント処理装置２から出力される出力イベントの一例を図９に示す。図９において、出力イベントは、入力イベントと同様に、イベント型と、イベントＩＤと、イベントデータとを含む。
【００５６】
次に、各機能ブロックの詳細について説明する。
【００５７】
通番付与部２５は、イベント処理装置２によって受信された入力イベントに、入力イベントの順序を表す通番を付与する。具体的には、通番付与部２５は、入力イベントを受け取り、該イベントに通番を付与した通番付きイベントを作成する。そして、通番付与部２５は、第１のイベント処理部２２および第２のイベント処理部２３のそれぞれに対して、通番付きイベントを出力する。
【００５８】
通番付きイベントの一例を図１０に示す。図１０において、通番付きイベントは、入力イベントに含まれるイベント型、イベントＩＤ、および、イベントデータに加えて、通番（ｎｕｍｂｅｒ）を含む。通番は、その大小が定義された情報である。通番付与部２５は、より後に到着するイベントに対して、より大きい通番を付与する。本実施の形態では、通番付与部２５は、最初の入力イベントから順に、１ずつ加算した番号（１，２，３，４，５、．．．）を、通番として付与するものとする。
【００５９】
その他、通番付与部２５は、通番として、入力イベントがイベント処理装置２に入力された時刻を表す情報を採用してもよい。また、入力イベントのイベントデータに、イベント生成時刻といったような通番に相当するデータが含まれる場合、通番付与部２５は、そのようなデータを通番として用いてもよい。なお、通番は、必ずしも連続している必要はない。
【００６０】
また、以下では、説明の簡単のため、通番はユニークであるとする。すなわち、異なるイベントには異なる通番が付与されるものとする。ただし、本発明における通番付与部が付与する通番は、必ずしもイベントに対してユニークである必要はない。例えば、複数のイベントに対して同じ通番が付与されても、本実施の形態は、後述の効果を同様に奏する。
【００６１】
第１のイベント処理部２２は、通番付きイベントを受け取ると、この通番付きイベントが第１のイベント処理部２２での処理対象である場合に、イベント記憶部２１に記憶されているイベントデータの更新を伴う第１のイベント処理を行う。また、第１のイベント処理部２２は、第１のイベント処理において出力イベントを作成して出力してもよい。
【００６２】
具体的には、第１のイベント処理部２２は、通番付きイベントから、イベント型と、イベントＩＤと、イベントデータと、通番とを取り出す。そして、第１のイベント処理部２２は、取り出したイベント型に基づいて、該当する通番付きイベントが、処理対象であるかどうかを判定する。
【００６３】
また、第１のイベント処理部２２は、受け取った通番付きイベントが処理対象である場合は、通番付きイベントから取り出したイベントＩＤを更新対象として、イベントデータの更新要求を行う。具体的には、第１のイベント処理部２２は、イベント記憶部２１において、更新対象のイベントＩＤに対応づけられたイベントデータを、通番付きイベントから取り出したイベントデータに更新するよう、イベント記憶管理部２４に対して要求する。例えば、第１のイベント処理部２２は、通番付きイベントから取り出された更新対象のイベントＩＤ、イベントデータおよび通番を含む更新要求を、イベント記憶管理部２４に対して送信してもよい。
【００６４】
第２のイベント処理部２３は、通番付きイベントを受け取ると、この通番付きイベントが第２のイベント処理部２３での処理対象である場合に、この通番付きイベントの入力時点でイベント記憶部２１に記憶されている１つ以上のイベントデータ（過去のイベントデータ）を参照して第２のイベント処理を行う。また、第２のイベント処理部２３は、第２のイベント処理において出力イベントを作成して出力してもよい。
【００６５】
具体的には、第２のイベント処理部２３は、通番付きイベントからイベント型と、イベントＩＤと、イベントデータと、通番とを取り出す。そして、第２のイベント処理部２３は、取り出したイベント型に基づいて、該当する通番付きイベントが、処理対象であるかどうかを判定する。
【００６６】
また、第２のイベント処理部２３は、受け取った通番付きイベントが処理対象である場合は、取り出した通番をイベント記憶管理部２４に対して通知することにより、ロック設定の要求を行う。また、第２のイベント処理部２３は、処理対象の通番付きイベントに基づく第２のイベント処理を終了後、イベント記憶管理部２４に対して、ロック解除の要求をしてもよい。
【００６７】
また、第２のイベント処理部２３は、受け取った通番付きイベントが処理対象である場合は、この時点でイベント記憶部２１に記憶されている１つ以上のイベントデータ（過去のイベントデータ）の参照を、イベント記憶管理部２４に対して要求する。例えば、第２のイベント処理部２３は、通番付きイベントから取り出された参照対象のイベントＩＤを含む参照要求を、イベント記憶管理部２４に対して送信してもよい。
【００６８】
イベント記憶部２１は、イベントＩＤに対応付けてイベントデータを記憶することに加えて、イベントＩＤに対応付けて、該イベントＩＤに対応付けられたイベントデータが更新されたイベントの通番をさらに記憶する。
【００６９】
例えば、イベント記憶部２１は、データ記憶部２１１と、通番記憶部２１２とを含んで構成されていてもよい。
【００７０】
この場合、データ記憶部２１１は、イベントＩＤに対応付けてイベントデータを記憶する。例えば、図１１に示すように、データ記憶部２１１は、１つのイベントＩＤに対応づけて、１つのイベントデータを記憶してもよい。また、イベント記憶部２１が、データの箇所を番地で指定する装置によって構成される場合、データ記憶部２１１は、イベントＩＤに基づき算出される番地に、イベントデータを１つ記憶してもよい。
【００７１】
また、通番記憶部２１２は、データ記憶部２１１においてイベントＩＤに対応付けられたイベントデータの更新要求を発生したイベントの通番を、該当するイベントＩＤに対応付けて記憶する。例えば、図１１に示すように、通番記憶部２１２は、１つのイベントＩＤに対応づけて、１つの通番を記憶してもよい。また、イベント記憶部２１が、データの箇所を番地で指定する装置によって構成される場合、通番記憶部２１２は、イベントＩＤに基づき算出される番地に、通番を１つ記憶してもよい。
【００７２】
イベント記憶管理部２４は、第２のイベント処理部２３によって処理中のイベントの通番を、ロック通番として記憶する。具体的には、イベント記憶管理部２４は、第２のイベント処理部２３からロック設定の要求として通知される通番を、ロック通番として記憶すればよい。
【００７３】
また、イベント記憶管理部２４は、第１のイベント処理部２２からの更新の要求時に、イベント記憶部２１において更新対象のイベントＩＤに関連付けられた通番と、ロック通番との大小に基づいて、更新前にイベントデータの複製を保持するか否かを判断する。
【００７４】
また、イベント記憶管理部２４は、第２のイベント処理部２３からの参照の要求時に、イベント記憶部２１において参照対象のイベントＩＤに関連付けられた通番と、ロック通番との大小に基づいて、参照対象のイベントＩＤに対応付けられたイベントデータおよびその更新前の複製のいずれを応答するかを判断する。具体的には、イベント記憶管理部２４は、イベント記憶部２１において、参照対象のイベントＩＤに対応付けられたイベントデータおよびその更新前の複製のうち、ロック通番より小さい通番に対応付けられたものを応答すればよい。なお、イベント記憶管理部２４は、イベント記憶部２１において、参照対象のイベントＩＤに対応付けられたイベントデータであっても、ロック通番より小さい通番に対応付けられたものがない場合は、イベントデータを応答しなくてよい。
【００７５】
例えば、イベント記憶管理部２４は、図１２に示すように、ロック要求受信部２４１とロック通番記憶部２４２と、アクセス要求受信部２４３と、通番読出部２４４と、通番比較部２４５と、イベントデータアクセス制御部２４６と、アドレス計算部２４７と、アクセス要求応答部２４８とを含んで構成されてもよい。
【００７６】
この場合、ロック要求受信部２４１は、第２のイベント処理部２３からロック設定の要求として通知される通番を、ロック通番としてロック通番記憶部２４２に記憶する。また、ロック要求受信部２４１は、第２のイベント処理部２３からロック解除の要求を受信した場合、ロック通番記憶部２４２に記憶したロック通番を削除すればよい。
【００７７】
アクセス要求受信部２４３は、第１のイベント処理部２２および第２のイベント処理部２３からの更新または参照の要求を受信すると、受信した要求を、通番読出部２４４に通知する。
【００７８】
通番読出部２４４は、通番記憶部２１２から、更新または参照の要求に含まれるイベントＩＤに関連付けられた通番を読み出して、通番比較部２４５に通知する。
【００７９】
通番比較部２４５は、通番読出部２４４から通知された通番と、ロック通番記憶部２４２に記憶されたロック通番との大小を比較し、比較結果をイベントデータアクセス制御部２４６に通知する。
【００８０】
イベントデータアクセス制御部２４６は、更新対象のイベントＩＤに対応付けられた通番よりロック通番が大きい場合、更新前のイベントデータの複製を保持することを決定し、退避先のアドレスを算出するよう、アドレス計算部２４７に通知する。また、イベントデータアクセス制御部２４６は、データ記憶部２１１において、更新対象のイベントＩＤに対応付けられたイベントデータを読み出し、アドレス計算部２４７から通知されたアドレスに複製して記憶する。
【００８１】
また、イベントデータアクセス制御部２４６は、更新対象のイベントＩＤに対応付けられた通番よりロック通番が小さい場合、更新前のイベントデータの複製を保持しないことを決定する。
【００８２】
また、イベントデータアクセス制御部２４６は、データ記憶部２１１において、更新対象のイベントＩＤに対応付けられたイベントデータを、更新の要求に含まれるイベントデータに更新する。また、イベントデータアクセス制御部２４６は、通番記憶部２１２において、更新対象のイベントＩＤに対応付けられた通番を、更新の要求に含まれる通番に更新する。そして、イベントデータアクセス制御部２４６は、更新が完了したことをアクセス要求応答部２４８に通知する。
【００８３】
また、イベントデータアクセス制御部２４６は、参照対象のイベントＩＤに対応付けられた通番よりロック通番が小さい場合、イベントデータの更新前の複製を応答することを決定し、退避先のアドレスを算出するよう、アドレス計算部２４７に通知する。また、イベントデータアクセス制御部２４６は、データ記憶部２１１から、アドレス計算部２４７より通知されたアドレスに記憶されたイベントデータを読み出し、アクセス要求応答部２４８に通知する。
【００８４】
また、イベントデータアクセス制御部２４６は、参照対象のイベントＩＤに対応付けられた通番よりロック通番が大きい場合、参照対象のイベントＩＤに対応付けられたイベントデータを応答することを決定する。具体的には、イベントデータアクセス制御部２４６は、データ記憶部２１１から、参照対象のイベントＩＤに対応付けられたイベントデータを読み出し、アクセス要求応答部２４８に通知する。
【００８５】
アドレス計算部２４７は、イベントデータアクセス制御部２４６から通知されたイベントＩＤの退避先のアドレスを算出する。
【００８６】
アクセス要求応答部２４８は、イベントデータアクセス制御部２４６から通知された情報を、アクセス要求元に応答する。具体的には、アクセス要求応答部２４８は、イベントデータアクセス制御部２４６から通知された更新完了を表す情報を、アクセス要求元である第１のイベント処理部２２に応答する。また、アクセス要求応答部２４８は、イベントデータアクセス制御部２４６から通知されたイベントデータを、アクセス要求元である第２のイベント処理部２３に応答する。
【００８７】
＜動作＞
以上のように構成されたイベント処理装置２の動作について、図１３〜図１７を参照して説明する。
【００８８】
［全体の動作］
まず、イベント処理装置２の全体の動作の概略を図１３に示す。
【００８９】
図１３では、まず、イベント処理装置２は、入力イベントを受信する（ステップＡ１）。
【００９０】
次に、通番付与部２５は、ステップＡ１で受信された入力イベントに通番を付与し、通番付きイベントを生成する（ステップＡ２）。
【００９１】
次に、第１のイベント処理部２２および第２のイベント処理部２３は、通番付きイベントを受け取り、並列して第１イベント処理および第２のイベント処理を実行する（ステップＡ３）。このステップの詳細については後述する。
【００９２】
次に、第1のイベント処理部２２からの出力イベントがある場合（ステップＡ４でＹｅｓ）、イベント処理装置２は、その出力イベントを外部へ出力する（ステップＡ５）。
【００９３】
次に、第２のイベント処理部２３からの出力イベントがある場合（ステップＡ６でＹｅｓ）、イベント処理装置２は、その出力イベントを外部へ出力する（ステップＡ７）。
【００９４】
そして、イベント処理装置２は、ステップＡ１からの処理を繰り返す。
【００９５】
以上で、イベント処理装置２の全体の動作の説明を終了する。
【００９６】
［第１のイベント処理部２２の動作］
次に、ステップＡ３における第１のイベント処理部２２の動作を図１４に示す。
【００９７】
図１４では、まず、第１のイベント処理部２２は、通番付与部２５より、通番付きイベントを受信する（ステップＢ１）。
【００９８】
次に、第１のイベント処理部２２は、ステップＢ１で受信された通番付きイベントから、イベント型、イベントＩＤ、イベントデータ、および、通番を取り出す（ステップＢ２）。
【００９９】
次に、第１のイベント処理部２２は、ステップＢ２で取り出したイベント型に基づいて、この通番付きイベントが、第１のイベント処理部２２での処理対象であるか否かを判断する（ステップＢ３）。
【０１００】
ここで、処理対象ではないと判断した場合、第1のイベント処理部２２は、ステップＢ１からの処理を繰り返す。
【０１０１】
一方、処理対象であると判断した場合、第1のイベント処理部２２は、イベント記憶部２１において、ステップＢ２で取り出した更新対象のイベントＩＤに対応付けられているイベントデータを、ステップＢ２で取り出したイベントデータに更新するよう、イベント記憶管理部２４に対して要求する（ステップＢ４）。この要求に対するイベント記憶管理部２４での更新処理は後述する。
【０１０２】
次に、第1のイベント処理部２２は、イベント記憶管理部２４から、更新要求に対する応答（更新完了）を受け取る（ステップＢ５）。
【０１０３】
次に、第1のイベント処理部２２は、更新したイベントデータを用いて、第１のイベント処理で定められた処理を行う（ステップＢ６）。このとき、第1のイベント処理部２２は、第１のイベント処理内容にしたがって出力イベントを作成する場合もある。
【０１０４】
次に、第1のイベント処理部２２は、ステップＢ６で出力イベントを作成した場合は、その出力イベントを出力する（ステップＢ７）。
【０１０５】
そして、第1のイベント処理部２２は、ステップＢ１からの動作を繰り返す。
【０１０６】
以上で、第１のイベント処理部２２の動作の説明を終了する。
【０１０７】
［第２のイベント処理部２３の動作］
次に、第２のイベント処理部２３の動作を図１５に示す。なお、図１５に示す第２のイベント処理部２３の動作は、図１４に示した第１のイベント処理部２２の動作と並列して実行される。
【０１０８】
図１５では、まず、第２のイベント処理部２３は、通番付与部２５より、通番付きイベントを受信する（ステップＣ１）。
【０１０９】
次に、第２のイベント処理部２３は、ステップＣ１で受信した通番付きイベントから、イベント型、イベントＩＤ、イベントデータ、および、通番を取り出す（ステップＣ２）。
【０１１０】
次に、第２のイベント処理部２３は、ステップＣ２で取り出したイベント型に基づいて、この通番付きイベントが、第２のイベント処理部２３での処理対象であるか否かを判断する（ステップＣ３）。
【０１１１】
ここで、処理対象でないと判断した場合、第２のイベント処理部２３は、ステップＣ１からの処理を繰り返す。
【０１１２】
一方、処理対象であると判断した場合、第２のイベント処理部２３は、イベント記憶管理部２４に対して、ステップＣ２で取り出した通番を通知してロック設定を要求する（ステップＣ４）。この要求に対するイベント記憶管理部２４でのロック処理は後述する。
【０１１３】
次に、第２のイベント処理部２３は、イベント記憶管理部２４から、ロック設定の要求に対する応答（ロック完了）を受け取る（ステップＣ５）。
【０１１４】
次に、第２のイベント処理部２３は、イベント記憶管理部２４に対して、第２のイベント処理において必要となるイベントデータの１つに対する参照要求を行う（ステップＣ６）。この要求に対するイベント記憶管理部２４での参照処理は後述する。
【０１１５】
次に、第２のイベント処理部２３は、イベント記憶管理部２４から、参照要求の応答としてイベントデータを受け取る（ステップＣ７）。
【０１１６】
次に、第２のイベント処理部２３は、ステップＣ７で得られたイベントデータについて、第２のイベント処理において定められた処理を行う（ステップＣ８）。
【０１１７】
次に、第２のイベント処理部２３は、第２のイベント処理において必要なイベントデータが全て得られたか否かを判断する（ステップＣ９）。
【０１１８】
ここで、必要となる全てのイベントデータが得られていないと判断した場合、第２のイベント処理部２３は、ステップＣ６からの処理を繰り返す。
【０１１９】
一方、全てのイベントデータが得られたと判断した場合、第２のイベント処理部２３は、これまでのステップＣ７で得られた１つ以上のイベントデータを用いて、第２のイベント処理において定められた処理を行う（ステップＣ１０）。このとき、第２のイベント処理部２３は、第２のイベント処理内容にしたがって出力イベントを作成する場合もある。
【０１２０】
次に、第２のイベント処理部２３は、ステップＣ１０で出力イベントを作成した場合は、その出力イベントを出力する（ステップＣ１１）。この後、第２のイベント処理部２３は、イベント記憶管理部２４に対して、ロック解除の要求を行ってもよい。
【０１２１】
そして、第２のイベント処理部２３は、ステップＣ１からの動作を繰り返す。
【０１２２】
以上で、第２のイベント処理部２３の動作の説明を終了する。
【０１２３】
［イベント記憶管理部２４の動作］
次に、イベント記憶管理部２４の動作を図１６に示す。なお、図１６に示すイベント記憶管理部２４の動作は、図１４に示した第１のイベント処理部２２の動作および図１５に示した第２のイベント処理部２３の動作と並列に実行される。
【０１２４】
図１６では、まず、イベント記憶管理部２４は、第１のイベント処理部２２からの更新要求があるか否かを判断する（ステップＤ１）。
【０１２５】
ここで、更新要求があると判断した場合、イベント記憶管理部２４は、更新処理を実行する（ステップＤ４〜Ｄ１１）。これらのステップの詳細については後述する。
【０１２６】
次に、イベント記憶管理部２４は、第２のイベント処理部２３からのロック要求があるか否かを判断する（ステップＤ２）。
【０１２７】
ここで、ロック要求があると判断した場合、イベント記憶管理部２４は、ロック処理を実行する（ステップＤ１２〜Ｄ１４）。これらのステップの詳細については後述する。
【０１２８】
次に、イベント記憶管理部２４は、第２のイベント処理部２３からの参照要求があるか否かを判断する（ステップＤ３）。
【０１２９】
ここで、参照要求があると判断した場合、イベント記憶管理部２４は、参照処理を実行する（ステップＤ１５〜Ｄ２２）。これらのステップの詳細は後述する。
【０１３０】
そして、イベント記憶管理部２４は、ステップＤ１からの処理を繰り返す。
【０１３１】
［イベント記憶管理部２４の更新処理］
イベント記憶管理部２４による更新処理を図１７に示す。ここでは、イベント記憶管理部２４が、図１２に示した構成を有する場合の動作について説明する。
【０１３２】
図１７では、まず、アクセス要求受信部２４３は、第１のイベント処理部２２からの更新要求を受信する（ステップＤ４）。受信される更新要求には、イベントＩＤ、イベントデータ、および、通番が含まれる。
【０１３３】
次に、通番読出部２４４は、通番記憶部２１２から、更新要求に含まれるイベントＩＤに対応付けられた通番を読み出す（ステップＤ５）。
【０１３４】
次に、通番比較部２４５は、ロック通番記憶部２４２からロック通番を読み出す（ステップＤ６）。
【０１３５】
次に、通番比較部２４５は、通番記憶部２１２から読みだした通番と、ロック通番との大小を比較する（ステップＤ７）。
【０１３６】
ここで、ロック通番のほうが大きい（ロック通番のほうが新しい）場合、アドレス計算部２４７は、イベントＩＤをもとに待避先のアドレスを決定する（ステップＤ８）。
【０１３７】
次に、イベントデータアクセス制御部２４６は、データ記憶部２１１において、イベントＩＤに対応付けられて格納されているイベントデータを複製し、待避先のアドレスに格納する（ステップＤ９）。
【０１３８】
次に、イベントデータアクセス制御部２４６は、データ記憶部２１１において、更新要求において通知されたイベントＩＤに対応付けられたイベントデータを、更新要求において通知されたイベントデータに更新する。また、イベントデータアクセス制御部２４６は、通番記憶部２１２において、更新要求において通知されたイベントＩＤに対応付けられた通番を、更新要求において通知された通番に更新する（ステップＤ１０）。
【０１３９】
次に、アクセス要求応答部２４８は、第１のイベント処理部２２に対して、更新完了を応答する（ステップＤ１１）。
【０１４０】
以上で、イベント記憶管理部２４は、更新処理を終了し、図１６のステップＤ２の処理に戻る。
【０１４１】
［イベント記憶管理部２４のロック処理］
次に、イベント記憶管理部２４のロック処理の動作を図１８に示す。
【０１４２】
図１８では、まず、ロック要求受信部２４１は、第２のイベント処理部２３からのロック要求を受け取る（ステップＤ１２）。このロック要求には、ロック設定またはロック解除を表す情報が含まれる。ロック設定を表す情報には、通番が含まれる。
【０１４３】
次に、ロック要求受信部２４１は、ロック要求がロック設定を示す場合に、ロック通番記憶部２４２に、通知された通番を格納する。また、ロック要求受信部２４１は、ロック要求がロック解除を示す場合に、ロック通番記憶部２４２に格納されたロック通番を削除する（ステップＤ１３）。
【０１４４】
次に、ロック要求受信部２４１は、第２のイベント処理部２３に対して、ロック完了を表す情報を応答する（ステップＤ１４）。
【０１４５】
以上で、イベント記憶管理部２４は、更新処理を終了し、図１６のステップＤ３の処理に戻る。
【０１４６】
［イベント記憶管理部２４の参照処理］
次に、イベント記憶管理部２４の参照処理を図１９に示す。
【０１４７】
図１９では、まず、アクセス要求受信部２４３は、第２のイベント処理部２３からの参照要求を受信する（ステップＤ１５）。この参照要求には、イベントＩＤが含まれる。
【０１４８】
次に、通番読出部２４４が、通番記憶部２１２から、参照要求に含まれるイベントＩＤに対応付けられた通番を読み出す（ステップＤ１６）。
【０１４９】
次に、通番比較部２４５は、ロック通番記憶部２４２からロック通番を読み出す（ステップＤ１７）。
【０１５０】
次に、通番比較部２４５は、通番記憶部２１２から読みだした通番と、ロック通番との大小を比較する（ステップＤ１８）。
【０１５１】
ここで、ロック通番のほうが小さい（ロック通番のほうが古い）場合、アドレス計算部２４７は、参照要求に含まれるイベントＩＤをもとに待避先のアドレスを算出する（ステップＤ１９）。
【０１５２】
次に、イベントデータアクセス制御部２４６は、データ記憶部２１１において、退避先のアドレスに格納されているイベントデータを読み出す（ステップＤ２０）。
【０１５３】
一方、ステップＳ１８において、ロック通番のほうが大きい場合には、イベントデータアクセス制御部２４６は、データ記憶部２１１において、参照要求に含まれるイベントＩＤに対応付けられたイベントデータを読み出す（ステップＤ２１）。
【０１５４】
次に、アクセス要求応答部２４８は、ステップＤ２０またはＤ２１で読み出されたイベントデータを、参照要求の応答として、第２のイベント処理部２３に応答する。
【０１５５】
そして、イベント記憶管理部２４は、図１６のステップＤ１からの処理を繰り返す。
【０１５６】
以上で、イベント記憶管理部２４の動作の説明を終了する。
【０１５７】
＜動作の具体例＞
次に、イベント処理装置２の動作を具体例で示す。ここでは、イベント処理装置２が、走行中の複数の車両からそれぞれの走行速度（車速）を収集するとともに、平均車両速度計算要求に応じてこれら車両の走行速度の平均を計算し出力する例について説明する。
【０１５８】
この具体例では、イベント処理装置２は、入力イベントとして、車両速度イベントと、平均車両速度計算要求イベントとの２種類を受信する。
【０１５９】
車両速度イベントは、図２０に示すように、イベント型として整数“1”と、イベントＩＤとして車両ＩＤと、イベントデータとして車両速度とを含む。また、平均車両速度計算要求イベントは、図２１に示すように、イベント型として整数“２”と、イベントＩＤとして定数ＮＵＬＬと、イベントデータとして定数ＮＵＬＬとを含む。ここで、定数ＮＵＬＬは、特別な値を持たないことを表す。
【０１６０】
また、第１のイベント処理部２２は、イベント型として整数“１”を含む車両速度イベントを処理対象とする。また、第１のイベント処理部２２は、第１のイベント処理として、車両速度イベントに含まれる車両ＩＤについてイベント記憶部２１に記憶された車両速度を、車両速度イベントに含まれる車両速度に更新する処理を実行する。なお、この具体例では、第１のイベント処理部２２は、出力イベントを生成しないものとする。
【０１６１】
また、第２のイベント処理部２３は、イベント型として整数“２”を含む平均車両速度計算要求イベントを処理対象とする。また、第２のイベント処理部２３は、第２のイベント処理として、平均車両速度計算要求イベントの受信時点でイベント記憶部２１に記憶されている１つ以上の車両の車両速度の平均を求める処理を実行する。そして、第２のイベント処理部２３は、算出した平均車両速度を含む平均車両速度イベントを、出力イベントとして生成する。
【０１６２】
平均車両速度イベントは、図２２に示すように、イベント型として整数“３”と、イベントＩＤとして定数ＮＵＬＬと、イベントデータとして平均車両速度とを含む。
【０１６３】
また、この具体例では、イベント記憶部２１は、データ記憶部２１１においてイベントＩＤ（車両ＩＤ）の示す番地に、対応するイベントデータ（車両速度）を記憶するものとする。同様に、イベント記憶部２１は、通番記憶部２１２においてイベントＩＤ（車両ＩＤ）の示す番地に、対応する通番を記憶するものとする。また、イベント記憶部２１は、図２３に示す情報を、既に記憶しているものとする。
【０１６４】
また、この具体例では、図２４に示す入力イベントが連続して発生し、イベント処理装置２によって受信される場合について説明する。つまり、以下の説明では、イベント処理装置２は、図２４の１行目から６行目までの車両速度イベントを次々と受信し、次に、７行目の平均車両速度計算要求イベントを受信し、その後、８行目以降の車両速度イベントを次々と受信するものとする。
【０１６５】
［車両速度イベントの処理］
まず、車両速度イベントの処理について説明する。
【０１６６】
ここでは、まず、イベント処理装置２は、入力イベントとして、図２４の１行目の車両速度イベント（“１”，１，９０ｋｍ／h）を受信する（図１３のステップＡ１）。
【０１６７】
次に、通番付与部２５は、この車両速度イベントに通番“１００”を付与し、通番付きイベント（“１”，１，９０ｋｍ／h，１００）を生成する（ステップＡ２）。
【０１６８】
次に、第１のイベント処理部２２および第２のイベント処理部２３は、この通番付きイベントを受け取る（ステップＡ３、図１４のステップＢ１、図１５のステップＣ１）。
【０１６９】
次に、第２のイベント処理部２３は、この通番付きイベントから、イベント型“１”、イベントＩＤ（車両ＩＤ）“１”、イベントデータ（車両速度）“９０ｋｍ／ｈ”、および、通番“１００”を取り出す（ステップＣ２）。
【０１７０】
次に、第２のイベント処理部２３は、イベント型“１”を参照し、この通番付きイベントが第２のイベント処理部２３の処理対象でないと判断する（ステップＣ３でＮｏ）。
【０１７１】
また、第２のイベント処理部２３の動作と並行して、第１のイベント処理部２２は、受信した通番付きイベントから、イベント型“１”、イベントＩＤ（車両ＩＤ）“１”、イベントデータ（車両速度）“９０ｋｍ／ｈ”、および、通番“１００”を取り出す（ステップＢ２）。
【０１７２】
次に、第１のイベント処理部２２は、イベント型“１”を参照し、この通番付きイベントが第１のイベント処理部２２の処理対象であると判断する（ステップＢ３でＹｅｓ）。
【０１７３】
次に、第１のイベント処理部２２は、受信した通番付きイベントに基づいてイベント記憶部２１を更新するよう、イベント記憶管理部２４に対して更新要求を行う（ステップＢ４）。この更新要求には、イベントＩＤ（車両ＩＤ）“１”と、イベントデータ（車両速度）“９０ｋｍ／ｈ”と、通番“１００”とが含まれる。
【０１７４】
ここで、上述の動作において、イベント処理装置２の内部で入出力される情報を模式的に図２５に示す。図２５では、車両速度イベント（“１”，１，９０ｋｍ／h）がイベント処理装置２に入力されると、通番付きイベント（“１”，１，９０ｋｍ／h，１００）が、通番付与部２５から第１のイベント処理部２２および第２のイベント処理部２３に入力されている。そして、更新要求（１，９０ｋｍ／h，１００）が、第１のイベント処理部２２からイベント記憶管理部２４に入力されている。
【０１７５】
次に、イベント記憶管理部２４においてアクセス要求受信部２４３は、第１のイベント処理部２２からの更新要求（１，９０ｋｍ／h，１００）を受信する（図１６のステップＤ１でＹｅｓ、図１７のステップＤ４）。
【０１７６】
次に、通番読出部２４４は、図２３に示した通番記憶部２１２から、更新要求に含まれるイベントＩＤ（車両ＩＤ）“１”に対応付けられている通番“９１”を読み出す（ステップＤ５）。
【０１７７】
次に、通番比較部２４５は、ロック通番記憶部２４２からロック通番を読み出す（ステップＤ６）。ここでは、ロック通番記憶部２４２には、ロック通番“０”が保持されていたものとする。
【０１７８】
次に、通番比較部２４５は、通番記憶部２１２から読みだした通番“９１”と、ロック通番“０”との大小を比較し、ロック通番のほうが小さいと判断する（ステップＤ７でＮｏ）。
【０１７９】
そこで、イベントデータアクセス制御部２４６は、更新前のイベントデータの複製を保持せずに、対象のイベントデータの更新を行う。具体的には、イベントデータアクセス制御部２４６は、データ記憶部２１１において、更新対象のイベントＩＤ“１”に対応する番地“１”のイベントデータを、更新要求に含まれるイベントデータ“９０ｋｍ／ｈ”に更新する。また、イベントデータアクセス制御部２４６は、通番記憶部２１２において、更新対象のイベントＩＤ“１”に対応する番地“１”の通番を、更新要求に含まれる通番“１００”に更新する（ステップＤ１０）。
【０１８０】
次に、アクセス要求応答部２４８は、第１のイベント処理部２２に対して、更新要求の完了を応答し（ステップＤ１１）、第１のイベント処理部２２は、応答を受け取る（ステップＢ５）。
【０１８１】
ここで、上述の動作において、イベント記憶管理部２４およびイベント記憶部２１の内部で入出力される情報を、模式的に図２６および図２７に示す。図２６では、更新要求（１，９０ｋｍ／h，１００）がアクセス要求受信部２４３に入力されると、更新対象のイベントＩＤ“１”に対応する通番“９１”が、通番記憶部２１２から通番読出部２４４によって読み出されている。また、図２７において、ロック通番“０”は、読み出された通番“９１”より小さいので、更新前の複製の保持は行われない。そして、図２７において、データ記憶部２１１の番地１および通番記憶部２１２の番地１にそれぞれ格納される情報は、更新要求に含まれていた“９０ｋｍ／ｈ”および“１００”に更新されている。
【０１８２】
なお、前述したように、この具体例では、第１のイベント処理部２２は、出力イベントを生成しないので、ステップＢ６およびＢ７を省略する。
【０１８３】
このようにして、第１のイベント処理部２２は、図２４の１行目に示した車両速度イベントに基づく処理を終了する。
【０１８４】
同様にして、図２４に示した入力イベントの２〜６行目がイベント処理装置２に入力されると、通番付与部２５は通番を付与する処理を繰り返す。その結果、第１のイベント処理部２２および第２のイベント処理部２３に送られる通番付きイベントは、図２８の２行目から６行目に示す通りとなる。
【０１８５】
そして、第２のイベント処理部２３は、図２８の２〜６行目の通番付き入力イベントを次々と受け取り、それぞれ処理対象でないと判断する（ステップＣ１、Ｃ２、Ｃ３でＮｏ）。
【０１８６】
また、第１のイベント処理部２２は、図２８の２行目から６行目の各通番付きイベントを受信する度、上述と同様の動作を繰り返す。その結果、イベント記憶部２１に記憶される情報は、図２９に示す通りとなる。図２９では、データ記憶部２１１において、番地０から番地５までの各データは、図２８の１行目から６行目の通番付きイベントのうち該当するイベントＩＤのイベントデータ（車両速度）に更新されている。また、通番記憶部２１２において、番地０から番地５までの各データは、図２８の１行目から６行目の通番付きイベントのうち該当するイベントＩＤの通番に更新されている。
【０１８７】
［平均車両速度計算要求イベントの処理］
次に、平均車両速度計算要求イベントに対する処理について説明する。
【０１８８】
ここでは、まず、イベント処理装置２は、入力イベントとして、図２４の７行目に示した平均車両速度計算要求イベント（“２”，ＮＵＬＬ，ＮＵＬＬ）を受信する（図１３のステップＡ１）。
【０１８９】
次に、通番付与部２５は、この平均車両速度計算要求イベントに通番“１０６”を付与し、通番付きイベント（“２”，ＮＵＬＬ，ＮＵＬＬ，１０６）を生成する（ステップＡ２）。
【０１９０】
次に、第１のイベント処理部２２および第２のイベント処理部２３は、この通番付きイベントを受け取る（ステップＡ３、図１４のステップＢ１、図１５のステップＣ１）。
【０１９１】
次に、第１のイベント処理部２２は、この通番付きイベントから、イベント型“２”、イベントＩＤ“ＮＵＬＬ”、イベントデータ“ＮＵＬＬ”、および、通番“１０６”を取り出す（ステップＢ２）。
【０１９２】
次に、第１のイベント処理部２２は、イベント型“２”を参照し、この通番付きイベントが第１のイベント処理部２２での処理対象でないと判断する（ステップＢ３でＮｏ）。
【０１９３】
また、第１のイベント処理部２２の動作と並行して、第２のイベント処理部２３は、受信した通番付きイベントから、イベント型“２”、イベントＩＤ“ＮＵＬＬ”、イベントデータ“ＮＵＬＬ”、および、通番“１０６”を取り出す（ステップＣ２）。
【０１９４】
次に、第２のイベント処理部２３は、イベント型“２”を参照し、この通番付きイベントが第２のイベント処理部２３での処理対象であると判断する（ステップＣ３でＹｅｓ）。
【０１９５】
次に、第２のイベント処理部２３は、イベント記憶管理部２４に対して、ロック要求を行う（ステップＣ４）。このロック要求には、通番“１０６”が含まれる。
【０１９６】
ここで、上述の動作において、イベント処理装置２の内部で入出力される情報を模式的に図３０に示す。図３０では、平均車両速度計算要求イベント（“２”，ＮＵＬＬ，ＮＵＬＬ）がイベント処理装置２に入力されると、通番付きイベント（“２”，ＮＵＬＬ，ＮＵＬＬ，１０６）が、通番付与部２５から第１のイベント処理部２２および第２のイベント処理部２３に入力されている。そして、通番“１０６”を含むロック要求が、第２のイベント処理部２３からイベント記憶管理部２４に入力されている。
【０１９７】
次に、イベント記憶管理部２４においてロック要求受信部２４１は、第２のイベント処理部２３からのロック要求“１０６”を受け取る（図１６のステップＤ２でＹｅｓ、図１８のステップＤ１２）。
【０１９８】
次に、ロック要求受信部２４１は、ロック要求に含まれる通番“１０６”を、ロック通番記憶部２４２に格納する（ステップＤ１３）。
【０１９９】
次に、ロック要求受信部２４１は、第２のイベント処理部２３に対して、ロック完了を表す情報を応答し（ステップＤ１４）、第２のイベント処理部２３は、応答を受け取る（ステップＣ５）。
【０２００】
ここで、上述の動作において、イベント記憶管理部２４およびイベント記憶部２１の内部で入出力される情報を、模式的に図３１に示す。図３１では、ロック要求“１０６”がロック要求受信部２４１に入力されると、ロック通番記憶部２４２に、ロック通番“１０６”が格納されている。
【０２０１】
次に、第２のイベント処理部２３は、第２のイベント処理に必要となる１つ以上のイベントデータのうち１つに対する参照要求を、イベント記憶管理部２４に対して行う（ステップＣ６）。
【０２０２】
前述したように、第２のイベント処理は、平均車両速度計算要求イベントの受信時点でイベント記憶部２１に記憶されている１つ以上の車両（ここでは、車両ＩＤ“０”から“５”までの車両）の車両速度の平均を求める処理である。そこで、まず、第２のイベント処理部２３は、イベントＩＤ（車両ＩＤ）“０”のイベントデータの参照要求を、イベント記憶管理部２４に対して行う。この参照要求には、イベントＩＤ“０”が含まれる。
【０２０３】
次に、イベント記憶管理部２４においてアクセス要求受信部２４３は、第２のイベント処理部２３から、この参照要求を受け取る（図１９のステップＤ１５）。
【０２０４】
次に、通番読出部２４４は、図２９に示した通番記憶部２１２から、参照要求に含まれるイベントＩＤ“０”に対応付けられている通番“１０１”を読み出す（ステップＤ１６）。
【０２０５】
次に、通番比較部２４５は、ロック通番記憶部２４２から、ロック通番“１０６を読み出す（ステップＤ１７）。
【０２０６】
次に、通番比較部２４５は、通番記憶部２１２から読みだした通番“１０１”と、ロック通番“１０６”との大小を比較し、ロック通番のほうが大きいと判断する（ステップＤ１８でＮｏ）。
【０２０７】
そこで、イベントデータアクセス制御部２４６は、図２９のデータ記憶部２１１から、参照対象のイベントＩＤ“０”に対応する番地“０”に格納されているイベントデータ“８０ｋｍ／ｈ”を読み出す（ステップＤ２１）。
【０２０８】
次に、アクセス要求応答部２４８は、第２のイベント処理部２３に対して、読み出したイベントデータ“８０ｋｍ／ｈ”を応答し（ステップＤ２２）、第２のイベント処理部２３は、応答を受け取る（ステップＣ７）。
【０２０９】
ここで、上述の動作において、イベント記憶管理部２４およびイベント記憶部２１の内部で入出力される情報を、模式的に図３２に示す。図３２では、イベントＩＤ“０”を含む参照要求が、第２のイベント処理部２３からアクセス要求受信部２４３に入力されると、参照対象のイベントＩＤ“０”に対応する通番“１０１”が、通番記憶部２１２から通番読出部２４４によって読み出されている。また、ロック通番“１０６”は、読み出された通番“１０１”より大きい。そこで、参照対象のイベントＩＤ“０”に対応するイベントデータ“８０ｋｍ／ｈ”が、データ記憶部２１１からイベントデータアクセス制御部２４６によって読み出されている。
【０２１０】
［車両速度イベントの処理］
ここで、第２のイベント処理部２３による平均車両速度計算処理の完了を待たずに、イベント処理装置２が、図２４の８行目の車両速度イベント（“１”，１，９５ｋｍ／h）を受信したとする（図１３のステップＡ１）。
【０２１１】
次に、通番付与部２５は、この車両速度イベントに通番“１０７”を付与し、通番付きイベント（“１”，１，９５ｋｍ／h，１０７）を生成する（ステップＡ２）。
【０２１２】
次に、第１のイベント処理部２２および第２のイベント処理部２３は、この通番付きイベントを受け取る（ステップＡ３、図１４のステップＢ１、図１５のステップＣ１）。
【０２１３】
次に、第２のイベント処理部２３は、この通番付きイベントから、イベント型“１”、イベントＩＤ（車両ＩＤ）“１”、イベントデータ（車両速度）“９５ｋｍ／ｈ”、および、通番“１０７”を取り出す（ステップＣ２）。
【０２１４】
次に、第２のイベント処理部２３は、イベント型“１”を参照し、この通番付きイベントが第２のイベント処理部２３の処理対象でないと判断する（ステップＣ３でＮｏ）。
【０２１５】
また、第２のイベント処理部２３の処理と並行して、第１のイベント処理部２２は、受信した通番付きイベントから、イベント型“１”、イベントＩＤ（車両ＩＤ）“１”、イベントデータ（車両速度）“９５ｋｍ／ｈ”、および、通番“１０７”を取り出す（ステップＢ２）。
【０２１６】
次に、第１のイベント処理部２２は、イベント型“１”を参照し、この通番付きイベントが第１のイベント処理部２２での処理対象であると判断する（ステップＢ３でＹｅｓ）。
【０２１７】
次に、第１のイベント処理部２２は、受信した通番付きイベントに基づいてイベント記憶部２１を更新するよう、イベント記憶管理部２４に対して更新要求を行う（ステップＢ４）。この更新要求には、イベントＩＤ（車両ＩＤ）“１”と、イベントデータ（車両速度）“９５ｋｍ／ｈ”と、通番“１０７”とが含まれる。
【０２１８】
次に、イベント記憶管理部２４においてアクセス要求受信部２４３は、第１のイベント処理部２２からの更新要求（“１”，９５ｋｍ／ｈ，１０７）を受信する（図１６のステップＤ１でＹｅｓ、図１７のステップＤ４）。
【０２１９】
次に、通番読出部２４４は、図２９に示した通番記憶部２１２から、更新要求に含まれるイベントＩＤ（車両ＩＤ）“１”に対応付けられて記憶されている通番“１００”を読み出す（ステップＤ５）。
【０２２０】
次に、通番比較部２４５は、ロック通番記憶部２４２から、ロック通番“１０６”を読み出す（ステップＤ６）。
【０２２１】
次に、通番比較部２４５は、通番記憶部２１２から読みだした通番“１００”と、ロック通番“１０６”との大小を比較し、ロック通番のほうが大きい（ロック通番のほうが新しい）と判断する（ステップＤ７でＹｅｓ）。
【０２２２】
そこで、アドレス計算部２４７は、更新対象のイベントＩＤ“１”に対応する番地１の退避先のアドレスとして、番地１０１を算出する（ステップＤ８）。
【０２２３】
次に、イベントデータアクセス制御部２４６は、番地１に格納されているイベントデータ“９０ｋｍ／ｈ”を読み出して、退避先の番地１０１に複製する（ステップＤ９）。
【０２２４】
次に、イベントデータアクセス制御部２４６は、データ記憶部２１１において、更新対象のイベントＩＤ“１”に対応する番地１のイベントデータを、更新要求に含まれるイベントデータ“９５ｋｍ／ｈ”に更新する。また、イベントデータアクセス制御部２４６は、通番記憶部２１２において、更新対象のイベントＩＤ“１”に対応する番地１の通番を、更新要求に含まれる通番“１０７”に更新する（ステップＤ１０）。
【０２２５】
次に、アクセス要求応答部２４８は、第１のイベント処理部２２に対して、更新要求の完了を応答し（ステップＤ１１）、第１のイベント処理部２２は、応答を受け取る（ステップＢ５）。
【０２２６】
ここで、上述の動作において、イベント記憶管理部２４およびイベント記憶部２１の内部で入出力される情報を、模式的に図３３および図３４に示す。
【０２２７】
図３３では、更新要求（１，９５ｋｍ／h，１０７）がアクセス要求受信部２４３に入力されると、更新対象のイベントＩＤ“１”に対応する通番“１００”が、通番記憶部２１２から通番読出部２４４によって読み出されている。また、図３３において、ロック通番“１０６”は、読み出された通番“１００”より大きいので、更新前の複製の保持が行われる。そこで、番地１に対する退避先の番地１０１が、アドレス計算部２４７からイベントデータアクセス制御部２４６に応答されている。そして、データ記憶部２１１における退避先の番地１０１には、番地１のイベントデータ“９０ｋｍ／ｈ”の複製が格納されている。
【０２２８】
また、図３４では、データ記憶部２１１の番地１および通番記憶部２１２の番地１にそれぞれ格納される情報は、更新要求に含まれていた“９５ｋｍ／ｈ”および“１０７”に更新されている。
【０２２９】
なお、前述したように、この具体例では、第１のイベント処理部２２は、出力イベントを生成しないので、ステップＢ６およびＢ７を省略する。
【０２３０】
このようにして、第１のイベント処理部２２は、図２４の８行目に示した車両速度イベントに基づく処理を終了する。
【０２３１】
［平均車両速度計算要求イベントの処理］
続いて、第２のイベント処理部２３における平均車両速度計算要求イベントの処理の続きについて説明する。第２のイベント処理部２３は、通番“１０６”が付与された平均車両速度計算要求イベントの処理を継続中である。前述のように、第２のイベント処理部２３は、平均車両速度計算要求イベントの処理に必要なイベントＩＤ“０”〜“５”に対応するイベントデータのうち、イベントＩＤ“０”のイベントデータを既に得ている。
【０２３２】
続いて、第２のイベント処理部２３は、イベント記憶管理部２４に対して、イベントＩＤ“１”に対応するイベントデータの参照を要求する（ステップＣ６）。この参照要求には、イベントＩＤ“１”が含まれる。
【０２３３】
次に、イベント記憶管理部２４においてアクセス要求受信部２４３は、第２のイベント処理部２３から、この参照要求を受けとる（図１９のステップＤ１５）。
【０２３４】
次に、通番読出部２４４は、図３４に示した通番記憶部２１２から、参照要求に含まれるイベントＩＤ“１”に対応付けられた通番“１０７”を読み出す（ステップＤ１６）。
【０２３５】
次に、通番比較部２４５は、ロック通番記憶部２４２からロック通番“１０６を読み出す（ステップＤ１７）。
【０２３６】
次に、通番比較部２４５は、通番記憶部２１２から読みだした通番“１０７”と、ロック通番“１０６”との大小を比較し、ロック通番のほうが小さい（ロック通番のほうが古いと判断する（ステップＤ１８でＹｅｓ）。
【０２３７】
そこで、アドレス計算部２４７は、参照対象のイベントＩＤ“１”に対応する番地１の退避先のアドレスとして、番地１０１を算出する（ステップＤ１９）。
【０２３８】
次に、イベントデータアクセス制御部２４６は、図３４のデータ記憶部２１１から、退避先の番地１０１に格納されているイベントデータ“９０ｋｍ／ｈ”を読み出す（ステップＤ２０）。
【０２３９】
次に、アクセス要求応答部２４８は、第２のイベント処理部２３に対して、読み出したイベントデータ“９０ｋｍ／ｈ”を応答し（ステップＤ２２）、第２のイベント処理部２３は、応答を受け取る（ステップＣ７）。
【０２４０】
ここで、上述の動作において、イベント記憶管理部２４およびイベント記憶部２１の内部で入出力される情報を、模式的に図３５に示す。図３５では、イベントＩＤ“１”を含む参照要求が、第２のイベント処理部２３からアクセス要求受信部２４３に入力されると、参照対象のイベントＩＤ“１”に対応する通番“１０７”が、通番記憶部２１２から通番読出部２４４によって読み出されている。図３５において、ロック通番“１０６”は、読み出された通番“１０７”より小さいので、退避先の番地からの参照が行われる。そこで、番地１に対する退避先の番地１０１が、アドレス計算部２４７からイベントデータアクセス制御部２４６に応答されている。そして、退避先の番地１０１に格納されたイベントデータ“９０ｋｍ／ｈ”が、データ記憶部２１１からイベントデータアクセス制御部２４６によって読み出されている。
【０２４１】
上述したように、第２のイベント処理部２３による図２４の７行目の平均車両速度計算要求イベントの処理には、このイベントの受信時点でイベント記憶部２１においてイベントＩＤ“０”〜“５”に対応付けられていたイベントデータが必要である。ここで、上述のように、第２のイベント処理部２３によってこれらの必要な全てのイベントデータが参照される前に、いくつかのイベントデータが更新されることがある。上述の例では、イベント記憶部２１において、イベントＩＤ“１”に対応するイベントデータは、第２のイベント処理部２３によって参照される前に、より新しいイベントデータ“９５ｋｍ／ｈ”に更新されている。そのような場合であっても、第２のイベント処理部２３は、７行目の平均車両速度計算要求イベントを受信した時点でイベントＩＤ“1”に対応付けられて記憶されていたイベントデータ“９０ｋｍ／ｈ”を、正しく取得することができる。
【０２４２】
以降、第２のイベント処理部２３は、同様にして、イベントＩＤ“２”〜“５”までについて、７行目の平均車両速度計算要求イベントの受信時点でのイベントデータを取得する。そして、第２のイベント処理部２３は、このようにして得たイベントＩＤ“０”〜“５”の車両速度の平均を算出し、出力イベントとして外部に出力する（ステップＣ１０、Ｃ１１）。
【０２４３】
以上で、イベント処理装置２の動作の具体例の説明を終了する。
【０２４４】
次に、本発明の第２の実施の形態の効果について述べる。
【０２４５】
本発明の第２の実施の形態としてのイベント処理装置は、データの複製コストをさらに効率よく抑えながら、共有されるデータに対する更新処理および参照処理の順番を変更可能とする。
【０２４６】
その理由は、通番付与部が、入力イベントに対して通番を付与し、イベント記憶部が、イベントＩＤに関連付けて、イベントデータおよび該イベントデータが更新された際のイベントの通番を記憶するからである。そして、イベント記憶管理部が、第２のイベント処理部によって処理中のイベントの通番（ロック通番）を記憶しておき、更新対象のイベントＩＤに関連付けられた通番およびロック通番の大小に基づいて、イベントデータの更新前にその複製を保持するか否かを判断するからである。また、イベント記憶管理部が、参照対象のイベントＩＤに関連付けられた通番およびロック通番の大小に基づいて、参照対象のイベントＩＤに対応付けられたイベントデータおよびその更新前の複製のいずれを応答するかを判断するからである。
【０２４７】
これにより、本実施の形態は、イベントデータの参照を要する第２のイベント処理によって必要なイベントデータが、参照される前に第１のイベント処理によって更新されても、第２のイベント処理においてイベントデータの更新前の複製を参照することができるので、第１のイベント処理および第２のイベント処理の順序を変更しても所望の結果を得ることができる。しかも、本実施の形態は、更新要求のあった全てのイベントデータについて複製を保持する必要はなく、更新要求があったイベントデータのうち、継続中の第２のイベント処理において参照対象とされているものについてのみ、複製を保持すればよいので、複製コストをさらに抑えることができる。
【０２４８】
（第３の実施の形態）
次に、本発明の第３の実施の形態について図面を参照して詳細に説明する。なお、本実施の形態の説明において参照する各図面において、本発明の第２の実施の形態と同一の構成および同様に動作するステップには同一の符号を付して本実施の形態における詳細な説明を省略する。
【０２４９】
＜構成＞
まず、本発明の第３の実施の形態としてのイベント処理装置３の構成を図３６に示す。図３６において、イベント処理装置３は、本発明の第２の実施の形態としてのイベント処理装置２に対して、イベント記憶部２１に替えてイベント記憶部３１と、イベント記憶管理部２４に替えてイベント記憶管理部３４とを含む点が異なる。
【０２５０】
イベント記憶部３１は、イベントＩＤに対応付けてイベントデータを記憶することに加えて、イベントＩＤの属するグループに対応付けて、通番を記憶する。ここで、イベントＩＤは、グループに分類されているものとする。
【０２５１】
例えば、イベント記憶部３１は、本発明の第２の実施の形態において例示したイベント記憶部２１の構成に対して、通番記憶部２１２に替えて通番記憶部３１２を含む点が異なる。この場合、通番記憶部３１２は、グループを表す番地に、通番を記憶してもよい。データ記憶部２１１および通番記憶部３１２に記憶される情報の一例を、図３７に示す。図３７において、イベントＩＤ“０”〜“５”は、｛０，１｝、｛２，３｝、および、｛４，５｝の３つのグループに分けられている。なお、図３７では、通番記憶部３１２において、複数の番地の格納場所を表すセルを結合したセルに通番を１つ示すことで、グループに対応する番地に通番が１つ格納されることを表している。
【０２５２】
イベント記憶管理部３４は、本発明の第２の実施の形態におけるイベント記憶管理部２４と略同様に構成されるが、以下の点が異なる。
【０２５３】
イベント記憶管理部３４は、更新要求を受信した場合に、更新対象のイベントＩＤの属するグループに対応付けられて通番記憶部３１２に記憶された通番と、ロック通番との大小に基づいて、イベントデータの更新前にその複製を保持するか否かを判断する。具体的には、イベント記憶管理部３４は、更新対象のイベントＩＤの属するグループに対応付けられた通番より、ロック通番が大きい場合に、イベントデータの更新前にその複製を保持すると判断する。
【０２５４】
また、イベント記憶管理部３４は、イベントデータの更新前にその複製を保持すると判断した場合に、更新対象のイベントＩＤの属するグループに含まれる各イベントＩＤについて、その更新前の複製を保持してもよい。このとき、イベント記憶管理部３４は、該当するグループに含まれる各イベントＩＤに対応する退避先のアドレスとして、それらが連続してアクセスされるのに適した一連のアドレスを算出してもよい。
【０２５５】
また、イベント記憶管理部３４は、イベント記憶部３１において、更新対象のイベントＩＤに対応するイベントデータの更新に伴い、更新対象のイベントＩＤを含むグループに対応する通番を、更新要求に含まれている通番に更新する。これにより、イベント記憶部３１は、グループに対応付けて、そのグループに属するイベントＩＤのうち、直近にイベントデータが更新されたイベントＩＤに対する更新要求を発生したイベントに付与されていた通番を記憶することになる。
【０２５６】
また、イベント記憶管理部３４は、参照要求を受信した場合に、参照対象のイベントＩＤの属するグループに対応付けられて通番記憶部３１２に記憶された通番と、ロック通番との大小に基づいて、どのイベントデータを応答するかを判断する。具体的には、イベント記憶管理部３４は、該当するグループに対応付けられた通番よりロック通番が大きい場合に、該当するイベントＩＤに対応付けられたイベントデータを応答すると判断する。また、イベント記憶管理部３４は、該当するグループに対応付けられた通番よりロック通番が小さい場合に、保持しておいた更新前のイベントデータの複製を応答すると判断する。
【０２５７】
例えば、イベント記憶管理部３４の構成の一例を、図３８に示す。図３８において、イベント記憶管理部３４は、本発明の第２の実施の形態におけるイベント記憶管理部２４の構成の一例に対して、通番読出部２４４に替えて通番読出部３４４と、イベントデータアクセス制御部２４６に替えてイベントデータアクセス制御部３４６と、アドレス計算部２４７に替えてアドレス計算部３４７とを含む点が異なる。
【０２５８】
この場合、通番読出部３４４は、更新または参照の要求に含まれるイベントＩＤの属するグループに対応付けられた通番を、通番記憶部３１２から読み出して、通番比較部２４５に通知する。
【０２５９】
このとき、通番読出部３４４は、対象のイベントＩＤの属するグループに対応する番地を算出してもよい。例えば、イベントＩＤの集合が｛０，１，２，３，４，５｝である場合、通番読出部３４４は、これらを｛０，１｝，｛２，３｝，｛４，５｝の３つのグループに分け、それぞれのグループに対応する番地を算出してもよい。なお、各グループに含まれるイベントＩＤの数や、グループの総数は、上述の例に限定されない。例えば、通番読出部３４４は、イベントＩＤの集合｛０，１，２，３，４，５｝を、｛０，１，２｝，｛３，４，５｝の２つのグループに分け、それぞれのグループを表す番地を算出してもよい。このようなグループは、第２のイベント処理部２３によって連続してアクセスされる可能性が高いものが同一のグループになるように分けられてもよい。そのようなグループ分けは、あらかじめ定められていてもよいし、通番読出部３４４によって動的に決定されてもよい。
【０２６０】
イベントデータアクセス制御部３４６は、本発明の第２の実施の形態におけるイベントデータアクセス制御部２４６と略同様に構成されるが、以下の点が異なる。
【０２６１】
イベントデータアクセス制御部３４６は、更新対象のイベントＩＤの属するグループに対応付けられた通番よりロック通番が大きい場合、このイベントＩＤが属するグループに含まれる各イベントＩＤについて、イベントデータの更新前にその複製を保持することを決定する。そして、イベントデータアクセス制御部３４６は、該当するグループに含まれる各イベントＩＤについて、退避先のアドレスを算出するよう、アドレス計算部３４７に通知する。そして、イベントデータアクセス制御部３４６は、データ記憶部２１１において、該当するグループに含まれる各イベントＩＤに対応付けられたイベントデータを、アドレス計算部３４７から通知された各アドレスに、それぞれ複製して格納する。その後、イベントデータアクセス制御部３４６は、データ記憶部２１１において更新対象のイベントＩＤに対応するイベントデータを更新する。
【０２６２】
また、イベントデータアクセス制御部３４６は、更新対象のイベントＩＤの属するグループに対応付けられた通番よりロック通番が小さい場合、データ記憶部２１１における更新対象のイベントＩＤに対応するイベントデータについて、その更新前の複製を保持せずに更新を行う。
【０２６３】
また、イベントデータアクセス制御部３４６は、データ記憶部２１１における更新対象のイベントデータの更新に伴い、通番記憶部３１２において、更新対象のイベントＩＤの属するグループに対応付けられた通番を、更新要求に含まれていた通番に更新する。
【０２６４】
また、イベントデータアクセス制御部３４６は、参照対象のイベントＩＤの属するグループに対応付けられた通番よりロック通番が小さい場合、データ記憶部２１１から、参照対象のイベントＩＤの退避先のアドレスに保持された更新前の複製を読み出す。
【０２６５】
また、イベントデータアクセス制御部３４６は、参照対象のイベントＩＤの属するグループに対応付けられた通番よりロック通番が大きい場合、データ記憶部２１１から、参照対象のイベントＩＤに対応付けられたイベントデータを読み出す。
【０２６６】
アドレス計算部３４７は、イベントデータアクセス制御部３４６から通知された１つ以上のイベントＩＤについて、それぞれの退避先のアドレスを算出する。このとき、アドレス計算部３４７は、複数のイベントＩＤについてそれぞれの退避先のアドレスを算出するときは、連続してアクセスされるのに適した一連のアドレスを算出してもよい。
【０２６７】
＜動作＞
以上のように構成されたイベント処理装置３の動作について、図面を参照して説明する。なお、イベント処理装置３の全体の動作、第１のイベント処理部２２の動作、第２のイベント処理部２３の動作、および、イベント記憶管理部３４のロック動作については、図１３〜図１５、および、図１８を参照して説明した本発明の第２の実施の形態の動作と同様であるため、本実施の形態における詳細な説明を省略する。
【０２６８】
ここでは、イベント記憶管理部３４の更新処理および参照処理について説明する。
【０２６９】
［イベント記憶管理部３４の更新処理］
まず、イベント記憶管理部３４による更新処理を図３９に示す。
【０２７０】
図３９では、まず、第１のイベント処理部２２からの更新要求が受信されると（ステップＤ４）、通番読出部３４４は、通番記憶部３１２から、更新対象のイベントＩＤが属するグループに対応付けられた通番を読み出す（ステップＥ５）。
【０２７１】
次に、通番比較部２４５は、ロック通番記憶部２４２からロック通番を読み出す（ステップＤ６）。
【０２７２】
ここで、ステップＥ５で読み出した通番より、ステップＤ６で読み出したロック通番のほうが大きい場合（ステップＤ７でＹｅｓ）、アドレス計算部３４７は、更新対象のイベントＩＤが属するグループに含まれる各イベントＩＤに対して、待避先のアドレスをそれぞれ決定する（ステップＥ８）。
【０２７３】
このとき、前述のように、アドレス計算部３４７は、退避先のアドレスとして、連続アクセスに適した一連のアドレスを決定してもよい。例えば、アドレス計算部３４７は、これらの同じグループに属するイベントＩＤに対して、退避先アドレスとして連続したアドレスを割り当てるようにしてもよい。
【０２７４】
次に、イベントデータアクセス制御部３４６は、データ記憶部２１１において、該当するグループに含まれる各イベントＩＤに対応付けられている更新前のイベントデータを、ステップＥ８で算出された待避先の各アドレスに複製する（ステップＥ９）。
【０２７５】
次に、イベントデータアクセス制御部３４６は、データ記憶部２１１において、更新対象のイベントＩＤに対応付けられたイベントデータを、更新要求に含まれるイベントデータに更新する。また、イベントデータアクセス制御部３４６は、通番記憶部３１２において、更新対象のイベントＩＤの属するグループに対応付けられた通番を、更新要求に含まれる通番に更新する（ステップＥ１０）。
【０２７６】
次に、アクセス要求応答部２４８は、第１のイベント処理部２２に対して、更新完了を応答する（ステップＤ１１）。
【０２７７】
一方、ステップＤ７において、ステップＥ５で読み出した通番より、ステップＤ６で読み出したロック通番のほうが小さいと判断された場合、イベント記憶管理部３４は、ステップＥ１０からの処理を実行する。
【０２７８】
以上で、イベント記憶管理部３４は、更新処理を終了し、図１４のステップＤ２の処理に戻る。
【０２７９】
［イベント記憶管理部３４の参照処理］
次に、イベント記憶管理部３４の参照処理を図４０に示す。
【０２８０】
図４０では、まず、第２のイベント処理部２３からの参照要求が受信されると（ステップＤ１５）、通番読出部３４４は、通番記憶部３１２から、参照対象のイベントＩＤの属するグループに対応付けられた通番を読み出す（ステップＥ１６）。
【０２８１】
以降、イベント記憶管理部３４は、ステップＤ１７〜Ｄ２２まで、本発明の第２の実施の形態におけるイベント記憶管理部２４と同様に動作する。これにより、イベント記憶管理部３４は、参照対象のイベントＩＤの属するグループに対応付けられた通番よりロック通番が小さい場合に、退避先に保持しておいた更新前のイベントデータの複製を応答することになる。また、イベント記憶管理部３４は、参照対象のイベントＩＤの属するグループに対応付けられた通番よりロック通番が大きい場合に、参照対象のイベントＩＤに対応付けられたイベントデータを応答することになる。
【０２８２】
以上で、イベント記憶管理部３４の参照処理の説明を終了する。
【０２８３】
＜動作の具体例＞
次に、イベント処理装置３の動作を具体例で示す。ここでは、本発明の第２の実施の形態の具体例と同様に、イベント処理装置３が、図２０および図２１に示した車両速度イベントまたは平均車両速度計算要求イベントを次々と受信しながら、図２２に示した平均車両速度イベントを出力する例について説明する。
【０２８４】
この具体例では、イベント記憶部３１は、図４１に示す情報を、既に記憶しているものとする。また、この具体例では、本発明の第２の実施の形態の具体例と同様に、イベント処理装置３が、図２４に示す入力イベントを次々と受信するものとする。
【０２８５】
［車両速度イベントの処理］
まず、車両速度イベントの処理について説明する。
【０２８６】
ここで、イベント処理装置３が、図２４の１行目の車両速度イベント（“１”，１，９０ｋｍ／h）を受信した場合の動作は、本発明の第２の実施の形態における具体例と略同様であるが、以下の点が異なる。
【０２８７】
まず、第１のイベント処理部２２からの更新要求（１，９０ｋｍ／h，１００）の受信に応じて、通番読出部３４４は、図４１に示した通番記憶部３１２から、更新要求に含まれるイベントＩＤ“１”の属するグループ｛０，１｝に対応付けられている通番“９１”を読み出す（ステップＥ５）。
【０２８８】
そして、読みだされた通番“９１”より、ロック通番“０”が小さいので（ステップＤ７でＮｏ）、イベントデータアクセス制御部３４６は、更新前のイベントデータの複製を保持せずに、データ記憶部２１１および通番記憶部３１２を更新する。このとき、イベントデータアクセス制御部３４６は、通番記憶部３１２において、更新対象のイベントＩＤ“１”の属するグループ｛０，１｝に対応付けられている通番を、更新要求に含まれる“１００”に更新する（ステップＥ１０）。
【０２８９】
ここで、上述の動作において、イベント記憶管理部３４およびイベント記憶部３１の内部で入出力される情報を、模式的に図４２および図４３に示す。
【０２９０】
図４２では、更新要求（１，９０ｋｍ／h，１００）がアクセス要求受信部２４３に入力されると、更新対象のイベントＩＤ“１”の属するグループ｛０，１｝に対応する通番“９１”が、通番記憶部３１２から通番読出部３４４によって読み出されている。また、読み出された通番“９１”より、ロック通番“０”が小さいので、更新前の複製の保持は行われない。そして、図４３において、データ記憶部２１１の番地１に格納されるイベントデータは、更新要求に含まれていた“９０ｋｍ／ｈ”に更新されている。また、通番記憶部３１２のグループ｛０，１｝に対応する通番は、更新要求に含まれていた“１００”に更新されている。
【０２９１】
このようにして、第１のイベント処理部２２は、図２４の１行目に示した車両速度イベントに基づく処理を終了する。
【０２９２】
同様にして、図２４に示した入力イベントの２〜６行目が入力されると、イベント処理装置３は、上述の動作を繰り返す。その結果、イベント記憶部３１に記憶される情報は、図４４に示す通りとなる。
【０２９３】
［平均車両速度計算要求イベントの処理］
次に、平均車両速度計算要求イベントに対する処理について説明する。
【０２９４】
ここで、イベント処理装置３が、図２４の７行目の平均車両速度計算要求イベント（“２”，ＮＵＬＬ，ＮＵＬＬ）を受信した場合の動作は、本発明の第２の実施の形態における具体例と略同様であるが、以下の点が異なる。
【０２９５】
第２のイベント処理部２３からのイベントＩＤ“０”を含む参照要求の受信に応じて、通番読出部３４４は、図４４に示した通番記憶部３１２から、参照要求に含まれるイベントＩＤ“０”の属するグループ｛０，１｝に対応付けられている通番“１０１”を読み出す（ステップＥ１６）。
【０２９６】
ここで、上述の動作において、イベント記憶管理部３４およびイベント記憶部３１の内部で入出力される情報を、模式的に図４５に示す。図４５では、イベントＩＤ“０”を含む参照要求がアクセス要求受信部２４３に入力されると、参照対象のイベントＩＤ“０”の属するグループ｛０，１｝に対応する通番“１０１”が、通番記憶部３１２から通番読出部３４４によって読み出されている。また、ロック通番“１０６”は、読み出された通番“１０１”より大きい。そこで、参照対象のイベントＩＤ“０”に対応するイベントデータ“８０ｋｍ／ｈ”が、データ記憶部２１１からイベントデータアクセス制御部３４６によって読み出されている。
【０２９７】
［車両速度イベントの処理］
ここで、第２のイベント処理部２３による平均車両速度計算処理の完了を待たずに、イベント処理装置３が、図２４の８行目の車両速度イベント（“１”，１，９５ｋｍ／h）を受信した場合の動作について説明する。この場合のイベント処理装置３の動作は、本発明の第２の実施の形態における具体例と略同様であるが、以下の点が異なる。
【０２９８】
まず、第１のイベント処理部２２からの更新要求（“１”，９５ｋｍ／ｈ，１０７）の受信に応じて、通番読出部３４４は、図４４に示した通番記憶部３１２から、更新要求に含まれるイベントＩＤ“１”の属するグループ｛０，１｝に対応付けられている通番“１０１”を読み出す（ステップＥ５）。
【０２９９】
そして、イベントデータアクセス制御部３４６は、読みだされた通番“１０１”より、ロック通番“１０６”が大きいので、更新前のイベントデータの複製を保持すると判断する（ステップＤ７でＹｅｓ）。
【０３００】
そして、アドレス計算部３４７は、更新対象のイベントＩＤ“１”の属するグループ｛０，１｝に含まれるイベントＩＤ“０”および“１”の退避先のアドレスとして、番地１００および番地１０１を算出する（ステップＥ８）。
【０３０１】
次に、イベントデータアクセス制御部３４６は、番地０および番地１に格納されているイベントデータ“８０ｋｍ／ｈ”および“９０ｋｍ／ｈ”を読み出して、退避先の番地１００および番地１０１に複製する（ステップＥ９）。
【０３０２】
次に、イベントデータアクセス制御部３４６は、データ記憶部２１１および通番記憶部３１２を更新する。このとき、イベントデータアクセス制御部３４６は、通番記憶部３１２において、更新対象のイベントＩＤ“１”の属するグループ｛０，１｝に対応する番地の通番を、更新要求に含まれる通番“１０７”に更新する（ステップＥ１０）。
【０３０３】
ここで、上述の動作において、イベント記憶管理部３４およびイベント記憶部３１の内部で入出力される情報を、模式的に図４６および図４７に示す。
【０３０４】
図４６では、更新要求（１，９５ｋｍ／h，１０７）がアクセス要求受信部２４３に入力されると、更新対象のイベントＩＤ“１”の属するグループ｛０，１｝に対応する通番“１０１”が、通番記憶部３１２から通番読出部３４４によって読み出されている。また、ロック通番“１０６”が、読み出された通番“１０１”より大きいので、グループに属するイベントＩＤ“０”および“１”について、更新前の複製の保持が行われる。そこで、番地０および番地１に対する退避先の番地１００および番地１０１が、アドレス計算部３４７からイベントデータアクセス制御部３４６に応答されている。そして、データ記憶部２１１における退避先の番地１００および番地１０１には、番地０および番地１のイベントデータ“８０ｋｍ／ｈ”および“９０ｋｍ／ｈ”がそれぞれ複製されている。
【０３０５】
また、図４７では、データ記憶部２１１の番地１に格納されるイベントデータは、更新要求に含まれていた“９５ｋｍ／ｈ”に更新されている。また、通番記憶部３１２のグループ｛０，１｝に対応する通番は、更新要求に含まれていた“１０７”に更新されている。
【０３０６】
このようにして、第１のイベント処理部２２は、図２４の８行目に示した車両速度イベントに基づく処理を終了する。
【０３０７】
［平均車両速度計算要求イベントの処理］
続いて、第２のイベント処理部２３における平均車両速度計算要求イベントの処理の続きについて説明する。第２のイベント処理部２３は、通番“１０６”が付与された平均車両速度計算要求イベントの処理を継続中である。前述のように、第２のイベント処理部２３は、平均車両速度計算要求イベントの処理に必要なイベントＩＤ“０”〜“５”に対応するイベントデータのうち、イベントＩＤ“０”のイベントデータを既に得ている。続いて、第２のイベント処理部２３は、イベントＩＤ“１”についての参照要求を行う。
【０３０８】
ここで、第２のイベント処理部２３によってイベントＩＤ“１”についての参照要求が行われる場合のイベント処理装置３の動作は、本発明の第２の実施の形態における具体例と略同様であるが、以下の点が異なる。
【０３０９】
第２のイベント処理部２３からのイベントＩＤ“１”に対する参照要求の受信に応じて、通番読出部３４４は、図４７に示した通番記憶部３１２から、参照要求に含まれるイベントＩＤ“１”の属するグループ｛０，１｝に対応付けられた通番“１０７”を読み出す（ステップＥ１６）。
【０３１０】
ここで、上述の動作において、イベント記憶管理部３４およびイベント記憶部３１の内部で入出力される情報を、模式的に図４８に示す。図４８では、イベントＩＤ“１”を含む参照要求がアクセス要求受信部２４３に入力されると、参照対象のイベントＩＤ“１”の属するグループ｛０，１｝に対応する通番“１０７”が、通番記憶部３１２から通番読出部３４４によって読み出されている。また、ロック通番“１０６”は、読み出された通番“１０７”より小さいので、退避先の番地からの参照が行われる。そこで、番地１に対する退避先の番地１０１が、アドレス計算部３４７からイベントデータアクセス制御部３４６に応答されている。そして、退避先の番地１０１に格納されたイベントデータ“９０ｋｍ／ｈ”が、データ記憶部２１１からイベントデータアクセス制御部３４６によって読み出されている。
【０３１１】
以上で、第２のイベント処理部２３は、イベントＩＤ“１”に対応するイベントデータの参照処理を終了する。
【０３１２】
［車両速度イベントの処理］
続いて、第２のイベント処理部２３による平均車両速度計算要求イベントの処理の継続中に、イベント処理装置３が、図２４の９行目、１０行目の車両速度イベントを受信したとする。
【０３１３】
ここで、イベント処理装置３が、図２４の９行目の車両速度イベント（“１”，４，８０ｋｍ／ｈ）を受信したときの動作は、８行目の車両速度イベントを受信したときの動作と略同様である。つまり、イベント処理装置３は、この車両速度イベントに含まれるイベントＩＤ“４”の属するグループに含まれる各イベントＩＤについてイベントデータの更新前の複製を保持してから、イベントＩＤ“４”に対応するイベントデータの更新を行う。
【０３１４】
このとき、イベント記憶管理部３４およびイベント記憶部３１の内部で入出力される情報は、図４９および図５０に模式的に示す通りとなる。
【０３１５】
図４９では、更新要求（４，８０ｋｍ／h，１０８）がアクセス要求受信部２４３に入力されると、更新対象のイベントＩＤ“４”の属するグループ｛４，５｝に対応する通番“１０５”が、通番記憶部３１２から通番読出部３４４によって読み出されている。また、ロック通番“１０６”が、読み出された通番“１０５”より大きいので、グループに属するイベントＩＤ“４”および“５”について、更新前の複製の保持が行われる。そこで、番地４および番地５に対する退避先の番地１０４および番地１０５が、アドレス計算部３４７からイベントデータアクセス制御部３４６に応答されている。そして、データ記憶部２１１における退避先の番地１０４および番地１０５には、番地４および番地５のイベントデータ“８５ｋｍ／ｈ”および“９５ｋｍ／ｈ”がそれぞれ複製されている。
【０３１６】
また、図５０では、データ記憶部２１１の番地４に格納されるイベントデータは、更新要求に含まれていた “８０ｋｍ／ｈ”に更新されている。また、通番記憶部３１２のグループ｛４，５｝に対応する通番は、更新要求に含まれていた“１０８”に更新されている。
【０３１７】
このようにして、第１のイベント処理部２２は、図２４の９行目に示した車両速度イベントに基づく処理を終了する。
【０３１８】
続いて、イベント処理装置３は、図２４の１０行目の車両速度イベントを受信する。
【０３１９】
ここで、イベント処理装置３が、１０行目の車両速度イベント（“１”，５，７５ｋｍ／ｈ）を受信したときの動作は、１行目の車両速度イベントを受信したときの動作と略同様である。つまり、イベント処理装置３は、この車両速度イベントに含まれるイベントＩＤ“５”について、退避処理を行わずに更新を行う。ここで、イベントＩＤ“５”に対応する更新前のイベントデータは、平均車両速度計算処理を継続中の第２のイベント処理部２３によってまだ参照されていないが、９行目の車両速度イベント受信時に、既に退避されている。したがって、この時点での退避処理は不要である。
【０３２０】
このとき、イベント記憶管理部３４およびイベント記憶部３１の内部で入出力される情報は、図５１および図５２に模式的に示す通りとなる。
【０３２１】
図５１では、更新要求（５，７５ｋｍ／h，１０９）がアクセス要求受信部２４３に入力されると、更新対象のイベントＩＤ“５”の属するグループ｛４，５｝に対応する通番“１０８”が、通番記憶部３１２から通番読出部３４４によって読み出されている。また、読み出された通番“１０８”より、ロック通番“１０６”が小さいので、更新前の複製の保持は行われない。そして、図５２において、データ記憶部２１１の番地５に格納されるイベントデータは、更新要求に含まれていた“７５ｋｍ／ｈ”に更新されている。また、通番記憶部３１２のグループ｛４，５｝に対応する通番は、更新要求に含まれていた“１０９”に更新されている。
【０３２２】
このようにして、第１のイベント処理部２２は、図２４の１０行目に示した車両速度イベントに基づく処理を終了する。
【０３２３】
［平均車両速度計算要求イベントの処理］
第２のイベント処理部２３は、イベントＩＤ“２”〜“５”までについて、イベントＩＤ“０”または“１”の参照処理と同様に動作することにより、７行目の平均車両速度計算要求イベントの受信時点でのイベントデータを取得する。そして、第２のイベント処理部２３は、このようにして得たイベントＩＤ“０”〜“５”の車両速度の平均を算出し、出力イベントとして外部に出力する（ステップＣ１０、Ｃ１１）。
【０３２４】
以上で、イベント処理装置３の動作の具体例の説明を終了する。
【０３２５】
次に、本発明の第３の実施の形態の効果について述べる。
【０３２６】
本発明の第３の実施の形態としてのイベント処理装置は、データの複製コストを抑えながら、共有されるデータに対する更新処理および参照処理の順番を変更可能とする際に、必要となる記憶領域をより削減することができる。
【０３２７】
その理由は、イベント記憶部が、イベントＩＤの属するグループに対応付けて通番を記憶し、イベント記憶管理部が、更新対象のイベントＩＤの属するグループに対応付けられた通番およびロック通番の大小に基づいて、イベントデータの更新前の複製を保持するか否かを判断するとともに、参照対象のイベントＩＤの属するグループに対応付けられた通番およびロック通番の大小に基づいて、参照対象のイベントＩＤに対応付けられたイベントデータおよびその更新前の複製のいずれを応答するかを判断するからである。
【０３２８】
これにより、本実施の形態は、イベントＩＤ毎に通番を記憶する必要がなく、イベントＩＤが分類されたグループ毎に通番を記憶すればよく、通番を記憶する領域を削減できることになる。
【０３２９】
また、本発明を第３の実施の形態としてのイベント処理装置は、共有されるデータに対する更新処理および参照処理の順番を変更可能とするためのイベントデータの退避処理、および、退避先のイベントデータの参照処理を、より効率的に実行することができる。
【０３３０】
その理由は、イベント記憶管理部が、更新対象のイベントＩＤに対応付けられたイベントデータの更新前の複製を保持することを決定した場合には、更新対象のイベントＩＤと同じグループに属する各イベントＩＤについて更新前の複製をそれぞれ保持するからである。
【０３３１】
これにより、本実施の形態は、退避が必要となる可能性の高いイベントデータの退避処理をグループでまとめて行うことができ、退避処理を効率化することになる。さらに、イベント記憶管理部が、同じグループに属する各イベントＩＤに対応する退避先のアドレスとして、連続アクセスに適した一連のアドレスを算出するよう構成される場合、本実施の形態は、同じグループに属するイベントＩＤについての退避処理を、さらに効率化することができる。
【０３３２】
また、このようなイベントＩＤのグループとして、第２のイベント処理部によって連続して参照されるイベントＩＤを同じグループに含むように構成することにより、本実施の形態は、第２のイベント処理部による退避先のイベントデータの参照処理を、さらに効率化することができる。
【０３３３】
なお、上述した本発明の第２および第３の実施の形態において、イベント記憶部に記憶される情報の一例を示した各図面では、退避先のアドレスの示す箇所に、更新前のイベントデータの複製に加えて、更新前の通番の複製を示している。ただし、各実施の形態は、少なくとも更新前のイベントデータを退避すればよく、更新前の通番を必ずしも退避させる必要はない。更新前の通番を退避させなくても、各実施の形態は上述と同様の効果を奏する。
【０３３４】
また、上述した本発明の第２および第３の実施の形態において、入力イベントおよび出力イベントが、イベント型、イベントＩＤ、および、イベントデータを含む例を中心に説明したが、入力イベントおよび出力イベントは、その他のデータ構造であってもよい。例えば、入力イベントは、参照対象または更新対象のイベントＩＤと、更新の場合には更新対象のイベントデータとを特定可能な情報であればよい。また、出力イベントは、入力イベントと同一のデータ構造でなくてもよい。
【０３３５】
また、上述した本発明の各実施の形態において、イベント処理装置の各機能ブロックが、記憶装置またはＲＯＭに記憶されたコンピュータ・プログラムを実行するＣＰＵによって実現される例を中心に説明したが、各機能ブロックの一部、全部、または、それらの組み合わせは、ハードウェアにより実現されていてもよい。
【０３３６】
例えば、上述した本発明の各実施の形態において、イベント処理装置は、回路情報を書き込み可能な複数の領域を有するＩＣチップと、メモリとによって構成可能である。このようなＩＣチップの例としては、ＦＰＧＡ（Field Programmable Gate Array）が挙げられる。この場合、例えば、第１のイベント処理部、第２のイベント処理部、イベント記憶管理部、および、通番付与部は、ＦＰＧＡの各領域に定義されることにより実現され、イベント記憶部は、ＤＲＡＭ（Dynamic Random Access Memory）によって構成されてもよい。
【０３３７】
さらに、この場合、本発明の各実施の形態としてのイベント処理装置は、ネットワークインタフェース上に搭載された上述のＩＣチップおよびメモリによって構成されてもよい。この場合、第１のイベント処理部および第２のイベント処理部は、自装置が搭載されたネットワークインタフェースによりネットワークを介して受信されたイベントに基づいて動作する。例えば、第２および第３の実施の形態では、通番付与部が、ネットワークインタフェースによりネットワークを介して受信されたイベントに通番を付与し、第１のイベント処理部および第２のイベント処理部に対してそれぞれ出力すればよい。また、第１のイベント処理部および第２のイベント処理部は、第１のイベント処理および第２のイベント処理に伴う出力情報を、自装置が搭載されたネットワークインタフェースを介して、このネットワークインタフェースを備えるコンピュータ装置に対して出力することになる。
【０３３８】
また、上述した本発明の各実施の形態において、イベント処理装置の機能ブロックは、複数の装置に分散されて実現されてもよい。
【０３３９】
また、上述した本発明の各実施の形態において、各フローチャートを参照して説明したイベント処理装置の動作を、本発明のコンピュータ・プログラムとしてコンピュータ装置の記憶装置（記憶媒体）に格納しておき、係るコンピュータ・プログラムを当該ＣＰＵが読み出して実行するようにしてもよい。そして、このような場合において、本発明は、係るコンピュータ・プログラムのコードあるいは記憶媒体によって構成される。
【０３４０】
また、上述した各実施の形態は、適宜組み合わせて実施されることが可能である。
【０３４１】
また、本発明は、上述した各実施の形態に限定されず、様々な態様で実施されることが可能である。
【０３４２】
また、上述した各実施の形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
（付記１）
イベントＩＤに対応付けてイベントデータを記憶するイベント記憶部と、
入力されたイベントに基づいて、更新対象のイベントＩＤに対応付けられて前記イベント記憶部に記憶されたイベントデータの更新を要求する第１のイベント処理部と、
入力されたイベントに基づいて、参照対象のイベントＩＤに対応付けられて前記イベント記憶部に記憶されたイベントデータの参照を要求する第２のイベント処理部と、
前記第１のイベント処理部による更新の要求に応じて、前記イベント記憶部において、前記更新対象のイベントＩＤに対応付けられたイベントデータの更新前の複製を保持してから該イベントデータを更新するとともに、前記第２のイベント処理部による参照の要求に応じて、前記イベント記憶部から、前記参照対象のイベントＩＤに対応付けられたイベントデータまたは該イベントデータの更新前の複製を読み出して応答するイベント記憶管理部と、
を備えたイベント処理装置。
（付記２）
前記入力されたイベントに対して前記イベントの順序を表す通番を付与する通番付与部をさらに備え、
前記イベント記憶部は、前記イベントＩＤに関連付けて、該イベントＩＤに対応付けられたイベントデータが更新されたイベントの通番をさらに記憶し、
前記イベント記憶管理部は、前記第２のイベント処理部によって処理中のイベントの通番（ロック通番）を記憶しておき、前記更新対象のイベントＩＤに関連付けられた通番および前記ロック通番の大小に基づいて、前記イベントデータの更新前にその複製を保持するか否かを判断するとともに、前記参照対象のイベントＩＤに関連付けられた通番および前記ロック通番の大小に基づいて、前記参照対象のイベントＩＤに対応付けられたイベントデータおよび前記更新前の複製のいずれを応答するかを判断することを特徴とする付記１に記載のイベント処理装置。
（付記３）
前記イベント記憶部は、前記イベントＩＤの属するグループに対応付けて前記通番を記憶し、
前記イベント記憶管理部は、前記更新対象のイベントＩＤの属するグループに対応付けられた通番および前記ロック通番の大小に基づいて、前記イベントデータの更新前にその複製を保持するか否かを判断するとともに、前記参照対象のイベントＩＤの属するグループに対応付けられた通番および前記ロック通番の大小に基づいて、前記参照対象のイベントＩＤに対応付けられたイベントデータおよび前記更新前の複製のいずれを応答するかを判断することを特徴とする付記２に記載のイベント処理装置。
（付記４）
前記イベント記憶管理部は、前記イベントデータの更新前にその複製を保持すると判断した場合、前記更新対象のイベントＩＤの属するグループに含まれる各イベントＩＤに対応付けられたイベントデータの更新前の複製をそれぞれ保持することを特徴とする付記３に記載のイベント処理装置。
（付記５）
前記イベント記憶管理部は、前記更新対象のイベントＩＤの属するグループに含まれる各イベントＩＤに対応付けられたイベントデータの更新前の複製を、前記イベント記憶部における連続アクセス用の一連の退避先に保持することを特徴とする付記４に記載のイベント処理装置。
（付記６）
イベントＩＤに対応付けてイベントデータを記憶するイベント記憶部を用いて、
入力されたイベントに基づいて、更新対象のイベントＩＤに対応付けられて前記イベント記憶部に記憶されたイベントデータの更新前の複製を保持してから該イベントデータを更新し、
入力されたイベントに基づいて、参照対象のイベントＩＤに対応付けられたイベントデータまたは該イベントデータの更新前の複製を、前記イベント記憶部から読み出す、イベント処理方法。
（付記７）
前記入力されたイベントに対して前記イベントの順序を表す通番を付与し、
前記イベント記憶部に、前記イベントＩＤに関連付けて、該イベントＩＤに対応付けられたイベントデータが更新されたイベントの通番をさらに記憶させ、
前記参照対象のイベントＩＤの読み出し処理が継続している間、前記読み出し処理を生じたイベントの通番（ロック通番）を記憶しておき、
前記更新対象のイベントＩＤに関連付けられた通番および前記ロック通番の大小に基づいて、前記イベントデータの更新前にその複製を保持するか否かを判断し、
前記参照対象のイベントＩＤに関連付けられた通番および前記ロック通番の大小に基づいて、前記参照対象のイベントＩＤに対応付けられたイベントデータおよび前記更新前の複製のいずれを応答するかを判断することを特徴とする付記６に記載のイベント処理方法。
（付記８）
前記イベント記憶部に、前記イベントＩＤの属するグループに対応付けて前記通番を記憶させ、
前記イベントデータの更新前にその複製を保持するか否かを、前記更新対象のイベントＩＤの属するグループに対応付けられた通番および前記ロック通番の大小に基づいて決定し、
前記参照対象のイベントＩＤに対応付けられたイベントデータおよび前記更新前の複製のいずれを応答するかを、前記参照対象のイベントＩＤの属するグループに対応付けられた通番および前記ロック通番の大小に基づいて決定することを特徴とする付記７に記載のイベント処理方法。
（付記９）
イベントＩＤに対応付けてイベントデータを記憶するイベント記憶部を用いて、
入力されたイベントに基づいて、更新対象のイベントＩＤに対応付けられて前記イベント記憶部に記憶されたイベントデータの更新を要求する更新要求ステップと、
入力されたイベントに基づいて、参照対象のイベントＩＤに対応付けられて前記イベント記憶部に記憶されたイベントデータの参照を要求する参照要求ステップと、
前記更新の要求に応じて、前記イベント記憶部において、前記更新対象のイベントＩＤに対応付けられたイベントデータの更新前の複製を保持してから該イベントデータを更新する更新ステップと、
前記参照の要求に応じて、前記イベント記憶部から、前記参照対象のイベントＩＤに対応付けられたイベントデータまたは該イベントデータの更新前の複製を読み出して応答する参照ステップと、
をコンピュータ装置に実行させるコンピュータ・プログラム。
（付記１０）
前記入力されたイベントに対して前記イベントの順序を表す通番を付与する通番付与ステップと、
前記イベント記憶部に、前記イベントＩＤに関連付けて、該イベントＩＤに対応付けられたイベントデータが更新されたイベントの通番をさらに記憶させる通番記憶ステップと、
前記参照ステップが継続している間、前記参照の要求を生じたイベントの通番（ロック通番）を保持する通番ロックステップと、
を、さらに前記コンピュータ装置に実行させ、
前記更新ステップにおいて、前記更新対象のイベントＩＤに関連付けられた通番および前記ロック通番の大小に基づいて、前記イベントデータの更新前にその複製を保持するか否かを判断し、
前記参照ステップにおいて、前記参照対象のイベントＩＤに関連付けられた通番および前記ロック通番の大小に基づいて、前記参照対象のイベントＩＤに対応付けられたイベントデータおよび前記更新前の複製のいずれを応答するかを判断することを特徴とする付記９に記載のコンピュータ・プログラム。
（付記１１）
前記通番記憶ステップにおいて、前記イベント記憶部に、前記イベントＩＤの属するグループに対応付けて前記通番を記憶させ、
前記更新ステップにおいて、前記更新対象のイベントＩＤの属するグループに対応付けられた通番および前記ロック通番の大小に基づいて、前記イベントデータの更新前にその複製を保持するか否かを判断し、
前記参照ステップにおいて、前記参照対象のイベントＩＤの属するグループに対応付けられた通番および前記ロック通番の大小に基づいて、前記参照対象のイベントＩＤに対応付けられたイベントデータおよび前記更新前の複製のいずれを応答するかを判断することを特徴とする付記１０に記載のコンピュータ・プログラム。
【産業上の利用可能性】
【０３４３】
本発明は、データの複製コストを抑えながら、共有されるデータに対する更新処理および参照処理の順番を変更可能とするイベント処理技術を提供することができ、例えば、センサや端末からのリアルタイム情報（イベント列）の処理を行う装置において、イベント列をリアルタイムに受信しつつ、特定のタイミングにおける平均値計算などの集約演算処理を行う用途に好適である。
【符号の説明】
【０３４４】
１、２、３    イベント処理装置
１１、２１、３１    イベント記憶部
１２、２２    第１のイベント処理部
１３、２３    第２のイベント処理部
１４、２４、３４    イベント記憶管理部
２５    通番付与部
２１１    データ記憶部
２１２、３１２  通番記憶部
２４１    ロック要求受信部
２４２    ロック通番記憶部
２４３    アクセス要求受信部
２４４、３４４    通番読出部
２４５    通番比較部
２４６、３４６    イベントデータアクセス制御部
２４７、３４７    アドレス計算部
２４８    アクセス要求応答部
１００１  ＣＰＵ
１００２  ＲＡＭ
１００３  ＲＯＭ
１００４  記憶装置
１００５  入力装置
１００６  出力装置
【図１】
2015052884.tif 000003
【図２】
2015052884.tif 000004
【図３】
2015052884.tif 000005
【図４】
2015052884.tif 000006
【図５】
2015052884.tif 000007
【図６】
2015052884.tif 000008
【図７】
2015052884.tif 000009
【図８】
2015052884.tif 000010
【図９】
2015052884.tif 000011
【図１０】
2015052884.tif 000012
【図１１】
2015052884.tif 000013
【図１２】
2015052884.tif 000014
【図１３】
2015052884.tif 000015
【図１４】
2015052884.tif 000016
【図１５】
2015052884.tif 000017
【図１６】
2015052884.tif 000018
【図１７】
2015052884.tif 000019
【図１８】
2015052884.tif 000020
【図１９】
2015052884.tif 000021
【図２０】
2015052884.tif 000022
【図２１】
2015052884.tif 000023
【図２２】
2015052884.tif 000024
【図２３】
2015052884.tif 000025
【図２４】
2015052884.tif 000026
【図２５】
2015052884.tif 000027
【図２６】
2015052884.tif 000028
【図２７】
2015052884.tif 000029
【図２８】
2015052884.tif 000030
【図２９】
2015052884.tif 000031
【図３０】
2015052884.tif 000032
【図３１】
2015052884.tif 000033
【図３２】
2015052884.tif 000034
【図３３】
2015052884.tif 000035
【図３４】
2015052884.tif 000036
【図３５】
2015052884.tif 000037
【図３６】
2015052884.tif 000038
【図３７】
2015052884.tif 000039
【図３８】
2015052884.tif 000040
【図３９】
2015052884.tif 000041
【図４０】
2015052884.tif 000042
【図４１】
2015052884.tif 000043
【図４２】
2015052884.tif 000044
【図４３】
2015052884.tif 000045
【図４４】
2015052884.tif 000046
【図４５】
2015052884.tif 000047
【図４６】
2015052884.tif 000048
【図４７】
2015052884.tif 000049
【図４８】
2015052884.tif 000050
【図４９】
2015052884.tif 000051
【図５０】
2015052884.tif 000052
【図５１】
2015052884.tif 000053
【図５２】
2015052884.tif 000054
【図５３】
2015052884.tif 000055