オブジェクトを記憶可能なメモリと、前記メモリに接続されたプロセッサとを有し、前記プロセッサは、前段のオブジェクトと、前記前段のオブジェクトから参照可能な1以上の後段のオブジェクトとを前記メモリに記憶させ、前記前段のオブジェクトへの参照情報を含み、前記前段のオブジェクトを参照可能にする参照機能を提供する前段のプロキシオブジェクトと、前記後段のオブジェクトへの参照情報を含み、前記後段のオブジェクトに対する参照機能を提供する後段のプロキシオブジェクトとを生成して前記メモリに記憶させ、前記前段のプロキシオブジェクトに、前記後段のプロキシオブジェクトへの参照情報を格納させるオブジェクト管理装置。前記前段のオブジェクトは、参照可能な前記後段のオブジェクトへの参照情報を格納しており、前記プロセッサは、前記前段のオブジェクトから前記後段のオブジェクトへの参照情報を取得して、前記後段のオブジェクトを特定し、特定した前記後段のオブジェクトを参照可能にする参照機能を提供する前記後段のプロキシオブジェクトを特定し、特定した前記後段のプロキシオブジェクトへの参照情報を前記前段のプロキシオブジェクトに格納させる請求項1に記載のオブジェクト管理装置。前記プロセッサは、前記前段のオブジェクトを取得する要求が発生した場合に、前記前段のオブジェクトから前記後段のオブジェクトへの参照情報を取得して、前記後段のオブジェクトを特定し、特定した前記後段のオブジェクトを参照可能にする参照機能を提供する前記後段のプロキシオブジェクトを特定し、特定した前記後段のプロキシオブジェクトへの参照情報を前記前段のプロキシオブジェクトに格納させる請求項2に記載のオブジェクト管理装置。前記プロセッサは、前記前段のオブジェクトを参照する指示が発生した場合に、前記前段のオブジェクトの識別情報に基づいて、前記前段のオブジェクトを参照可能にする機能を提供する前記前段のプロキシオブジェクトを特定し、前記前段のプロキシオブジェクトを取得する請求項1に記載のオブジェクト管理装置。前記プロセッサは、或るオブジェクトを起点として所定の目標オブジェクトを操作する指示が発生した場合に、起点となる前記或るオブジェクトから前記目標オブジェクトへのオブジェクトの参照経路に基づいて、起点となる前記或るオブジェクトを参照可能にする参照機能を提供するプロキシオブジェクトから前記目標オブジェクトを参照可能にする参照機能を提供する目標プロキシオブジェクトへのプロキシオブジェクトの参照経路を特定し、前記プロキシオブジェクトの参照経路に基づいて、前記目標プロキシオブジェクトを用いて、前記目標オブジェクトへの操作を実行する請求項4に記載のオブジェクト管理装置。前記プロキシオブジェクトは、前記プロセッサに、前記プロキシオブジェクトが提供する参照機能により参照可能なオブジェクトのデータが更新される際に、前記オブジェクトを前記メモリに複製させ、複製された前記オブジェクトに対してデータの更新をさせ、前記プロセッサは、複製前の前記オブジェクトを参照可能な前段のオブジェクトの参照情報を、複製後の前記オブジェクトの参照情報に変更する請求項5に記載のオブジェクト管理装置。前記プロセッサは、或るオブジェクトと、前記或るオブジェクトを起点として参照可能な1以上のオブジェクトとを含むオブジェクト群におけるオブジェクト間の参照構造を取得し、前記オブジェクト群の各オブジェクトの参照機能を提供するプロキシオブジェクト群であって、各プロキシオブジェクト間の参照構造が前記オブジェクト間の参照構造に対応する参照構造である代表プロキシオブジェクト群を前記メモリに生成する請求項1に記載のオブジェクト管理装置。前記プロセッサは、前記オブジェクト群の各オブジェクトの参照機能を提供するプロキシオブジェクト群であって、各プロキシオブジェクト間の参照構造が前記オブジェクト間の参照構造に対応する参照構造である代表プロキシオブジェクト群が前記メモリに存在するか否かを判定し、前記代表プロキシオブジェクト群が前記メモリに存在しない場合に、前記代表プロキシオブジェクト群を前記メモリに生成する請求項7に記載のオブジェクト管理装置。前記プロセッサは、或るオブジェクトを取得する要求が発生した場合に、前記或るオブジェクトの参照機能を提供するプロキシオブジェクトと、そのプロキシオブジェクトから参照可能なプロキシオブジェクトとを含む代表プロキシオブジェクト群を特定して、前記メモリに複製し、複製した前記代表プロキシオブジェクト群の各プロキシオブジェクトに対して、前記或るオブジェクトから参照可能なオブジェクトであって、前記プロキシオブジェクトによる参照機能により参照可能なオブジェクトへの参照情報を設定する請求項8に記載のオブジェクト管理装置。前記プロセッサは、或るオブジェクトを取得する要求が発生した場合に、前記或るオブジェクトの参照機能を提供するプロキシオブジェクトと、そのプロキシオブジェクトから参照可能なプロキシオブジェクトとを含む代表プロキシオブジェクト群を特定して、特定した前記代表プロキシオブジェクト群の各プロキシオブジェクトに対して、前記或るオブジェクトから参照可能なオブジェクトであって、前記プロキシオブジェクトによる参照機能により参照可能なオブジェクトへの参照情報を設定し、その後、前記メモリにおける特定した前記代表プロキシオブジェクト群の数が所定の閾値以上となるように、前記代表プロキシオブジェク群を複製する請求項7に記載のオブジェクト管理装置。前記プロセッサは、或るオブジェクトを取得する要求が発生した場合に、前記オブジェクト及び前記オブジェクトから参照可能なオブジェクトを含むオブジェクト群の各オブジェクトを参照可能にする機能を提供するプロキシオブジェクト群を取得し、前記オブジェクト群の中の或るオブジェクトを操作する指示が発生した場合に、前記操作対象のオブジェクトを参照可能にする機能を提供するプロキシオブジェクトを特定し、前記プロキシオブジェクトに対して、前記操作対象のオブジェクトへの参照情報を設定し、前記参照情報を用いて、前記操作対象のオブジェクトへの操作を実行する請求項1に記載のオブジェクト管理装置。前記プロセッサは、或るオブジェクトを操作する要求が発生した場合に、既に取得しているプロキシオブジェクトから、前記或るオブジェクトを参照可能にする機能を提供するプロキシオブジェクトへのプロキシオブジェクトの参照経路を特定し、前記参照経路に基づいて、必要なプロキシオブジェクトを生成するとともに、前記或るオブジェクトを参照可能にする機能を提供する前記プロキシオブジェクトに対して、前記或るオブジェクトへの参照情報を設定し、前記参照情報を用いて、前記或るオブジェクトへの操作を実行する請求項1に記載のオブジェクト管理装置。前記メモリの前記オブジェクトには、複数のオブジェクトを要素とするコレクションオブジェクトが含まれ、前記プロセッサは、前記コレクションオブジェクトを参照可能にする機能を提供するプロキシオブジェクトを生成するとともに、前記プロキシオブジェクトに前記コレクションオブジェクトの参照情報と、前記コレクションオブジェクトの要素の複数のオブジェクトの参照情報とを格納し、前記コレクションオブジェクトの要素のオブジェクトを操作する要求が発生した場合に、前記コレクションオブジェクトの要素のオブジェクトを参照可能にする機能を提供するプロキシオブジェクトを生成させるとともに、前記プロキシオブジェクトに前記操作対象の前記オブジェクトの参照情報を格納し、前記プロキシオブジェクトの前記参照情報を用いて、前記操作対象の前記オブジェクトへの操作を実行し、また、前記コレクションオブジェクトの要素のオブジェクトを変更する要求が発生した場合に、前記コレクションオブジェクトを参照可能にする機能を提供するプロキシオブジェクトが保持する前記コレクションオブジェクトの要素の複数のオブジェクトの参照情報を変更する請求項1に記載のオブジェクト管理装置。オブジェクトを記憶可能なメモリと、プロセッサとを有するオブジェクト管理装置によるオブジェクト管理方法であって、前記プロセッサが、前段のオブジェクトと、前記前段のオブジェクトから参照可能な1以上の後段のオブジェクトとを前記メモリに記憶させ、前記前段のオブジェクトへの参照情報を含み、前記前段のオブジェクトを参照可能にする参照機能を提供する前段のプロキシオブジェクトと、前記後段のオブジェクトへの参照情報を含み、前記後段のオブジェクトに対する参照機能を提供する後段のプロキシオブジェクトとを生成して前記メモリに記憶させ、前記前段のプロキシオブジェクトに、前記後段のプロキシオブジェクトへの参照情報を格納させるオブジェクト管理方法。オブジェクトへの間接参照を実現するプロキシオブジェクトのデータ構造であって、前段オブジェクトへの参照を持つ領域と、前記前段オブジェクトが参照する後段オブジェクトを参照する後段プロキシオブジェクトへの参照を持つ領域とを有するデータ構造。特許文献1に記載された技術では、多段の参照関係を保持するオブジェクト群に対して、プロキシオブジェクトとオブジェクトの参照を交互にたどることで任意のオブジェクトにアクセスする必要がある。そのため、任意のオブジェクトにアクセスする場合には、プロキシオブジェクトがない場合に比べて参照をたどる回数が2倍になり、アクセス速度が低下する。プロキシオブジェクトは、プロキシオブジェクトが参照するオブジェクトへの参照情報を保持している。そのため、プロキシオブジェクトを利用したデータ処理を実現するためにプロキシオブジェクトをメモリ上に保持すると、通常オブジェクトに加えてプロキシオブジェクトがメモリを消費することとなる。特許文献1に記載された技術では、1つのオブジェクトに対して1つのプロキシオブジェクトを生成している。そのため、オブジェクト数に比例してプロキシオブジェクトによるメモリ消費が発生し、メモリにキャッシュできるオブジェクト数が低下する。そこで、プロキシオブジェクトを用い、多段の参照関係を保持するオブジェクト群における任意のオブジェクトに到達するためにたどる参照の数を削減することで計算機の性能向上を図ることのできる技術を提供する。本発明の一観点に係るオブジェクト管理装置は、オブジェクトを記憶可能なメモリと、プロセッサとを有する。プロセッサは、前段のオブジェクトと、前段のオブジェクトから参照可能な1以上の後段のオブジェクトとをメモリに記憶させ、前段のオブジェクトへの参照情報を含み、前段のオブジェクトを参照可能にする参照機能を提供する前段のプロキシオブジェクトと、後段のオブジェクトへの参照情報を含み、後段のオブジェクトに対する参照機能を提供する後段のプロキシオブジェクトとを生成してメモリに記憶させ、前段のプロキシオブジェクトに、前記後段のプロキシオブジェクトへの参照情報を格納させる。本発明によれば、参照関係を持つオブジェクト群の任意のオブジェクトへプロキシオブジェクトを介してアクセスする際にたどる参照の数を低減できる。上記した以外の課題、構成および効果は、以下の実施形態の説明により明らかにされる。以下、複数の実施例について、図面を参照して説明する。なお、以下に説明する実施例は特許請求の範囲にかかる発明を限定するものではなく、また実施例の中で説明されている諸要素及びその組み合わせの全てが発明の解決手段に必須であるとは限らない。なお、以下の説明では、xxx表の表現にて各種情報を説明することがあるが、各種情報は、表以外のデータ構造で表現されていてもよい。データ構造に依存しないことを示すためにxxx表をxxx情報と呼ぶことができる。以下の説明では、プログラムに対応するxx部、xxオブジェクトを主語として処理を説明する場合があるが、xx部、xxオブジェクトは、計算機に含まれるプロセッサ例えばCPUCentralProcessingUnitによって実行されることで、定められた処理を、適宜に記憶資源例えばメモリ及び/又は通信装置等を用いながら行うため、処理の主語がプロセッサとされてもよい。xx部、xxオブジェクトを主語として説明された処理は、プロセッサが行う処理としても良い。また、プロセッサが行う処理の一部又は全部を行うハードウェア回路を含んでも良い。プログラムは、プログラムソースから計算機にインストールされても良い。プログラムソースは、例えば、プログラム配布サーバ又は記憶メディアであっても良い。実施例1では、参照関係を持つオブジェクト群のうち、任意のオブジェクトへプロキシオブジェクトを介して間接参照する際にたどる参照の数を低減することのできるプロキシオブジェクトのデータ構造と、オブジェクト管理装置の例を説明する。図1は、実施例1に係る計算機の構成図である。オブジェクト管理装置の一例である計算機101は、メモリ111と、CPU112と、通信装置113と、ハードディスクなどの記憶装置114とを備える。計算機101は、一般的なコンピュータを用いて実現することができる。計算機101には、入力装置115と、表示装置116とが接続可能となっている。入力装置115は、キーボードやマウスなどの計算機101に指示を入力するための装置であり、プログラム起動などの指示の入力を受け付ける。表示装置116は、ディスプレイなどであり、計算機101による処理の実行状況や実行結果などを表示する。通信装置113は、LANLocalAreaNetworkなどを介して、他の装置と各種データやコマンドを交換する。記憶装置114は、計算機101が処理を実行するための各種プログラム121やデータ122を保存する。メモリ111は、計算機101が処理を実行する各種プログラム121および一時的なデータ122を保持する。CPU112は、メモリ111に格納される各種プログラムを実行する。具体的には、CPU112は、記憶装置114に格納されたプログラム121とデータ122とをメモリ111に読み出して実行する。プログラム121は、ユーザプログラム実行部131、オブジェクト管理部132、オブジェクト保持部133、オブジェクト構造解析部134、プロキシオブジェクト生成部135、プロキシオブジェクト保持部136、プロキシオブジェクト参照設定部137を含む。ユーザプログラム実行部131は、プロキシオブジェクトを生成するプログラムコード、プロキシオブジェクトからオブジェクトへの参照を生成するプログラムコードを含む。図24は、実施例1に係るプロキシオブジェクトを生成するプログラムコードの一例を説明する図である。図25は、実施例1に係るプロキシオブジェクトからオブジェクトへの参照を生成するプログラムコードの一例を説明する図である。ユーザプログラム実行部131は、プロキシオブジェクトを定義するプログラムコードプロキシオブジェクトプログラムコード2501、オブジェクトを定義するプログラムコードオブジェクトプログラムコード2502等のプログラムコードを含む。図24に示すプログラムコードの場合には、ユーザプログラム実行部131は、オブジェクトプログラムコード2502の定義に基づいて、data_1データ1にデータここでは、例えば、100を与えることでオブジェクト2504を生成し、メモリ111に保持させる。この時、ユーザプログラム実行部131は、オブジェクト2504に、その定義であるオブジェクトプログラムコード2502を一意に識別する情報オブジェクトプログラムコードのIDやアドレスも保持させる。この情報によると、オブジェクト2504から生成に使用したオブジェクトプログラムコード2502を特定することができる。プロキシオブジェクト生成部135は、プロキシオブジェクトプログラムコード2501の定義に基づいて、プロキシオブジェクト2503を生成し、メモリ111に保持させる。この時、プロキシオブジェクト生成部135は、プロキシオブジェクト2503に、その定義であるプロキシオブジェクトプログラムコード2501を一意に識別する情報プロキシオブジェクトプログラムコードのIDやアドレスも保持させる。この情報によると、プロキシオブジェクト2503から生成に利用したプロキシオブジェクトプログラムコード2502を特定することができる。プロキシオブジェクト参照設定部137は、図25の点線で囲まれたset記述部2505を呼び出し、オブジェクト2504へのアドレス参照情報をプロキシオブジェクト2503に入力する。この入力操作により、図25の矢印2506で示されるように、プロキシオブジェクト2503からオブジェクト2504をたどることができる参照が設定される。オブジェクト2504を参照するプロキシオブジェクト2503を定義するプロキシオブジェクトプログラムコード2501には、オブジェクト2504のアドレスを保持する必要がある。プロキシオブジェクトプログラムコード2501は、オブジェクトプログラムコード2502を作成したプログラム作成者が作成して、ユーザプログラム実行部131に含ませてもよい。また、CPU112が記憶装置114のプログラム121をメモリ111に読み込んだ際に、プロキシオブジェクト生成部135が、オブジェクトプログラムコード2502に基づいて、プロキシオブジェクトプログラムコード2501を生成してもよい。図27は、実施例1に係るプロキシオブジェクトプログラムコード生成処理のフローチャートである。このプロキシオブジェクトプログラムコード生成処理は、例えば、ユーザプログラム実行部131でオブジェクトに対する処理が実行される前に、実行される。例えば、Javaの場合には、オブジェクトを生成する場合には、そのテンプレートとなるクラスを読み込み、クラスからそのインスタンスとなるオブジェクトを生成するが、プロキシオブジェクトプログラムコード生成処理は、クラスを読み込んでから、オブジェクトを生成する前に実行される。まず、プロキシオブジェクト生成部135が、オブジェクトを定義するオブジェクトプログラムコード2502を読み込むステップ2801。次に、プロキシオブジェクト生成部135が、オブジェクトプログラムコード2502に記述されるdata_1を操作するデータI/Fであるreadとwriteを呼び出すデータI/Fと、オブジェクトプログラムコード2502を実体化したオブジェクトのアドレス参照情報とを有するデータ構造を含むプロキシオブジェクトプログラムコード2501を生成するステップ2802。そして、プロキシオブジェクト生成部135が、生成したプロキシオブジェクトプログラムコードに任意のプロキシオブジェクトIDを付与するステップ2803。次に、プロキシオブジェクトID、プロキシオブジェクトプログラムコード名、オブジェクトプログラムコード名をメモリ111のプログラムコード管理表2600図26参照の同一行に書き込むステップ2804。なお、プロキシオブジェクトによる間接参照を用いて、CopyonWriteを実現する場合には、ステップ2802において、参照先オブジェクトのコピー処理を追記する。具体的には、例えば、copyOfで示される参照先オブジェクトのコピー処理をプロキシオブジェクトプログラムコード2501のwrite処理の先頭に追記する。このコピー処理により、write時にオブジェクトのコピーを実施するCopyonwriteを実現することができる。上記プロキシオブジェクトプログラムコード生成処理により、オブジェクトコード名とプロキシオブジェクトプログラムコード名とをプロキシオブジェクトIDにより結びつけたプログラムコード管理表2600を生成することができる。図26は、実施例1に係るプログラムコード管理表の一例である。プログラムコード管理表2600は、プロキシオブジェクトID2601と、プロキシオブジェクトプログラムコード2602と、オブジェクトプログラムコード2603と対応付けて格納する。プロキシオブジェクトID2601は、プロキシオブジェクトを一意に識別するための識別情報である。プロキシオブジェクトプログラムコード2602は、対応するプロキシオブジェクトを作成するためのプロキシオブジェクトプログラムコードの名称である。オブジェクトプログラムコード2603は、対応するプロキシオブジェクトにより参照されるオブジェクトを作成するためのオブジェクトプログラムコードの名称である。図1の説明に戻り、ユーザプログラム実行部131は、計算機101を利用するユーザが作成したユーザプログラムである。ユーザプログラム実行部131において、特定オブジェクトの永続化が命令された場合には、オブジェクト管理部132は、オブジェクト保持部133に特定オブジェクトと、特定オブジェクトから直接的または間接的に参照できるオブジェクトの全てをオブジェクト群として登録する。オブジェクト構造解析部134は、オブジェクト保持部133に登録されたオブジェクト群と、それらオブジェクト群のそれぞれのオブジェクトの参照先を解析することで、オブジェクト管理表200図2参照を生成する。例えば、オブジェクト構造解析部134は、オブジェクトに対応付けられているオブジェクトプログラムコードを特定し、プログラムコード管理表2600からオブジェクトプログラムコードに対応するプロキシオブジェクトIDを特定し、オブジェクト管理表200に登録する。図2は、実施例1に係るオブジェクト管理表の一例である。オブジェクト管理表200は、オブジェクトID201と、参照先ID202と、プロキシオブジェクトID203とを対応付けて記憶する。オブジェクトID201は、登録されたオブジェクトを一意に識別するIDである。参照先ID202は、対応するオブジェクトの参照先となるオブジェクト後段のオブジェクトを一意に識別するオブジェクトIDである。なお、対応するオブジェクトに参照先が存在しなければ、参照先IDは格納されない。プロキシオブジェクトID203は、対応するオブジェクトに対する間接参照を実現するためのプロキシオブジェクトプログラムコードを一意に識別するIDである。プロキシオブジェクトID203は、プログラムコード管理表2600に登録されたものと対応する。プロキシオブジェクト生成部135は、オブジェクト管理表200を用いて、オブジェクト保持部136に登録されたオブジェクトへの間接参照と、他のプロキシオブジェクトへの直接参照を実現するデータ構造を保持するプロキシオブジェクトの集合プロキシオブジェクト群を生成し、プロキシオブジェクト保持部136に登録する。図3は、実施例1に係るプロキシオブジェクトのデータ構造の一例を示す図である。ここで、オブジェクトOBJは、図3に示すように、オブジェクトを一意に識別するID301と、オブジェクトで管理されるデータ302、303、データ1、データ2、と、オブジェクトが参照する他のオブジェクト後段のオブジェクトを示す参照情報を格納する参照先304参照先1とを含むデータ構造となっている。なお、オブジェクトOBJが複数のオブジェクトOBJを参照する場合には、参照先304が複数設けられる。プロキシオブジェクトPOBは、プロキシオブジェクトを一意に識別するID311、プロキシオブジェクトによる間接参照先となるオブジェクトOBJへの参照情報を保持する参照312O参照、プロキシオブジェクトによる間接参照先となるオブジェクトOBJが保持するデータへのアクセスインターフェースを定義するデータI/F313、間接参照先となるオブジェクトOBJが参照している他のオブジェクトを間接参照先としている他のプロキシオブジェクト後段のプロキシオブジェクトへの参照情報を保持する参照314P参照を含むデータ構造となっている。なお、プロキシオブジェクト生成部135がオブジェクト管理表200を参照してプロキシオブジェクト群を生成した後は、オブジェクト管理表200をメモリ111から破棄してもよいし、そのまま保持していてもよい。プロキシオブジェクト参照設定部137は、オブジェクト保持部133に登録されたオブジェクト群に対して、以下に示す参照情報設定処理を実行する。すなわち、プロキシオブジェクト参照設定部137は、オブジェクト保持部133に登録した多段の参照関係を保持するオブジェクト群に対して、参照元となるオブジェクト前段のオブジェクトへの間接参照を実現するプロキシオブジェクト前段のプロキシオブジェクトと、前段のオブジェクトの参照先となるオブジェクト後段のオブジェクトへの間接参照を実現するプロキシオブジェクト後段のプロキシオブジェクトを識別し、前段のプロキシオブジェクトのO参照312に前段のオブジェクトへの参照情報を設定し、後段のプロキシオブジェクトのO参照312に後段のオブジェクトへの参照情報を設定する。また、プロキシオブジェクト参照設定部137は、前段のプロキシオブジェクトのP参照314に後段のプロキシオブジェクトへの参照情報を設定する。このような参照情報設定処理により、プロキシオブジェクト参照設定部137は、図3に示すようなプロキシオブジェクト群のそれぞれのプロキシオブジェクトPOBからオブジェクト群の対応するオブジェクトOBJへの一方向の参照関係を生成する。ここで、矢印の起点が参照元を示し、矢印の終点が参照先を示している。ユーザプログラム実行部131は、オブジェクト保持部133に対してオブジェクト管理部132を介して、オブジェクトの登録と取得を行う。また、ユーザプログラム実行部131は、オブジェクト管理部132からプロキシオブジェクトを伴って取得したオブジェクトが保持するデータに対するread読み出しとwrite書き込みを実行する。また、ユーザプログラム実行部131は、writeを実施したオブジェクトをオブジェクト管理部132を介して再登録する。ユーザプログラム実行部131での各処理に伴って実施する処理の詳細を以降で説明する。図4は、実施例1に係るオブジェクト登録処理のフローチャートである。オブジェクト管理部132は、ユーザプログラム実行部131からオブジェクトの登録要求が発生するまで待機するステップ401。オブジェクトの登録としては、例えばユーザプログラム実行部131で登録対象のオブジェクトを識別するキーを生成し、そのキーで一意に識別するオブジェクトをバリューとするキー、バリュー型での登録であってもよいし、登録対象のオブジェクトへアクセスするキーやポインタをオブジェクト管理部132が生成してユーザプログラム実行部131に送付するようにしてもよい。また、オブジェクトの登録を受信した後に、オブジェクトの内部情報を用いてインデックスを作成して、検索可能となるように管理してもよい。ここでは、ユーザプログラム実行部131がオブジェクトを一意に識別するキーを伴った登録要求を発生させるキー、バリュー型を例にして説明する。登録要求が発生すればステップ401でYes、オブジェクト管理部132は登録対象のオブジェクトから参照をたどることで到達できるオブジェクトの全てをオブジェクト群としてオブジェクト保持部133に複製または移動するステップ402。なお、オブジェクト群のうち既にオブジェクト管理部132に登録済みのオブジェクトが存在する場合は、登録済みオブジェクトを無視して別のオブジェクトとして登録してもよいし、登録済みのオブジェクトを上書きしてもよい。ステップ402の後は、オブジェクト管理部132は、オブジェクト群のうち登録対象のオブジェクト起点オブジェクトを一意に識別するキー情報をユーザプログラム実行部131から受信し、キーと移動または複製した起点オブジェクトを示す起点オブジェクトIDをそれぞれオブジェクトインデックス表図5参照のキーと起点オブジェクトIDに登録するステップ403。図5は、実施例1に係るオブジェクトインデックス表の一例である。オブジェクトインデックス表500は、キー501と、起点オブジェクトID502と、起点プロキシオブジェクトID503とを対応付けて記憶する。キー501は、起点オブジェクトを一意に識別するキー情報である。起点オブジェクトID502は、対応する起点オブジェクトのIDである。起点プロキシオブジェクトID503は、起点オブジェクトを間接参照するためのプロキシオブジェクト起点プロキシオブジェクトのIDである。オブジェクト登録処理により、オブジェクト群の登録が完了した後に、プロキシオブジェクト生成設定処理が実行される。プロキオブジェクト生成設定処理では、オブジェクト構造解析部134がオブジェクト群の構造を解析する。次いで、解析結果を用いて、プロキシオブジェクト生成部135がオブジェクト群への間接参照を実現するプロキシオブジェクトを生成し、プロキシオブジェクト参照設定部137がプロキシオブジェクトとオブジェクト、プロキシオブジェクトとプロキシオブジェクトの間の参照を設定する。次に、このプロキシオブジェクト生成設定処理を、フローチャートを用いて説明する。図6は、実施例1に係るプロキシオブジェクト生成設定処理のフローチャートである。まず、オブジェクト構造解析部134は、オブジェクト保持部133に登録されたオブジェクト群を解析することで、各オブジェクトのオブジェクトID、参照先ID、プロキシオブジェクトIDを取得し、オブジェクト管理表200を生成し、プロキシオブジェクト生成部135に処理を引き継ぐステップ601。プロキシオブジェクト生成部135は、オブジェクト保持部133に登録されたオブジェクトの型情報から、その定義であるオブジェクトプログラムコードを特定するステップ601-1。次に、プロキシオブジェクト生成部135は、特定したオブジェクトプログラムコードと同じプロキシオブジェクトIDで結びつけられるプロキシオブジェクトプログラムコードを取得するステップ601-2。そして、プロキシオブジェクト生成部135は、取得したプロキシオブジェクトプログラムコードから、オブジェクト保持部133に登録された各オブジェクトへのデータアクセスIF313データI/Fと、O参照312と、P参照314とを実現するデータフィールドを持つプロキシオブジェクトPOBを生成し、プロキシオブジェクト保持部136に登録するステップ602。ステップ602では、プロキシオブジェクトPOBのO参照312と、P参照314とに参照先を登録する処理を行わない。なお、O参照312とP参照314に、参照先を登録する処理は、以降に実行される。ステップ602でのプロキシオブジェクト生成が完了すると、プロキシオブジェクト生成部135は、オブジェクト群の起点オブジェクトへの間接参照を実現するプロキシオブジェクト起点プロキシオブジェクトのID起点プロキシオブジェクトIDを、オブジェクトインデックス表500の対応する行の起点プロキシオブジェクトIDとして登録し、プロキシオブジェクト参照設定部137に処理を引き継ぐステップ603。プロキシオブジェクト参照設定部137は、起点プロキシオブジェクトを、O参照とP参照とを設定する対象のプロキシオブジェクト参照設定プロキシオブジェクトとして選択するステップ604。続いてプロキシオブジェクト参照設定部137は、ステップ601で取得したプロキシオブジェクトIDとオブジェクトIDとから参照設定プロキシオブジェクトにより間接参照されるオブジェクトを特定し、参照設定プロキシオブジェクトのO参照312に特定したオブジェクトのIDを登録するステップ605。その後、プロキシオブジェクト参照設定部137は、参照設定プロキシオブジェクトのO参照312のIDに対応するオブジェクトが参照する他のオブジェクトのID参照先IDがあるか否かを、ステップ601で取得したオブジェクトID、参照先IDを用いて確認するステップ606。参照先IDが存在しなければステップ606でNo、ステップ608に進む。一方、参照先IDが存在すればステップS606でYes、プロキシオブジェクト参照設定部137は、参照先IDのオブジェクトを間接参照するためのプロキシオブジェクトのIDをオブジェクト管理表200から取得し、取得したプロキシオブジェクトIDで示されるプロキシオブジェクトを参照設定プロキシオブジェクトのP参照314に登録し、ステップ608に進むステップ607。ステップ608では、ステップ602でプロキシオブジェクト生成部135が生成したプロキシオブジェクト群から参照設定プロキシオブジェクトとして未選択のプロキシオブジェクトが存在するか確認する。未選択のプロキシオブジェクトが存在すればステップ608でYes、未選択のプロキシオブジェクトからO参照とP参照とを設定する参照設定プロキシオブジェクトを選択し、ステップ604からの処理を実行する。未選択のプロキシオブジェクトが存在しなければステップ608でNo、処理を終了する。このプロキシオブジェクト生成設定処理は、オブジェクトを登録する際に実行してもよいし、オブジェクトの取得要求を受信してから実行してもよい。また、プロキシオブジェクト生成設定処理におけるプロキシオブジェクトを生成する処理プロキシオブジェクト生成処理と、プロキシオブジェクトに参照設定をする処理プロキシオブジェクト設定処理とを分割し、プロキシオブジェクト生成処理をオブジェクト登録時に実行し、プロキシオブジェクト設定処理をオブジェクト取得時に実行するようにしてもよい。さらに、プロキシオブジェクト設定処理をさらに分割し、プロキシオブジェクトにP参照を設定する処理をオブジェクト登録時に実行し、プロキシオブジェクトにO参照を設定する処理をオブジェクト取得時に行うようにしてもよい。次に、オブジェクト管理部132を介して過去に登録したオブジェクトを取得するオブジェクト取得処理をフローチャートに従って説明する。図7は、実施例1に係るオブジェクト取得処理のフローチャートである。オブジェクト管理部132は、ユーザプログラム実行部131からオブジェクトを一意に識別するキーを伴うオブジェクトの取得要求が発生するまで待機するステップ701。オブジェクトの取得要求が発生すればステップ701でYes、オブジェクト管理部132は、オブジェクト取得要求に付随するキーを用いて、オブジェクトインデックス表500から該当するオブジェクトIDと起点プロキシオブジェクトIDを取得するステップ702。そして、オブジェクト管理部132は、取得した起点プロキシオブジェクトIDが示すプロキシオブジェクトをユーザプログラム実行部131に送信するステップ703。これにより、ユーザプログラム実行部131は、取得要求の対象のオブジェクトを読み出すプロキシオブジェクト又は、そのプロキシオブジェクトに到達することのできるプロキシオブジェクトを取得することとなる。なお、プロキシオブジェクトの送信時において、オブジェクト管理部132は、ユーザプログラム実行部131に対して、プロキシオブジェクトと、そのプロキシオブジェクトから参照されるプロキシオブジェクトを複製して送信してもよいし、プロキシオブジェクトを送信した後に、再び同じプロキシオブジェクトを生成してもよい。上記したように、ユーザプログラム実行部131がオブジェクト管理部132を介してプロキシオブジェクトを取得した後は、ユーザプログラム実行部131は取得したプロキシオブジェクトを介してオブジェクトが保持するデータに対するreadとwriteの操作を行うことができるようになる。次に、ユーザプログラム実行部131でプロキシオブジェクトを介して、オブジェクトのデータに対するreadやwriteの操作を行うオブジェクトのデータ操作処理をフローチャートに従って説明する。図8は、実施例1に係るオブジェクトのデータ操作処理のフローチャートである。ユーザプログラム実行部131は、起点プロキシオブジェクトに対してデータ操作対象のオブジェクトへの到達経路情報参照経路情報とそのデータが格納される属性をデータread要求として送付するステップ801。続いて、起点プロキシオブジェクトは、受信した到達経路情報を用いて、P参照314に保持する参照情報をたどることで目標の属性を持つオブジェクトOBJへの間接参照を実現するプロキシオブジェクトPOBに到達するステップ802。ここで、到達経路情報とは、例えば、オブジェクト1からオブジェクト2を介して、目標データ操作対象であるオブジェクトNに到達すると表現されるような目標オブジェクトに到達するために経由するオブジェクトの情報である。この到達経路情報に含まれるオブジェクトを、各オブジェクトへの間接参照を実現するプロキシオブジェクトに置換することでプロキシオブジェクト1からプロキシオブジェクト2を介して、目標であるプロキシオブジェクトNに到達するのような、オブジェクトの到達経路に対応するプロキシオブジェクトの到達経路情報プロキシオブジェクト到達経路情報を生成する。このプロキシオブジェクト到達経路情報を生成することで、オブジェクト1の間接参照を実現するプロキシオブジェクト1から、オブジェクト2等のオブジェクトを介さずにプロキシオブジェクトを介して、オブジェクトNの間接参照を実現するプロキシオブジェクトNに到達することができる。このプロキシオブジェクト到達経路情報を用いて、目標となるオブジェクトへ間接参照可能なプロキシオブジェクト目標プロキシオブジェクトに到達した後は、ユーザプログラム実行部131が、目標プロキシオブジェクトが保持するデータI/Fを介して目標のオブジェクトに対するデータ操作を試行するステップ803。この時、目標プロキシオブジェクトのデータI/Fは、ユーザプログラム実行部131によるデータ操作がreadかwriteかを判定するステップ804。データ操作がreadの場合ステップ804でReadは、目標プロキシオブジェクトは、ユーザプログラム実行部131に、オブジェクトのデータを読み込ませて処理を終了するステップ805。一方、データ操作がwriteの場合ステップ804でWriteは、目標プロキシオブジェクトは、間接参照するオブジェクトの複製をメモリ111に生成するステップ806。目標オブジェクトを複製した後は、プロキシオブジェクトPOBのO参照312を複製元オブジェクトOBJへの参照から複製先オブジェクトOBJへの参照へ変更するステップ807。プロキシオブジェクトPOBのO参照312の変更が完了すれば、プロキシオブジェクトは、複製先のオブジェクトに対してwrite操作を適用して処理を終了するステップ808。なお、間接参照するオブジェクトが複製済みである場合に、プロキシオブジェクトに複製済みフラグを持たせるようにし、データ操作がwriteの場合に、複製済みフラグを確認することで、同一のオブジェクトへのwrite時にオブジェクトを複製する処理を初回だけにするようにしてもよい。オブジェクトの内部情報をwriteした後に、このオブジェクトを永続化する場合には、オブジェクト保持部136に保持されたwrite前のオブジェクトを、write後のオブジェクトに更新する再登録処理を実行する必要がある。この再登録処理をフローチャートに従って説明する。図9は、実施例1に係るオブジェクトの再登録処理のフローチャートである。オブジェクト管理部132は、ユーザプログラム実行部131から登録対象のオブジェクト群の起点オブジェクトを一意に識別するキーを伴ったオブジェクトの登録要求が発生するまで待機するステップ901。オブジェクトの再登録要求が発生すればステップ901でYes、オブジェクト管理部132は、起点プロキシオブジェクト及び起点プロキシオブジェクトから到達可能なプロキシオブジェクトから間接参照可能なプロキシオブジェクトではないオブジェクトを求め、当該オブジェクトに対するwriteの有無を確認してステップ903に進むステップ902。オブジェクトに対するwriteの有無の確認方法としては、例えば、プロキシオブジェクトPOBのO参照312のオブジェクトを複製した場合に、複製を実施したことを示す複製済フラグをプロキシオブジェクトに保持させ、オブジェクトの再登録時に、その複製済フラグを確認することで確認するようにしてもよい。また、登録済みオブジェクト群と再登録対象のオブジェクト群との内部情報を比較し、内部情報が異なればwriteが発生したと判定するようにしてもよい。ステップ903では、writeが無ければステップ903でNo、登録済みのデータとの変更点は無いと判断して登録処理を終了する。一方、writeがあればステップ903でYes、オブジェクト管理部132は、writeが発生して複製が実施されたオブジェクトの複製先と、writeが発生したオブジェクトへの間接参照を実現するプロキシオブジェクトを参照するプロキシオブジェクト群をステップ902で取得した全プロキシオブジェクトから抽出するステップ904。そして、オブジェクト管理部132は、抽出したプロキシオブジェクトによって間接参照を実現するオブジェクトOBJの参照先304をステップ904で取得したオブジェクトの複製先に変更してオブジェクトの再登録処理を終了するステップ905。実施例1によると、プロキシオブジェクトのデータ構造に、オブジェクトの参照関係に対応するプロキシオブジェクトへの参照を保持するP参照を加えることと、データ構造を保持するプロキシオブジェクトを管理することで、起点プロキシオブジェクトからプロキシオブジェクトだけを経由することで任意のオブジェクトへの間接参照を実現する目標プロキシオブジェクトへの到達を可能にする。これにより、目標オブジェクトに到達するために非プロキシオブジェクトを経由する必要がなくなり、参照数を低減することができる。このため、プロキシオブジェクトを用いて間接参照する任意のオブジェクトへのアクセスを高速化することができる。永続化したオブジェクトに対するread/write性能を向上させるにはオブジェクトキャッシュの利用が有効である。また、オブジェクトキャッシュを利用する環境で、データ一貫性を保ったままread性能を向上させるには、CopyonWriteの利用が有効である。CopyonWriteを実現するためには、永続化のためにオブジェクトキャッシュに登録したオブジェクトに対してプロキシオブジェクトを介した間接参照を実現する必要がある。ただし、登録したオブジェクトとそのオブジェクトから参照できるオブジェクト全てに対してプロキシオブジェクトを生成すると、登録したオブジェクト数に比例したプロキシオブジェクトが必要となる。プロキシオブジェクトは、プロキシオブジェクトが参照するオブジェクトへの参照情報を保持しているため、プロキシオブジェクトによるメモリ消費量が増加してメモリ111にキャッシュできるオブジェクト数が低下する。このオブジェクトキャッシュに登録するオブジェクト群には同じデータ構造と参照関係を持つオブジェクトが複数含まれるため、オブジェクト群への間接参照を実現するために生成するプロキシオブジェクト群には、同じデータアクセスI/Fを持つプロキシオブジェクトが複数含まれる。図22は、実施例2に係るオブジェクトへの間接参照を実現するプロキシオブジェクトのデータ構成を説明する図である。例えば、図22に示すように、オブジェクト保持部133には、オブジェクトA1とオブジェクトB1が存在し、オブジェクトA1からオブジェクトB1への参照が存在するとする。また、図22に示すように、プロキシオブジェクト保持部136には、オブジェクトA1とオブジェクトB1への間接参照を実現するプロキシオブジェクトPA1、PB1が存在するとする。オブジェクトA1とオブジェクトB1への間接参照を実現するためにプロキシオブジェクトPA1は、O参照にA1、P参照にPB1を保持し、オブジェクトA1の内部情報へのデータアクセスI/Fを保持することとなる。ここで、オブジェクトA1とオブジェクトB1と同じデータ構造及び参照関係を持つオブジェクトA2とオブジェクトB2が存在する場合には、オブジェクトA2とオブジェクトB2への間接参照を実現するためにプロキシオブジェクトPA2、PB2が生成されることになる。このプロキシオブジェクトPA2及びPB2は、プロキシオブジェクトPA1及びPB1とは、O参照のみが異なるプロキシオブジェクトである。これは、例えば、Javaであれば、同一クラスAから別インスタンスとして、オブジェクトA1とA2を生成した場合に発生する。オブジェクトB1とB2についても同様である。プロキシオブジェクトPA1とPB1は、そのO参照をオブジェクトA2とB2に変更することでオブジェクトA2とオブジェクトB2のそれぞれへの間接参照を実現することができる。このことは、O参照にオブジェクトへの参照を登録しないプロキシオブジェクトPA1、PB1を代表プロキシオブジェクトとして1組保持しておけば、この代表プロキシオブジェクトを用いて、オブジェクトA1及びB1、またはオブジェクトA2及びB2への間接参照を容易に実現することができること意味している。図23は、実施例2に係る代表プロキシオブジェクトを複製して利用する例を説明する図である。具体的には、例えば、図23に示すように、ユーザプログラム実行部131からオブジェクトA2及びB2に対するオブジェクト取得要求が発生した後に、プロキシオブジェクトPA1及びPB1を複製し、その複製したプロキシオブジェクトPA1’及びPB1’のそれぞれのO参照にオブジェクトA2とオブジェクトB2への参照をそれぞれ登録し、ユーザプログラム実行部131に送信することで、オブジェクトA2及びB2への間接参照を実現できる。このように、同じデータアクセスI/Fと、オブジェクト間の参照関係と、を保持するオブジェクト群に対しては、1組の代表プロキシオブジェクトを準備しておき、オブジェクトの取得要求があった時にのみ代表プロキシオブジェクトを複製し、その複製のO参照を変更することで、取得要求のあったオブジェクトに対する間接参照を実現できる。代表プロキシオブジェクトを用いることで、オブジェクト数に比例して必要であったプロキシオブジェクト数を低減することができる。このような代表プロキシオブジェクトを利用する実施例2に係るオブジェクト管理装置を以下に説明する。図10は、実施例2に係る計算機の構成図である。実施例2に係るオブジェクト管理装置の一例としての計算機101は、図1に示す計算機を実現するプログラムに対して、オブジェクト保持部133に追加されたオブジェクト群に対して既存の代表プロキシオブジェクトにより間接参照を実現できるかを判定する代表プロキシオブジェクト確認部138を追加するとともに、プロキシオブジェクト保持部136を代表プロキシオブジェクトを保持する代表プロキシオブジェクト保持部136に変更したものである。図11は、実施例2に係るオブジェクト登録処理のフローチャートである。オブジェクト構造解析部134は、オブジェクトとそのオブジェクトから参照できる到達できるオブジェクト全てからなるオブジェクト群が、オブジェクト保持部133に登録されるまで待機するステップ1101。オブジェクト構造解析部134がオブジェクト保持部133へのオブジェクト群の登録を検知すればステップ1101でYes、ステップ1102に進む。ステップ1102では、オブジェクト構造解析部134が登録されたオブジェクト群を解析することで、各オブジェクトの参照先と間接参照を実現するプロキシオブジェクトを抽出し、オブジェクト管理表200を生成するステップ1102。ここでの解析とは、例えば、オブジェクトの内部情報からオブジェクトの型オブジェクト型と他のオブジェクトへの参照とを抽出し、抽出したオブジェクト型を持つオブジェクトへの間接参照を実現するプロキシオブジェクトを特定することである。ここで、ステップ1102で、登録を検知したオブジェクト群の起点のオブジェクトを説明のため追加起点オブジェクトと呼ぶ。ステップ1102の後に、既存の代表プロキシオブジェクトにより、登録されたオブジェクト群の間接参照が可能か判定するためステップ1103に進む。ステップ1103では、代表プロキシオブジェクト確認部138が、オブジェクト管理表200を用いて追加起点オブジェクトへの間接参照を実現するプロキシオブジェクトを示すID追加起点プロキシオブジェクトIDを取得する。次に、代表プロキシオブジェクト確認部138が、オブジェクトインデックス表500の起点プロキシオブジェクトIDと一致する追加起点プロキシオブジェクトIDが存在するか否かを確認するステップ1104。存在しなければステップ1104でNo、代表プロキシオブジェクト確認部138は、既存の代表プロキシオブジェクトが存在しないとして、代表プロキシオブジェクトを生成するためにプロキシオブジェクト生成部135に処理を引き継ぐステップ1105。一方、存在すればステップ1104でYes、代表プロキシオブジェクト確認部138は、起点プロキシオブジェクトIDと一致する代表プロキシオブジェクトの起点が存在するとして、追加起点オブジェクトから参照するオブジェクトも代表プロキシオブジェクトにより間接参照を実現できるか否かを確認するためステップ1106に進む。ステップ1106では、オブジェクト管理表200を用いて追加起点オブジェクトから参照されるオブジェクトが存在するか確認する。この結果、存在しなければステップ1106でNo、代表プロキシオブジェクト確認部138は、オブジェクト保持部133に追加したオブジェクト群は既存の代表プロキシオブジェクトで間接参照できると判定して処理を終了する。一方、存在すればステップ1106でYes、代表プロキシオブジェクト確認部138は、追加起点オブジェクトから参照されるオブジェクトへの間接参照を実現するプロキシオブジェクトを示すプロキシオブジェクトID追加参照先プロキシオブジェクトIDを取得するステップ1107。そして、代表プロキシオブジェクト確認部138は、代表プロキシオブジェクトの起点から参照するプロキシオブジェクト群を識別する参照先プロキシオブジェクトID群を取得するステップ1108。続いて、代表プロキシオブジェクト確認部138は、取得した参照先プロキシオブジェクトID群に追加参照先プロキシオブジェクトIDが全て含まれるか否かを確認するステップ1109。含まれなければステップ1109でNo、既存の代表プロキシオブジェクトが存在しないとして、代表プロキシオブジェクトを生成するためにプロキシオブジェクト生成部135に処理を引き継ぐステップ1105。一方、含まれればステップ1109でYes、代表プロキシオブジェクト確認部138は、追加参照先プロキシオブジェクトIDと参照先プロキシオブジェクトIDが一致するペアを生成し、各ペアに対して追加参照先プロキシオブジェクトIDで示されるプロキシオブジェクトにより間接参照されるオブジェクトを追加起点オブジェクト、参照先プロキシオブジェクトIDで示されるプロキシオブジェクトを代表プロキシオブジェクトの起点とみなしてステップ1106に戻り、同様な代表プロキシオブジェクト確認処理を継続するステップ1110。なお、ステップ1105でプロキシオブジェクト生成部135に処理を引き継ぐ前に、代表プロキシオブジェクト確認部138がステップ1109で代表プロキシオブジェクトとの差分を記録し、プロキシオブジェクト生成部135が代表プロキシオブジェクトに足りないプロキシオブジェクトを追加プロキシオブジェクトとして生成してもよい。次に、ユーザプログラム実行部131に代表プロキシオブジェクトを提供する代表プロキシオブジェクト提供処理を説明する。代表プロキシオブジェクト提供処理において、ユーザプログラム実行部131のオブジェクト取得要求に従ってオブジェクト管理部132は、代表プロキシオブジェクトをユーザプログラム実行部131に送信提供する。この時、オブジェクト管理部132はオブジェクト保持部133に保持されるオブジェクト群への間接参照を実現するために代表プロキシオブジェクトを探索し、代表プロキシオブジェクト、または、その複製のプロキシオブジェクトのO参照にデータ取得要求で要求されたオブジェクトへの参照を登録することを行う。ここで、代表プロキシオブジェクト提供処理をフローチャートに従って説明する。図12は、実施例2に係る代表プロキシオブジェクト提供処理のフローチャートである。オブジェクト管理部132は、ユーザプログラム実行部131からオブジェクトを一意に識別するキーを伴ったオブジェクトの取得要求が発生するまで待機するステップ1201。オブジェクト取得要求が発生すればステップ1201でYes、オブジェクト管理部132はユーザプログラム実行部131から取得したキーを用いて、オブジェクトインデックス管理表500から、要求されるオブジェクトのオブジェクトIDと起点プロキシオブジェクトIDとを取得し、プロキシオブジェクト参照設定部137に処理を引き継ぐステップ1202。プロキシオブジェクト参照設定部137は、取得した起点プロキシオブジェクトと、起点プロキシオブジェクトからたどることのできるプロキシオブジェクトとを、P参照314の参照情報を含めて複製する。そして、複製先の起点を起点プロキシオブジェクトとするステップ1203。その後、プロキシオブジェクト参照設定部137は、起点プロキシオブジェクトのO参照312に、ステップ1202で取得したオブジェクトIDで示されるオブジェクトへの参照を登録するステップ1204。ステップ1204の後は、プロキシオブジェクト参照設定部137は、起点プロキシオブジェクトのP参照314に登録されたプロキシオブジェクトが存在するか確認するステップ1205。P参照に登録されたプロキシオブジェクトが存在すればステップ1205でYes、ステップ1206に進む。一方、存在しなければステップ1205でNo、プロキシオブジェクト参照設定部137は、複製された代表プロキシオブジェクトにオブジェクトへの参照を設定する処理が完了したとしてオブジェクト管理部132に処理を戻してステップ1207に進む。ステップ1206では、プロキシオブジェクト参照設定部137は、P参照314に登録されたプロキシオブジェクトのプロキシオブジェクトIDを取得し、オブジェクト管理表200からプロキシオブジェクトIDに対応するオブジェクトIDを取得する。その後、取得したプロキシオブジェクトIDを新たな起点プロキシオブジェクトIDとしてステップ1204に進む。なお、オブジェクト管理表200図2参照とは、ユーザプログラム実行部131から取得要求のあったオブジェクトを登録する際に、オブジェクト構造解析部134が生成した表である。オブジェクト管理表200は、オブジェクトの登録が完了すれば破棄して、メモリ111に保持するデータ量を削減できる。ただし、オブジェクトの登録完了後に破棄している場合には、ステップ1202とステップ1203との間において、オブジェクト構造解析部134が取得要求のあったオブジェクトから参照されるオブジェクトを調査し、オブジェクト管理表200を再び生成するステップが必要となる。ステップ1207では、オブジェクト管理部132は、ユーザプログラム実行部131に複製した代表プロキシオブジェクトの起点プロキシオブジェクトを送信する。以上のように代表プロキシオブジェクトを導入することで、ユーザプログラム実行部131から取得要求されたオブジェクトに対しての参照に利用するためのプロキシオブジェクトのみを生成すればよい。このため、代表プロキシオブジェクトを用いる方法によると、オブジェクト保持部133に登録されたオブジェクト全てに対応するプロキシオブジェクトを生成する方法に比べてプロキシオブジェクトの生成数を低減することができる。実施例2に係る計算機101においては、オブジェクト管理部132は、ユーザプログラム実行部131からのオブジェクト取得要求が発生するたびに代表プロキシオブジェクトを複製する。このため、ユーザプログラム実行部131はオブジェクト取得時には毎回複製処理が完了するまで、プログラムの実行を待機させる必要がある。そこで、実施例3に係るデータ管理装置の一例である計算機101おいては、ユーザプログラム実行部131が代表プロキシオブジェクトの複製を待つ時間を削減するために、同一の代表プロキシオブジェクトを事前に複製して、所定の一定数以上保持しておくようにしている。実施例3に係る計算機101においては、例えば、図10を用いて説明すると、オブジェクト管理部132が代表プロキシオブジェクト数を監視し、代表プロキシオブジェクト数が所定の閾値を下回れば、オブジェクト管理部132が代表プロキシオブジェクトの起点プロキシオブジェクトをプロキシオブジェクト生成部135に通知して代表プロキシオブジェクトの複製を実施させる。ここで、閾値としては、任意の値でよいが、ユーザプログラム実行部131での代表プロキシオブジェクト使用状況から決定してもよい。代表プロキシオブジェクト使用状況としては、例えば、ユーザプログラ実行部131で並列に処理を実行するスレッドの最大数や、スレッドで同時使用された代表プロキシオブジェクトの最大数などがある。以上のように代表プロキシオブジェクトを事前に複製して代表プロキシオブジェクト保持部136に保持するようにしたために、オブジェクト取得要求が発生した場合に、図12のステップ1203において、代表プロキシオブジェクトを複製する必要がなく、ユーザプログラム実行部131の処理時間が短縮される。実施例2、実施例3に係る計算機101においては、オブジェクト管理部132はユーザプログラム実行部131からのオブジェクト取得要求が発生すれば、代表プロキシオブジェクト群を構成するプロキシオブジェクトのO参照312に取得要求のあったオブジェクトと、そのオブジェクトから参照できる全てのオブジェクトへの参照を登録する。しかし、ユーザプログラム実行部131は、要求したオブジェクトと、そのオブジェクトから参照できる全オブジェクトに対して、readやwriteといった操作を行うとは限らないため、取得したオブジェクト全てへの間接参照が必要になるとは限らない。そこで、実施例4に係る計算機101においては、操作要求が発生したオブジェクトに対してプロキシオブジェクトからの参照を設定することにより、オブジェクト取得時における不要なオブジェクトへの参照設定を省くことができるようにした。ここで、オブジェクトの操作要求があった際に、操作要求のあったオブジェクトに対する参照をプロキシオブジェクトに設定することを、遅延プロキシオブジェクト参照設定ということとする。図13は、実施例4に係る遅延プロキシオブジェクト参照設定処理前のオブジェクト状態を説明する図である。ここで、実施例4に係る計算機101について、図10に示す計算機との違いを明確にするために、図13を用いて説明する。ユーザプログラム実行部131は、間接参照を実現するプロキシオブジェクトPOBと間接参照先のオブジェクトOBJを記憶している。プロキシオブジェクトPOBは、多段の参照関係を保持するオブジェクトOBJへの間接参照を実現するデータ構造をデータ部に持っている。すなわち、各プロキシオブジェクトPOBは、間接参照先のオブジェクトOBJの参照情報を保持するためのO参照312と、間接参照先のオブジェクトが参照する他のオブジェクトへの間接参照を実現するプロキシオブジェクトPOBへの参照情報を保持するためのP参照314を保持している。さらに、プロキシオブジェクトPOBは、ユーザプログラム実行部131によるオブジェクトへの間接参照要求を検知して、オブジェクトへの参照を設定遅延プロキシオブジェクト参照設定させる機能を実現するための間接参照追加部139を保持する。以下、間接参照追加部139により実現させる遅延プロキシオブジェクト参照設定を、オブジェクト取得と、データのreadやwriteといったオブジェクト操作との2つの処理にわけて説明する。オブジェクト取得では、ユーザプログラム実行部131が間接参照追加部139をその機能として保持するプロキシオブジェクトと、そのプロキシオブジェクトによる間接参照を実現するオブジェクトとを取得する。このオブジェクト取得処理の一例をフローチャートに従って説明する。図14は、実施例4に係るオブジェクト取得処理のフローチャートである。オブジェクト管理部132は、ユーザプログラム実行部131からオブジェクトを一意に識別するキーを伴ったオブジェクトの取得要求が発生するまで待機するステップ1501。オブジェクト取得要求が発生すればステップ1501でYes、オブジェクト管理部132はユーザプログラム実行部131から取得したキーを用いてオブジェクトインデックス管理表500から、要求されるオブジェクトのオブジェクトIDと起点プロキシオブジェクトIDを取得した後に、プロキシオブジェクト参照設定部137に処理を引き継ぐステップ1502。プロキシオブジェクト参照設定部137は、代表プロキシオブジェクトから複製され、且つ取得した起点プロキシオブジェクトIDで示されるプロキシオブジェクトPOBのO参照312に、取得したオブジェクトIDで示されるオブジェクトの参照情報を登録するステップ1503。その後、オブジェクト管理部132は、起点プロキシオブジェクトのO参照312にのみ参照先オブジェクトを登録した状態で、ユーザプログラム実行部131に起点プロキシオブジェクトを送信して処理を終了するステップ1504。オブジェクト操作では、ユーザプログラム実行部131からの間接参照要求を間接参照追加部139が検知した後に、オブジェクト構造解析部134とプロキシオブジェクト参照設定部137とが通信することで、プロキシオブジェクトからオブジェクトへの参照を登録する。このオブジェクト操作処理の一例をフローチャートに従って説明する。図15は、実施例4に係るオブジェクト操作処理のフローチャートである。間接参照追加部139は、ユーザプログラム実行部131によるオブジェクトへの間接参照要求が発生するまで待機するステップ1601。間接参照要求を検知すればステップ1601でYes、間接参照追加部139は、プロキシオブジェクトを介して間接参照先のオブジェクトにアクセスできるか確認するステップ1602。アクセスできればステップ1602でYes、ユーザプログラム実行部131にプロキシオブジェクトを介した間接参照を実行させて処理を終了する。アクセスできなければステップ1602でNo、間接参照追加部139は、間接参照要求先のオブジェクト目標オブジェクト、起点プロキシオブジェクトが間接参照するオブジェクト起点オブジェクト、起点プロキシオブジェクトから、目標オブジェクトへの間接参照を実現するプロキシオブジェクトまで順番に取得したプロキシオブジェクト群参照順プロキシオブジェクト群を取得するステップ1603。ここで、例えば、オブジェクトA、B、Cが存在して、オブジェクトAがオブジェクトBを参照し、オブジェクトBがオブジェクトCを参照するようになっている場合には、オブジェクトCのデータをリードは、A.B.C.readと表現される。この時、起点オブジェクトは、オブジェクトAとなり、目標オブジェクトは、オブジェクトCとなる。また、オブジェクトA、B、Cの各オブジェクトへの間接参照を実現するプロキシオブジェクトをそれぞれ、PA、PB、PCとすると、参照順プロキシオブジェクト群は、PA→PB→PCとなる。ステップ1603の後、オブジェクト構造解析部134は、取得した起点オブジェクトから参照できるオブジェクトと、そのオブジェクトへの間接参照を実現するプロキシオブジェクトとを取得するステップ1604。その後、オブジェクト構造解析部134は、参照順プロキシオブジェクト群のうち起点プロキシオブジェクトから直接参照されるプロキシオブジェクトと、ステップ1604で取得したプロキシオブジェクトが一致するか否かを確認するステップ1605。ステップ1605で、一致するプロキシオブジェクトが存在すればステップ1605でYes、ステップ1606に進む。一方、一致するプロキシオブジェクトが存在しなければステップ1605でNo、間接参照要求されたオブジェクトは存在しないとして処理を終了する。この場合、ユーザプログラム実行部131での間接参照要求がオブジェクト自体の操作であれば、オブジェクトが存在しないことを示す情報として、例えば、NULLを返す。また、オブジェクトに含まれるデータの操作や、オブジェクトから参照するオブジェクトの操作であれば、オブジェクトが存在せず要求するオブジェクトやデータに到達できないことを示す情報、または実現できない処理として例外を返すステップ1608。ステップ1606では、一致したプロキシオブジェクトが、参照順プロキシオブジェクト群のうち最後に取得したプロキシオブジェクトか否かを確認する。最後のプロキシオブジェクトでなければステップ1606でNo、ステップ1605で一致したプロキシオブジェクトを起点プロキシオブジェクトとしてステップ1604に戻り、プロキシオブジェクトの一致確認を継続する。一方。最後のプロキシオブジェクトであればステップ1606でYes、プロキシオブジェクト参照設定部137は、一致したプロキシオブジェクトのO参照312に目標オブジェクトへの参照を登録し、オブジェクトへの間接参照を実現するステップ1607。以上のオブジェクト取得処理とオブジェクト操作処理とにより、例えば、図13に示す参照関係にあるオブジェクト群に含まれるID=2のオブジェクトOBJへの間接参照要求が発生した後に、図16に示すように、プロキシオブジェクト群に含まれるID=P2のプロキシオブジェクトPOBからID=2のオブジェクトOBJへの参照が設定され、プロキシオブジェクトPOBにより間接参照要求がされたオブジェクトOBJへの間接参照を実現することができる。上記実施例によると、オブジェクト取得処理時においては、代表プロキシオブジェクトと、ユーザプログラム実行部131からの取得対象となったオブジェクトとの参照関係を調査する処理や、代表プロキシオブジェクトの一部のプロキシオブジェクトへのO参照の設定処理を省けるため、オブジェクト取得処理を高速化できる。代表プロキシオブジェクトを複数保持せず、ユーザプログラム実行部131により、間接参照要求が発生した場合に、間接参照を実現するプロキシオブジェクトを生成する遅延プロキシオブジェクト生成を行っても良い。遅延プロキシオブジェクト生成を実現するためには、図13と同様に、起点プロキシオブジェクトへ間接参照追加部139を備える必要がある。遅延プロキシオブジェクト生成処理の一例を、フローチャートに従って説明する。図18は、実施例5に係る遅延プロキシオブジェクト生成処理のフローチャートである。ユーザプログラム実行部131により、オブジェクト取得要求が発生した場合は、オブジェクト管理部132がオブジェクトインデックス表500を参照し、起点プロキシオブジェクトを生成するとともに、起点プロキシオブジェクトのO参照312に要求されたオブジェクトのアドレスを登録し、この起点プロキシオブジェクトをユーザプログラム実行部131に送信する1901。この起点プロキシオブジェクトは、例えば、図17に示すようになっている。ユーザプログラム実行部131では、間接参照追加部139がオブジェクトへの間接参照要求を検知するまで待機するステップ1902。間接参照要求を検知すればステップ1902でYes、間接参照追加部139は既存のプロキシオブジェクトを介して間接参照先のオブジェクトにアクセスできるか否かを確認するステップ1903。アクセスできればステップ1903でYes、ユーザプログラム実行部131にプロキシオブジェクトを介した間接参照を実行させて処理を終了する。一方、アクセスできなければステップ1902でNo、間接参照追加部139は、間接参照要求先のオブジェクト目標オブジェクトと、起点プロキシオブジェクトが間接参照するオブジェクト起点オブジェクトとを取得し、オブジェクト構造解析部134に処理を引き継ぐ1904。ステップ1905では、オブジェクト構造解析部134が起点オブジェクトから目標オブジェクトまでの参照構造を解析し、目標オブジェクトへの間接参照を実現するプロキシオブジェクト目標プロキシオブジェクトと、起点プロキシオブジェクトから目標プロキシオブジェクトを参照するためにたどるプロキシオブジェクトとを、代表プロキシオブジェクト保持部136に保持される代表プロキシオブジェクトから複製する。そして、ステップ1905で複製したプロキシオブジェクト群について、起点プロキシオブジェクトから目標オブジェクトへの間接参照を実現する目標プロキシオブジェクトへ参照をたどれるように、各プロキシオブジェクトのP参照314に参照先のプロキシオブジェクトの参照を設定し、目標オブジェクトへの間接参照を実現するプロキシオブジェクトのO参照314に目標オブジェクトへの参照を設定するステップ1906。以上の処理により、間接参照要求後において、図19に示すように、プロキシオブジェクト群に、ID=P2のプロキシオブジェクトPOBを生成でき、ID=P1のプロキシオブジェクトPOBからID=P2のプロキシオブジェクトPOBへの参照の設定をでき、ID=P2のプロキシオブジェクトPOBからID=2のオブジェクトOBJへの参照の設定を実現できる。この遅延プロキシオブジェクト生成処理により、オブジェクトへの間接参照を実現するために必要なプロキシオブジェクトのみ生成できる。このため、代表プロキシオブジェクト保持部136で保持する代表プロキシオブジェクトをプロキシオブジェクトの種類に応じて1つだけに限定でき、代表プロキシオブジェクトを事前に複製して保持する場合に比べてメモリ111の消費量を削減できる。オブジェクトが複数のオブジェクトが集まったオブジェクトであるコレクションへの参照を保持する場合がある。この時、コレクションの要素数が増大すると、オブジェクト数が増大し、それらオブジェクトに対する間接参照を実現するためのプロキシオブジェクト数も増大する。このプロキシオブジェクト数の増大によりメモリ消費量も増大する。一方、コレクションの要素となるオブジェクト群には、同じデータ構造を保持するオブジェクトの集合が含まれ、それら集合に属するオブジェクトは、データをread/writeするデータアクセスインターフェースは同じである。従って、同じデータ構造を保持するオブジェクトの集合に対しては、同じプロキシオブジェクトにより間接参照を実現できる。このため、代表プロキシオブジェクトと同様に、コレクションの要素を代表するプロキシオブジェクトを1つ生成しておき、コレクションの要素へのアクセスがあった場合にプロキシオブジェクトを複製して利用することで、プロキシオブジェクト数の増大を抑止できる。これを実現するために、実施例6に係る計算機101では、コレクションの要素となるオブジェクトOBJへの間接参照を実現するプロキシオブジェクトPOBに、図20に示すように間接参照先のコレクションCOBに含まれる要素への参照情報を保持する間接コレクション141と、同一のデータ構造を持つオブジェクト集合への間接参照が発生した場合にプロキシオブジェクトPOBを生成して間接参照を実現する機能のための間接参照代表部140とを追加し、間接参照先を示すP参照314にはコレクションを管理するオブジェクトCOBへの参照を設定する。そして、ユーザプログラム実行部131で、コレクション要素に対する間接参照要求が発生した場合には、コレクション要素への間接参照処理を実行する。図21は、実施例6に係るコレクション要素への間接参照処理のフローチャートである。間接参照代表部140は、コレクションの要素となるオブジェクトOBJへの間接参照要求を検知するまで待機するステップ2201。コレクションの要素への間接参照要求を検知すればステップ2201でYes、間接参照代表部140は、間接参照要求の内容が、コレクション要素の追加や削除といったオブジェクトへの操作要求か、オブジェクトの内部情報に対する操作要求かを確認するステップ2202。オブジェクトへの操作要求であれば、ステップ2208に進む。一方、オブジェクトの内部情報に対する操作要求であれば、間接参照代表部140は、間接コレクション141を用いて間接参照先となるオブジェクトを特定し、そのオブジェクトへの間接参照を実現するプロキシオブジェクトを生成する。その後、間接参照代表部140は、生成したプロキシオブジェクトのO参照312にそのオブジェクトへの参照を登録するステップ2203。ステップ2203で、プロキシオブジェクトを生成した後、間接参照代表部140は、オブジェクトの内部情報に対する操作要求が、readかwriteかを判定するステップ2204。操作要求がreadであれば、特定したオブジェクトの内部情報をreadして処理を終了する2205。操作内容がwriteであれば、間接参照代表部140は、オブジェクトの複製を作成し、生成したプロキシオブジェクトのO参照312を複製先に変更する。そして、間接参照代表部140は、間接コレクション141が保持する複製元のオブジェクトへの参照を複製先のオブジェクトに変更するステップ2206。ステップ2206での複製処理が完了すれば、間接参照代表部140は、複製先オブジェクトにwrite内容を反映して処理を終了するステップ2207。コレクションの要素であるオブジェクトの追加や削除を行う場合は、間接参照代表部140は、P参照314に登録されたコレクションを操作せず、間接コレクション140の参照情報の追加や削除を行い、処理を終了するステップ2208。このように間接参照代表部140と間接コレクション141を用いてCopyonWriteを実現することにより、配列の要素となるオブジェクトに1対1で必要であったプロキシオブジェクトをまとめることができ、プロキシオブジェクトによるメモリ111の消費量を低減できる。なお、本発明は、上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加削除置換をすることが可能である。また、上記の各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば、集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル表、ファイル等の情報は、メモリや、ハードディスク、SSDSolidStateDrive等の記録装置、または、ICカード、SDカード、DVD等の記録媒体に置くことができる。また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。実際には殆ど全ての構成が相互に接続されていると考えてもよい。