(57)【要約】【課題】ＸＭＬ文書等の構造化ファイルにアクセスするＡＰＩに依存することなくアプリケーションを開発可能にする。【解決手段】  構造化ファイルアクセスシステム１は、ＸＭＬファイル２０Ｘ１〜２０Ｘｎをメモリ１２に展開してＸＭＬファイル２０Ｘ１〜２０Ｘｎにアクセスする際に必要な複数のＡＰＩ＿１〜ＡＰＩ＿ｎをそれぞれ記憶する外部記憶装置１６（図２参照）と、処理要求に対応するＸＭＬファイル２０Ｘ１、２０Ｘ２のデータ容量および処理要求内容に基づいて複数のＡＰＩ＿１〜ＡＰＩ＿ｎそれぞれの処理要求実行時の処理時間を見積もり、見積もられた複数のＡＰＩそれぞれの処理要求実行時の処理時間を比較し、その比較結果に基づいて処理要求を実行するＡＰＩを複数のＡＰＩ＿１〜ＡＰＩ＿ｎから選択するＡＰＩ判定部３７と、を備えている。【選択図】        図１
2005107590.tif 000002
【特許請求の範囲】
【請求項１】
アプリケーションプログラムに基づく処理要求に応じて、論理構造を有する構造化ファイルに対してメモリを利用してアクセスする機能を有する構造化ファイルアクセスシステムであって、
前記構造化ファイルを前記メモリに展開して該構造化ファイルにアクセスする際に必要な複数のアプリケーションプログラムインタフェース（ＡＰＩ）をそれぞれ記憶するＡＰＩ記憶手段と、
前記処理要求に対応する構造化ファイルのデータ容量および該処理要求内容に基づいて前記複数のＡＰＩそれぞれの前記処理要求実行時の処理時間を見積もる手段と、
見積もられた複数のＡＰＩそれぞれの前記処理要求実行時の処理時間を比較し、その比較結果に基づいて前記処理要求を実行するＡＰＩを前記複数のＡＰＩから選択する手段と、
を備えたことを特徴とする構造化ファイルアクセスシステム。
【請求項２】
前記複数のＡＰＩそれぞれの前記処理要求実行時の処理時間を見積もる手段は、前記構造化ファイルのデータ容量を変数として前記処理要求内容に対応する処理を前記構造化ファイルに対して実行した場合の処理時間と前記データ容量との関係を表す関係式を予め求めておき、前記処理要求に対応する構造化ファイルのデータ容量を前記関係式に代入して該処理要求に対応する構造化ファイルの処理時間を見積もる手段を備えたことを特徴とする請求項１記載の構造化ファイルアクセスシステム。
【請求項３】
前記複数のＡＰＩは、前記処理要求に対応する構造化ファイル全体を前記メモリに対してツリー状オブジェクトとして展開するオブジェクト展開型ＡＰＩと、前記処理要求に対応する構造化ファイルをその要素毎に前記メモリに対して逐次展開する逐次展開型ＡＰＩとを含むことを特徴とする請求項１記載の構造化ファイルアクセスシステム。
【請求項４】
前記複数のＡＰＩそれぞれの前記処理要求実行時の処理時間を求める手段は、該複数のＡＰＩの内、前記オブジェクト展開型ＡＰＩにおける前記処理要求に対応する構造化ファイルの前記メモリ展開時に要するメモリ容量を見積もり、前記メモリの空き容量および前記見積もったメモリ容量に基づいて、前記処理要求に対応する構造化ファイルの前記オブジェクト展開型ＡＰＩによる展開の可否を判断する手段を備えたことを特徴とする請求項３記載の構造化ファイルアクセスシステム。
【請求項５】
前記複数のＡＰＩが、前記オブジェクト展開型ＡＰＩおよび前記逐次展開型ＡＰＩである場合、前記オブジェクト展開型ＡＰＩによる展開の可否を判断する手段は、前記メモリの空き容量が前記見積もったメモリ容量を下回る場合、前記処理要求を実行するＡＰＩを前記逐次展開型ＡＰＩに設定する手段を備えたことを特徴とする請求項４記載の構造化ファイルアクセスシステム。
【請求項６】
アプリケーションプログラムに基づく処理要求に応じて、論理構造を有する構造化ファイルに対してメモリを利用してアクセスする構造化ファイルアクセス方法であって、
前記構造化ファイルを前記メモリに展開して該構造化ファイルにアクセスする際に必要な複数のアプリケーションプログラムインタフェース（ＡＰＩ）それぞれの前記処理要求実行時の処理時間を、該処理要求に対応する構造化ファイルのデータ容量および該処理要求内容に基づいて見積もるステップと、
見積もられた複数のＡＰＩそれぞれの前記処理要求実行時の処理時間を比較し、その比較結果に基づいて前記処理要求を実行するＡＰＩを前記複数のＡＰＩから選択するステップと、
を備えたことを特徴とする構造化ファイルアクセス方法。
【請求項７】
アプリケーションプログラムに基づく処理要求に応じて、論理構造を有する構造化ファイルに対してメモリを利用してアクセスするためのコンピュータが実行可能な構造化ファイルアクセス用プログラムであって、
前記コンピュータに、
前記構造化ファイルを前記メモリに展開して該構造化ファイルにアクセスする際に必要な複数のアプリケーションプログラムインタフェース（ＡＰＩ）それぞれの前記処理要求実行時の処理時間を、該処理要求に対応する構造化ファイルのデータ容量および該処理要求内容に基づいて見積もる処理と、
見積もられた複数のＡＰＩそれぞれの前記処理要求実行時の処理時間を比較し、その比較結果に基づいて前記処理要求を実行するＡＰＩを前記複数のＡＰＩから選択する処理と、
をそれぞれ実行させることを特徴とする構造化ファイルアクセス用プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、アプリケーションプログラムに基づく要求に応じて、ＸＭＬ文書等の論理構造を有する構造化ファイルに対するアクセスを行う構造化ファイルアクセス方法およびシステム、ならびに構造化ファイルアクセス用プログラムに関する。
【背景技術】
【０００２】
従来、アプリケーションプログラム（以下、単にアプリケーションとも言う）が、データ識別タグを利用するＸＭＬ（eXtensible markup language）形式で作成された構造化文書ファイル（以下、ＸＭＬ文書ともいう）を利用する際、複数のＸＭＬ文書が格納されたデータベースに対して所定の問合せ言語を用いてアクセスし、所望のＸＭＬ文書を取り出している（例えば、特許文献１参照）。
【０００３】
このとき、アプリケーションは、複数のＸＭＬ文書に対してアクセスする際において、主に標準ＡＰＩ（Application program Interface：アプリケーションプログラムインタフェース）であるＤＯＭ（Document Object Model）、またはＳＡＸ（Simple API for XML）の内の何れかのＡＰＩを必要としていた。
【特許文献１】特開２００１−３４４２６７
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、上述した従来のＸＭＬ文書に対するアクセス方式には、以下に示す問題点があった。
【０００５】
すなわち、第１の問題点として、ＸＭＬ文書にアクセスするＡＰＩが複数存在するため、アプリケーションを開発する際に、複数のＡＰＩの中からどのＡＰＩを用いるかを考慮して開発を行わなければならず、アプリケーション開発効率を低下させていた。
【０００６】
第２の問題点として、ＸＭＬ文書の特性に応じた最適なＡＰＩを選択する効率的な手段が無いため、アプリケーションによるＸＭＬ文書の処理効率をそれぞれ低下させていた。
【０００７】
本発明は、上述した事情に鑑みてなされたもので、ＸＭＬ文書等の構造化ファイルにアクセスするＡＰＩに依存することなくアプリケーションを開発することを可能にすることを第１の目的とする。
【０００８】
また、本発明は、上述した事情に鑑みてなされたもので、ＸＭＬ文書等の構造化ファイルの特性に応じて最適なＡＰＩを選択することを可能にすることを第２の目的とする
【課題を解決するための手段】
【０００９】
上述した目的を達成するため、本発明の第１の態様は、アプリケーションプログラムに基づく処理要求に応じて、論理構造を有する構造化ファイルに対してメモリを利用してアクセスする機能を有する構造化ファイルアクセスシステムであって、前記構造化ファイルを前記メモリに展開して該構造化ファイルにアクセスする際に必要な複数のアプリケーションプログラムインタフェース（ＡＰＩ）をそれぞれ記憶するＡＰＩ記憶手段と、前記処理要求に対応する構造化ファイルのデータ容量および該処理要求内容に基づいて前記複数のＡＰＩそれぞれの前記処理要求実行時の処理時間を見積もる手段と、見積もられた複数のＡＰＩそれぞれの前記処理要求実行時の処理時間を比較し、その比較結果に基づいて前記処理要求を実行するＡＰＩを前記複数のＡＰＩから選択する手段と、を備えている。
【００１０】
本発明の第１の態様において、前記複数のＡＰＩそれぞれの前記処理要求実行時の処理時間を見積もる手段は、前記構造化ファイルのデータ容量を変数として前記処理要求内容に対応する処理を前記構造化ファイルに対して実行した場合の処理時間と前記データ容量との関係を表す関係式を予め求めておき、前記処理要求に対応する構造化ファイルのデータ容量を前記関係式に代入して該処理要求に対応する構造化ファイルの処理時間を見積もる手段を備えている。
【００１１】
本発明の第１の態様において、前記複数のＡＰＩは、前記処理要求に対応する構造化ファイル全体を前記メモリに対してツリー状オブジェクトとして展開するオブジェクト展開型ＡＰＩと、前記処理要求に対応する構造化ファイルをその要素毎に前記メモリに対して逐次展開する逐次展開型ＡＰＩとを含む。
【００１２】
本発明の第１の態様において、前記複数のＡＰＩそれぞれの前記処理要求実行時の処理時間を求める手段は、該複数のＡＰＩの内、前記オブジェクト展開型ＡＰＩにおける前記処理要求に対応する構造化ファイルの前記メモリ展開時に要するメモリ容量を見積もり、前記メモリの空き容量および前記見積もったメモリ容量に基づいて、前記処理要求に対応する構造化ファイルの前記オブジェクト展開型ＡＰＩによる展開の可否を判断する手段を備えている。
【００１３】
本発明の第１の態様において、前記複数のＡＰＩが、前記オブジェクト展開型ＡＰＩおよび前記逐次展開型ＡＰＩである場合、前記オブジェクト展開型ＡＰＩによる展開の可否を判断する手段は、前記メモリの空き容量が前記見積もったメモリ容量を下回る場合、前記処理要求を実行するＡＰＩを前記逐次展開型ＡＰＩに設定する手段を備えている。
【００１４】
上述した目的を達成するため、本発明の第２の態様は、アプリケーションプログラムに基づく処理要求に応じて、論理構造を有する構造化ファイルに対してメモリを利用してアクセスする構造化ファイルアクセス方法であって、前記構造化ファイルを前記メモリに展開して該構造化ファイルにアクセスする際に必要な複数のアプリケーションプログラムインタフェース（ＡＰＩ）それぞれの前記処理要求実行時の処理時間を、該処理要求に対応する構造化ファイルのデータ容量および該処理要求内容に基づいて見積もるステップと、見積もられた複数のＡＰＩそれぞれの前記処理要求実行時の処理時間を比較し、その比較結果に基づいて前記処理要求を実行するＡＰＩを前記複数のＡＰＩから選択するステップと、を備えている。
【００１５】
上述した目的を達成するため、本発明の第３の態様は、アプリケーションプログラムに基づく処理要求に応じて、論理構造を有する構造化ファイルに対してメモリを利用してアクセスするためのコンピュータが実行可能な構造化ファイルアクセス用プログラムであって、前記コンピュータに、前記構造化ファイルを前記メモリに展開して該構造化ファイルにアクセスする際に必要な複数のアプリケーションプログラムインタフェース（ＡＰＩ）それぞれの前記処理要求実行時の処理時間を、該処理要求に対応する構造化ファイルのデータ容量および該処理要求内容に基づいて見積もる処理と、見積もられた複数のＡＰＩそれぞれの前記処理要求実行時の処理時間を比較し、その比較結果に基づいて前記処理要求を実行するＡＰＩを前記複数のＡＰＩから選択する処理と、をそれぞれ実行させる。
【発明の効果】
【００１６】
本発明によれば、複数のＡＰＩそれぞれの処理要求実行時における処理時間をそれぞれ見積もり、見積もられた処理時間を比較し、その比較結果に基づいて前記処理要求を実行するＡＰＩを複数のＡＰＩから選択し、選択したＡＰＩを用いて構造化ファイルをメモリに展開することができるため、アプリケーションプログラムに基づく処理要求に対応するＡＰＩを、選択したＡＰＩに一元化することができる。
【００１７】
このため、複数のＡＰＩに依存することなくアプリケーションプログラムの開発を行うことができ、アプリケーションプログラムの開発効率を向上させることができる。
【００１８】
また、本発明によれば、構造化ファイルのデータ容量（ファイル容量）に応じて最適なＡＰＩを選択することができるため、アプリケーションプログラムによる構造化ファイル処理効率を向上させることができる。
【発明を実施するための最良の形態】
【００１９】
以下、本発明に係る構造化ファイルアクセス方法およびシステム、ならびに構造化ファイルアクセス用プログラムの実施の形態について図面を参照して説明する。
【００２０】
なお、本実施形態では、データ識別タグ等の識別子を利用して構造化する構造化ファイル形式で作成された構造化ファイルとして、ＸＭＬ（eXtensible markup language）形式で作成されたＸＭＬファイルに対するアクセス方法およびシステム、ならびにプログラムについて説明する。
【００２１】
図１は、本発明の実施の形態に係る構造化ファイルアクセスシステム１が実装されたコンピュータ２の機能ブロック構成を示す図であり、図２は、図１に示すコンピュータのハードウェア構成を示す図である。
【００２２】
図２に示すように、コンピュータ２は、処理実行部であるＣＰＵ１０と、外部の装置やネットワーク等とＣＰＵ１０との間の通信に関するインタフェース処理を行う通信インタフェース１１と、ＣＰＵ１０の処理実行時におけるプログラムおよびデータ格納領域を構成するＲＡＭ（Random Access Memory）等のメモリ１２と、ＣＰＵ１０の処理結果を表示するためのディスプレイ等の表示部１３と、ＣＰＵ１０に対して処理要求を入力するための入力部１４と、ＣＰＵ１０の処理に必要なＯＳ（Operating System）１５を含むソフトウェア（プログラム）群およびデータ群等を記憶するための少なくとも１台の外部記憶装置１６とを備えている。
【００２３】
構造化ファイルアクセスシステム１は、コンピュータ２の外部記憶装置１６にインストールされメモリ１２にロードされた外部アプリケーション５に基づく処理要求に応じて、コンピュータ２のＸＭＬファイル記憶部１８（例えば、図２における外部記憶装置１６の一部）に記憶されたＸＭＬファイル２０Ｘ１〜２０Ｘｎ（ｎは１以上の整数）に対してアクセスする機能、すなわち、外部アプリケーション５およびＸＭＬファイル２０Ｘ１〜２０Ｘｎ間のインタフェース処理を行う機能を有している。
【００２４】
構造化ファイルアクセスシステム１は、外部記憶装置１６からメモリ１２にロードされた構造化ファイルインタフェース用プログラムＰに基づくＣＰＵ１０の処理によりそれぞれ具体化される機能として、次のインタフェース部３１、ＡＰＩ部３２、実行部３３、外部関数管理部３４、ログ蓄積部３５、データ解析部３６およびＡＰＩ判定部３７をそれぞれ備えている。なお、上記外部アプリケーション５および各機能間のデータの受け渡しは、メモリ１２を介して行われる。
【００２５】
この構造化ファイルインタフェース用プログラムＰは、予め上記インタフェース部３１、ＡＰＩ部３２、実行部３３、外部関数管理部３４、ログ蓄積部３５、データ解析部３６およびＡＰＩ判定部３７に対応する複数のプログラムモジュールとしてモジュール化されていてもよい。この場合、ＣＰＵ１０は、各機能の実行時において、その機能に対応するプログラムモジュールを実行するようになっている。
【００２６】
すなわち、インタフェース部３１は、外部アプリケーション５から要求を受付け、その要求に対する応答を外部アプリケーション５に対して返却(返信）する機能である。
【００２７】
ＡＰＩ部３２は、外部記憶装置１６にインストールされたＸＭＬファイルアクセス用ソフトウェアであるＸＭＬパーサＸＰが上記ＸＭＬファイルアクセス時に利用可能な複数のＡＰＩ＿１〜ＡＰＩ＿ｎ（ｎは、２以上の整数）を管理するための機能である。
【００２８】
実行部３３は、インタフェース部３１からの要求と、後述するＡＰＩ判定部によりＡＰＩ部３２の複数のＡＰＩ＿１〜ＡＰＩ＿ｎから判定された所定のＡＰＩと協働し、上記要求に対応する処理を実行するための機能である。
【００２９】
外部関数管理部３４は、外部記憶装置１６に外部関数ファイルＬ１として記憶された、例えば汎用プログラミング言語で記述された複数の外部関数（ＸＭＬファイルに対する処理に必要であり、複数のＡＰＩ＿１〜ＡＰＩ＿ｎに実装されていない複数の処理関数）を管理するための機能である。
【００３０】
ログ蓄積部３５は、実行部３３により上記要求に応じて実行された処理の処理時間を、その処理に対応する要求、上記処理に用いたＡＰＩおよび処理対象のＸＭＬファイルのファイル容量に対してそれぞれ関連付け、履歴情報（ログ情報）として外部記憶装置１６におけるログファイルＬ２に蓄積する機能である。
【００３１】
データ解析部３６は、インタフェース部３１からの処理対象となるＸＭＬファイルの指定情報に応じて、処理対象となるＸＭＬファイルに関する情報としてのファイル容量およびコンピュータ２におけるメモリ１２の空き容量｛例えばＯＳ等により割り当てられた、処理対象ＸＭＬファイルの展開に使用可能なメモリ１２（外部記憶装置１６の仮想記憶領域を含んでもよい）の空き容量として定義される｝をそれぞれ取得する機能である。
【００３２】
ＡＰＩ判定部３７は、データ解析部３６により取得された処理対象ＸＭＬファイルのファイル容量およびメモリ１２の空き容量に基づいて、上記外部アプリケーション５の要求に最適なＡＰＩを判定する機能である。
【００３３】
次に、本実施形態の全体動作について説明する。
【００３４】
今、外部アプリケーション５が外部記憶装置１６からメモリ１２にロードされ、その外部アプリケーション５からの処理要求として、２つのＸＭＬファイル２０Ｘ１および２０Ｘ２の結合処理要求（ＡＰＩ指定無し）が入力されたとする。
【００３５】
このとき、コンピュータ２のメモリ１２にロードされたＸＭＬファイルインタフェース用プログラムＰに基づくＣＰＵ１０の機能として、インタフェース部３１は、入力された外部アプリケーション５からの処理要求を受け付け（図３；ステップＳ１）、その処理要求内容を解析し、特定のＡＰＩとして複数のＡＰＩ＿１〜ＡＰＩ＿ｎの何れかが指定されているか否か判断する（ステップＳ２）。
【００３６】
ステップＳ２の判断の結果、特定のＡＰＩが指定されている場合には（ステップＳ２→ＹＥＳ）、インタフェース部３１は実行部３３を呼び出し、実行部３３は、後述するステップＳ５の処理を実行する。
【００３７】
一方、ステップＳ２の判断の結果、特定のＡＰＩが指定されていない場合（ステップＳ２→ＮＯ）、インタフェース部３１は、データ解析部３６を呼び出す。
【００３８】
データ解析部３６は、インタフェース部３１から渡された処理対象となるＸＭＬファイルに関する情報として、そのＸＭＬファイルのデータ容量を、外部記憶装置１６における対応するＸＭＬファイルにアクセスして取得し、メモリ１２にアクセスしてその空き容量（空きメモリ容量）を取得し、取得したファイル容量および空きメモリ容量をそれぞれＡＰＩ判定部３７に渡す（ステップＳ３）。
【００３９】
ＡＰＩ判定部３７は、データ解析部３６から渡されたファイル容量および空きメモリ容量に基づいて、後述する図４に示す最適ＡＰＩ判定処理を実行して最適なＡＰＩを判定し、判定結果を実行部３３に渡す（ステップＳ４）。
【００４０】
実行部３３は、インタフェース部３１からの呼び出しおよびＡＰＩ判定部３７からの判定結果の受信に応じて、外部アプリケーション５からの処理要求内容をインタフェース部３１から受取り、処理要求として指定、あるいはＡＰＩ判定部３７からの判定結果として指定されたＡＰＩが上記処理要求に対応する処理関数を持つか否か判断する（ステップＳ５）。
【００４１】
この判断の結果、処理関数を持つ場合には（ステップＳ５→ＹＥＳ）、実行部３３は、ステップＳ７の処理に移行する。
【００４２】
一方、指定ＡＰＩが処理要求に対応する処理関数を持たない場合には（ステップＳ５→ＮＯ）、実行部３３は、外部関数管理部３４を介して上記処理要求に対応する処理関数を外部関数ファイルＬ１から読み出し（ステップＳ６）、ＡＰＩ部３２に対し、指定ＡＰＩを用いた処理要求に基づく処理対象ＸＭＬファイルへのアクセスを命令する（ステップＳ７）。
【００４３】
なお、実行部３３は、外部アプリケーション５からの処理要求に時間計測要求が含まれている場合には、指定ＡＰＩに対するアクセス命令の送信処理、または外部関数の呼び出し処理を行ってから、次にその処理に対応する結果が返却されるまでの時間を計測することができる。
【００４４】
ＡＰＩ部３２は、実行部３３からのアクセス命令を受け取り、そのアクセス命令に対応する指定ＡＰＩにより、ＸＭＬパーサＸＰ経由で処理対象ＸＭＬファイルをＸＭＬファイル記憶部１８（外部記憶装置１６）から読み出し、そのＸＭＬファイルを、指定ＡＰＩに基づいてメモリ１２（外部記憶装置１６の一部でもよい）に展開する（ステップＳ８）。
【００４５】
実行部３３は、インタフェース部３１から渡された処理要求内容、ＡＰＩ部３２によりメモリ１２に展開された処理対象ＸＭＬファイル、および外部関数管理部３４から呼び出されている場合には、その呼び出された外部関数に基づいて、処理要求内容に対応する処理を実行する（ステップＳ９）。
【００４６】
実行部３３は、ステップＳ９の処理により得られた結果を表すＸＭＬファイルをインタフェース部３１に対して出力する。必要であれば、外部関数管理部３４を介して必要な処理関数を外部関数ファイルＬ１から呼び出し、その外部関数を利用して処理結果を表すＸＭＬファイルをインタフェース部３１に対して出力する（ステップＳ１０）。
【００４７】
このとき、例えば、実行部３３のステップＳ１０の処理と並行して、ログ蓄積部３５は、実行部３３のステップＳ９として実行された処理の処理時間、対応する外部アプリケーション５からの処理要求、ステップＳ９の処理に用いた指定ＡＰＩおよび処理対象のＸＭＬファイルのファイル容量をそれぞれ実行部３３から受取り、受け取った処理時間、処理要求、指定ＡＰＩおよび処理対象ＸＭＬファイルのファイル容量を、例えば処理日時（例えば年月日時）と共にそれぞれ関連付けて処理履歴情報（ログ情報）として外部記憶装置１６におけるログファイルＬ２に蓄積する（ステップＳ１１）。
【００４８】
一方、インタフェース部３１は、ステップＳ１０の処理により実行部３３から出力された処理結果（ＸＭＬファイル）を受け取り、受け取った処理結果（ＸＭＬファイル）を外部アプリケーション５に対して返却する（ステップＳ１２）。
【００４９】
以上述べたように、本実施形態によれば、外部アプリケーション５から特定のＡＰＩの指定の無い処理要求が渡された際に、その処理対象となるＸＭＬファイルのファイル容量およびメモリ１２の空きメモリ容量に基づいて、ＡＰＩ判定部３７に実行された最適ＡＰＩ判定処理により、処理要求内容および処理対象ＸＭＬファイルに応じた最適なＡＰＩを判定し、その最適ＡＰＩにより、処理対象ＸＭＬファイルにおける例えばファイル全体あるいは処理に必要な部分のみをメモリに展開して処理要求に対応する処理を実行することができる。
【００５０】
次に、上述したＡＰＩ判定部３７のステップＳ４における最適ＡＰＩ判定処理について、より具体的かつ詳細に説明する。
【００５１】
なお、以下のＡＰＩ判定部３７の最適ＡＰＩ判定処理の説明においては、より説明を具体的にするため、複数のＡＰＩ＿１〜ＡＰＩ＿ｎとして、ＸＭＬパーサＸＰに対する標準ＡＰＩであるＤＯＭ  ＡＰＩ４０ａ１およびＳＡＸ  ＡＰＩ４０ａ２がＡＰＩ＿１およびＡＰＩ＿２（ｎ＝２）として外部記憶装置１６に記憶され、ＡＰＩ部３２により管理されているものとする。
【００５２】
また、外部アプリケーション５からの処理要求として、２つのＸＭＬファイル２０Ｘ１および２０Ｘ２の結合処理が要求されたものとする。
【００５３】
このとき、ＡＰＩ判定部３７は、データ解析部３６から渡された処理対象となる２つのＸＭＬファイル２０Ｘ１および２０Ｘ２をメモリ１２にそれぞれ展開した際の見積もりメモリ容量を計算する。
【００５４】
ここで、あるファイルのデータ容量（ファイル容量）を変数ｘとした場合、そのファイルを記憶する際に要するメモリ容量は、その変数ｘの関数Ｆ１（ｘ）として、変数ｘの比例式である下式（１）
Ｆ１（ｘ）＝ｍｘ（但し、ｍは、０より大きい比例定数とする）・・・（１）
で計算される。
【００５５】
本実施形態において上記２つのＸＭＬファイル２０Ｘ１および２０Ｘ２を読み込む場合、これらのファイル２０Ｘ１および２０Ｘ２をメモリ１２にそれぞれ展開した際に要する合計見積もりメモリ容量Ｆ１（ｘ）は、ＸＭＬファイル２０Ｘ１のデータ容量をｘ１、ＸＭＬファイル２０Ｘ２のデータ容量をｘ２とした場合、上記式（１）にｘ＝ｘ１＋ｘ２を代入して、「Ｆ１（ｘ１＋ｘ２）＝ｍ（ｘ１＋ｘ２）」として計算することができる（図４；ステップＳ４Ａ）。
【００５６】
すなわち、２つのＸＭＬファイル２０Ｘ１および２０Ｘ２をそれぞれメモリ１２へ展開した際に要する見積もりメモリ容量Ｆ１（ｘ）は、２つのＸＭＬファイル２０Ｘ１および２０Ｘ２それぞれのデータ容量ｘ１およびｘ２の和の定数倍として見積もることができる。
【００５７】
次いで、ＡＰＩ判定部３７は、データ解析部３６から渡されたメモリ１２の空き容量および算出した見積もりメモリ容量Ｆ１（ｘ）に基づいて、ＤＯＭ  ＡＰＩ４０ａ１によるＸＭＬファイル２０Ｘ１および２０Ｘ２のメモリ展開の可否を判別できる関数Ｆ２（ｘ）を、例えば下式（２）により計算する（ステップＳ４Ｂ）。
【００５８】
Ｆ２（ｘ）＝メモリ１２の空き容量−見積もりメモリ容量Ｆ１（ｘ）
・・・（２）
ここで、図５に示すように、ＤＯＭ  ＡＰＩ４０ａ１に基づいてＸＭＬパーサＸＰを介してＸＭＬファイル（図５では符号１００として示す）をメモリ１２に展開する場合、ＤＯＭ  ＡＰＩ４０ａ１では、ＸＭＬファイル１００を全て読み込んでその要素（＜名簿＞、＜住所＞、＜氏名＞、＜連絡先＞）および各要素の内容（テキストデータ）をツリー形式（ＤＯＭツリーＴ）としてメモリ１２に展開するようになっている。
【００５９】
一方、図６に示すように、ＳＡＸ  ＡＰＩ４０ａ２に基づいてＸＭＬパーサＸＰを介してＸＭＬファイル１００をメモリ１２に展開する場合、図６に示すように、ＳＡＸ  ＡＰＩ４０ａ２では、ＸＭＬファイル１００を先頭から順に読み込んでメモリ１２に展開し、各要素の開始および終了毎にイベントを生成して実行部３３に渡すようになっている。
【００６０】
すなわち、ＡＰＩ判定部３７は、メモリ１２の空き容量が見積もりメモリ容量Ｆ１（ｘ）を上回るか否か、言い換えれば、ステップＳ４Ｂの処理により算出したＦ２（ｘ）≧０であるか否か判断し（ステップＳ４Ｃ）、この判断の結果、メモリ１２の空き容量が見積もりメモリ容量Ｆ１（ｘ）を上回る場合（Ｆ２（ｘ）≧０；ステップＳ４Ｃ→ＹＥＳ）、次のステップＳ４Ｅの処理に移行する。
【００６１】
一方、メモリ１２の空き容量が見積もりメモリ容量Ｆ１（ｘ）を下回る場合（Ｆ２（ｘ）＜０；ステップＳ４Ｃ→ＮＯ）、ＡＰＩ判定部３７は、現在のコンピュータ２のハードウェア環境下においては、ＤＯＭ  ＡＰＩ４０ａ１では、ＸＭＬファイル２０Ｘ１および２０Ｘ２をメモリ１２に展開することは困難であると判断し、最適なＡＰＩをＳＡＸ  ＡＰＩ４０ａ２と判定し、判定結果として「ＳＡＸ  ＡＰＩ４０ａ２」を実行部３３に対して出力して処理を終了する（ステップＳ４Ｄ）。
【００６２】
ステップＳ４Ｅにおいて、ＡＰＩ判定部３７は、一方のＸＭＬファイル２０Ｘ１について、ＤＯＭ  ＡＰＩ４０ａ１およびＳＡＸ  ＡＰＩ４０ａ２をそれぞれ採用した場合におけるそれぞれの結合処理時間を計算する。
【００６３】
すなわち、ＡＰＩ判定部３７は、ＸＭＬファイルのファイル容量を変数ｘとし、この変数ｘを用いた関数式として、ログファイルＬ２に蓄積されたログデータに基づいて予め前処理として求められた結合処理時間見積り用近似式Ｆ＿ｄｏｍ（ｘ）およびＦ＿ｓａｘ（ｘ）それぞれの変数ｘに上記ＸＭＬファイル２０Ｘ１のデータ容量ｘ１を代入することにより、ＤＯＭ  ＡＰＩ４０ａ１およびＳＡＸ  ＡＰＩ４０ａ２をそれぞれ採用してＸＭＬファイル２０Ｘ１をＸＭＬファイル２０Ｘ２に対して結合した場合の結合処理時間Ｆ＿ｄｏｍ（ｘ１）およびＦ＿ｓａｘ（ｘ１）を計算する（ステップＳ４Ｅ）。
【００６４】
ここで、ログファイルＬ２に蓄積されたログデータに基づいて処理時間見積り用近似式Ｆ＿ｄｏｍ（ｘ）およびＦ＿ｓａｘ（ｘ）を求める処理について以下に説明する。
【００６５】
例えば、実行部３３は、２つのＸＭＬファイルのデータ容量の内、一方を固定し、他方のデータ容量を変数ｘとして、その変数ｘを０．４Ｍｂｙｔｅ〜３．２Ｍｂｙｔｅの範囲内において所定容量ずつ変化させた場合（例えば、約４００ｋｂｙｔｅずつ変化させた場合）における上記２つのＸＭＬファイル結合処理をＤＯＭ  ＡＰＩ４０ａ１で実行し、ログ蓄積部３５は、その実行処理結果、すなわち、所定容量（約４００ｋｂｙｔｅ）毎のＤＯＭ  ＡＰＩ４０ａ１によるＸＭＬファイル結合処理時間（なお、ステップＳ４に対応するＡＰＩ判定処理は上記結合処理時間に含まれていない）をログファイルＬ２に蓄積する。
【００６６】
次いで、実行部３３は、ログ蓄積部３５を介してログファイルＬ２に蓄積された実測値、すなわち、所定容量（約４００ｋｂｙｔｅ）毎に変化するファイル容量ｘ（１）、ｘ（２）、・・・と、そのファイル容量ｘ（１）、ｘ（２）、・・・それぞれに対応する結合処理時間ｙ（１）、ｙ（２）、・・・とのペア（少なくとも、３ペア以上）を、ｎ次の多項式Ｆ＿ｄｏｍ（ｘ）＝ａ０＋ａ１＊ｘ＋ａ２＊ｘ＾２＋．．．＋ａｎ＊ｘ＾ｎで近似し、例えば最小二乗法等で係数ａ０，ａ１，．．．，ａｎを決定する。
【００６７】
ＤＯＭ  ＡＰＩ４０ａ１の場合と同様に、実行部３３は、２つのＸＭＬファイルのデータ容量の内、一方を固定し、他方のデータ容量を変数ｘとして、その変数ｘを０．４Ｍｂｙｔｅ〜３．２Ｍｂｙｔｅの範囲内において所定容量ずつ変化させた場合（例えば、約４００ｋｂｙｔｅずつ変化させた場合）における上記２つのＸＭＬファイル結合処理をＳＡＸ  ＡＰＩ４０ａ２で実行し（ステップＳ２３）、ログ蓄積部３５は、その実行処理結果、すなわち、所定容量毎のＳＡＸ  ＡＰＩ４０ａ２によるＸＭＬファイル結合処理時間をログファイルＬ２に蓄積する。
【００６８】
次いで、実行部３３は、ログ蓄積部３５を介してログファイルＬ２に蓄積された実測値、すなわち、所定容量毎に変化するファイル容量ｘ´（１）、ｘ´（２）、・・・と、そのファイル容量ｘ´（１）、ｘ´（２）、・・・それぞれに対応する処理時間ｙ´（１）、´ｙ（２）、・・・とのペア（少なくとも、３ペア以上）を、ｎ次の多項式Ｆ＿ＳＡＸ（ｘ）＝ｂ０＋ｂ１＊ｘ＋ｂ２＊ｘ＾２＋．．．＋ｂｎ＊ｘ＾ｎで近似し、例えば最小二乗法等で係数ｂ０，ｂ１，．．．，ｂｎを決定する。
【００６９】
実行部３３は、このようにして求めた処理時間見積り用近似式Ｆ＿ｄｏｍ（ｘ）およびＦ＿ｓａｘ（ｘ）を例えば外部記憶装置１６に保持する。
【００７０】
ここで、上述した０．４Ｍｂｙｔｅ〜３．２ＭｂｙｔｅのＸＭＬファイルを約４００ｋｂｙｔｅずつ変化させた場合における実測値、およびこの実測値から実際に求められた１次（ｎ＝１）の処理時間見積り用近似式（関数）Ｆ＿ｄｏｍ（ｘ）・Ｆ＿ｓａｘ（ｘ）の一例を図７に示す。
【００７１】
図７に示すように、ＤＯＭ  ＡＰＩ４０ａ１により実測されたファイル容量ｘ（１）、ｘ（２）、・・・と処理時間ｙ（１）、ｙ（２）、・・・との関係を表すグラフをＧ１とした場合、この実測値（グラフＧ１）から、処理時間見積り用近似式（関数）Ｆ＿ｄｏｍ（ｘ）＝１２３３．１ｘ＋５６０．８１が求められた（係数の単位はｍｓｅｃ／ｂｙｔｅである）。
【００７２】
同様に、図７に示すように、ＳＡＸ  ＡＰＩ４０ａ２により実測されたファイル容量ｘ´（１）、ｘ´（２）、・・・と処理時間ｙ´（１）、ｙ´（２）、・・・との関係を表すグラフをＧ２とした場合、この実測値（グラフＧ２）から、処理時間見積り用近似式（関数）Ｆ＿ｓａｘ（ｘ）として、Ｆ＿ｓａｘ（ｘ）＝５０８．９３ｘ＋６９１.７８（係数の単位はｍｓｅｃ／ｂｙｔｅである）が求められた。
【００７３】
この結果、上述したステップＳ４Ｅの処理により、処理時間見積り用近似式Ｆ＿ｄｏｍ（ｘ）およびＦ＿ｓａｘ（ｘ）それぞれの変数ｘに上記ＸＭＬファイル２０Ｘ１のデータ容量ｘ１を代入することにより、ＤＯＭ  ＡＰＩ４０ａ１およびＳＡＸ  ＡＰＩ４０ａ２をそれぞれ採用してＸＭＬファイル２０Ｘ１をＸＭＬファイル２０Ｘ２に対して結合した場合の結合処理時間Ｆ＿ｄｏｍ（ｘ１）およびＦ＿ｓａｘ（ｘ１）を計算することができる。
【００７４】
ＸＭＬファイル２０Ｘ２に対しても、ＡＰＩ判定部３７は、上記処理時間見積り用近似式Ｆ＿ｄｏｍ（ｘ）およびＦ＿ｓａｘ（ｘ）それぞれの変数ｘに上記ＸＭＬファイル２０Ｘ２のデータ容量ｘ２を代入して、ＤＯＭ  ＡＰＩ４０ａ１およびＳＡＸ  ＡＰＩ４０ａ２をそれぞれ採用してＸＭＬファイル２０Ｘ２をＸＭＬファイル２０Ｘ１に対して結合した場合の処理時間Ｆ＿ｄｏｍ（ｘ２）およびＦ＿ｓａｘ（ｘ２）を計算する（ステップＳ４Ｆ）。
【００７５】
次いで、ＡＰＩ判定部３７は、ＸＭＬファイル２０Ｘ１および２０Ｘ２の結合処理について、ＤＯＭ  ＡＰＩ４０ａ１を採用した場合の結合処理時間を｛Ｆ＿ｄｏｍ（ｘ１）＋Ｆ＿ｄｏｍ（ｘ２）｝、およびＳＡＸ  ＡＰＩ４０２を採用した場合の結合処理時間を｛Ｆ＿ｓａｘ（ｘ１）＋Ｆ＿ｓａｘ（ｘ２）｝としてそれぞれ見積もり、見積もられた結合処理時間｛Ｆ＿ｄｏｍ（ｘ１）＋Ｆ＿ｄｏｍ（ｘ２）｝と｛Ｆ＿ｓａｘ（ｘ１）＋Ｆ＿ｓａｘ（ｘ２）｝とを比較し(ステップＳ４Ｇ）、ＤＯＭ  ＡＰＩ４０ａ１を採用した場合の方が結合処理時間が短い場合、すなわち｛Ｆ＿ｄｏｍ（ｘ１）＋Ｆ＿ｄｏｍ（ｘ２）｝＜｛Ｆ＿ｓａｘ（ｘ１）＋Ｆ＿ｓａｘ（ｘ２）｝の場合（ステップＳ４Ｇ→ＹＥＳ）、ＤＯＭ  ＡＰＩ４０ａ１を最適なＡＰＩと判定し、判定結果として「ＤＯＭ  ＡＰＩ４０ａ１」を実行部３３に出力し（ステップＳ４Ｈ）、処理を終了する。
【００７６】
一方、ステップＳ４Ｇの判断の結果、ＳＡＸ  ＡＰＩ４０ａ２を採用した場合の方が結合処理時間が短い場合、すなわち、｛Ｆ＿ｄｏｍ（ｘ１）＋Ｆ＿ｄｏｍ（ｘ２）｝＞｛Ｆ＿ｓａｘ（ｘ１）＋Ｆ＿ｓａｘ（ｘ２）｝の場合（ステップＳ４Ｇ→ＮＯ）には、ＳＡＸ  ＡＰＩ４０ａ２を最適なＡＰＩと判定し、判定結果として「ＳＡＸ  ＡＰＩ４０ａ２」を実行部３３に出力し（ステップＳ４Ｉ）、処理を終了する。
【００７７】
なお、｛Ｆ＿ｄｏｍ（ｘ１）＋Ｆ＿ｄｏｍ（ｘ２）｝＝｛Ｆ＿ｓａｘ（ｘ１）＋Ｆ＿ｓａｘ（ｘ２）｝の場合、すなわち、見積もられた結合処理時間が等しい場合には、ＡＰＩ判定部３７は、何れか一方のＡＰＩ（ＤＯＭ  ＡＰＩ４０ａ１あるいはＳＡＸ  ＡＰＩ４０ａ２を実行部３３に出力する。
【００７８】
この結果、上述したように、外部アプリケーション５から結合処理の処理要求が渡された場合、構造化ファイルアクセスシステム１の実行部３３に対して、ＡＰＩ判定部３７により、処理要求内容（結合処理）と結合処理対象であるＸＭＬファイル２０Ｘ１および２０Ｘ２のファイル容量ｘ１およびｘ２とから、結合処理時間の見積もり用近似式により最適として判断したどちらか一方のＡＰＩ（ＤＯＭ  ＡＰＩ４０ａ１あるいはＳＡＸ  ４０ａ２）を出力することができる。
【００７９】
このため、構造化ファイルアクセスシステム１の実行部３３により、最適として判定されたＡＰＩを用いて処理対象ＸＭＬファイル２０Ｘ１および２０Ｘ２をそれぞれメモリに展開して処理要求（結合処理）に対応する処理を実行することができる。
【００８０】
したがって、本実施形態における外部アプリケーション５がアクセスするＡＰＩを、その外部アプリケーション５の処理内容に応じて一元化することができるため、複数のＡＰＩに依存することなく外部アプリケーション５の開発を行うことができ、アプリケーション開発効率を向上させることができる。
【００８１】
また、本実施形態によれば、上述したように、ＸＭＬファイルのファイル容量に応じて最適なＡＰＩを選択することができるため、外部アプリケーション５によるＸＭＬファイル処理効率を向上させることができる。
【００８２】
なお、本実施形態によれば、アプリケーション５からの処理要求として、複数のＸＭＬファイルの結合処理の場合における最適ＡＰＩ判定処理について説明したが、本発明はアプリケーション５からの他の処理要求、例えば単独のＸＭＬファイルに対する処理要求や、２つ以上の複数のＸＭＬファイルに対する処理要求等に対しても適用できることは当然である。
【００８３】
この場合、結合処理と同様に、ＤＯＭ  ＡＰＩ４０ａ１を採用した場合における処理要求に対応する処理時間の見積もり用近似式Ｆ＿ｄｏｍ（ｘ）およびＳＡＸ  ＡＰＩ４０２を採用した場合の処理時間の見積もり用近似式Ｆ＿ｓａｘ（ｘ）をそれぞれ求めておき、この処理時間見積もり用近似式Ｆ＿ｄｏｍ（ｘ）および処理時間見積もり用近似式Ｆ＿ｓａｘ（ｘ）と処理対象となるＸＭＬファイルのファイル容量とを用いることにより、アプリケーション５からの他の処理要求に対しても、最適なＡＰＩを判定することができる。
【００８４】
また、本実施形態では、複数のＡＰＩ＿１〜ＡＰＩ＿ｎとして、ＸＭＬパーサＸＰに対する標準ＡＰＩであるＤＯＭ  ＡＰＩ４０ａ１およびＳＡＸ  ＡＰＩ４０ａ２がＡＰＩ＿１およびＡＰＩ＿２として外部記憶装置１６に記憶され、ＡＰＩ部３２により管理されているものとして説明したが、本発明は上記ＤＯＭ  ＡＰＩ４０ａ１およびＳＡＸ  ＡＰＩ４０ａ２に限定されるものではなく、他のＡＰＩを採用することも可能である。
【００８５】
他のＡＰＩを採用した場合であっても、前処理においてＸＭＬファイルのデータ容量を変数として処理時間の見積もり用近似式Ｆ＿ｏｔｈｅｒ＿ａｐｉ（ｘ）を求めておき、この近似式を用いて処理時間を比較することにより、最適なＡＰＩを求めることが可能である。
【００８６】
なお、図４に示す最適ＡＰＩ判定処理についても、採用したＡＰＩの特性に応じて修正する可能性もある。例えば、図４に示す最適ＡＰＩ判定処理におけるステップＳ４Ｃとして、ＤＯＭ  ＡＰＩ４０ａ１採用時にメモリ１２展開時の容量を見積り、限界（メモリ１２の空き容量）を超えないか否かを判定するステップを導入したが、これは、前掲図５に示したように、ＸＭＬファイル全体をＤＯＭツリーＴとして一旦メモリ１２に展開するＤＯＭ  ＡＰＩ４０ａ１等のツリーオブジェクト展開型のＡＰＩの仕組みにより導入したものであり、例えば、ＳＡＸ  ＡＰＩ４０ａ２等の逐次展開・イベント型のＡＰＩでは、実質、メモリ１２の空き容量の限界を意識する必要がないため、このようなステップを導入する必要はない。
【００８７】
なお、ＸＭＬファイル２０Ｘ１〜２０Ｘ２、外部関数ファイルＬ１およびログファイルＬ２等をコンピュータ２の一部として構成したが、コンピュータ２に通信可能な別のハードウェアにより構成してもよい。
【００８８】
また、構造化ファイルアクセスシステム１を１台のコンピュータ２により構成したが、複数台のコンピュータにより構成することも可能である。
【００８９】
さらに、本実施の形態においては、構造化ファイルとして、ＸＭＬ（eXtensible markup language）形式で作成されたＸＭＬファイルに対するアクセス方法およびシステム、ならびにプログラムについて説明したが、本発明はこの対象に限定されるものではなく、他の形式の構造化ファイル（データ識別タグ等の識別子で構造化された構造化ファイル）を対象とすることが可能である。
【００９０】
なお、本発明は、上述した実施の形態に限定されるものではなく、本発明に属する範囲内において、上記実施の形態を様々に変形して実施することが可能である。
【図面の簡単な説明】
【００９１】
【図１】本発明の実施の形態に係る構造化ファイルアクセスシステムが実装されたコンピュータの機能ブロック構成を示す図。
【図２】図１に示すコンピュータのハードウェア構成を示す図。
【図３】図１に示す構造化ファイルアクセスシステムが実装されたコンピュータの処理の一例を示す概略フローチャート。
【図４】図３に示す最適ＡＰＩ判定処理の一例を示す概略フローチャート。
【図５】ＤＯＭ  ＡＰＩおよびＸＭＬパーサを介してＸＭＬファイルをメモリに展開した場合の結果を概念的に示す図。
【図６】ＳＡＸ  ＡＰＩおよびＸＭＬパーサを介してＸＭＬファイルをメモリに展開した場合の結果を概念的に示す図。
【図７】本発明の実施の形態において、０．４Ｍｂｙｔｅ〜３．２ＭｂｙｔｅのＸＭＬファイルを約４００ｋｂｙｔｅずつ変化させた場合における実測値、およびこの実測値から実際に求められた１次（ｎ＝１）の処理時間見積り用近似式（関数）Ｆ＿ｄｏｍ（ｘ）・Ｆ＿ｓａｘ（ｘ）の一例を示すグラフ。
【符号の説明】
【００９２】
１…構造化ファイルアクセスシステム
２…コンピュータ
５…外部アプリケーション
１０…ＣＰＵ
１１…通信インタフェース
１２…メモリ
１３…表示部
１４…入力部
１６…外部記憶装置
１８…ＸＭＬファイル記憶部
２０Ｘ１〜２０Ｘｎ…ＸＭＬファイル
３１…インタフェース部
３２…ＡＰＩ部
３３…実行部
３４…外部関数管理部
３５…ログ蓄積部
３６…データ解析部
３７…ＡＰＩ判定部
ＸＬ…ＸＭＬパーサ
【図１】
2005107590.tif 000003
【図２】
2005107590.tif 000004
【図３】
2005107590.tif 000005
【図４】
2005107590.tif 000006
【図５】
2005107590.tif 000007
【図６】
2005107590.tif 000008
【図７】
2005107590.tif 000009