(57)【要約】【課題】データの復元処理にかかる処理コスト（負荷）を削減すること。【解決手段】処理装置１０１は、受信したメッセージ１２２に含まれるオブジェクト型を識別する識別子が定義情報１２３に記憶されているか否かを判断する。処理装置１０１は、定義情報１２３に記憶されている場合、メッセージ１２２の所定領域の情報が、メッセージ１２２に含まれる識別子に関連付けられた所定の処理を実行する条件を満たすか否かを判断する。処理装置１０１は、判断した結果に応じて、メッセージ１２２内の直列化データを復元する。【選択図】図１
2015219593.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータに、
データの種類を識別する識別子と所定の処理を実行する条件とが関連付けられた定義情報を記憶し、
データの種類を識別する識別子を含む前記データを受信し、
受信した前記データに含まれる識別子が前記定義情報に記憶されている場合に、前記データの所定領域の情報が、前記データに含まれる識別子に関連付けられた所定の処理を実行する条件を満たすか否かを判断し、
判断した結果に応じて前記データを復元する、
処理を実行させることを特徴とする処理プログラム。
【請求項２】
前記コンピュータに、
各識別子により識別される種類のデータの受信頻度と該データの復元にかかる処理時間とに基づいて、所定の処理を実行する条件を満たすか否かを判断する対象となるデータの種類を決定し、
決定した前記種類を識別する識別子を所定の処理を実行する条件と関連付けて前記定義情報に登録する、
処理を実行させることを特徴とする請求項１に記載の処理プログラム。
【請求項３】
前記決定する処理は、
前記各識別子により識別される種類のデータの受信頻度と該データの復元にかかる処理時間との積のうち、該積の値が大きいものから順に所定数の識別子、または、該積の値が閾値以上の識別子により識別されるデータの種類を、前記対象となるデータの種類に決定することを特徴とする請求項２に記載の処理プログラム。
【請求項４】
前記コンピュータに、
各識別子により識別される種類のデータの送信頻度と該データの符号化にかかる処理時間とに基づいて、所定の処理を実行する条件を満たすか否かを判断する対象となるデータの種類を決定する、
処理を実行させることを特徴とする請求項２に記載の処理プログラム。
【請求項５】
前記コンピュータに、
各識別子により識別される種類のデータの受信頻度と該データの復元にかかる処理時間を、所定の処理を実行する条件を満たすか否かを判断する対象となるデータの種類を決定する他のコンピュータに送信し、
前記他のコンピュータから前記対象となるデータの種類を識別する識別子を受信したことに応じて、受信した前記識別子を所定の処理を実行する条件と関連付けて前記定義情報に登録する、
処理を実行させることを特徴とする請求項１に記載の処理プログラム。
【請求項６】
第１処理装置と第２処理装置とを含む処理システムにおいて、
前記第１処理装置は、
データの種類を識別する識別子と所定の処理を実行する条件とが関連付けられた定義情報に記憶された前記識別子を前記第２処理装置に送信し、データの種類を識別する識別子を含む前記データを前記第２処理装置から受信し、受信した前記データに含まれる識別子が前記定義情報に記憶されている場合に、前記データの所定領域の情報が、前記データに含まれる識別子に関連付けられた所定の処理を実行する条件を満たすか否かを判断し、判断した結果に応じて前記データを復元する制御部を有し、
前記第２処理装置は、
前記定義情報に記憶された前記識別子を前記第１処理装置から受信し、受信した前記定義情報に記憶された前記識別子により識別されるデータを前記第１処理装置に送信する場合に、前記識別子を含む前記データを前記第１処理装置に送信する制御部を有する、
ことを特徴とする処理システム。
【請求項７】
第１処理装置が、
データの種類を識別する識別子と所定の処理を実行する条件とが関連付けられた定義情報に記憶された前記識別子を第２処理装置に送信し、
データの種類を識別する識別子を含む前記データを前記第２処理装置から受信し、
受信した前記データに含まれる識別子が前記定義情報に記憶されている場合に、前記データの所定領域の情報が、前記データに含まれる識別子に関連付けられた所定の処理を実行する条件を満たすか否かを判断し、
判断した結果に応じて前記データを復元し、
前記第２処理装置が、
前記定義情報に記憶された前記識別子を前記第１処理装置から受信し、
受信した前記定義情報に記憶された前記識別子により識別されるデータを前記第１処理装置に送信する場合に、前記識別子を含む前記データを前記第１処理装置に送信する、
ことを特徴とする処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、処理プログラム、処理システムおよび処理方法に関する。
【背景技術】
【０００２】
ソフトウェア開発では、オブジェクト指向言語、例えば、Ｊａｖａ（登録商標）、Ｃ＋＋が採用されることがある。オブジェクト指向言語で開発されたソフトウェアの通信では、開発効率を重視して、オブジェクト通信が使用されることが多い。オブジェクト通信とは、メッセージの送信時は、シリアライズによりオブジェクトをバイト列に変換してメッセージに載せ、メッセージの受信時は、メッセージ上のバイト列をデシリアライズによりオブジェクトに逆変換することによりオブジェクトを送受信する通信である。
【０００３】
オブジェクト通信は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）にかかる負荷が高く、ＣＰＵがボトルネックとなってスループットが低下してしまう場合がある。特に、オブジェクト通信で大量のデータをノード間で交換するアプリケーション、例えば、大量データ処理、複合イベント処理（ＣＥＰ：Ｃｏｍｐｌｅｘ  Ｅｖｅｎｔ  Ｐｒｏｃｅｓｓｉｎｇ）では、オブジェクト通信によるスループットの低下が問題になる。
【０００４】
関連する先行技術としては、例えば、データオブジェクトをシリアライズする際にすべてのデータを直列に並べるのではなく、送らなくてもよいデータは省略して通信データを作成する送信側装置がある。また、通信プロトコルに応じてシリアライズおよびデシリアライズの実行手段をプラグインにより変更する情報処理装置がある。また、オブジェクト通信において、送信側でオブジェクトをシリアライズして送信し、受信側でデシリアライズして参照するオブジェクト通信の技術がある。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００８−２０３９５９号公報
【特許文献２】特開２００９−１４０２４５号公報
【特許文献３】特開２００９−２８９２７２号公報
【非特許文献】
【０００６】
【非特許文献１】Ｍ．Ｃｈｅｒｎｉａｃｋ，Ｈ．Ｂａｌａｋｒｉｓｈｎａｎ，Ｍ．Ｂａｌａｚｉｎｓｋａ，Ｄ．Ｃａｒｎｅｙ，Ｕ．Ｃｅｔｉｎｔｅｍｅｌ，Ｙ．Ｘｉｎｇ，ａｎｄ  Ｓ．Ｚｄｏｎｉｋ，“Ｓｃａｌａｂｌｅ  Ｄｉｓｔｒｉｂｕｔｅｄ  Ｓｔｒｅａｍ  Ｐｒｏｃｅｓｓｉｎｇ”，Ｐｒｏｃｅｅｄｉｎｇｓ  ｏｆ  ｔｈｅ  ２００３  ＣＩＤＲ  Ｃｏｎｆｅｒｅｎｃｅ
【非特許文献２】Ｊｅｆｆｒｅｙ  Ｄｅａｎ  ａｎｄ  Ｓａｎｊａｙ  Ｇｈｅｍａｗａｔ，“ＭａｐＲｅｄｕｃｅ：Ｓｉｍｐｌｉｆｉｅｄ  Ｄａｔａ  Ｐｒｏｃｅｓｓｉｎｇ  ｏｎ  Ｌａｒｇｅ  Ｃｌｕｓｔｅｒｓ”，ＣＯＭＭＵＮＩＣＡＴＩＯＮＳ  ＯＦ  ＴＨＥ  ＡＣＭ  Ｊａｎｕａｒｙ  ２００８／Ｖｏｌ．５１，Ｎｏ．１
【非特許文献３】“Ｊａｖａ  Ｏｂｊｅｃｔ  Ｓｅｒｉａｌｉｚａｔｉｏｎ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ”，ＪＤＫ  １．２，Ｎｏｖｅｍｂｅｒ  ３０，１９９８
【非特許文献４】Ｐｒｏｔｏｃｏｌ  Ｂｕｆｆｅｒｓ  ［平成２６年２月７日検索］、インターネット〈ＵＲＬ：ｈｔｔｐｓ：／／ｄｅｖｅｌｏｐｅｒｓ．ｇｏｏｇｌｅ．ｃｏｍ／ｐｒｏｔｏｃｏｌ−ｂｕｆｆｅｒｓ／ｄｏｃｓ／ｏｖｅｒｖｉｅｗ〉
【非特許文献５】ＭｅｓｓａｇｅＰａｃｋ，古橋  貞之，“分散システムのためのメッセージ表現手法に関する研究”，筑波大学大学院博士課程  システム情報工学研究科修士論文  ２０１２年３月
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、従来技術では、受信したデータに対するデシリアライズなどのデータの復元処理にかかるＣＰＵの処理コストが依然として高く、オブジェクト通信のスループットの低下を招くという問題がある。
【０００８】
一つの側面では、本発明は、データの復元処理にかかる処理コスト（負荷）を削減する処理プログラム、処理システムおよび処理方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明の一側面によれば、データの種類を識別する識別子と所定の処理を実行する条件とが関連付けられた定義情報を記憶し、データの種類を識別する識別子を含むデータを受信し、受信したデータに含まれる識別子が定義情報に記憶されている場合に、データの所定領域の情報が、データに含まれる識別子に関連付けられた所定の処理を実行する条件を満たすか否かを判断し、判断した結果に応じてデータを復元する処理プログラムが提案される。
【００１０】
また、本発明の一側面によれば、第１処理装置が、データの種類を識別する識別子と所定の処理を実行する条件とが関連付けられた定義情報に記憶された識別子を第２処理装置に送信し、データの種類を識別する識別子を含むデータを第２処理装置から受信し、受信したデータに含まれる識別子が定義情報に記憶されている場合に、データの所定領域の情報が、データに含まれる識別子に関連付けられた所定の処理を実行する条件を満たすか否かを判断し、判断した結果に応じてデータを復元し、第２処理装置が、定義情報に記憶された識別子を第１処理装置から受信し、受信した定義情報に記憶された識別子により識別されるデータを第１処理装置に送信する場合に、識別子を含むデータを第１処理装置に送信する処理システムおよび処理方法が提案される。
【発明の効果】
【００１１】
本発明の一態様によれば、データの復元処理にかかる処理コスト（負荷）を削減することができるという効果を奏する。
【図面の簡単な説明】
【００１２】
【図１】図１は、実施の形態１にかかる処理方法の一実施例を示す説明図である。
【図２】図２は、オブジェクトのシリアライズおよびデシリアライズの処理例を示す説明図である。
【図３】図３は、実施の形態１にかかる処理システム１００のシステム構成例を示す説明図である。
【図４】図４は、ノードＮ１〜Ｎｎのハードウェア構成例を示すブロック図である。
【図５】図５は、受信ノードＮｉの定義情報テーブル５００の一例を示す説明図である。
【図６】図６は、送信ノードＮｊの定義情報テーブル６００の一例を示す説明図である。
【図７】図７は、送信ノードＮｊが管理装置１０３に送信する統計情報７００の一例を示す説明図である。
【図８】図８は、受信ノードＮｉが管理装置１０３に送信する統計情報８００の一例を示す説明図である。
【図９】図９は、管理装置１０３が送信ノードＮｊと受信ノードＮｉに送信する定義情報９００の一例を示す説明図である。
【図１０】図１０は、送信ノードＮｊと受信ノードＮｉが送受信する高速化フィールドを含む高速化メッセージ１０００の一例を示す説明図である。
【図１１】図１１は、実施の形態１にかかる管理装置１０３の機能的構成例を示すブロック図である。
【図１２】図１２は、実施の形態１にかかる送信ノードＮｊの機能的構成例を示すブロック図である。
【図１３】図１３は、実施の形態１にかかる受信ノードＮｉの機能的構成例を示すブロック図である。
【図１４】図１４は、実施の形態１にかかる受信ノードＮｉのデータ受信処理手順の一例を示すフローチャートである。
【図１５】図１５は、実施の形態１にかかる送信ノードＮｊのデータ送信処理手順の一例を示すフローチャートである。
【図１６】図１６は、実施の形態１にかかる受信ノードＮｉの定義情報テーブル５００の更新処理手順の一例を示すフローチャートである。
【図１７】図１７は、実施の形態１にかかる管理装置１０３の高速化オブジェクト決定処理手順の一例を示すフローチャートである。
【図１８】図１８は、実施の形態１にかかる受信ノードＮｉの統計情報８００の算出処理手順の一例を示すフローチャートである。
【図１９】図１９は、実施の形態１にかかる管理装置１０３の高速化オブジェクト決定処理の第１の実施例を示す説明図である。
【図２０】図２０は、実施の形態１にかかる管理装置１０３の高速化オブジェクト決定処理の第２の実施例を示す説明図である。
【図２１】図２１は、実施の形態２にかかる処理システム２１００のシステム構成例を示す説明図である。
【図２２】図２２は、実施の形態２にかかるノードＮｎの機能的構成例を示すブロック図である。
【発明を実施するための形態】
【００１３】
以下に図面を参照して、本発明にかかる処理プログラム、処理システムおよび処理方法の実施の形態を詳細に説明する。
【００１４】
（実施の形態１）
図１は、実施の形態１にかかる処理方法の一実施例を示す説明図である。図１において、処理システム１００は、処理装置１０１と、処理装置１０２と、管理装置１０３と、を含む。処理システム１００は、処理装置間でデータをやり取りして、複合イベント処理などを行うシステムである。
【００１５】
複合イベント処理とは、センサ等の機器から発生するデータを短時間で判断、分析するために、メモリ上に条件を展開しておき、次々と到着するデータに対して条件を当てはめて判断、分析する処理である。複合イベント処理によれば、短時間で膨大なデータを処理することができるようになる。
【００１６】
ここで、処理装置１０１は、処理装置１０２からデータを受信して、データを処理する受信側のコンピュータである。処理装置１０２は、処理装置１０１にデータを送信する送信側のコンピュータである。管理装置１０３は、処理装置１０１と処理装置１０２とを管理するコンピュータである。
【００１７】
データは、該データの種類を識別する識別子を含む。データの種類とは、コンピュータにおける扱いが共通するデータを分類し、それぞれのまとまりとしたものである。例えば、データの種類として、オブジェクト型、配列型、リスト型等が挙げられる。
【００１８】
以下の説明では、データの種類として「オブジェクト型」を例に挙げ、データとしてオブジェクト通信で送受信される「メッセージ」を例に挙げて説明する。
【００１９】
ソフトウェア開発では、例えば、Ｊａｖａ、Ｃ＋＋のようなオブジェクト指向言語が採用されることが多い。オブジェクト指向言語とは、オブジェクトと呼ばれる機能の部品でソフトウェアを構成させるプログラミングに適した言語のことである。
【００２０】
オブジェクトとは、現実世界に存在する物理的あるいは抽象的な実体を、属性と操作の集合としてモデル化し、コンピュータ上に再現したデータである。また、オブジェクトは、項目名により識別される項目（メンバ）を有する。メンバは、例えば、変数であるフィールドや関数であるメソッドなどである。
【００２１】
また、オブジェクト指向言語で開発されたソフトウェアの通信では、開発効率を重視して、オブジェクト通信が使用されることが多い。オブジェクト通信とは、通常バイト列しか送受信できないネットワークにおいてオブジェクトの送受信を可能にする技術で、送信側のコンピュータが、シリアライズによりオブジェクトをバイト列に変換してメッセージに載せ、受信側のコンピュータが、メッセージ上のバイト列をデシリアライズによりオブジェクトに逆変換することによりオブジェクトを送受信する通信である。
【００２２】
ここで、メッセージとは、送受信されるデータであり、例えば、データを送受信するためのアプリケーション層での最小の送受信単位である。シリアライズとは、データを符号化（直列化）する処理である。具体的には、例えば、シリアライズは、ネットワークを介してオブジェクトを送受信するために、オブジェクト型、オブジェクトのフィールドの型、およびフィールドの値を、バイト列に直列化してメッセージに配置する処理である。
【００２３】
また、シリアライズでは、あるオブジェクトがフィールドの値として別のオブジェクトを格納している場合、そのオブジェクトのフィールドを再帰的に格納する。また、シリアライズでは、オブジェクトのメソッド、フィールド内のスタティック変数と定数値は、バイト列に直列化して配置しない。
【００２４】
デシリアライズとは、符号化（直列化）されたデータを復元する処理である。具体的には、例えば、デシリアライズは、バイト列からオブジェクト型、オブジェクトのフィールドの型、およびフィールドの値を復元する処理である。オブジェクト型、フィールドの型はリフレクションにより復元する。リフレクションとは、Ｊａｖａのような静的型付け言語において動的に型付けをする技術で、ここではデータ内のオブジェクト型を示す文字列もしくは固有値から、データベース等を参照して、オブジェクトの型定義を復元することである。
【００２５】
ここで、図２を用いて、オブジェクトのシリアライズおよびデシリアライズの処理例について説明する。
【００２６】
図２は、オブジェクトのシリアライズおよびデシリアライズの処理例を示す説明図である。図２において、オブジェクト２０１は、オブジェクト型Ｗのオブジェクトであり、メンバとしてフィールドとメソッドを有する。オブジェクト型Ｗは、フィールドとして、ｉｎｔ  Ａ、ｉｎｔ  Ｂ、ｄｏｕｂｌｅ  Ｃを有し、メソッドとして、Ｆ（ｉｎｔ  ｘ）、Ｇ（ｉｎｔ  ｘ，ｉｎｔ  ｙ）、Ｈ（ｉｎｔ  ｘ，Ｏｂｊｅｃｔ  ｚ）を有する。
【００２７】
ここで、Ａ、Ｂ、Ｃはフィールドを識別するためのフィールド名であり、Ｆ、Ｇ、Ｈはメソッドを識別するためのメソッド名である。また、フィールドのｉｎｔ、ｄｏｕｂｌｅは、フィールドの型である。フィールドの型とは、コンピュータにおけるデータの扱いに関する形式のことである。オブジェクト２０１は、フィールドの値として、Ａ＝１、Ｂ＝１０、Ｃ＝６４を持つ。
【００２８】
バイト列２０２は、オブジェクト２０１をシリアライズしたものである。シリアライズ時に、オブジェクト型、オブジェクトのフィールドの型、フィールド名、およびフィールドの値が数値に変換され、バイト列２０２が生成される。一方、メソッドは全てのオブジェクト型Ｗで共通であるので、バイト列２０２に含まれない。
【００２９】
また、バイト列２０２では、オブジェクト型“Ｗ”は文字列を数値化したもの、または予め取り決めた数値に置き換える。バイト列２０２は、デシリアライズ時に、数値に変換された値から、オブジェクト型“Ｗ”は文字列を数値化したもの、または予め取り決めた数値からリフレクションにより復元される。これに伴い、オブジェクトのフィールドの型、メソッドも復元される（オブジェクト型から自動的に決まる）。さらにバイト列２０２に格納されたフィールドの値が復元される。
【００３０】
メッセージ２０３は、バイト列２０２にヘッダをつけたものである。ここで、ヘッダとは、メッセージに関する情報を格納する部分であり、メッセージの送信者、受信者、経由したサーバおよび件名等、メッセージの送受信に用いる情報を格納する。メッセージ２０３は、送信時にバイト列２０２から組み立てられ、受信時にバイト列２０２が取り出される。
【００３１】
受信側のコンピュータは、メッセージ２０３を受信して、メッセージ２０３からバイト列２０２を取り出し、バイト列２０２に存在するオブジェクトとそのフィールドをすべてデシリアライズする。この後、受信側のコンピュータは、デシリアライズされたバイト列２０２、すなわち、オブジェクト２０１のフィールドの値を参照して、条件に一致するか否かの判断が行われる。
【００３２】
ここで、条件とは、受信側のコンピュータが受信したデータに対して所定の処理を実行するか否かを判定するためのものである。所定の処理とは、例えば、データに対する分析処理である。具体的には、例えば、受信側のコンピュータは、前処理と後処理とからなるクエリを実行する。前処理は、受信したデータが条件を満たしているか否かを判定する処理である。後処理は、前処理で条件を満たすと判定されたデータに対して分析等の所定の処理を実行する処理である。
【００３３】
ところが、受信側のコンピュータは、受信したバイト列２０２をデシリアライズしてオブジェクト２０１を復元したとしても、その一部分だけを参照して、条件に一致しない場合は何もせず、デシリアライズして生成したオブジェクト２０１を破棄する場合がある。また、受信側のコンピュータは、受信したバイト列２０２をデシリアライズしてオブジェクト２０１を生成したとしても、全くフィールドを参照しないで、受信したバイト列２０２を他のコンピュータに送信する場合がある。
【００３４】
すなわち、受信側のコンピュータにおいて、一部のフィールドだけを参照する、あるいは、全くフィールドを参照しない場合であっても、受信したバイト列２０２をデシリアライズしてオブジェクト２０１を生成すると、受信したバイト列２０２をデシリアライズしてオブジェクト２０１を生成するためにＣＰＵを使用することになる。このため、受信側のコンピュータのＣＰＵにかかる負荷が増加して、オブジェクト通信のスループットが低下する要因となる。
【００３５】
そこで、実施の形態１では、処理装置１０１は、受信したデータ（例えば、メッセージ１２２）が、該データの種類を識別する識別子と関連付けて記憶された所定の処理を実行する条件を満たすか否かに応じて、データを復元する。これにより、所定の処理に用いられる値を含まないデータに対する無駄な復元処理を削減する。以下、実施の形態１にかかる処理システム１００のデータ処理例について説明する。
【００３６】
（１）管理装置１０３は、処理装置１０１と処理装置１０２に定義情報１２１を送信する。ここで、定義情報１２１は、オブジェクト型を識別する識別子と、当該オブジェクト型の前処理で使う値を埋め込むためのメッセージ（例えば、メッセージ１２２）内の所定領域を示す情報とを含む。
【００３７】
前処理で使う値とは、オブジェクトに含まれる前処理で使うフィールドの値である。また、前処理で使う値は、１つのメッセージに複数個存在する場合がある。定義情報１２１には、例えば、オブジェクトのすべてのフィールドの値について、メッセージ内の所定領域を示す情報が含まれていてもよい。また、所定領域を示す情報とは、メッセージにおける、フィールドの値の位置と、フィールドの値のデータサイズとを示す情報である。
【００３８】
処理装置１０１は、受信した定義情報１２１に含まれるオブジェクト型を識別する識別子を、所定の処理を実行する条件と関連付けて、定義情報１２３として記憶装置に保存する。また、受信した定義情報１２１に含まれる所定領域を示す情報は、所定の処理を実行する条件の一つとして記憶装置に記憶される。
【００３９】
所定の処理は、定義情報１２１に含まれる識別子により識別されるオブジェクト型のオブジェクトに対して実行される分析処理などの処理である。例えば、処理装置１０１がクエリを実行するコンピュータである場合、所定の処理は、クエリにおける後処理である。処理装置１０２は、受信した定義情報１２１を記憶装置に保存する。
【００４０】
図１の例では、定義情報１２１は、オブジェクト型を識別する識別子として“Ｗ”と、“Ｗ”により識別されるオブジェクト型の前処理で使う値を埋め込むためのメッセージ１２２内の所定領域を示す情報として“Ｘ：Ｌｏｎｇ”とが関連付けられた情報である。ここで、“Ｘ”は埋め込まれる前処理で使う値の位置を示す情報であり、“Ｌｏｎｇ”は埋め込まれる前処理で使う値のデータサイズを示す情報である。
【００４１】
（２）処理装置１０２は、オブジェクトを処理装置１０１に送信する場合に、オブジェクトをシリアライズする。この際、当該オブジェクトが定義情報１２１に記憶された識別子により識別されるオブジェクト型のオブジェクトである場合、処理装置１０２は、オブジェクト型を識別する識別子と、シリアライズしたオブジェクトとを含むメッセージ１２２を処理装置１０１に送信する。
【００４２】
図１の例では、処理装置１０２は、送信するオブジェクトのオブジェクト型が“Ｗ”である場合、オブジェクト型を識別する“Ｗ”と、前処理で使う値“ａ”を、メッセージ１２２内の、位置が“Ｘ”でデータサイズが“Ｌｏｎｇ”である所定領域に埋め込む。そして、処理装置１０２は、“Ｗ”と、“ａ”と、直列化データとを含むメッセージ１２２を処理装置１０１に送信する。直列化データは、送信するオブジェクトをシリアライズしたデータである。
【００４３】
（３）処理装置１０１は、処理装置１０２からメッセージ１２２を受信する。
【００４４】
（４）処理装置１０１は、受信したメッセージ１２２に含まれるオブジェクト型を識別する識別子が定義情報１２３に記憶されているか否かを判断する。処理装置１０１は、定義情報１２３に記憶されている場合、メッセージ１２２の所定領域の情報が、メッセージ１２２に含まれる識別子に関連付けられた所定の処理を実行する条件を満たすか否かを判断する。
【００４５】
図１の例では、受信したメッセージ１２２に含まれるオブジェクト型を識別する“Ｗ”は、定義情報１２３に記憶されている。このため、処理装置１０１は、位置が“Ｘ”でデータサイズが“Ｌｏｎｇ”である所定領域の値“ａ”が、“Ｗ”に関連付けられた所定の処理を実行する条件を満たすか否かを判断する。
【００４６】
（５）処理装置１０１は、判断した結果に応じて、メッセージ１２２内の直列化データを復元する。例えば、処理装置１０１は、条件を満たすと判断した場合、メッセージ１２２内の直列化データを復元する。また、処理装置１０１は、条件を満たさないと判断した場合、メッセージ１２２内の直列化データをデシリアライズしてオブジェクトを生成することなく、メッセージ１２２を破棄する。
【００４７】
このように、処理装置１０１によれば、受信したデータ（例えば、メッセージ１２２）に含まれる識別子が定義情報１２３に記憶されている場合に、データの所定領域の情報が、データに含まれる識別子に関連付けられた所定の処理を実行する条件を満たすか否かを判断し、判断した結果に応じて受信したデータを復元することができる。
【００４８】
これにより、処理装置１０１は、分析処理などで使用される値を含まずデシリアライズしてオブジェクトが生成されても破棄されるデータに対しては、デシリアライズしてオブジェクトを生成することを行わないようにすることができ、不要なデシリアライズしてオブジェクトを生成することを削減することができる。例えば、複合イベント処理では、多くのデータは所定の処理を実行する条件を満たさず破棄されるため、処理装置１０１は、不要なデシリアライズしてオブジェクトを生成することを大幅に削減することができる。
【００４９】
なお、処理装置１０１における、所定の処理を実行する条件を満たすか否かの判断では、オブジェクトのすべてのフィールドの値を参照するのではなく、一部のフィールドの値しか参照しない場合がある。このため、定義情報１２１には、条件を満たすか否かの判断で参照される一部のフィールドの値についてのみ、メッセージ内の所定領域を示す情報が含まれることにしてもよい。
【００５０】
（処理システム１００のシステム構成例）
図３は、実施の形態１にかかる処理システム１００のシステム構成例を示す説明図である。図３において、処理システム１００は、ノードＮ１〜Ｎｎ（ｎ：２以上の自然数）と、管理装置１０３と、を含む。ノードＮ１〜Ｎｎおよび管理装置１０３は、有線または無線のネットワーク３００を介して接続される。ネットワーク３００は、例えば、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、インターネットなどである。
【００５１】
ノードＮ１〜Ｎｎは、データの送受信を行うコンピュータである。ノードＮ１〜Ｎｎおよび管理装置１０３は、例えば、サーバ、ＰＣ（パーソナル・コンピュータ）などである。以下の説明では、ノードＮ１〜Ｎｎのうち、データを受信する受信側のノードを「受信ノードＮｉ」と表記し（ｉ＝１，２，…，ｎ）、データを送信する送信側のノードを「送信ノードＮｊ」と表記する場合がある（ｊ≠ｉ、ｊ＝１，２，…，ｎ）。
【００５２】
図１に示した処理装置１０１は、受信ノードＮｉに対応する。また、図１に示した処理装置１０２は、送信ノードＮｊに対応する。なお、各ノードＮ１〜Ｎｎは、受信ノードＮｉおよび送信ノードＮｊのいずれのノードにもなり得る。
【００５３】
（ノードＮ１〜Ｎｎのハードウェア構成例）
次に、図３に示したノードＮ１〜Ｎｎのハードウェア構成例について説明する。ここでは、各ノードＮ１〜Ｎｎを、単に「ノードＮ」と表記する。
【００５４】
図４は、ノードＮ１〜Ｎｎのハードウェア構成例を示すブロック図である。図４において、ノードＮは、ＣＰＵ４０１と、メモリ４０２と、Ｉ／Ｆ（Ｉｎｔｅｒｆａｃｅ）４０３と、磁気ディスクドライブ４０４と、磁気ディスク４０５とを有する。また、各構成部は、バス４００によってそれぞれ接続される。
【００５５】
ここで、ＣＰＵ４０１は、ノードＮの全体の制御を司る。メモリ４０２は、例えば、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）およびフラッシュＲＯＭなどを有する。具体的には、例えば、フラッシュＲＯＭやＲＯＭが各種プログラムを記憶し、ＲＡＭがＣＰＵ４０１のワークエリアとして使用される。メモリ４０２に記憶されるプログラムは、ＣＰＵ４０１にロードされることで、コーディングされている処理をＣＰＵ４０１に実行させる。
【００５６】
Ｉ／Ｆ４０３は、通信回線を通じてネットワーク３００に接続され、ネットワーク３００を介して他のコンピュータ（例えば、他のノードＮや管理装置１０３）に接続される。そして、Ｉ／Ｆ４０３は、ネットワーク３００と内部のインターフェースを司り、他のコンピュータからのデータの入出力を制御する。Ｉ／Ｆ４０３には、例えば、モデムやＬＡＮアダプタなどを採用することができる。
【００５７】
磁気ディスクドライブ４０４は、ＣＰＵ４０１の制御にしたがって磁気ディスク４０５に対するデータのリード／ライトを制御する。磁気ディスク４０５は、磁気ディスクドライブ４０４の制御で書き込まれたデータを記憶する。
【００５８】
なお、ノードＮは、上述した構成部のほか、例えば、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）、キーボード、マウス、ディスプレイなどを有することにしてもよい。また、図３に示した管理装置１０３についても、上述したノードＮと同様のハードウェア構成例により実現することができる。
【００５９】
（定義情報テーブル５００の一例）
図５は、受信ノードＮｉの定義情報テーブル５００の一例を示す説明図である。図５において、受信ノードＮｉの定義情報テーブル５００は、例えば、後述する受信ノードＮｉの更新部１３０５によって作成、更新され、受信ノードＮｉのメモリ４０２または磁気ディスク４０５に記憶される。
【００６０】
定義情報テーブル５００は、オブジェクト型、バージョン番号、フィールド名、位置、フォーマットおよび条件の項目を有する。定義情報テーブル５００は、各項目に情報を設定することで、定義情報（例えば、定義情報５００−１〜５００−８）をレコードとして記憶する。
【００６１】
ここで、オブジェクト型は、オブジェクトの種類を識別する識別子である。バージョン番号は、定義情報のバージョンを示す番号である。バージョン番号は、オブジェクト型ごとに定義され、定義が更新されるとインクリメントされる。フィールド名は、オブジェクト型のフィールドを識別する識別子である。オブジェクト型のフィールドの中で、メッセージ内に埋め込むフィールドのフィールド名が記憶される。位置は、当該レコードのフィールド名のフィールドがメッセージ内で格納される順番を示す。フォーマットは、当該レコードのフィールド名のフィールドがメッセージ内で格納される形式を示す。条件は、オブジェクト型のフィールドの値に対する条件である。
【００６２】
定義情報テーブル５００に記憶された、「フィールド名」の情報は、「オブジェクト型」のオブジェクトをシリアライズしたバイト列とは異なる、メッセージ内の所定領域に埋め込まれる。以下の説明では、メッセージ内の所定領域に埋め込まれるフィールド名を、「高速化フィールド名」と表記し、高速化フィールド名を有するオブジェクト型を、「高速化オブジェクト型」と表記する場合がある。また、高速化オブジェクト型で識別されるオブジェクトを載せたメッセージを、「高速化メッセージ」と表記する場合がある。
【００６３】
図５の例では、ＣａｒＰｏｓｉｔｉｏｎ、ＰｅｒｓｏｎＰｏｓｉｔｉｏｎがメッセージ内に高速化オブジェクト型として定義されている。ＣａｒＰｏｓｉｔｉｏｎのバージョン番号は２であり、ＰｅｒｓｏｎＰｏｓｉｔｉｏｎのバージョン番号は４である。ＣａｒＰｏｓｉｔｉｏｎの中で、ＰｏｓｉｔｉｏｎＸ、ＰｏｓｉｔｉｏｎＹ、ＣａｒＮａｍｅ、ＣａｒＴｙｐｅ、ＣａｒＭｏｄｅｌが高速化フィールド名として定義されている。ＰｅｒｓｏｎＰｏｓｉｔｉｏｎの中で、ＰｏｓｉｔｉｏｎＸ、ＰｏｓｉｔｉｏｎＹ、ＰｏｓｉｔｉｏｎＨが高速化フィールド名として定義されている。
【００６４】
これらのフィールド名のメッセージ上の位置とフォーマットが、定義情報テーブル５００内の位置とフォーマットの項目で示されている。図５の例では、Ｌｏｎｇは８バイト、Ｉｎｔｅｇｅｒは４バイトの固定長フィールドで、Ｓｔｒｉｎｇは可変長フィールドである。例えば、可変長フィールドはメッセージのフィールド記憶領域の先頭にその長さが記述されている。また、メッセージにフィールドの値を埋め込む際、固定長フィールド、可変長フィールドの順で記録してもよい。この場合、固定長フィールドは位置が一定であるため、メッセージ上で固定長フィールドの位置は容易に特定できる。
【００６５】
可変長フィールドは、メッセージごとにメッセージ上での位置が異なる。このため、可変長フィールドの位置の特定は、可変長フィールドを順に先頭の長さの記述を解析して次の可変長フィールドの位置を特定することを繰り返せばよい。
【００６６】
例えば、ＣａｒＮａｍｅの長さが１０、ＣａｒＴｙｐｅの長さが１４、ＣａｒＭｏｄｅｌの長さが１６である場合を想定する。この場合、これらのメッセージ上での格納位置は、ＣａｒＮａｍｅが可変長フィールドの先頭に記述されているのでフィールド格納位置の先頭から８＋８＝１６バイト目である。ＣａｒＴｙｐｅはＣａｒＮａｍｅの長さを読み取ってそれを加えて１６＋１０＝２６バイト目であり、ＣａｒＭｏｄｅｌも同様に２６＋１４＝４０バイト目となる。
【００６７】
また、図５の例では、ＣａｒＰｏｓｉｔｉｏｎ内のフィールド名ＰｏｓｉｔｉｏｎＸと、ＰｏｓｉｔｉｏｎＹと、ＣａｒＴｙｐｅとに条件が定義されている。なお、受信ノードＮｉの定義情報テーブル５００のフィールド名に対して条件が定義されない場合は、条件フィールドは空白にしてもよい。
【００６８】
（定義情報テーブル６００の一例）
図６は、送信ノードＮｊの定義情報テーブル６００の一例を示す説明図である。図６において、送信ノードＮｊの定義情報テーブル６００は、例えば、後述する送信ノードＮｊの更新部１２０６によって作成、更新され、送信ノードＮｊのメモリ４０２または磁気ディスク４０５に記憶される。
【００６９】
定義情報テーブル６００は、オブジェクト型、バージョン番号、フィールド名、位置およびフォーマットの項目を有する。定義情報テーブル６００は、各項目に情報を設定することで、定義情報（例えば、定義情報６００−１〜６００−８）をレコードとして記憶する。
【００７０】
ここで、オブジェクト型、バージョン番号、フィールド名、位置およびフォーマットは、それぞれの定義情報テーブル５００の同じ名前の項目と同じ情報を保存する。
【００７１】
（統計情報７００の一例）
ここで、送信ノードＮｊが管理装置１０３に送信する統計情報７００の一例について説明する。
【００７２】
図７は、送信ノードＮｊが管理装置１０３に送信する統計情報７００の一例を示す説明図である。図７において、送信ノードＮｊが管理装置１０３に送信する統計情報７００は、例えば、送信ノードＮｊの算出部１２０５によって算出され、送信ノードＮｊの通信部１２０４によって管理装置１０３に送信される。
【００７３】
統計情報７００は、ＣＰＵ負荷、コネクション識別子、測定期間、オブジェクト型、送信回数およびシリアライズコストを記録する。ここで、ＣＰＵ負荷は、送信ノードＮｊのＣＰＵ負荷を示す。例えば、ＣＰＵ負荷は、測定期間でのＣＰＵ使用率の平均値を使用してもよい。コネクション識別子とは、送信ノードＮｊと受信ノードＮｉとの間のコネクションを識別するためのものである。コネクション識別子は、コネクションごとに異なるオブジェクト型およびフィールド名を使用する場合に、コネクションを区別するために使用される。全コネクションで共通の定義を使用する場合、送信ノードＮｊはコネクション識別子を管理装置１０３に送信しなくてもよい。コネクション識別子は、受信ノードＮｉが管理装置１０３に送信するコネクション識別子と同じであるため、省略してもよい。
【００７４】
測定期間は、オブジェクト型ごとの送信回数を測定する期間である。例えば、管理装置１０３が、測定期間を送信ノードＮｊに予め通知しておく。オブジェクト型ごとの送信回数は、測定期間において、オブジェクト型で識別されるオブジェクトを送信ノードＮｊが送信した回数である。オブジェクト型ごとの送信回数は、受信ノードＮｉが管理装置１０３に送信するオブジェクト型ごとの受信回数と同じであるため、省略してもよい。オブジェクト型ごとのシリアライズコストは、オブジェクト型で識別されるオブジェクトのシリアライズにかかるコストである。オブジェクト型で識別されるオブジェクトのシリアライズにかかるＣＰＵ時間であってもよい。このシリアライズコストは、静的に決定される場合、省略してもよい。シリアライズコストが、動的に変化する場合、一定時間ごとの平均値を使用してもよい。
【００７５】
送信ノードＮｊは、例えば、以下の第１から第３の方法によりシリアライズコストを算出することができる。
【００７６】
第１の方法：実測による方法。送信ノードＮｊは、所定回数に１回の割合で、実際にシリアライズに要したＣＰＵ時間を測定し、平均をシリアライズコストとする。ただし、ＣＰＵ時間の測定は、ＣＰＵにとって、負荷が高いので、シミュレーション等で行ってもよい。
【００７７】
第２の方法：モデルによる方法（１）。送信ノードＮｊは、オブジェクトまたはフィールドを内包するフィールドの個数を数え、数えた個数をシリアライズコストとする。リフレクションが最も高コストであるため、この方法は、リフレクションの回数をシリアライズコストとする。
【００７８】
例えば、以下のＪａｖａクラスのシリアライズコストを求める。
Ｃｌａｓｓ  ＣａｒＰｏｓｉｔｉｏｎ  ｛
ｌｏｎｇ  ＰｏｓｉｔｉｏｎＸ
ｌｏｎｇ  ＰｏｓｉｔｉｏｎＹ
ｉｎｔ  ＰｏｓｉｔｉｏｎＨ
Ｓｔｒｉｎｇ  ＣａｒＮａｍｅ
Ｓｔｒｉｎｇ  ＣａｒＴｙｐｅ
Ｓｔｒｉｎｇ  ＣａｒＭｏｄｅｌ
｝
【００７９】
ＣａｒＰｏｓｉｔｉｏｎクラス自身のリフレクションと、フィールドのうちＪａｖａプリミティブでなくて復元にリフレクションを行うものが３つ（ＣａｒＮａｍｅ，ＣａｒＴｙｐｅ，ＣａｒＭｏｄｅｌ）あるため、シリアライズコストは１＋３＝４となる。Ｓｔｒｉｎｇの長さが小さい場合に、第２の方法によるシリアライズコストの算出は有効に機能する。
【００８０】
第３の方法：モデルによる方法（２）。送信ノードＮｊは、オブジェクトのサイズを測り、測ったサイズをシリアライズコストとする。ここで、オブジェクトのサイズとは、オブジェクトのすべてのフィールドのデータサイズを合計したサイズである。動画ファイルなど極めて巨大なオブジェクトの場合、オブジェクトのサイズによりシリアライズ時間が決定されるため、この方法が効果的である。
【００８１】
（統計情報８００の一例）
ここで、受信ノードＮｉが管理装置１０３に送信する統計情報８００の一例について説明する。
【００８２】
図８は、受信ノードＮｉが管理装置１０３に送信する統計情報８００の一例を示す説明図である。受信ノードＮｉが管理装置１０３に送信する統計情報８００は、例えば、受信ノードＮｉの算出部１３０４によって作成され、受信ノードＮｉの通信部１３０１によって管理装置１０３に送信される。
【００８３】
受信ノードＮｉが管理装置１０３に送信する統計情報８００は、ＣＰＵ負荷、コネクション識別子、測定期間、オブジェクト型、受信回数、フィールド名、参照回数およびデシリアライズコストを記録する。
【００８４】
ここで、ＣＰＵ負荷は、受信ノードＮｉのＣＰＵ負荷を示す。例えば、ＣＰＵ負荷は、測定期間でのＣＰＵ使用率の平均値を使用してもよい。コネクション識別子は、コネクションごとに異なるオブジェクト型およびフィールド名を使用する場合に、コネクションを区別するために使用される。 全コネクションで共通の定義を使用する場合、受信ノードＮｉはコネクション識別子を管理装置１０３に送信しなくてもよい。
【００８５】
測定期間は、オブジェクト型ごとの受信回数とフィールド名ごとの参照回数とを測定する期間である。例えば、管理装置１０３が、測定期間を受信ノードＮｉに予め通知しておく。オブジェクト型ごとの受信回数は、測定期間において、オブジェクト型で識別されるオブジェクトを受信ノードＮｉが受信した回数である。フィールド名ごとの参照回数は、測定期間において、オブジェクト内のフィールド名を受信ノードＮｉの判断部１３０２が参照した回数である。オブジェクト型ごとの受信回数は、すべてのオブジェクト型に対して測定してもよく、受信回数が一定数より多いオブジェクト型についてのみ測定してもよい。すべてのオブジェクト型に対して測定しても、受信回数が一定数より多いオブジェクト型についてのみ管理装置１０３に送信してもよい。フィールド名ごとの参照回数も、すべてのフィールド名に対して測定してもよく、参照回数が一定数より多いフィールド名についてのみ測定してもよい。すべてのフィールド名に対して測定しても、参照回数が一定数より多いフィールド名についてのみ管理装置１０３に送信してもよい。オブジェクト型ごとのデシリアライズコストは、オブジェクト型で識別されるオブジェクトをデシリアライズして生成することにかかるコストである。オブジェクト型で識別されるオブジェクトをデシリアライズして生成することにかかるＣＰＵ時間であってよい。このデシリアライズコストは、静的に決定される場合、省略してもよい。デシリアライズコストが、動的に変化する場合、一定時間ごとの平均値を使用してもよい。
【００８６】
（定義情報９００の一例）
ここで、管理装置１０３が送信ノードＮｊと受信ノードＮｉに送信する定義情報９００の一例について説明する。
【００８７】
図９は、管理装置１０３が送信ノードＮｊと受信ノードＮｉに送信する定義情報９００の一例を示す説明図である。管理装置１０３が送信ノードＮｊと受信ノードＮｉに送信する定義情報９００は、例えば、管理装置１０３の決定部１１０２によって作成され、管理装置１０３のメモリ４０２または磁気ディスク４０５に記憶される。また、定義情報９００は、例えば、管理装置１０３の通知部１１０３によって、送信ノードＮｊと受信ノードＮｉに送信される。
【００８８】
管理装置１０３が送信ノードＮｊと受信ノードＮｉに送信する定義情報９００は、オブジェクト型と、オブジェクト型ごとのバージョン番号と、フィールド名と、フィールド名で識別されるフィールドの位置と格納フォーマットと、を関連付けて記憶する。
【００８９】
ここでオブジェクト型は、オブジェクトの種類を識別する識別子である。バージョン番号は、定義のバージョンを示す番号である。バージョン番号は、オブジェクト型ごとに定義され、定義が更新されると増加される。フィールド名は、オブジェクト型のフィールドを識別する識別子である。オブジェクト型のフィールドの中で、メッセージ内に埋め込むフィールドが記憶される。位置は、当該レコードのフィールド名のフィールドがメッセージ内で格納される順番を示す。フォーマットは、当該レコードのフィールド名のフィールドがメッセージ内で格納される形式を示す。また、フィールド名、位置およびフォーマットがすべてヌルのオブジェクト型は、メッセージに埋め込むオブジェクトとして扱わないことを示す。
【００９０】
管理装置１０３が送信した定義情報９００を受信した受信ノードＮｉは、受信ノードＮｉの定義情報テーブル５００を更新する。また、管理装置１０３が送信した定義情報９００を受信した送信ノードＮｊは、送信ノードＮｊの定義情報テーブル６００を更新する。
【００９１】
図９の例では、送信ノードＮｊと受信ノードＮｉは、オブジェクト型ＣａｒＰｏｓｉｔｉｏｎ、ＰｅｒｓｏｎＰｏｓｉｔｉｏｎのレコードを、作成または更新し、オブジェクト型ＴｒａｉｎＰｏｓｉｔｉｏｎのレコードを削除する。
【００９２】
（高速化メッセージ１０００の一例）
ここで、送信ノードＮｊと受信ノードＮｉが送受信する高速化フィールドを含む高速化メッセージ１０００の一例について説明する。
【００９３】
図１０は、送信ノードＮｊと受信ノードＮｉが送受信する高速化フィールドを含む高速化メッセージ１０００の一例を示す説明図である。送信ノードＮｊと受信ノードＮｉが送受信する高速化フィールドを含む高速化メッセージ１０００は、例えば、送信ノードＮｊの埋込部１２０３によって作成され、通信部１２０４によって送信され、受信ノードＮｉの通信部１３０１で受信される。
【００９４】
送信ノードＮｊと受信ノードＮｉが送受信する高速化フィールドを含む高速化メッセージ１０００は、ヘッダとボディを有し、ヘッダは、一般ヘッダ情報と高速化フィールド情報とを有する。ここで、ヘッダは、メッセージの先頭に格納され、メッセージに関する情報を格納する。ボディは、データ本体を格納する。一般ヘッダ情報は、メッセージの送信者、受信者、経由したサーバおよび題名等、メッセージの送受信に不可欠な情報を記憶する。例えば、一般ヘッダ情報は、ＩＰヘッダ、ＴＣＰヘッダ等を格納する。高速化フィールド情報は、高速化フィールドに関する情報を格納する。
【００９５】
高速化フィールド情報は、高速化オブジェクトの有無の識別子、オブジェクト型識別子、バージョン番号および高速化フィールドを有する。オブジェクト型識別子は、複数存在することができる。バージョン番号および高速化フィールドは、オブジェクト型識別子ごとに存在し、複数存在することができる。ボディは、高速化フィールド情報のオブジェクト型識別子で識別されるオブジェクトをシリアライズしたバイト列を有する。
【００９６】
高速化オブジェクトの有無の識別子は、高速化オブジェクトを含むメッセージであるかどうかを示す識別子である。受信ノードＮｉは、高速化オブジェクトの有無の識別子により、高速化フィールドを含むメッセージであるか、高速化フィールドを含まないメッセージであるかを判別することができる。例えば、当該識別子が存在する場合、受信ノードＮｉは、受信したメッセージが高速化オブジェクトを含むメッセージであると判別することができる。この場合、高速化フィールドを含まないメッセージは、従来通りのメッセージ形式でそのまま送信することができる。また、当該識別子は、高速化オブジェクトが存在する、または、しないを示すフラグであってもよい。
【００９７】
（管理装置１０３の機能的構成例）
図１１は、実施の形態１にかかる管理装置１０３の機能的構成例を示すブロック図である。図１１において、管理装置１０３は、受信部１１０１と、決定部１１０２と、通知部１１０３とを含む構成である。各機能部は、具体的には、例えば、図４に示したメモリ４０２などの記憶装置に記憶されたプログラムをＣＰＵ４０１に実行させることにより、その機能を実現する。各機能部の処理結果は、例えば、図４に示したメモリ４０２などの記憶装置に記憶される。
【００９８】
受信部１１０１は、送信ノードＮｊと受信ノードＮｉから統計情報７００、８００を受信する機能を有する。受信部１１０１は、受信した統計情報７００、８００を決定部１１０２に渡す。
【００９９】
決定部１１０２は、受信した統計情報７００、８００から高速化オブジェクト型および高速化フィールド名を定義する定義情報９００を決定する機能を有する。決定部１１０２は、決定した定義情報９００を通知部１１０３に渡す。決定部１１０２は、例えば、次のようにして、定義情報９００を決定する。
【０１００】
決定部１１０２は、例えば、受信した統計情報７００から、統計情報７００を送信した送信ノードＮｊを区別せずに、オブジェクト型ごとに、送信頻度とシリアライズコストの積を算出する。送信頻度とは、単位時間での送信回数のことである。例えば、送信回数を測定期間で割ることにより求められる。また、送信頻度として、送信回数を使用することも可能である。決定部１１０２は、算出した積の値が大きいものから順に所定数のオブジェクト型を高速化オブジェクト型として決定する。また、算出した積の値が、所定の閾値以上のオブジェクト型を高速化オブジェクト型として決定することもできる。また、算出した積の値の全体のうち所定の割合をカバーするまで、算出した積の値が大きいものから順に高速化オブジェクト型を決定することができる。所定数、所定の閾値および所定の割合は、シミュレーション等で事前に決定しておき、管理装置１０３に設定しておくことができる。
【０１０１】
また、決定部１１０２は、例えば、受信した統計情報８００から、統計情報８００を送信した受信ノードＮｉを区別せずに、オブジェクト型ごとに、受信頻度とデシリアライズコストの積を算出する。受信頻度とは、単位時間での受信回数のことである。例えば、受信回数を測定期間で割ることにより求められる。また、受信頻度として、受信回数を使用することも可能である。決定部１１０２は、受信した統計情報７００と同様に高速化オブジェクト型を決定することができる。さらに、決定部１１０２は、統計情報８００から決定した高速化オブジェクト型の中で、参照頻度が所定の閾値以上のフィールド名を抽出して、高速化フィールド名を決定することもできる。この所定の閾値も、シミュレーション等で事前に決定しておき、管理装置１０３に設定しておくことができる。
【０１０２】
さらに、決定部１１０２は、次のようにして、定義情報９００を決定することもできる。決定部１１０２は、受信した統計情報７００から、統計情報７００を送信した送信ノードＮｊのＣＰＵ負荷が最も高い送信ノードＮｊから受信した統計情報７００を選択する。決定部１１０２は、選択した統計情報７００からオブジェクト型ごとに、送信頻度とシリアライズコストの積を算出する。決定部１１０２は、算出した積の値が大きいものから順に所定数のオブジェクト型を高速化オブジェクト型として決定する。また、算出した積の値が、所定の閾値以上のオブジェクト型を高速化オブジェクト型として決定することもできる。また、算出した積の値の全体のうち所定の割合をカバーするまで、算出した積の値が大きいものから順に高速化オブジェクト型を決定することができる。ここでの所定数、所定の閾値および所定の割合も、シミュレーション等で事前に決定しておき、管理装置１０３に設定しておくことができる。
【０１０３】
また、決定部１１０２は、受信した統計情報８００から、統計情報８００を送信した受信ノードＮｉのＣＰＵ負荷が最も高い受信ノードＮｉから受信した統計情報８００を選択する。決定部１１０２は、選択した統計情報８００からオブジェクト型ごとに、受信頻度とデシリアライズコストの積を算出する。決定部１１０２は、受信した統計情報７００と同様に高速化オブジェクト型を決定することができる。さらに、決定部１１０２は、統計情報８００から決定した高速化オブジェクト型の中で、参照頻度が所定の閾値以上のフィールド名を抽出して、高速化フィールド名を決定することもできる。この所定の閾値も、シミュレーション等で事前に決定しておき、管理装置１０３に設定しておくことができる。
【０１０４】
また、決定部１１０２は、受信ノードＮｉ、送信ノードＮｊを区別せずに、受信頻度とデシリアライズコストの積および送信頻度とシリアライズコストの積の値が大きいものから順に所定数のオブジェクト型を高速化オブジェクト型として決定することもできる。また、受信ノードＮｉ、送信ノードＮｊを区別せずに、算出した積の値が、所定の閾値以上のオブジェクト型を高速化オブジェクト型として決定することもできる。また、受信ノードＮｉ、送信ノードＮｊを区別せずに、算出した積の値の全体のうち所定の割合をカバーするまで、算出した積の値が大きいものから順に高速化オブジェクト型を決定することができる。
【０１０５】
決定部１１０２は、決定した高速化オブジェクト型を、定義情報９００に登録して、バージョン番号を定義する。決定部１１０２は、決定した高速化オブジェクト型が、定義情報９００にすでに登録されている場合は新しいバージョン番号を定義する。例えば、バージョン番号を増加する。
【０１０６】
決定部１１０２は、高速化オブジェクト型ごとに、フィールド名で識別されるフィールドのメッセージ内での位置とフォーマットを決定して、定義情報９００に登録する。
【０１０７】
また、決定部１１０２は、受信ノードＮｉから受信した統計情報８００および送信ノードＮｊから受信した統計情報７００を記憶装置に保存することもできる。この場合、決定部１１０２は、統計情報８００および統計情報７００を受信した場合、記憶装置に保存した統計情報を更新する。決定部１１０２は、記憶装置に保存した統計情報に基づいて、高速化オブジェクト型、高速化フィールド名を決定することもできる。
【０１０８】
決定部１１０２は、受信ノードＮｉから受信した統計情報８００および送信ノードＮｊから受信した統計情報７００の両方だけでなく、一方の統計情報に基づいて、高速化オブジェクト型、高速化フィールド名を決定することもできる。例えば、ボトルネックが明確に受信ノードＮｉだけの場合、受信ノードＮｉから受信した統計情報８００から高速化オブジェクト型、高速化フィールド名を決定してもよい。
【０１０９】
決定部１１０２は、すべての送信ノードＮｊの性能が同じならば、オブジェクト型ごとのシリアライズコストは同じになるので、この場合は別表とし、オブジェクト型ごとのシリアライズコストを持ってもよい。同様に、決定部１１０２は、すべての受信ノードＮｉの性能が同じならば、オブジェクト型ごとのデシリアライズコストは同じになるので、この場合は別表とし、オブジェクト型ごとのデシリアライズコストを持ってもよい。これらの場合、送信ノードＮｊ、受信ノードＮｉは、それぞれシリアライズコスト、デシリアライズコストを算出して、管理装置１０３に送信しなくてもよい。
【０１１０】
通知部１１０３は、定義情報９００を送信ノードＮｊと受信ノードＮｉに通知する機能を有する。
【０１１１】
（送信ノードＮｊの機能的構成例）
図１２は、実施の形態１にかかる送信ノードＮｊの機能的構成例を示すブロック図である。図１２において、送信ノードＮｊは、直列化部１２０１と、判断部１２０２と、埋込部１２０３と、通信部１２０４と、算出部１２０５と、更新部１２０６と、定義情報データベース１２０７とを含む構成である。各機能部は、具体的には、例えば、図４に示したメモリ４０２などの記憶装置に記憶されたプログラムをＣＰＵ４０１に実行させることにより、その機能を実現する。各機能部の処理結果は、例えば、図４に示したメモリ４０２などの記憶装置に記憶される。
【０１１２】
直列化部１２０１は、送信するオブジェクトをシリアライズしたバイト列に変換する機能を有する。直列化部１２０１は、変換したバイト列を判断部１２０２に渡す。
【０１１３】
判断部１２０２は、送信するオブジェクトを識別するオブジェクト型が、定義情報９００に登録されているか判断する機能を有する。判断部１２０２は、上記オブジェクト型が定義情報９００に登録されている場合、埋込部１２０３に上記オブジェクト型が登録されていることを通知し、判断部１２０２から渡されたバイト列を埋込部１２０３に渡す。判断部１２０２は、上記オブジェクト型が定義情報９００に登録されていない場合、直列化部１２０１から渡されたバイト列を含むメッセージを作成し、作成したメッセージを通信部１２０４に渡す。
【０１１４】
埋込部１２０３は、定義情報９００に記載される位置とフォーマットに従いメッセージに高速化フィールドを埋め込み、オブジェクト型および直列化部１２０１から渡されたバイト列を含む高速化メッセージ１０００を作成する。埋込部１２０３は、作成した高速化メッセージ１０００を通信部１２０４に渡す。
【０１１５】
通信部１２０４は、判断部１２０２から渡されたメッセージおよび埋込部１２０３から渡された高速化メッセージ１０００を受信ノードＮｉに送信する機能を有する。また、通信部１２０４は、算出部１２０５が算出した統計情報７００を管理装置１０３に送信する機能を有する。また、通信部１２０４は、管理装置１０３が送信した定義情報９００を受信する機能を有する。通信部１２０４は、受信した定義情報９００を更新部１２０６に渡す。
【０１１６】
通信部１２０４は、算出部１２０５が算出した統計情報７００を一定の期間ごとに管理装置１０３に送信してもよい。また、通信部１２０４は、統計情報７００の内容が前回送信した内容から大きな変動が生じたとき、管理装置１０３に送信してもよい。例えば、送信頻度とシリアライズコストとの積の大きさの順番が変動したとき、管理装置１０３に統計情報７００を送信する。また、管理装置１０３は、その他の統計情報の収集や受信ノードＮｉと送信ノードＮｊの管理処理を兼ねている場合があるため、通信部１２０４は、その他の統計情報や管理情報とともに管理装置１０３に統計情報７００を送信してもよい。また、通信部１２０４は、送信ノードＮｊが高負荷になったときに統計情報７００を管理装置１０３に送信してもよい。送信ノードＮｊは、緊急リクエストのような意味合いで、負荷の適正化を管理装置１０３に要求することもできる。管理装置１０３は、高負荷の通知を受けて負荷の適正化のために高速化オブジェクト型、高速化フィールド名の再決定を行う。また、通信部１２０４は、管理装置１０３が要求したタイミングで管理装置１０３に統計情報７００を送信してもよい。例えば、受信ノードＮｉまたは送信ノードＮｊから、負荷の適正化要求があった場合、管理装置１０３は、すべて受信ノードＮｉまたは送信ノードＮｊに対して統計情報７００、８００を要求する。管理装置１０３は、受信した統計情報７００、８００に基づいて、高速化オブジェクト型、高速化フィールド名の再決定を行う。
【０１１７】
算出部１２０５は、統計情報７００を算出する機能を有する。算出部１２０５は、算出した統計情報７００を通信部１２０４に渡す。
【０１１８】
更新部１２０６は、通信部１２０４から渡された定義情報９００に基づいて、定義情報データベース１２０７に記憶される定義情報テーブル６００を更新する機能を有する。更新部１２０６は、定義情報９００からオブジェクト型とバージョン番号を取得する。更新部１２０６は、フィールド名、位置およびフォーマットがヌルである場合、当該オブジェクト型を定義情報テーブル６００から削除する。更新部１２０６は、フィールド名、位置およびフォーマットがヌルでない場合、当該オブジェクト型で定義情報テーブル６００を更新する。
【０１１９】
（受信ノードＮｉの機能的構成例）
図１３は、実施の形態１にかかる受信ノードＮｉの機能的構成例を示すブロック図である。図１３において、受信ノードＮｉは、通信部１３０１と、判断部１３０２と、復元部１３０３と、算出部１３０４と、更新部１３０５と、定義情報データベース１３０６とを含む構成である。各機能部は、具体的には、例えば、図４に示したメモリ４０２などの記憶装置に記憶されたプログラムをＣＰＵ４０１に実行させることにより、その機能を実現する。各機能部の処理結果は、例えば、図４に示したメモリ４０２などの記憶装置に記憶される。
【０１２０】
通信部１３０１は、送信ノードＮｊから送信されたメッセージを受信する機能を有する。通信部１３０１は、受信したメッセージを判断部１３０２に渡す。また、通信部１３０１は、算出部１３０４が算出した統計情報８００を管理装置１０３に送信する機能を有する。また、通信部１３０１は、管理装置１０３が送信した定義情報９００を受信する機能を有する。通信部１３０１は、受信した定義情報９００を更新部１３０５に渡す。
【０１２１】
また、通信部１３０１は、送信ノードＮｊの通信部１２０４と同じタイミングで、算出した統計情報８００を管理装置１０３に送信してもよい。
【０１２２】
判断部１３０２は、通信部１３０１から渡されたメッセージが高速化メッセージ１０００である場合、所定の条件を満たすか否かの判断を行う機能を有する。また、判断部１３０２は、通信部１３０１から渡されたメッセージが高速化メッセージ１０００でない場合、メッセージを復元部１３０３に渡す機能を有する。
【０１２３】
判断部１３０２は、例えば、高速化オブジェクトの有無を示す識別子より、通信部１３０１から渡されたメッセージが高速化メッセージ１０００であるか否かの判断を行う。判断部１３０２は、高速化メッセージ１０００である場合、高速化メッセージ１０００からオブジェクト型とバージョン番号を取得する。判断部１３０２は、取得したオブジェクト型とバージョン番号が定義情報テーブル５００に定義されているか判断する。判断部１３０２は、定義されたオブジェクト型である場合、定義情報テーブル５００に定義された位置とフォーマットに基づき高速化フィールドの値を取り出す。判断部１３０２は、取り出した値が、定義情報テーブル５００の条件を満たすか否か判断する。判断部１３０２は、条件を満たさないと判断した場合、高速化メッセージ１０００を破棄する。判断部１３０２は、条件を満たすと判断した場合、当該オブジェクト型に関係した定義情報テーブル５００の他の高速化フィールドの値が条件を満たすか否か判断する。判断部１３０２は、１つでも条件を満たさないと判断した場合、高速化メッセージ１０００を破棄する。判断部１３０２は、すべてのフィールドの値が条件を満たす場合、高速化メッセージ１０００の他の高速化オブジェクトに対しても同様の判断を行う。判断部１３０２は、高速化メッセージ１０００のすべての高速化オブジェクトの高速化フィールドの値が条件を満たす場合、高速化メッセージ１０００を復元部１３０３に渡す。
【０１２４】
復元部１３０３は、判断部１３０２から渡されたメッセージおよび高速化メッセージ１０００のバイト列からオブジェクトを復元する機能を有する。復元部１３０３は、例えば、復元したオブジェクトを受信ノードＮｉで分析等の処理を行うプログラムに渡す。
【０１２５】
算出部１３０４は、統計情報８００を算出する機能を有する。算出部１３０４は、算出した統計情報８００を通信部１３０１に渡す。
【０１２６】
更新部１３０５は、通信部１３０１から渡された定義情報９００に基づいて、定義情報データベース１３０６に記憶される定義情報テーブル５００を更新する機能を有する。更新部１３０５は、定義情報９００からオブジェクト型とバージョン番号を取得する。更新部１３０５は、フィールド名、位置およびフォーマットがヌルである場合、当該オブジェクト型を定義情報テーブル５００から削除する。更新部１３０５は、フィールド名、位置およびフォーマットがヌルでない場合、当該オブジェクト型で定義情報テーブル５００を登録する。
【０１２７】
（受信ノードＮｉのデータ処理）
図１４は、実施の形態１にかかる受信ノードＮｉのデータ受信処理手順の一例を示すフローチャートである。図１４のフローチャートにおいて、まず、通信部１３０１は、送信ノードＮｊから送信されたメッセージを受信する（ステップＳ１４０１）。次に、判断部１３０２は、受信したメッセージが高速化メッセージ１０００であるか否かの判断を行う（ステップＳ１４０２）。
【０１２８】
受信したメッセージが高速化メッセージ１０００である場合（ステップＳ１４０２：Ｙｅｓ）、判断部１３０２は、高速化メッセージ１０００からオブジェクト型とバージョン番号を取得する（ステップＳ１４０３）。次に、判断部１３０２は、取得したオブジェクト型とバージョン番号が定義情報テーブル５００に定義されているか否かを判断する（ステップＳ１４０４）。取得したオブジェクト型とバージョン番号が定義情報テーブル５００に定義されている場合（ステップＳ１４０４：Ｙｅｓ）、判断部１３０２は、定義情報テーブル５００に定義された位置とフォーマットに基づき高速化フィールドの値を取り出す（ステップＳ１４０５）。判断部１３０２は、取り出した値が、定義情報テーブル５００の条件を満たすか否か判断する（ステップＳ１４０６）。定義情報テーブル５００の条件を満たさない場合（ステップＳ１４０６：Ｎｏ）、判断部１３０２は、受信したメッセージを破棄する（ステップＳ１４１１）。
【０１２９】
定義情報テーブル５００の条件を満たす場合（ステップＳ１４０６：Ｙｅｓ）、判断部１３０２は、次の高速化フィールドがあるか否か判断する（ステップＳ１４０７）。次の高速化フィールドがある場合（ステップＳ１４０７：Ｙｅｓ）、ステップＳ１４０５に移行して、判断部１３０２は、次の高速化フィールドに対する処理を行う。次の高速化フィールドがない場合（ステップＳ１４０７：Ｎｏ）、判断部１３０２は、次のオブジェクト型があるか否か判断する（ステップＳ１４０８）。次のオブジェクト型がある場合（ステップＳ１４０８：Ｙｅｓ）、ステップＳ１４０３に移行して、判断部１３０２は、次のオブジェクト型に対する処理を行う。
【０１３０】
次のオブジェクト型がない場合（ステップＳ１４０８：Ｎｏ）、復元部１３０３は、受信したメッセージのバイト列からオブジェクトを復元する（ステップＳ１４０９）。受信したメッセージが高速化メッセージ１０００でない場合（ステップＳ１４０２：Ｎｏ）および取得したオブジェクト型とバージョン番号が定義情報テーブル５００に定義されていない場合（ステップＳ１４０４：Ｎｏ）も、復元部１３０３は、同様の処理を行う。
【０１３１】
その後、受信ノードＮｉが復元したオブジェクトを分析等の処理をする（ステップＳ１４１０）。受信ノードＮｉは、分析等の処理終了後、受信したメッセージを破棄する（ステップＳ１４１１）。これにより、本フローチャートによる一連の処理は終了する。本フローチャートを実行することにより、受信ノードＮｉが受信したメッセージが高速化メッセージ１０００である場合、受信ノードＮｉは、オブジェクトを復元することなく、オブジェクトのフィールドの値が条件を満たすか判断することができる。
【０１３２】
（送信ノードＮｊのデータ処理）
図１５は、実施の形態１にかかる送信ノードＮｊのデータ送信処理手順の一例を示すフローチャートである。図１５のフローチャートにおいて、まず、直列化部１２０１は、送信するオブジェクトをシリアライズしたバイト列に変換する（ステップＳ１５０１）。次に、判断部１２０２は、送信するオブジェクトを識別するオブジェクト型が、定義情報９００に登録されているか否かを判断する（ステップＳ１５０２）。
【０１３３】
定義情報９００に登録されている場合（ステップＳ１５０２：Ｙｅｓ）、埋込部１２０３は、定義情報９００に記載される位置とフォーマットに従いメッセージに高速化フィールドを埋め込み、オブジェクト型および直列化部１２０１から渡されたバイト列を含む高速化メッセージ１０００を作成する（ステップＳ１５０３）。この後、ステップＳ１５０５に移行する。
【０１３４】
定義情報９００に登録されていない場合（ステップＳ１５０２：Ｎｏ）、判断部１２０２は、直列化部１２０１から渡されたバイト列を含むメッセージを作成する（ステップＳ１５０４）。
【０１３５】
通信部１２０４は、メッセージおよび高速化メッセージ１０００を受信ノードＮｉに送信する（ステップＳ１５０５）。これにより、本フローチャートによる一連の処理は終了する。本フローチャートを実行することにより、送信ノードＮｊが送信するオブジェクトのオブジェクト型が定義情報９００に登録されている場合、高速化メッセージ１０００が作成され、受信ノードＮｉに送信される。
【０１３６】
（受信ノードＮｉの定義情報テーブル５００更新処理）
図１６は、実施の形態１にかかる受信ノードＮｉの定義情報テーブル５００の更新処理手順の一例を示すフローチャートである。図１６のフローチャートにおいて、まず、通信部１３０１は、管理装置１０３が送信した定義情報９００を受信する（ステップＳ１６０１）。次に、更新部１３０５は、定義情報９００からオブジェクト型とバージョン番号を取得する（ステップＳ１６０２）。更新部１３０５は、取得したオブジェクト型とバージョン番号のレコードが、無効指示、つまりフィールド名、位置およびフォーマットがヌルであるか否か判断する（ステップＳ１６０３）。
【０１３７】
更新部１３０５は、フィールド名、位置およびフォーマットがヌルでない場合（ステップＳ１６０３：Ｎｏ）、当該オブジェクト型、バージョン番号、フィールド名、位置およびフォーマットを定義情報テーブル５００を更新する（ステップＳ１６０４）。この後、ステップＳ１６０６に移行する。更新部１３０５は、フィールド名、位置およびフォーマットがヌルである場合（ステップＳ１６０３：Ｙｅｓ）、当該オブジェクト型を定義情報テーブル５００から削除する（ステップＳ１６０５）。
【０１３８】
更新部１３０５は、定義情報９００に次のオブジェクト型があるか否かを判断する（ステップＳ１６０６）。次のオブジェクト型がある場合（ステップＳ１６０６：Ｙｅｓ）、更新部１３０５は、ステップＳ１６０２に戻り、次のオブジェクト型に対する処理を行う。次のオブジェクト型がない場合（ステップＳ１６０６：Ｎｏ）、更新部１３０５は、処理を終了する。これにより、本フローチャートによる一連の処理は終了する。本フローチャートを実行することにより、受信ノードＮｉの定義情報テーブル５００が更新される。
【０１３９】
また、送信ノードＮｊの定義情報テーブル６００の更新処理も、受信ノードＮｉの定義情報テーブル５００の更新処理と同様の手順で行うことができる。
【０１４０】
（管理装置１０３の高速化オブジェクト決定処理）
図１７は、実施の形態１にかかる管理装置１０３の高速化オブジェクト決定処理手順の一例を示すフローチャートである。図１７に示すフローチャートは、管理装置１０３が受信ノードＮｉから統計情報８００を受信した場合のフローチャートである。図１７のフローチャートにおいて、まず、受信部１１０１は、受信ノードＮｉから統計情報８００を受信する（ステップＳ１７０１）。
【０１４１】
次に、決定部１１０２は、受信した統計情報８００から、統計情報８００を送信した受信ノードＮｉのＣＰＵ負荷が最も高い受信ノードＮｉから受信した統計情報８００を抽出する（ステップＳ１７０２）。決定部１１０２は、抽出した統計情報８００からオブジェクト型ごとに、受信頻度とデシリアライズコストの積を算出し、算出した積の値が大きいものから順に所定数のオブジェクト型を高速化オブジェクト型として決定する（ステップＳ１７０３）。
【０１４２】
決定部１１０２は、統計情報８００から決定した高速化オブジェクト型の中で、参照頻度の高いフィールド名を抽出して、高速化フィールド名を決定する（ステップＳ１７０４）。決定部１１０２は、決定した高速化オブジェクト型と高速化フィールド名を、定義情報９００に登録して、バージョン番号を定義する（ステップＳ１７０５）。通知部１１０３は、定義情報９００を送信ノードＮｊと受信ノードＮｉに通知する（ステップＳ１７０６）。これにより、本フローチャートによる一連の処理は終了する。本フローチャートを実行することにより、管理装置１０３が高速化オブジェクトを決定する。
【０１４３】
また、管理装置１０３が送信ノードＮｊから統計情報７００を受信した場合の高速化オブジェクト決定処理も、管理装置１０３が受信ノードＮｉから統計情報８００を受信した場合の高速化オブジェクト決定処理と同様の手順で行うことができる。
【０１４４】
（受信ノードＮｉの統計情報８００の算出処理）
図１８は、実施の形態１にかかる受信ノードＮｉの統計情報８００の算出処理手順の一例を示すフローチャートである。図１８のフローチャートにおいて、まず、通信部１３０１は、送信ノードＮｊからメッセージを受信する（ステップＳ１８０１）。
【０１４５】
次に、算出部１３０４は、メッセージに含まれるオブジェクト型に対応する統計情報８００のオブジェクト型の受信回数を増加させる（ステップＳ１８０２）。算出部１３０４は、判断部１３０２が参照した当該オブジェクト型のフィールド名に対応する統計情報８００のフィールド名の参照回数を増加させる（ステップＳ１８０３）。算出部１３０４は、メッセージに含まれるオブジェクト型のデシリアライズコストを算出する（ステップＳ１８０４）。
【０１４６】
算出部１３０４は、測定期間が終了したか判断する（ステップＳ１８０５）。測定期間が終了しない場合（ステップＳ１８０５：Ｎｏ）、ステップＳ１８０１に戻り、次のメッセージを処理する。測定期間が終了した場合（ステップＳ１８０５：Ｙｅｓ）、通信部１３０１は、統計情報８００を管理装置１０３に送信する（ステップＳ１８０６）。これにより、本フローチャートによる一連の処理は終了する。本フローチャートを実行することにより、受信ノードＮｉが統計情報８００を算出し、統計情報８００を管理装置１０３に送信する。
【０１４７】
また、送信ノードＮｊが統計情報７００を算出し、統計情報７００を管理装置１０３に送信する処理も、受信ノードＮｉの統計情報８００の算出処理手順と同様の手順で行うことができる。
【０１４８】
（高速化オブジェクト決定処理の第１の実施例）
図１９は、実施の形態１にかかる管理装置１０３の高速化オブジェクト決定処理の第１の実施例を示す説明図である。
【０１４９】
図１９（ａ）は、管理装置１０３が送信ノードＮｊから受信した統計情報１９０１の一部の例を示す。図１９（ｂ）は、管理装置１０３が受信ノードＮｉから受信した統計情報１９０２の一部の例を示す。図１９（ａ）および図１９（ｂ）は、受信した統計情報１９０１、統計情報１９０２の一部であり、図１９（ａ）および図１９（ｂ）に記載されるｎｏｄｅ１〜ｎｏｄｅ３以外のノードの統計情報も含む。図１９（ａ）では、送信頻度として送信回数を使用し、シリアライズコストとしてシリアライズに要したＣＰＵ時間を使用する。図１９（ｂ）では、受信頻度として受信回数を使用し、デシリアライズコストとしてデシリアライズしてオブジェクトの生成に要したＣＰＵ時間を使用する。
【０１５０】
決定部１１０２は、統計情報１９０１からオブジェクト型ごとに、送信頻度とシリアライズコストの積を算出し、算出した積の値が大きいものから順に並べ替える。図１９（ｃ）は、送信頻度とシリアライズコストの積が上位３つのオブジェクト型を示す表である。
【０１５１】
決定部１１０２は、統計情報１９０２からオブジェクト型ごとに、受信頻度とデシリアライズコストの積を算出し、算出した積の値が大きいものから順に並べ替える。図１９（ｄ）は、受信頻度とデシリアライズコストの積が上位３つのオブジェクト型を示す表である。
【０１５２】
決定部１１０２は、受信ノードＮｉ、送信ノードＮｊを区別することなく、算出した積から、上位３つのオブジェクト型を高速オブジェクト型として決定する。図１９の例では、図１９（ｃ）からＣａｒＰｏｓｉｔｉｏｎＥｖｅｎｔＢｅａｎとＰｅｒｓｏｎＰｏｓｉｔｉｏｎＥｖｅｎｔＢｅａｎが高速オブジェクト型として決定される。また、図１９（ｄ）からＣａｒＰｏｓｉｔｉｏｎＥｖｅｎｔＢｅａｎが高速オブジェクト型として決定される。
【０１５３】
（高速化オブジェクト決定処理の第２の実施例）
図２０は、実施の形態１にかかる管理装置１０３の高速化オブジェクト決定処理の第２の実施例を示す説明図である。
【０１５４】
図２０（ａ）は、管理装置１０３が送信ノードＮｊから受信した統計情報２００１の一部の例を示す。図２０（ｂ）は、管理装置１０３が受信ノードＮｉから受信した統計情報２００２の一部の例を示す。図２０（ａ）および図２０（ｂ）は、受信した統計情報２００１、統計情報２００２の一部であり、図２０（ａ）および図２０（ｂ）に記載されるｎｏｄｅ１〜ｎｏｄｅ３以外のノードの統計情報も含む。図２０（ａ）では、送信頻度として送信回数を使用し、シリアライズコストとしてシリアライズに要したＣＰＵ時間を使用する。図２０（ｂ）では、受信頻度として受信回数を使用し、デシリアライズコストとしてデシリアライズしてオブジェクトの生成に要したＣＰＵ時間を使用する。
【０１５５】
決定部１１０２は、統計情報２００１からＣＰＵ負荷が最も高いｎｏｄｅ２を取り出し、オブジェクト型ごとに、送信頻度とシリアライズコストの積を算出し、算出した積の値が大きいものから順に並べ替える。図２０（ｃ）は、ｎｏｄｅ２の送信頻度とシリアライズコストの積が上位３つのオブジェクト型を示す表である。
【０１５６】
決定部１１０２は、統計情報２００２からＣＰＵ負荷が最も高いｎｏｄｅ２を取り出し、オブジェクト型ごとに、受信頻度とデシリアライズコストの積を算出し、算出した積の値が大きいものから順に並べ替える。図２０（ｄ）は、ｎｏｄｅ２の受信頻度とデシリアライズコストの積が上位３つのオブジェクト型を示す表である。
【０１５７】
決定部１１０２は、受信ノードＮｉ、送信ノードＮｊを区別することなく、算出した積から、上位３つのオブジェクト型を高速オブジェクト型として決定する。図２０の例では、図２０（ｃ）からＣａｒＰｏｓｉｔｉｏｎＥｖｅｎｔＢｅａｎが高速オブジェクト型として決定される。また、図２０（ｄ）からＣａｒＰｏｓｉｔｉｏｎＥｖｅｎｔＢｅａｎとＰｅｒｓｏｎＰｏｓｉｔｉｏｎＥｖｅｎｔＢｅａｎが高速オブジェクト型として決定される。
【０１５８】
以上説明したように、実施の形態１にかかる受信ノードＮｉによれば、受信したメッセージに含まれる識別子が定義情報テーブル５００に記憶されている場合に、メッセージの所定領域の情報が、当該識別子に関連付けられた定義情報テーブル５００の条件を満たすか否かを判断し、判断した結果に応じて受信したメッセージを復元することができる。これにより、受信ノードＮｉは、分析処理などで使用される値を含まずデシリアライズしてオブジェクトが生成されても破棄されるデータに対しては、デシリアライズしてオブジェクトを生成することを行わないようにすることができ、不要なデシリアライズしてオブジェクトを生成することを削減することができる。
【０１５９】
また、処理システム１００では、受信ノードＮｉと送信ノードＮｊと独立した管理装置１０３が、処理システム１００を管理する。これにより、管理装置１０３は、複数の通信コネクションの送受信の統計情報７００、８００を利用し、コネクションごとに高速化オブジェクト型、高速化フィールド名を決定することができる。管理装置１０３は、処理システム１００を管理するため、処理システム１００全体で同一の高速化オブジェクト型、高速化フィールド名を決定することができる。
【０１６０】
また、管理装置１０３は、送信ノードＮｊと受信ノードＮｉから受信した統計情報７００、８００に基づいて、高速化オブジェクト型および高速化フィールド名を決定することができる。これにより、実際の通信内容に基づいて、高速化オブジェクト型および高速化フィールド名を決定し、受信ノードＮｉでデシリアライズしてオブジェクトを生成することにかかるＣＰＵの処理コストを軽減することができる。
【０１６１】
また、管理装置１０３は、受信ノードＮｉから受信した統計情報７００、８００の受信頻度とデシリアライズコストの積の中で積の値が大きいものから高速化オブジェクト型および高速化フィールド名を決定することができる。これにより、受信ノードＮｉの負荷を高めているオブジェクト型およびフィールド名に対するデシリアライズしてオブジェクトを生成することを低減させ、受信ノードＮｉでデシリアライズしてオブジェクトを生成することにかかるＣＰＵの処理コストを軽減することができる。
【０１６２】
（実施の形態２）
次に、実施の形態２にかかる処理方法について説明する。実施の形態２では、ノードＮ１〜Ｎｎ（ｎ：２以上の自然数）の少なくとも１つのノードが、データを受信する受信側のノードと実施の形態１の管理装置１０３との機能を有する。実施の形態１と同様に、データを受信する受信側のノードを「受信ノードＮｉ」と表記し、データを送信する送信側のノードを「送信ノードＮｊ」と表記する場合がある。なお、実施の形態１で説明した箇所と同一箇所については、図示および説明を省略する。
【０１６３】
（処理システム２１００のシステム構成例）
図２１は、実施の形態２にかかる処理システム２１００のシステム構成例を示す説明図である。図２１において、処理システム２１００は、ノードＮ１〜Ｎｎを有する。ノードＮ１〜Ｎｎは、有線または無線のネットワーク３００を介して接続される。また、図２１において、ノードＮｎは、受信ノードＮｉの機能と、実施の形態１の管理装置１０３の機能とを有するノードである。
【０１６４】
（ノードＮｎの機能的構成例）
図２２は、実施の形態２にかかるノードＮｎの機能的構成例を示すブロック図である。図２２において、ノードＮｎは、通信部２２０１と、判断部２２０２と、復元部２２０３と、算出部２２０４と、更新部２２０５と、定義情報データベース２２０６と、決定部２２０７とを含む構成である。各機能部は、具体的には、例えば、図４に示したメモリ４０２などの記憶装置に記憶されたプログラムをＣＰＵ４０１に実行させることにより、その機能を実現する。各機能部の処理結果は、例えば、図４に示したメモリ４０２などの記憶装置に記憶される。
【０１６５】
通信部２２０１は、送信ノードＮｊから送信されたメッセージを受信する機能を有する。通信部２２０１は、受信したメッセージを判断部２２０２に渡す。また、通信部２２０１は、送信ノードＮｊから統計情報７００を受信する機能を有する。通信部２２０１は、受信した統計情報７００を決定部２２０７に渡す。また、通信部２２０１は、決定部２２０７が決定した定義情報９００を送信ノードＮｊに通知する機能を有する。
【０１６６】
判断部２２０２、復元部２２０３、更新部２２０５は、それぞれ、実施の形態１の判断部１３０２、復元部１３０３、更新部１３０５と同じ機能を有する。
【０１６７】
算出部２２０４は、統計情報８００を算出する機能を有する。算出部２２０４は、算出した統計情報８００を決定部２２０７に渡す。
【０１６８】
決定部２２０７は、実施の形態１の管理装置１０３の決定部１１０２と同じ機能を有する。決定部２２０７は、決定した定義情報９００を通信部２２０１に渡す。
【０１６９】
なお、実施の形態２にかかるノードＮｎのデータ受信処理手順は、実施の形態１にかかる受信ノードＮｉのデータ受信処理手順と同様のため、ここでは図示および説明を省略する。また、実施の形態２にかかるノードＮｎの定義情報テーブル５００の更新処理手順は、実施の形態１にかかる受信ノードＮｉの定義情報テーブル５００の更新処理手順と同様のため、ここでは図示および説明を省略する。また、実施の形態２にかかる受信ノードＮｎの高速化オブジェクト決定処理手順は、実施の形態１にかかる管理装置１０３の高速化オブジェクト決定処理手順と同様のため、ここでは図示および説明を省略する。また、実施の形態２にかかるノードＮｎの統計情報８００の算出処理手順は、実施の形態１にかかる受信ノードＮｉの統計情報８００の算出処理手順と同様のため、ここでは図示および説明を省略する。
【０１７０】
以上説明したように、実施の形態２にかかる処理システム２１００では、ノードＮｎが受信機能と管理機能の両方の機能を有する。これにより、ノードＮｎは、送信ノードＮｊと受信ノードＮｉの通信のコネクションごとに高速化オブジェクト型および高速化フィールド名を決定することができる。また、ノードＮｎが統計情報８００を算出するため、ノードＮｎのみで高速化オブジェクト型および高速化フィールド名を決定することができる。
【０１７１】
なお、本実施の形態で説明した処理プログラムは、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本処理プログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また、本処理プログラムは、インターネット等のネットワークを介して配布してもよい。
【０１７２】
上述した実施の形態に関し、さらに以下の付記を開示する。
【０１７３】
（付記１）コンピュータに、
データの種類を識別する識別子と所定の処理を実行する条件とが関連付けられた定義情報を記憶し、
データの種類を識別する識別子を含む前記データを受信し、
受信した前記データに含まれる識別子が前記定義情報に記憶されている場合に、前記データの所定領域の情報が、前記データに含まれる識別子に関連付けられた所定の処理を実行する条件を満たすか否かを判断し、
判断した結果に応じて前記データを復元する、
処理を実行させることを特徴とする処理プログラム。
【０１７４】
（付記２）前記コンピュータに、
各識別子により識別される種類のデータの受信頻度と該データの復元にかかる処理時間とに基づいて、所定の処理を実行する条件を満たすか否かを判断する対象となるデータの種類を決定し、
決定した前記種類を識別する識別子を所定の処理を実行する条件と関連付けて前記定義情報に登録する、
処理を実行させることを特徴とする付記１に記載の処理プログラム。
【０１７５】
（付記３）前記決定する処理は、
前記各識別子により識別される種類のデータの受信頻度と該データの復元にかかる処理時間との積のうち、該積の値が大きいものから順に所定数の識別子、または、該積の値が閾値以上の識別子により識別されるデータの種類を、前記対象となるデータの種類に決定することを特徴とする付記２に記載の処理プログラム。
【０１７６】
（付記４）前記コンピュータに、
各識別子により識別される種類のデータの送信頻度と該データの符号化にかかる処理時間とに基づいて、所定の処理を実行する条件を満たすか否かを判断する対象となるデータの種類を決定する、
処理を実行させることを特徴とする付記２に記載の処理プログラム。
【０１７７】
（付記５）前記コンピュータに、
各識別子により識別される種類のデータの受信頻度と該データの復元にかかる処理時間を、所定の処理を実行する条件を満たすか否かを判断する対象となるデータの種類を決定する他のコンピュータに送信し、
前記他のコンピュータから前記対象となるデータの種類を識別する識別子を受信したことに応じて、受信した前記識別子を所定の処理を実行する条件と関連付けて前記定義情報に登録する、
処理を実行させることを特徴とする付記１に記載の処理プログラム。
【０１７８】
（付記６）各識別子により識別される種類のデータは、項目名により識別される項目を有し、
前記定義情報には、データの種類を識別する識別子と、該識別子により識別される種類のデータの項目名と、所定の処理を実行する条件とが関連付けられて記憶され、
前記判断する処理は、受信した前記データに含まれる識別子が前記定義情報に記憶されている場合に、前記データの所定領域の情報が、前記データに含まれる識別子により識別されるデータの項目名に関連付けられた所定の処理を実行する条件を満たすか否かを判断することを特徴とする付記１に記載の処理プログラム。
【０１７９】
（付記７）前記コンピュータに、
各識別子により識別される種類のデータの各項目の参照頻度と該データの復元にかかる処理時間とに基づいて、所定の処理を実行する条件を満たすか否かを判断する対象となるデータの項目名を決定し、
決定した前記データの項目名を所定の処理を実行する条件と関連付けて前記定義情報に登録する、
処理を実行させることを特徴とする付記６に記載の処理プログラム。
【０１８０】
（付記８）前記復元する処理は、
前記データの所定領域の情報が、前記データに含まれる識別子に関連付けられた所定の処理を実行する条件を満たすと判断された場合に、前記データを復元することを特徴とする付記１〜７のいずれか一つに記載の処理プログラム。
【０１８１】
（付記９）前記コンピュータに、
前記データの所定領域の情報が、前記データに含まれる識別子に関連付けられた所定の処理を実行する条件を満たさないと判断された場合は、前記データを破棄する、
処理を実行させることを特徴とする付記８に記載の処理プログラム。
【０１８２】
（付記１０）第１処理装置と第２処理装置とを含む処理システムにおいて、
前記第１処理装置は、
データの種類を識別する識別子と所定の処理を実行する条件とが関連付けられた定義情報に記憶された前記識別子を前記第２処理装置に送信し、データの種類を識別する識別子を含む前記データを前記第２処理装置から受信し、受信した前記データに含まれる識別子が前記定義情報に記憶されている場合に、前記データの所定領域の情報が、前記データに含まれる識別子に関連付けられた所定の処理を実行する条件を満たすか否かを判断し、判断した結果に応じて前記データを復元する制御部を有し、
前記第２処理装置は、
前記定義情報に記憶された前記識別子を前記第１処理装置から受信し、受信した前記定義情報に記憶された前記識別子により識別されるデータを前記第１処理装置に送信する場合に、前記識別子を含む前記データを前記第１処理装置に送信する制御部を有する、
ことを特徴とする処理システム。
【０１８３】
（付記１１）第１処理装置が、
データの種類を識別する識別子と所定の処理を実行する条件とが関連付けられた定義情報に記憶された前記識別子を第２処理装置に送信し、
データの種類を識別する識別子を含む前記データを前記第２処理装置から受信し、
受信した前記データに含まれる識別子が前記定義情報に記憶されている場合に、前記データの所定領域の情報が、前記データに含まれる識別子に関連付けられた所定の処理を実行する条件を満たすか否かを判断し、
判断した結果に応じて前記データを復元し、
前記第２処理装置が、
前記定義情報に記憶された前記識別子を前記第１処理装置から受信し、
受信した前記定義情報に記憶された前記識別子により識別されるデータを前記第１処理装置に送信する場合に、前記識別子を含む前記データを前記第１処理装置に送信する、
ことを特徴とする処理方法。
【０１８４】
（付記１２）コンピュータに、
データの種類を識別する識別子と所定の処理を実行する条件とが関連付けられた定義情報を記憶し、
データの種類を識別する識別子を含む前記データを受信し、
受信した前記データに含まれる識別子が前記定義情報に記憶されている場合に、前記データの所定領域の情報が、前記データに含まれる識別子に関連付けられた所定の処理を実行する条件を満たすか否かを判断し、
判断した結果に応じて前記データを復元する、
処理を実行させる処理プログラムを記録したことを特徴とする前記コンピュータに読み取り可能な記録媒体。
【符号の説明】
【０１８５】
１００、２１００  処理システム
１０１、１０２  処理装置
１０３  管理装置
１１０１  受信部
１１０２、２２０７  決定部
１１０３  通知部
１２０１  直列化部
１２０２、１３０２、２２０２  判断部
１２０３  埋込部
１２０４、１３０１、２２０１  通信部
１２０５、１３０４、２２０４  算出部
１２０６、１３０５、２２０５  更新部
１２０７、１３０６、２２０６  定義情報データベース
１３０３、２２０３  復元部
【図１】
2015219593.tif 000003
【図２】
2015219593.tif 000004
【図３】
2015219593.tif 000005
【図４】
2015219593.tif 000006
【図５】
2015219593.tif 000007
【図６】
2015219593.tif 000008
【図７】
2015219593.tif 000009
【図８】
2015219593.tif 000010
【図９】
2015219593.tif 000011
【図１０】
2015219593.tif 000012
【図１１】
2015219593.tif 000013
【図１２】
2015219593.tif 000014
【図１３】
2015219593.tif 000015
【図１４】
2015219593.tif 000016
【図１５】
2015219593.tif 000017
【図１６】
2015219593.tif 000018
【図１７】
2015219593.tif 000019
【図１８】
2015219593.tif 000020
【図１９】
2015219593.tif 000021
【図２０】
2015219593.tif 000022
【図２１】
2015219593.tif 000023
【図２２】
2015219593.tif 000024