(57)【要約】【課題】本発明は、ＡＰＩ提供プログラムで行われる仮引数検査を、ＡＰＩ利用プログラムの変更なしに行うことができるようにすることを目的とする。【解決手段】事前のＡＰＩ呼び出しにより検査の対象となることでＡＰＩ利用プログラムに伝達された１つ又は複数の仮引数検査を、ＡＰＩ利用プログラムが記述するコードには出現しないプロキシ内で実施するという構成を採る。そして、プロキシで複数の仮引数検査を同時に行い、ＡＰＩ利用プログラムに通知するという構成を採る。この構成に従って、ＡＰＩ利用プログラムは、ＡＰＩ呼び出しのロジックを変更することなくそのまま実行するだけでよく、ＡＰＩ利用プログラムとＡＰＩ提供プログラムとの間のプロキシで仮引数の検査が実施されて、一度の呼び出しにより、仮引数の検査異常を全て受け取ることが可能になる。【選択図】          図１
2004246434.tif 000002
【特許請求の範囲】
【請求項１】
ＡＰＩを介して協調動作するＡＰＩ提供プログラムとＡＰＩ利用プログラムとの間に設けられて、ＡＰＩ提供プログラムにより実行される仮引数の検査を実行するＡＰＩ仮引数検査装置であって、
ＡＰＩ提供プログラムを呼び出す際の返却情報に従って、ＡＰＩ提供プログラムで仮引数の検査異常となる１つ又は複数の検査機能の情報と対象となる仮引数の位置の情報とを取得する取得手段と、
上記呼び出しの際に指定されるメソッドオブジェクトに対応付ける形で、上記取得した情報を管理する管理手段と、
ＡＰＩ利用プログラムによりＡＰＩ提供プログラムの呼び出しが発行されるときに、その呼び出しで指定されるメソッドオブジェクトが上記管理手段に登録されている場合には、上記管理手段の管理情報に従って仮引数の検査を行い、その検査に合格した場合にはＡＰＩ提供プログラムを呼び出し、合格しない場合にはＡＰＩ利用プログラムに検査例外を通知する検査手段とを備えることを、
特徴とするＡＰＩ仮引数検査装置。
【請求項２】
請求項１記載のＡＰＩ仮引数検査装置において、
上記取得手段は、ＡＰＩ利用プログラムによりＡＰＩ提供プログラムの呼び出しが発行されるときに、その呼び出しで指定されるメソッドオブジェクトが上記管理手段に登録されていない場合には、ＡＰＩ提供プログラムを呼び出してその返却情報を受け取ることで、ＡＰＩ提供プログラムで仮引数の検査異常となる１つ又は複数の検査機能の情報と対象となる仮引数の位置の情報とを取得することを、
特徴とするＡＰＩ仮引数検査装置。
【請求項３】
ＡＰＩを介して協調動作するＡＰＩ提供プログラムとＡＰＩ利用プログラムとの間に設けられて、ＡＰＩ提供プログラムにより実行される仮引数の検査を実行するＡＰＩ仮引数検査方法であって、
ＡＰＩ提供プログラムを呼び出す際の返却情報に従って、ＡＰＩ提供プログラムで仮引数の検査異常となる１つ又は複数の検査機能の情報と対象となる仮引数の位置の情報とを取得する過程と、
上記呼び出しの際に指定されるメソッドオブジェクトに対応付ける形で、上記取得した情報を管理する管理手段に対して、上記取得した情報を登録する過程と、
ＡＰＩ利用プログラムによりＡＰＩ提供プログラムの呼び出しが発行されるときに、その呼び出しで指定されるメソッドオブジェクトが上記管理手段に登録されている場合には、上記管理手段の管理情報に従って仮引数の検査を行い、その検査に合格した場合にはＡＰＩ提供プログラムを呼び出し、合格しない場合にはＡＰＩ利用プログラムに検査例外を通知する過程とを備えることを、
特徴とするＡＰＩ仮引数検査方法。
【請求項４】
請求項３記載のＡＰＩ仮引数検査方法において、
上記取得する過程では、ＡＰＩ利用プログラムによりＡＰＩ提供プログラムの呼び出しが発行されるときに、その呼び出しで指定されるメソッドオブジェクトが上記管理手段に登録されていない場合には、ＡＰＩ提供プログラムを呼び出してその返却情報を受け取ることで、ＡＰＩ提供プログラムで仮引数の検査異常となる１つ又は複数の検査機能の情報と対象となる仮引数の位置の情報とを取得することを、
特徴とするＡＰＩ仮引数検査方法。
【請求項５】
請求項３又は４に記載のＡＰＩ仮引数検査方法の実現に用いられる処理をコンピュータに実行させるためのＡＰＩ仮引数検査プログラム。
【請求項６】
請求項３又は４に記載のＡＰＩ仮引数検査方法の実現に用いられる処理をコンピュータに実行させるためのＡＰＩ仮引数検査プログラムを記録した記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ＡＰＩを介して協調動作するプログラムを連携・管理する場合に、互換性を維持しながら、ＡＰＩ提供プログラムに実装される仮引数の検査をＡＰＩ利用プログラムの側で動作させることを可能にするＡＰＩ仮引数検査装置及びその方法と、そのＡＰＩ仮引数検査方法の実現に用いられるＡＰＩ仮引数検査プログラム及びそのプログラムを記録した記録媒体とに関する。
【０００２】
より詳細には、本発明は、協調動作するプログラム間で、仮引数の検査を行う位置をＡＰＩ提供プログラムからＡＰＩ利用プログラムの側に変更したとしても、ＡＰＩ利用プログラムに修正を加えることなく、その変更が実施できることを可能にする技術に関する。
【０００３】
【従来の技術】
インターネット時代のサービス開発において、開発時間を短縮するための方法として、サービス連携、Ｗｅｂサービスといった技術領域がある。また、ＥＡＩ（Ｅｎｔｅｒｐｒｉｓｅ  Ａｐｐｌｉｃａｔｉｏｎ  Ｉｎｔｅｇｒａｔｉｏｎ）技術等も、既存システムを連携させてサービスを構築する方法である。
【０００４】
本発明は、必要な機能を新規に作り込むことにより、既にその機能を有するシステムを繋ぐことで速やかにサービスを構築することを目的とし、既存サービスを連携させて高次の応用機能を実現する連携サービス機構の実現（例えば非特許文献１，２参照）に関わるものである。
【０００５】
連携サービス機構上では複数のサービスが協調動作する。このような状況において、機能を提供するプログラムとそれを利用するプログラムとの間のインタフェースがＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｉｎｔｅｒｆａｃｅ）である。
【０００６】
ＡＰＩ提供プログラムは、ある提供機能を実装してＡＰＩとして公開する。一方、ＡＰＩ利用プログラムは、自らのアプリケーションロジックを実装する中で、そのＡＰＩに基づいて、ＡＰＩ提供プログラムの提供する機能を呼び出す。
【０００７】
一つのＡＰＩに対して、ＡＰＩ提供プログラムは一般に複数存在し（例えば、複数の決済事業者が共通のＡＰＩを実装する形式で決済機能をＡＰＩ利用プログラムに提供する）、ＡＰＩ利用プログラムは、そのうちの一つを選択して呼び出しを行う。
【０００８】
通常、ＡＰＩ提供プログラムとＡＰＩ利用プログラムとの間で、ＡＰＩを通してやり取りされる情報（仮引数）には、取り得る値の範囲や、仮引数間の関係に応じた制約条件があることが一般的である。また、これらの制約条件は、ＡＰＩ提供プログラムの実装によって可変である。
【０００９】
プログラムの開発プロセスにおいては、一般に、大小さまざまなレベルで仕様変更が発生する。この仕様変更のうち、仮引数の制約条件の変更は不可避な変更の一つである。
【００１０】
ＡＰＩ提供プログラムが行う上記の制約条件の検査（以下、仮引数検査と称する）をＡＰＩ利用プログラムで実施する場合、従来の技術では、ＡＰＩ利用プログラム内に、同一の検査を実施するプログラムを埋め込む方式がとられていた（例えば、特許文献１参照）。
【００１１】
このような従来技術に従う場合、ＡＰＩ提供プログラムが仮引数検査の内容を変更した場合や、新しくＡＰＩ提供プログラムの実装が増えた場合に、対応する仮引数検査を実施するために、ＡＰＩ利用プログラムの修正が必須であった。
【００１２】
また、従来の仮引数検査の技術では、複数の仮引数検査のうちで一つ異常が見つかれば、異常として、ＡＰＩ利用プログラムに返却していることから、複数の仮引数検査で異常となる仮引数については、一度の検査異常の通知では、異常な仮引数を全て修正できないという問題点があった。
【００１３】
【非特許文献１】
「プラットフォーム連携によるＡＰ開発手法の提案」，日野隆一，堀川桂太郎，電子情報通信学会，２００２年３月２２日発行，  電子情報通信学会技術研究報告，ＫＢＳＥ２００１−７２，ｐｐ．５７−６４
【非特許文献２】
「システム間の連携Ｉ／Ｆとその拡張による影響の考察」，堀川桂太郎，日野隆一，電子情報通信学会，２００２年１２月１２日発行，  電子情報通信学会技術研究報告，Ｖｏｌ．１０２，Ｎｏ．５０３，ｐｐ．７−１２
【特許文献１】
特開平７−２８１８８０号公報
【００１４】
【発明が解決しようとする課題】
一般に、ＡＰＩ利用プログラムとＡＰＩ提供プログラムとはネットワークを介して接続されるため、ＡＰＩ提供プログラムで仮引数検査を行うことは、検査に不合格する場合において、ＡＰＩ利用プログラムでその検査を行うことに比較して、ネットワーク通信の分だけコストがかかることになる。
【００１５】
一方、ＡＰＩ利用プログラムで、ＡＰＩ提供プログラムが行うものと同様の検査を行うことで、ＡＰＩ提供プログラムの検査に必ず合格するように作り込んだ場合にあっても、前述の通り、ＡＰＩ提供プログラムの仮引数検査の変更があると、ＡＰＩ利用プログラムを変更しなければならない。
【００１６】
そこで、本発明は、仮引数の検査の新規実装・変更に際し、ＡＰＩ利用プログラムにおいてプログラムコードの修正を不要とし、さらに、可能な限り、必要となる全ての仮引数検査をＡＰＩ利用プログラムの側で実施できるようにする新たな技術の提供を目的とする。
【００１７】
そして、本発明は、複数の仮引数検査を有するＡＰＩ提供プログラムが、一度の検査異常の通知で、仮引数検査に関わる全ての検査異常を通知できるようにする新たな技術の提供を目的とする。
【００１８】
【課題を解決するための手段】
この目的を達成するために、本発明のＡＰＩ仮引数検査装置は、ＡＰＩを介して協調動作するＡＰＩ提供プログラムとＡＰＩ利用プログラムとの間に設けられて、ＡＰＩ提供プログラムにより実行される仮引数の検査を実行する処理を行うために、▲１▼ＡＰＩ提供プログラムを呼び出す際の返却情報に従って、ＡＰＩ提供プログラムで仮引数の検査異常となる１つ又は複数の検査機能の情報と対象となる仮引数の位置の情報とを取得する取得手段と、▲２▼その呼び出しの際に指定されるメソッドオブジェクトに対応付ける形で、取得手段の取得した情報を管理する管理手段に対して、取得手段の取得した情報を登録する登録手段と、▲３▼ＡＰＩ利用プログラムによりＡＰＩ提供プログラムの呼び出しが発行されるときに、その呼び出しで指定されるメソッドオブジェクトが管理手段に登録されている場合には、管理手段の管理情報に従って仮引数の検査を行い、その検査に合格した場合にはＡＰＩ提供プログラムを呼び出し、その検査に合格しない場合にはＡＰＩ利用プログラムに検査例外を通知する検査手段と、▲４▼ＡＰＩ利用プログラムによりＡＰＩ提供プログラムの呼び出しが発行されるときに、その呼び出しで指定されるメソッドオブジェクトが管理手段に登録されているのか否かを判断する判断手段とを備えるように構成する。
【００１９】
以上の各処理手段が動作することで実現される本発明のＡＰＩ仮引数検査方法はコンピュータプログラムで実現できるものであり、このコンピュータプログラムは、半導体メモリなどのような適当な記録媒体に記録して提供したり、ネットワークを介して提供することができる。
【００２０】
このように構成される本発明のＡＰＩ仮引数検査装置では、ＡＰＩ利用プログラムによりＡＰＩ提供プログラムの呼び出しが発行されると、判断手段は、その呼び出しで指定されるメソッドオブジェクトが管理手段に登録されているのか否かを判断する。
【００２１】
この判断結果を受けて、取得手段は、ＡＰＩ提供プログラムの呼び出しで指定されるメソッドオブジェクトが管理手段に登録されていない場合には、ＡＰＩ提供プログラムを呼び出してその返却情報を受け取ることで、ＡＰＩ提供プログラムで仮引数の検査異常となる１つ又は複数の検査機能の情報と対象となる仮引数の位置の情報とを取得する。
【００２２】
この取得手段による取得処理を受けて、登録手段は、管理手段に対して、その呼び出しの際に指定されるメソッドオブジェクトに対応付ける形で、取得手段の取得した情報を登録する。
【００２３】
このようにして、管理手段には、ＡＰＩ提供プログラムの呼び出しの際に指定されるメソッドオブジェクトに対応付ける形で、ＡＰＩ提供プログラムで仮引数の検査異常となる１つ又は複数の検査機能の情報と対象となる仮引数の位置の情報とが管理されることになる。
【００２４】
これから、ＡＰＩ利用プログラムによりＡＰＩ提供プログラムの呼び出しが発行されるときに、その呼び出しで、前回仮引数の検査に失敗したメソッドオブジェクトが指定される場合には、判断手段は、そのメソッドオブジェクトが管理手段に登録されていることを判断することになり、これを受けて、検査手段は、管理手段の管理情報に従って仮引数の検査を行い、その検査に合格した場合にはＡＰＩ提供プログラムを呼び出し、その検査に合格しない場合にはＡＰＩ利用プログラムに検査例外を通知する。
【００２５】
このようにして、本発明のＡＰＩ仮引数検査装置によれば、ＡＰＩ提供プログラムで行われる仮引数検査を、ＡＰＩ利用プログラムの変更なしに、ＡＰＩ利用プログラムの側で行うことが可能になるのである。
【００２６】
次に、図１を参照しつつ、本発明について更に詳細に説明する。
【００２７】
ここで、図中、１０はＡＰＩ提供プログラム、２０はＡＰＩ利用プログラム、３０は本発明のＡＰＩ仮引数検査装置を実現するプロキシである。
【００２８】
ＡＰＩ提供プログラム１０とＡＰＩ利用プログラム２０とがネットワークで接続される場合には、ネットワーク通信のコストの削減を図るために、プロキシ３０は、図２に示すように、ＡＰＩ利用プログラム２０と同一のコンピュータ上に展開されることが好ましい。
【００２９】
本発明では、ＡＰＩ提供プログラム１０で検査異常となる仮引数の検査機能をＡＰＩ利用プログラム２０に伝達するという構成を採るものであり、具体的には、事前のＡＰＩ呼び出しにより検査の対象となることでＡＰＩ利用プログラム２０に伝達された１つ又は複数の仮引数検査を、ＡＰＩ利用プログラム２０が記述するコードには出現しないプロキシ３０内で実施するという構成を採る。
【００３０】
そして、本発明では、複数の仮引数検査が必要な場合、プロキシ３０で複数の仮引数検査を同時に行い、ＡＰＩ利用プログラム２０に通知するという構成を採る。
【００３１】
この構成に従って、本発明によれば、ＡＰＩ利用プログラム２０は、ＡＰＩ呼び出しのロジックを変更することなくそのまま実行するだけでよく、ＡＰＩ利用プログラム２０とＡＰＩ提供プログラム１０との間のプロキシ３０で仮引数の検査が実施されて、一度の呼び出しにより、仮引数の検査異常を全て受け取ることが可能になる。
【００３２】
図１に示すように、本発明を実現すべく用意されるプロキシ３０は、事前検査機構３００と検査機能管理機構３０１とを備える。
【００３３】
この検査機能管理機構３０１は、ＡＰＩ利用プログラム２０の側で仮引数の検査を実施するために、仮引数の検査例外を発生したＭｅｔｈｏｄオブジェクトと、その検査内容を実装した１つ又は複数の検査機能の情報（検査例外を発生した仮引数の位置情報を含む）とを対応付けて管理する。
【００３４】
一方、事前検査機構３００は、ＡＰＩ利用プログラム２０とＡＰＩ提供プログラム１０との間に挿入され、実行時に、ＡＰＩ提供プログラム１０から受け取った仮引数の検査例外を検知して、検査機能管理機構３０１に対して、その検査例外に付加される１つ又は複数の検査機能の情報（検査例外を発生した仮引数の位置情報を含む）の登録を依頼する。
【００３５】
この依頼を受けて、検査機能管理機構３０１は、図中に示す検査機能登録部を使って、呼び出されたＭｅｔｈｏｄオブジェクトに対応付けて、その登録依頼を受けた１つ又は複数の検査機能の情報を登録することで、仮引数の検査例外を発生したＭｅｔｈｏｄオブジェクトと、その検査内容を実装した１つ又は複数の検査機能の情報とを対応付けて管理することになる。
【００３６】
また、事前検査機構３００は、ＡＰＩ呼び出し時に、ＡＰＩ提供プログラム１０に処理実施を依頼する前に、検査機能管理機構３０１に対して、該当するＭｅｔｈｏｄオブジェクトに対応付けられたメソッドに対する１つ又は複数の検査機能の実行を依頼する。
【００３７】
この依頼を受けて、検査機能管理機構３０１は、図中に示す検査機能実行部を使って、該当するＭｅｔｈｏｄオブジェクトに対応付けられた１つ又は複数の検査機能の各要素に対して、その検査機能の実行を行う。
【００３８】
プロキシ３０で実行される検査機能は、Ｉｎｔｅｒｆａｃｅ  で規定された特定のメソッドを伴うオブジェクトであり、本メソッドが起動されると、仮引数に対して、検査機能の実装に従って検査を実施する。例えば、Ｉｎｔｅｒｆａｃｅ  で規定された“Ｃｈｅｃｋｅｒ＃ｃｈｅｃｋ（Ｏｂｊｅｃｔ［］  ｃｈｅｃｋｅｄ）  ”というメソッドが起動されると、仮引数ｃｈｅｃｋｅｄ  に対して、検査機能の実装に従って検査を実施することになる。
【００３９】
検査機能管理機構３０１は、数学でいう射の実装（具体的な例では、Ｊａｖａ  ＡＰＩ（Ｊａｖａ  は登録商標）におけるＭａｐインタフェースを実装したクラスであるｊａｖａ．ｕｔｉｌ．Ｈａｓｈｔａｂｌｅ）などで実現し、射のドメインとして、ＡＰＩ提供プログラム１０のＭｅｔｈｏｄオブジェクトの集合をとり、コドメインとして、検査機能と検査の対象となる仮引数位置の情報という二項組の集まり（以下、単に検査機能リストと称する）の集合をとる。Ｊａｖａ  ＡＰＩのＭａｐインタフェースにより具体的に説明すると、Ｍｅｔｈｏｄオブジェクトをキーにして、検査機能リストを管理することになる。
【００４０】
検査機能管理機構３０１は、事前検査機構３００からのＭｅｔｈｏｄオブジェクトの仮引数検査の依頼に基づいて、図中に示す検査機能実行部を使って、そのＭｅｔｈｏｄオブジェクトをキーにして検査機能リストを検索し、その結果、キーに対応する値が空（ｎｕｌｌ）である場合、すなわち検査機能リストを検索できない場合には、事前検査機構３００へ正常復帰する。一方、検査機能リストを検索できた場合には、その各々に対して、検査対象の仮引数位置として指定された値を仮引数から取得し、検査機能に対して、Ｃｈｅｃｋ（．．．）メソッドを実行する。検査の結果が正常の場合には、事前検査機構３００へ正常復帰し、異常の場合には、事前検査機構３００へ検査例外を送出する。
【００４１】
これを受けて、事前検査機構３００は、検査機能管理機構３０１から正常復帰した場合には、ＡＰＩ提供プログラム１０をそのまま実行して、その結果をＡＰＩ利用プログラム２０に返し、検査機能管理機構３０１から検査例外が送出された場合には、その検査例外をＡＰＩ利用プログラム２０に送出する。
【００４２】
ＡＰＩ提供プログラム１０は、処理を実施する前に、ＡＰＩの境界条件に基づいて仮引数の検査を行い、その値に異常がある場合には、検査例外としてプロキシ３０に返却する。このとき返却する検査例外には、検査異常の対象となった仮引数の位置と、検査に利用した検査機能への参照あるいは実体とが渡される。上述したように、この検査例外で渡された情報が検査機能管理機構３０１で管理されることになるのである。
【００４３】
このように構成されるときにあって、図中に示す検査機能管理機構３０１の検査機能登録部では、同一のＭｅｔｈｏｄオブジェクトに対して、異なる仮引数検査の管理依頼があるときには、該当するＭｅｔｈｏｄオブジェクトに対応付けられる検査機能リストに、その管理依頼の仮引数検査を追加登録する。
【００４４】
また、図中に示す検査機能管理機構３０１の検査機能削除部では、Ｍｅｔｈｏｄオブジェクトの仮引数検査の削除依頼に対して、該当するＭｅｔｈｏｄオブジェクトに対応付けられる検査機能リストから、その削除依頼の仮引数検査のみを削除する。
【００４５】
また、図中に示す検査機能管理機構３０１の検査機能永続部では、ＡＰＩ利用プログラム２０の停止・再起動時間の状況下においても射で管理する情報を保持するために、射を復元可能なデータ形式に出力する機能と、そのデータ形式を射に復元する機能とを有する。
【００４６】
【発明の実施の形態】
以下、実施の形態に従って本発明を詳細に説明する。
【００４７】
図３及び図４に、ＡＰＩ利用プログラム２０／事前検査機構３００／検査機能管理機構３０１／ＡＰＩ提供プログラム１０の間の処理の流れについて記述するタイムチャートの一例を図示する。
【００４８】
ここで、このタイムチャートでは、ＡＰＩ提供プログラム１０のＳｔｒｉｎｇ  ｔｅｓｔ（Ｓｔｒｉｎｇ，Ｓｔｒｉｎｇ）メソッドにおいて、ｃｈｅｃｋｅｒ１とｃｈｅｃｋｅｒ２で表される検査機能が実行される場合を想定している。また、以下の説明では、Ｊａｖａ  言語を想定して説明を行う。
【００４９】
（１）１回目の呼び出し（図３のタイムチャート）
先ず最初に、ＡＰＩ利用プログラム２０は、ファクトリパターンにおける標準的な手続き（図中に示すｃｒｅａｔｅ（））を利用して、ＡＰＩ提供プログラム１０へアクセスするためのオブジェクトを、ＡＰＩ提供プログラム１０から取得する。
【００５０】
このとき、ＡＰＩ提供プログラム１０は、ＡＰＩ利用プログラム２０において事前検査を代行する機能を具備したオブジェクトであるところの事前検査機構３００のインスタンスを、事前検査機構３００から取得して、ＡＰＩ利用プログラム２０に返却する。
【００５１】
続いて、ＡＰＩ利用プログラム２０は、取得した事前検査機構３００に対して、ｔｅｓｔメソッド（”ｔｅｓｔ１”，”ｔｅｓｔ２”  という２つの仮引数を指定する）の起動を試みる。この手続きがＡＰＩ提供プログラム１０を直接呼び出す場合と同一の処理になることが、本発明における一つの特徴である。
【００５２】
このｔｅｓｔメソッドの起動を受けて、事前検査機構３００は、呼び出されたｔｅｓｔメソッドとその仮引数（”ｔｅｓｔ１”，”ｔｅｓｔ２”）とを検査機能管理機構３０１に引き渡して、仮引数の検査を依頼する。
【００５３】
初回の起動においては、検査機能管理機構３０１にはｔｅｓｔメソッドに対する検査機能の登録がないために、検査機能管理機構３０１内で行う事前検査はないことで事前検査機構３００に対して事前検査正常が返却され、これを受けて、事前検査機構３００は、ＡＰＩ提供プログラム１０を呼び出す。
【００５４】
ＡＰＩ提供プログラム１０は、ｔｅｓｔメソッドにおいて、ｃｈｅｃｋｅｒ１とｃｈｅｃｋｅｒ２で表される検査機能により仮引数の検査を行っており、このｃｈｅｃｋｅｒ１では、例えば、ｔｅｓｔメソッドの１番目の仮引数（配列のインデックス０により参照される）が特定の文字列（本例では”ｔｅｓｔ１”  を想定する）の場合、検査異常と判断する。
【００５５】
ＡＰＩ利用プログラム２０から渡された１番目の仮引数は”ｔｅｓｔ１”  であることから、ｃｈｅｃｋｅｒ１により検査異常と判断される。
【００５６】
これから、ＡＰＩ提供プログラム１０は、検査異常と判断された検査内容を表す検査機能（この例ではｃｈｅｃｋｅｒ１）と、検査の対象となったｔｅｓｔメソッドにおける仮引数の位置（この例では配列のインデックス０）との二項組を事前検査機構３００へ返却する。
【００５７】
この検査例外を受け取ると、事前検査機構３００は、検査例外を発生したＭｅｔｈｏｄオブジェクトとＡＰＩ提供プログラム１０から受け取った検査例外の情報とを指定して、検査機能管理機構３０１の検査機能登録メソッドａｄｄ  を呼び出すことで、検査機能管理機構３０１に対して、そのＭｅｔｈｏｄオブジェクトをキーとする検査例外の情報の登録を依頼する。
【００５８】
この登録依頼を受け取ると、検査機能管理機構３０１は、Ｍａｐインタフェースを実装したオブジェクトなど（このオブジェクトを検査機能管理オブジェクトと称する）に、Ｍｅｔｈｏｄオブジェクトをキーにして、検査機能を保存し、処理を事前検査機構３００へ移す。
【００５９】
これを受けて、事前検査機構３００は、ＡＰＩ提供プログラム１０から受け取った検査例外をＡＰＩ利用プログラム２０に返却する。
【００６０】
（２）２回目の呼び出し（図４のタイムチャート）
先ず最初に、ＡＰＩ利用プログラム２０は、ファクトリパターンにおける標準的な手続き（図中に示すｃｒｅａｔｅ（））を利用して、ＡＰＩ提供プログラム１０へアクセスするためのオブジェクトを、ＡＰＩ提供プログラム１０から取得する。
【００６１】
このとき、ＡＰＩ提供プログラム１０は、ＡＰＩ利用プログラム２０において事前検査を代行する機能を具備したオブジェクトであるところの事前検査機構３００のインスタンスを、事前検査機構３００から取得して、ＡＰＩ利用プログラム２０に返却する。
【００６２】
続いて、ＡＰＩ利用プログラム２０は、取得した事前検査機構３００に対して、ｔｅｓｔメソッド（”ｔｅｓｔ１”，”ｔｅｓｔ２”  という２つの仮引数を指定する）の起動を試みる。
【００６３】
このｔｅｓｔメソッドの起動を受けて、事前検査機構３００は、呼び出されたｔｅｓｔメソッドとその仮引数（”ｔｅｓｔ１”，”ｔｅｓｔ２”）とを検査機能管理機構３０１に引き渡して、仮引数の検査を依頼する。
【００６４】
これを受けて、検査機能管理機構３０１は、引き渡されたｔｅｓｔメソッドが検査機能管理オブジェクトによって保存されていることを確認し、その値として、検査機能と対応する仮引数位置との二項組データを取り出す。本例では、管理されている検査機能はｃｈｅｃｋｅｒ１で、対象となる仮引数位置は配列のインデックス０（１番目の仮引数）であるので、その二項組データを取り出すことになる。
【００６５】
続いて、検査機能管理機構３０１は、この取得した検査機能を、事前検査機構３００から引き渡された仮引数に対して適用する。
【００６６】
上述したように、ｃｈｅｃｋｅｒ１では、ｔｅｓｔメソッドの１番目の仮引数が特定の文字列（上述したように、本例では”ｔｅｓｔ１”  を想定している）の場合、検査異常と判断する。ここでは、ＡＰＩ利用プログラム２０から渡された１番目の仮引数は”ｔｅｓｔ１”  であることから、ｃｈｅｃｋｅｒ１により検査異常と判断される。
【００６７】
これから、検査機能管理機構３０１は、検査異常と判断した検査内容を表す検査機能（この例ではｃｈｅｃｋｅｒ１）と、検査の対象となったｔｅｓｔメソッドにおける仮引数の位置（この例では配列のインデックス０）との二項組を、検査例外として、事前検査機構３００へ返却する。
【００６８】
この検査例外を受け取ると、事前検査機構３００は、そのまま受け取った例外をＡＰＩ利用プログラム２０へ返却する。
【００６９】
このようにして、本発明によれば、ＡＰＩ提供プログラム１０で行われる仮引数検査を、ＡＰＩ利用プログラム２０の変更なしに、ＡＰＩ利用プログラム２０の側で行うことが可能になり、従来発生していたＡＰＩ利用プログラム２０とＡＰＩ提供プログラム１０との間の通信コストの削減が可能になる。
【００７０】
そして、本発明によれば、複数の異常を含む仮引数に対して、１回のＡＰＩ呼び出しにより、全ての検査異常を通知することが可能になる。
【００７１】
【実施例】
次に、Ｊａｖａ  言語による具体的なプログラム例について説明する。
【００７２】
（イ）ＡＰＩ提供プログラム１０の一実施例
図５に、ＡＰＩ提供プログラム１０の一実施例を図示する。
【００７３】
ＳｅｒｖｅｒインタフェースはＡＰＩを定義するものであり、本ＡＰＩにおいては、ｔｅｓｔ（Ｓｔｒｉｎｇ，Ｓｔｒｉｎｇ）  メソッドを持つことを表す。
【００７４】
ＳｅｒｖｅｒＩｍｐ１は、前記のＳｅｒｖｅｒインタフェースを実装した具象クラスである。ｔｅｓｔメソッドの実装において、仮引数の検査を後述のＣｈｅｃｋＩｍｐｌ１およびＣｈｅｃｋＩｍｐｌ２を用いて行った後で、二つの仮引数を合成して返却する機能を実現している。
【００７５】
また、本クラスのオブジェクトを生成するための機能をｃｒｅａｔｅメソッドで実現しており、その中で、後述の事前検査機構３００を実装したＣｈｅｃｋｉｎｇＰｒｏｘｙ  オブジェクトによって、ＳｅｒｖｅｒＩｍｐｌクラスのオブジェクトがラップされる。これにより、ｃｒｅａｔｅメソッドを利用してオブジェクトを生成したＡＰＩ呼び出し部は、意識することなく、事前検査機構３００の利用が可能となる。
【００７６】
（ロ）ＡＰＩ利用プログラム２０の一実施例
図６に、ＡＰＩ利用プログラム２０の一実施例を図示する。
【００７７】
Ｓｅｒｖｅｒインタフェースを実装したオブジェクトを、ＳｅｒｖｅｒＩｍｐｌ＃ｃｒｅａｔｅ（）  メソッドにより取得し、その取得したオブジェクトに対して、２度、ｔｅｓｔメソッドを、同一の検査で異常を引き起こす仮引数で呼び出している。本例においては、第１番目の仮引数の”ｔｅｓｔ１”  が検査異常を引き起こす仮引数である。
【００７８】
（ハ）検査機能のインタフェースの一実施例
図７に、検査機能のインタフェースの一実施例を図示する。
【００７９】
検査機能は、チェックを行うためのｃｈｅｃｋ  メソッドと、ｃｈｅｃｋ  メソッドが引数するＯｂｊｅｃｔ配列に代入されるべきオブジェクトのクラスのリストを取得するｇｅｔＣｈｅｃｋｅｄＣｌａｓｓＬｉｓｔ  メソッドとからなる。
【００８０】
（ニ）基底クラスの一実施例
図８に、検査機能を実装する上で基底となるクラスの一実施例を図示する。
【００８１】
どのような場合であっても必ず実施の必要がある以下の処理を、テンプレートパターンで実装する。
【００８２】
すなわち、検査機能のｃｈｅｃｋ  メソッドが呼び出されたときの仮引数の配列に格納されたオブジェクトのクラスが、検査機能が要求するクラスと一致しているかを検査する機能を、ｓｔａｔｉｃＣｈｅｃｋ  メソッドにおいて実装する。また、ｓｔａｔｉｃＣｈｅｃｋ  メソッドが正しく終了した場合に、本クラスにより抽象定義された後に、本抽象クラスに対する具象クラスがｌｏｃａｌＣｈｅｃｋメソッドに、処理を委譲する実装を行う必要がある。
【００８３】
（ホ）インタフェース定義の一実施例
図９に、検査異常時に、呼び出し側に対して報告される後述の検査例外に格納されることになる、利用した検査機能と対象となった仮引数位置とを格納する検査内容のインタフェース定義の一実施例と、その検査機能の一実施例とを図示する。
【００８４】
具体的には、検査機能は、インスタンス変数ｃｈｅｃｋｅｒ  によって管理され、ｃｈｅｃｋｅｒ  の定義は、内部の匿名クラスとして定義されている。本例においては、第１番目の仮引数（配列の０番目）について、そのＳｔｒｉｎｇ値が「”ｔｅｓｔ１”  」と等しい場合に、検査異常となるように実装されている。
【００８５】
（ヘ）検査機能管理機構３０１の一実施例
図１０及び図１１に、検査機能管理機構３０１の一実施例を図示する。
【００８６】
▲１▼ｃｈｅｃｋ  メソッドは、仮引数で指定されるＭｅｔｈｏｄオブジェクトに対応付けて管理される検査機能リストに対して、その検査を全て実施し、検査異常を呼び出し元に報告する。
【００８７】
▲２▼ａｄｄ  メソッドは、検査例外と、その例外の契機となったＭｅｔｈｏｄオブジェクトとを指定して、検査例外の内部に格納される検査機能の群を、Ｍｅｔｈｏｄオブジェクトに対応付けられる検査機能リストに加える。また、事前に該当するＭｅｔｈｏｄオブジェクトについて検査機能リストが登録がされていない場合は、新規に検査機能リストを作成した上で、登録する。
【００８８】
▲３▼ａｐｐｌｙ  メソッドは、ｃｈｅｃｋ  メソッドに対するユーティリティとして機能し、その処理内容は以下の通りである。すなわち、検査機能リストと、検査対象であるＭｅｔｈｏｄオブジェクトとを受け取り、検査機能リストの全ての要素（検査機能）に対して、指定される仮引数を利用して、検査機能による検査を実施し、検査異常がある場合においては、その全てを検査例外として報告する。
【００８９】
（ト）事前検査機構３００の一実施例
図１２に、事前検査機構３００の一実施例を図示する。
【００９０】
Ｊａｖａ．ｌａｎｇ．ｒｅｆｌｅｃｔ．ＩｎｖｏｃａｔｉｏｎＨａｎｄｌｅｒ  インタフェースのｐｕｂｌｉｃ  Ｏｂｊｅｃｔ  ｉｎｖｏｋｅ（Ｏｂｊｅｃｔ  ｐｒｏｘｙ，Ｍｅｔｈｏｄ  ｍ，Ｏｂｊｅｃｔ［］  ａｒｇｓ）  を実装したメソッドの中で、事前検査機構３００を呼び出し、正常復帰の場合には、ＡＰＩ提供プログラム１０を呼び出す実装を行う。また、ＡＰＩ提供プログラム１０からの復帰値が検査例外の場合には、対象となった検査機能の管理を検査機能管理機構３０１に依頼した上で、検査例外を呼び出し元であるＡＰＩ利用プログラム２０に返却する。
【００９１】
（チ）検査例外の一実施例
図１３に、検査例外の一実施例を図示する。
【００９２】
ＡＰＩ提供プログラム１０、あるいは、検査機能管理機構３０１内において、検査異常が発生した時に、検査に利用した検査機能と、対象となった仮引数の位置との二項組の集まりが格納される。
【００９３】
具体的には、
▲１▼ｌｉｎｋメソッドは、検査例外インスタンスの内部情報の統合を行う。
▲２▼ｇｅｔＩｔｅｍＳｉｚｅ  メソッドは、保持している検査機能と仮引数の位置との二項組の数を返却する。
▲３▼ｇｅｔＣｈｅｃｋＩｔｅｍは、指定されたインデックスの検査機能と仮引数の位置との二項組を返却する。
【００９４】
【発明の効果】
以上説明したように、本発明によれば、ＡＰＩ提供プログラムで行われる仮引数検査を、ＡＰＩ利用プログラムの変更なしに、ＡＰＩ利用プログラムの側で行うことが可能になり、従来発生していたＡＰＩ利用プログラムとＡＰＩ提供プログラムとの間の通信コストの削減が可能になる。
【００９５】
そして、本発明によれば、複数の異常を含む仮引数に対して、１回のＡＰＩ呼び出しにより、全ての検査異常を通知することが可能になる。
【図面の簡単な説明】
【図１】本発明のシステム構成を示す図である。
【図２】プロキシの配置形態を示す図である。
【図３】本発明におけるタイムチャートの一例を示す図である。
【図４】本発明におけるタイムチャートの一例を示す図である。
【図５】ＡＰＩ提供プログラムの一実施例である。
【図６】ＡＰＩ利用プログラムの一実施例である。
【図７】検査機能のインタフェースの一実施例である。
【図８】基底クラスの一実施例である。
【図９】インタフェース定義の一実施例である。
【図１０】検査機能管理機構の一実施例である。
【図１１】検査機能管理機構の一実施例である。
【図１２】事前検査機構の一実施例である。
【図１３】検査例外の一実施例である。
【符号の説明】
１０    ＡＰＩ提供プログラム
２０    ＡＰＩ利用プログラム
３０    プロキシ
３００  事前検査機構
３０１  検査機能管理機構
【図１】
2004246434.tif 000003
【図２】
2004246434.tif 000004
【図３】
2004246434.tif 000005
【図４】
2004246434.tif 000006
【図５】
2004246434.tif 000007
【図６】
2004246434.tif 000008
【図７】
2004246434.tif 000009
【図８】
2004246434.tif 000010
【図９】
2004246434.tif 000011
【図１０】
2004246434.tif 000012
【図１１】
2004246434.tif 000013
【図１２】
2004246434.tif 000014
【図１３】
2004246434.tif 000015