(57)【特許請求の範囲】
【請求項１】
集積回路に対する第１コマンドを生成する第１コマンド生成ステップと、前記集積回路に対する第２コマンドを生成する第２コマンド生成ステップとを含む制御処理の実行手順が記載されたスクリプトを記憶するスクリプト記憶手段と、
前記スクリプトに含まれるステップが、前記第１コマンドに対する前記集積回路のレスポンスから独立した独立ステップであるか否かを、前記記憶されたスクリプトに記載された実行手順に従って判別するステップ判別手段と、
前記ステップが独立ステップであると判別された場合に、前記第１コマンド生成ステップの実行により生成される第１コマンドと、前記第２コマンド生成ステップの実行により生成される第２コマンドとを蓄積するコマンド蓄積手段と、
前記ステップが独立ステップでないと判別された場合に、前記コマンド蓄積手段に蓄積されているコマンドを送信する送信手段と、を備える、
ことを特徴とするコマンド送信装置。
【請求項２】
前記ステップ判別手段は、前記第１コマンドに対するレスポンスが前記第２コマンド生成ステップの実行に用いられない場合に、前記第２コマンド生成ステップが、前記第１コマンドに対するレスポンスから独立した独立ステップであると判別する、
ことを特徴とする請求項１に記載のコマンド送信装置。
【請求項３】
前記ステップ判別手段は、前記第１コマンドに対するレスポンスが繰返条件及び分岐条件のいずれか１つ以上に用いられない場合に、前記ステップが前記独立ステップであると判別する、
ことを特徴とする請求項１又は２に記載のコマンド送信装置。
【請求項４】
前記送信手段は、前記集積回路による前記第１コマンドの実行状態を表す実行状態情報と、前記実行状態に応じたアクションを定めるアクション定義情報とを前記第１コマンドと共に送信する、
ことを特徴とする請求項１ないし３のいずれか一項に記載のコマンド送信装置。
【請求項５】
コンピュータを、
集積回路に対する第１コマンドを生成する第１コマンド生成ステップと、前記集積回路に対する第２コマンドを生成する第２コマンド生成ステップとを含む制御処理の実行手順が記載されたスクリプトを記憶するスクリプト記憶手段、
前記スクリプトに含まれるステップが、前記第１コマンドに対する前記集積回路のレスポンスから独立した独立ステップであるか否かを、前記記憶されたスクリプトに記載された実行手順に従って判別するステップ判別手段、
前記ステップが独立ステップであると判別された場合に、前記第１コマンド生成ステップの実行により生成される第１コマンドと、前記第２コマンド生成ステップの実行により生成される第２コマンドとを蓄積するコマンド蓄積手段、
前記ステップが独立ステップでないと判別された場合に、前記コマンド蓄積手段に蓄積されているコマンドを送信する送信手段、として機能させる、
ことを特徴とするコマンド送信プログラム。
【請求項６】
集積回路に対する第１コマンドを生成する第１コマンド生成ステップと、前記集積回路に対する第２コマンドを生成する第２コマンド生成ステップとを含む制御処理の実行手順が記載されたスクリプトを記憶するスクリプト記憶ステップと、
前記スクリプトに含まれるステップが、前記第１コマンドに対する前記集積回路のレスポンスから独立した独立ステップであるか否かを、前記記憶されたスクリプトに記載された実行手順に従って判別するステップ判別ステップと、
前記ステップが独立ステップであると判別された場合に、前記第１コマンド生成ステップの実行により生成される第１コマンドと、前記第２コマンド生成ステップの実行により生成される第２コマンドとを蓄積するコマンド蓄積ステップと、
前記ステップが独立ステップでないと判別された場合に、前記コマンド蓄積ステップにて蓄積したコマンドを送信する送信ステップと、を有する、
ことを特徴とするコマンド送信方法。
【請求項７】
集積回路に対する第１コマンドを生成する第１コマンド生成ステップと、前記集積回路に対する第２コマンドを生成する第２コマンド生成ステップとを含む制御処理の実行手順が記載されたスクリプトを記憶するスクリプト記憶手段と、
前記スクリプトに含まれるステップが、前記第１コマンドに対する前記集積回路のレスポンスから独立した独立ステップであるか否かを、前記記憶されたスクリプトに記載された実行手順に従って判別するステップ判別手段と、
前記ステップが独立ステップであると判別された場合に、前記第１コマンド生成ステップの実行により生成される第１コマンドと、前記第２コマンド生成ステップの実行により生成される第２コマンドとを蓄積するコマンド蓄積手段と、
前記ステップが独立ステップでないと判別された場合に、前記コマンド蓄積手段に蓄積されているコマンドを送信する送信手段と、
前記送信された第１コマンドを前記第２コマンドと共に受信する受信手段と、
前記受信された第１コマンドと前記第２コマンドとを前記集積回路へ順に出力する出力手段と、を備える、
ことを特徴とするコマンド通信システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、集積回路に対するコマンドを送信するコマンド送信装置、コマンド送信プログラム、コマンド送信方法、及びコマンド通信システムに関する。
【背景技術】
【０００２】
特許文献１には、ＩＣ（Integrated Circuit）チップに対するデータの入出力を制御する情報処理システムが開示されている。この情報処理システムは、ＩＣチップに対するデータの入出力コマンドを生成するサーバと、サーバで生成されたコマンド及び当該コマンドに対するＩＣチップのレスポンスを中継するクライアントとで構成されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００７−６５９５７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ここで、特許文献１に係る情報処理システムでは、サーバで生成されるコマンド数が増加すると、ＩＣチップを制御するためにサーバクライアント間で行われる通信の回数が増加してしまうという問題があった。
【０００５】
そこで、本発明は、このような点に鑑み、その目的とするところは、コマンドの生成数が増加してもコマンドの通信回数の増加を抑制できるコマンド送信装置、コマンド送信プログラム、コマンド送信方法、及びコマンド通信システムを提供することにある。
【課題を解決するための手段】
【０００６】
上記目的を達成するため、本発明の第１の観点に係るコマンド送信装置は、
集積回路に対する第１コマンドを生成する第１コマンド生成ステップと、前記集積回路に対する第２コマンドを生成する第２コマンド生成ステップとを含む制御処理の実行手順が記載されたスクリプトを記憶するスクリプト記憶手段と、
前記スクリプトに含まれるステップが、前記第１コマンドに対する前記集積回路のレスポンスから独立した独立ステップであるか否かを、前記記憶されたスクリプトに記載された実行手順に従って判別するステップ判別手段と、
前記ステップが独立ステップであると判別された場合に、前記第１コマンド生成ステップの実行により生成される第１コマンドと、前記第２コマンド生成ステップの実行により生成される第２コマンドとを蓄積するコマンド蓄積手段と、
前記ステップが独立ステップでないと判別された場合に、前記コマンド蓄積手段に蓄積されているコマンドを送信する送信手段と、を備える、
ことを特徴とする。
【０００７】
第１の観点に係るコマンド送信装置において、
前記ステップ判別手段は、前記第１コマンドに対するレスポンスが前記第２コマンド生成ステップの実行に用いられない場合に、前記第２コマンド生成ステップが、前記第１コマンドに対するレスポンスから独立した独立ステップであると判別する、
としても良い。
【０００８】
第１の観点に係るコマンド送信装置において、
前記ステップ判別手段は、前記第１コマンドに対するレスポンスが繰返条件及び分岐条件のいずれか１つ以上に用いられない場合に、前記ステップが前記独立ステップであると判別する、
としても良い。
【０００９】
第１の観点に係るコマンド送信装置において、
前記記憶されたスクリプトを実行するスクリプト実行手段と、
前記独立ステップであると判別された中間ステップを前記スクリプト実行手段が実行する間において、前記中間ステップに含まれる前記第１コマンド生成ステップの実行によって生成された第１コマンドと、前記中間ステップに含まれる前記第２コマンド生成ステップの実行により生成された第２コマンドとを蓄積するコマンド蓄積手段と、をさらに備え、
前記送信手段は、前記独立ステップの実行が終了すると、前記蓄積された第１コマンドを、前記蓄積された第２コマンドと共に送信する、
としても良い。
【００１０】
第１の観点に係るコマンド送信装置において、
前記送信手段は、前記集積回路による前記第１コマンドの実行状態を表す実行状態情報と、前記実行状態に応じたアクションを定めるアクション定義情報とを前記第１コマンドと共に送信する、
としても良い。
【００１１】
また、第２の観点に係るコマンド送信プログラムは、
コンピュータを、
集積回路に対する第１コマンドを生成する第１コマンド生成ステップと、前記集積回路に対する第２コマンドを生成する第２コマンド生成ステップとを含む制御処理の実行手順が記載されたスクリプトを記憶するスクリプト記憶手段、
前記スクリプトに含まれるステップが、前記第１コマンドに対する前記集積回路のレスポンスから独立した独立ステップであるか否かを、前記記憶されたスクリプトに記載された実行手順に従って判別するステップ判別手段、
前記ステップが独立ステップであると判別された場合に、前記第１コマンド生成ステップの実行により生成される第１コマンドと、前記第２コマンド生成ステップの実行により生成される第２コマンドとを蓄積するコマンド蓄積手段、
前記ステップが独立ステップでないと判別された場合に、前記コマンド蓄積手段に蓄積されているコマンドを送信する送信手段、として機能させる、
ことを特徴としている。
【００１２】
また、第３の観点に係るコマンド送信方法は、
集積回路に対する第１コマンドを生成する第１コマンド生成ステップと、前記集積回路に対する第２コマンドを生成する第２コマンド生成ステップとを含む制御処理の実行手順が記載されたスクリプトを記憶するスクリプト記憶ステップと、
前記スクリプトに含まれるステップが、前記第１コマンドに対する前記集積回路のレスポンスから独立した独立ステップであるか否かを、前記記憶されたスクリプトに記載された実行手順に従って判別するステップ判別ステップと、
前記ステップが独立ステップであると判別された場合に、前記第１コマンド生成ステップの実行により生成される第１コマンドと、前記第２コマンド生成ステップの実行により生成される第２コマンドとを蓄積するコマンド蓄積ステップと、
前記ステップが独立ステップでないと判別された場合に、前記コマンド蓄積ステップにて蓄積したコマンドを送信する送信ステップと、を有する、
ことを特徴としている。
【００１３】
また、第４の観点に係るレスポンス送信装置は、
集積回路に対する第１コマンドを、前記集積回路に対する第２コマンドと共に受信する受信手段と、
前記受信された第１コマンドと第２コマンドとを前記集積回路へ出力する出力手段と、
前記出力された第１コマンドに対する前記集積回路の第１レスポンスと、前記出力された第２コマンドに対する前記集積回路の第２レスポンスとを入力する入力手段と、
前記入力された第１レスポンスを、前記第２レスポンスと共に送信する送信手段と、を備える、
ことを特徴としている。
【００１４】
また、第４の観点に係るレスポンス送信装置において、
前記入力手段は、前記出力された第１コマンドの前記集積回路による実行状態を表す実行状態情報を、さらに入力し、
前記受信手段は、前記第１コマンドと共に、前記第１コマンドの実行状態を表す実行状態情報と、前記実行状態に応じたアクションを定めるアクション定義情報とを対応付けて受信し、
前記入力された実行状態情報と対応付けて受信されたアクション定義情報で定められるアクションを実行するアクション実行手段、をさらに備える、
としても良い。
【００１５】
また、第４の観点に係るレスポンス送信装置において、
前記実行状態情報は、前記出力された第１コマンドに対する前記集積回路の実行が失敗した失敗状態を表す場合があり、
前記失敗状態を表す実行状態情報は、前記実行状態に応じたアクションを、前記第１コマンドの再出力動作と定めるアクション定義情報に対応付けられ、
前記アクション実行手段は、前記第１コマンドの実行が失敗した失敗状態を前記入力された実行状態情報が表す場合に、前記第１コマンドを再出力するように前記出力手段を制御する、
としても良い。
【００１６】
また、第４の観点に係るレスポンス送信装置において、
前記実行状態情報は、前記出力された第１コマンドに対する前記集積回路の実行が失敗した失敗状態を表す場合があり、
前記失敗状態を表す実行状態情報は、前記実行状態に応じたアクションを、前記第１コマンド及び前記第２コマンドの出力を中断する動作と定めるアクション定義情報に対応付けられ、
前記アクション実行手段は、前記第１コマンドの実行が失敗した失敗状態を前記入力された実行状態情報が表す場合に、前記第１コマンド及び第２コマンドの出力を中断するように前記出力手段を制御する、
としても良い。
【００１７】
また、第４の観点に係るレスポンス送信装置において、
前記出力手段は、前記第２コマンドよりも前記第１コマンドを先に出力し、
前記実行状態情報は、前記出力された第１コマンドに対する前記集積回路の実行が成功した成功状態を表す場合があり、
前記成功状態を表す実行状態情報は、前記実行状態に応じたアクションを、前記第１コマンドと共に受信された第２コマンドの出力動作と定めるアクション定義情報に対応付けられ、
前記アクション実行手段は、前記第１コマンドの実行が成功した成功状態を前記入力された実行状態情報が表す場合に、前記第２コマンドを出力するように前記出力手段を制御する、
としても良い。
【００１８】
また、第５の観点に係るレスポンス送信プログラムは、
コンピュータを、
集積回路に対する第１コマンドを、前記集積回路に対する第２コマンドと共に受信する受信手段、
前記受信された第１コマンドと第２コマンドとを前記集積回路へ出力する出力手段、
前記出力された第１コマンドに対する前記集積回路の第１レスポンスと、前記出力された第２コマンドに対する前記集積回路の第２レスポンスとを入力する入力手段、
前記入力された第１レスポンスを、前記第２レスポンスと共に送信する送信手段、として機能させる、
ことを特徴としている。
【００１９】
また、第６の観点に係るレスポンス送信方法は、
集積回路に対する第１コマンドを、前記集積回路に対する第２コマンドと共に受信する受信ステップと、
前記受信された第１コマンドと第２コマンドとを前記集積回路へ出力する出力ステップと、
前記出力された第１コマンドに対する前記集積回路の第１レスポンスと、前記出力された第２コマンドに対する前記集積回路の第２レスポンスとを入力する入力ステップと、
前記入力された第１レスポンスを、前記第２レスポンスと共に送信する送信ステップと、を有する、
ことを特徴としている。
【００２０】
また、第７の観点に係るコマンド通信システムは、
集積回路に対する第１コマンドを生成する第１コマンド生成ステップと、前記集積回路に対する第２コマンドを生成する第２コマンド生成ステップとを含む制御処理の実行手順が記載されたスクリプトを記憶するスクリプト記憶手段と、
前記スクリプトに含まれるステップが、前記第１コマンドに対する前記集積回路のレスポンスから独立した独立ステップであるか否かを、前記記憶されたスクリプトに記載された実行手順に従って判別するステップ判別手段と、
前記ステップが独立ステップであると判別された場合に、前記第１コマンド生成ステップの実行により生成される第１コマンドと、前記第２コマンド生成ステップの実行により生成される第２コマンドとを蓄積するコマンド蓄積手段と、
前記ステップが独立ステップでないと判別された場合に、前記コマンド蓄積手段に蓄積されているコマンドを送信する送信手段と、
前記送信された第１コマンドを前記第２コマンドと共に受信する受信手段と、
前記受信された第１コマンドと前記第２コマンドとを前記集積回路へ順に出力する出力手段と、を備える、
ことを特徴としている。
【発明の効果】
【００２１】
本発明に係るコマンド送信装置、コマンド送信プログラム、コマンド送信方法、及びコマンド通信システムによれば、コマンドの生成数が増加してもコマンドの通信回数の増加を抑制できる。また、本発明に係るレスポンス送信装置、レスポンス送信プログラム、及びレスポンス送信方法によれば、受信するコマンド数が増加してもコマンドに対するレスポンスの通信回数の増加を抑制できる。
【図面の簡単な説明】
【００２２】
【図１】（ａ）は、本発明の実施形態に係るコマンド通信システムの一構成例を表すシステム構成図である。（ｂ）は、サービス利用システムの一構成例を表すシステム構成図である。（ｃ）は、ＩＣカードの一構成例を表すハードウェア構成図である。
【図２】端末装置の一構成例を表すハードウェア構成図である。
【図３】（ａ）は、ＩＣ制御サーバの一構成例を表すハードウェア構成図である。（ｂ）は、ＩＣ制御サーバの一構成例を表す機能ブロック図である。
【図４】（ａ）は、コマンド通信システムでサービス提供前に通信されるデータの一例を説明するための図である。（ｂ）は、コマンド通信システムでサービス提供の要求時に通信されるデータの一例を説明するための図である。
【図５】（ａ）は、サービス提供サーバで実行されるサービス提供処理の一例を表すフローチャートである。（ｂ）は、サービス利用部で実行されるサービス利用処理の一例を表すフローチャートである。
【図６】（ａ）は、コマンド通信システムでＩＣ処理実行時に通信されるデータの一例を説明するための図である。（ｂ）は、コマンド通信システムでＩＣ処理実行後に通信されるデータの一例を説明するための図である。
【図７】端末装置の一構成例を表す機能ブロック図である。
【図８】（ａ）は、ＩＣチップアクセスモジュールで実行されるＩＣアクセス処理の一例の一部を表すフローチャートである。（ｂ）は、ＩＣチップ制御モジュールで実行されるＩＣ制御処理の一例を表すフローチャートである。
【図９】（ａ）は、一括送信されるコマンドの一例を表す図である。（ｂ）は、アクション種別の一例を説明するための図である。（ｃ）は、アクションの一例とアクション条件の一例とを説明するための図である。
【図１０】ＩＣチップアクセスモジュールで実行されるＩＣアクセス処理の一例の他部を表すフローチャートである。
【図１１】ＩＣ処理ロジック記憶部に記憶される電子ファイルの一例を表す図である。
【図１２】独立（非保留）ステップと従属（保留）ステップとの一例を表す図である。
【図１３】スクリプト実行部が実行するＩＣ処理の一例を表すフローチャートである。
【図１４】比較例に係るコマンド通信システムで行われる動作の一例を表すシーケンス図である。
【発明を実施するための形態】
【００２３】
以下、本発明の実施形態について添付図面を参照しつつ説明する。
【００２４】
本発明の実施形態に係るコマンド通信システム１は、コマンド通信システム１のユーザに対して所定のサービスを提供する。ここで、所定のサービスとは、例えば、電子マネーによる決済が完了したことを条件として、動画、静止画、又は音声を配信するサービス、電子文書を翻訳するサービス、若しくはユーザが購入した商品を配送するサービスなどを含む。
【００２５】
コマンド通信システム１は、図１（ａ）に示すように、通信網１０、サービス提供サーバ２０、サービス利用システム３１から３９、及びＩＣ（Integrated Circuit）制御システム４０で構成される。通信網１０は、例えば、インターネットなどのコンピュータ通信網で構成される。尚、サービス利用システム３１から３９は、それぞれ同様の構成であるため、サービス利用システム３１についてのみ説明を行う。また、コマンド通信システム１を構成するサービス利用システムの数は、９個に限定される訳ではない。
【００２６】
サービス提供サーバ２０は、上記所定のサービスを提供する。サービス利用システム３１は、ユーザによる上記所定のサービスの利用に用いられ、例えば、サービス提供サーバ２０から送信された動画や、翻訳された電子文書などを表示する。ＩＣ制御システム４０は、サービス利用システム３１のユーザが所有するＩＣカードの動作を制御するコマンドを生成し、生成したコマンドをサービス利用システム３１へ送信する。
【００２７】
サービス利用システム３１は、図１（ｂ）に示すように、ＩＣカード３１１、ＩＣカードＲ／Ｗ（Reader / Writer）３１２、端末装置３１３、及びルータ３１４で構成される。
【００２８】
ＩＣカード３１１は、図１（ｃ）に示すようなＩＣチップ３１１ａとアンテナ３１１ｂとで構成される。ＩＣチップ３１１ａは、例えば、電子マネーの残高を表す残高情報、電子マネーの種類を表す種類情報、ユーザを識別するユーザＩＤ、及びユーザ認証に用いられるパスワードを表すパスワード情報などを記憶する。ＩＣチップ３１１ａは、アンテナ３１１ｂでＩＣカードＲ／Ｗ３１２から受信されたコマンド（つまり、命令）に従って、記憶するデータに対する読出処理や更新処理を実行する。その後、ＩＣチップ３１１ａは、処理の実行結果を表す情報を、受信されたコマンドに対するレスポンス（つまり、応答）としてアンテナ３１１ｂからＩＣカードＲ／Ｗ３１２へ返信する。
【００２９】
ＩＣカードＲ／Ｗ３１２は、不図示のアンテナとコントロールボードとで構成される。ＩＣカードＲ／Ｗ３１２は、端末装置３１３から出力されたコマンドをＩＣカード３１１へ電波送信する。また、ＩＣカードＲ／Ｗ３１２は、ＩＣカード３１１から電波送信されたレスポンスを端末装置３１３へ出力する。
【００３０】
端末装置３１３は、本発明に係るレスポンス送信装置であり、例えば、パーソナルコンピュータで構成される。端末装置３１３は、ルータ３１４を介して受信したコマンドをＩＣカードＲ／Ｗ３１２へ出力する。その後、端末装置３１３は、出力したコマンドのレスポンスをＩＣカードＲ／Ｗ３１２から入力し、入力したレスポンスをルータ３１４へ出力する。
【００３１】
ルータ３１４は、通信網１０と端末装置３１３が接続するＬＡＮ（Local Area Network）とを相互接続し、端末装置３１３と通信網１０との間でコマンド及びレスポンスを含むデータを中継する。
【００３２】
図１（ｂ）で説明した端末装置３１３は、図２に示すようなＣＰＵ（Central Processing Unit）３１３ａ、ＲＯＭ（Read Only Memory）３１３ｂ、ＲＡＭ（Random Access Memory）３１３ｃ、ハードディスク３１３ｄ、メディアコントローラ３１３ｅ、ＬＡＮカード（Local Area Network）３１３ｆ、ビデオカード３１３ｇ、ＬＣＤ（Liquid Crystal Display）３１３ｈ、キーボード３１３ｉ、スピーカ３１３ｊ、マウス３１３ｋ、及びＵＳＢ（Universal Serial Bus）端子３１３ｌを備える。
【００３３】
ＣＰＵ３１３ａは、ＲＯＭ３１３ｂ又はハードディスク３１３ｄに保存されたプログラムに従ってソフトウェア処理を実行することで、端末装置３１３の全体制御を行う。ＲＡＭ３１３ｃは、ＣＰＵ３１３ａによるプログラムの実行時において、処理対象とする情報（つまり、データ）を一時的に記憶する。
【００３４】
ハードディスク３１３ｄは、各種の情報（つまり、データ）を保存した表（つまり、テーブル）を記憶する。尚、端末装置３１３は、ハードディスク３１３ｄの代わりに、フラッシュメモリを備えても良い。
【００３５】
メディアコントローラ３１３ｅは、記録媒体から各種のデータ及びプログラムを読み出す。尚、記録媒体は、フラッシュメモリ、ＣＤ（Compact Disc）、ＤＶＤ（Digital Versatile Disc）、及びブルーレイディスク（Blu-ray Disc）（登録商標）を含む。
【００３６】
ＬＡＮカード３１３ｆは、通信網１０を介して接続するサービス提供サーバ２０及びＩＣ制御システム４０との間でデータを通信（つまり、送受信）する。キーボード３１３ｉ及びマウス３１３ｋは、ユーザの操作に応じた信号を入力する。
【００３７】
ビデオカード３１３ｇは、ＣＰＵ３１３ａから出力されたデジタル信号に基づいて画像を描画（つまり、レンダリング）すると共に、描画された画像を表す画像信号を出力する。ＬＣＤ３１３ｈは、ビデオカード３１３ｇから出力された画像信号に従って画像を表示する。スピーカ３１３ｊは、ＣＰＵ３１３ａから出力された信号に基づいて音声を出力する。なお、端末装置３１３は、ＬＣＤ３１３ｈの代わりに、ＰＤＰ（Plasma Display Panel）又はＥＬ（Electroluminescence）ディスプレイを備えても良い。
【００３８】
ＵＳＢ端子３１３ｌは、ＩＣカードＲ／Ｗ３１３と接続し、ＩＣカードＲ／Ｗ３１３とＣＰＵ３１３ａとの間でデータ通信に用いられる。
【００３９】
図１（ａ）のＩＣ制御システム４０は、図１（ｂ）に示すようなＩＣ制御サーバ４０１、レイヤ２スイッチ（以下、Ｌ２ＳＷという）４０２、ロードバランサ４０３、ファイアウォール４０４、及びルータ４０５で構成される。
【００４０】
ＩＣ制御サーバ４０１は、本発明に係るコマンド送信装置であり、ＩＣチップ３１１ａに対するコマンドをＬ２ＳＷ４０２へ送信する。また、ＩＣ制御サーバ４０１は、出力したコマンドに対するレスポンスをＬ２ＳＷ４０２から受信する。ＩＣ制御サーバ４０１は、図３（ａ）に示すようなＣＰＵ４０１ａ、ＲＯＭ４０１ｂ、ＲＡＭ４０１ｃ、ハードディスク４０１ｄ、メディアコントローラ４０１ｅ、ＬＡＮカード４０１ｆ、ビデオカード４０１ｇ、ＬＣＤ４０１ｈ、キーボード４０１ｉ、スピーカ４０１ｊ、及びマウス４０１ｋを備える。図３（ａ）のＣＰＵ４０１ａからマウス４０１ｋは、図２（ａ）のＣＰＵ３１３ａからマウス３１３ｋと同様であるので説明を省略する。
【００４１】
図１（ｂ）のＬ２ＳＷ４０２は、例えば、スイッチングハブで構成され、ＩＣ制御サーバ４０１と通信網１０との間で通信されるデータを中継する。ロードバランサ４０３は、ＩＣ制御サーバ４０１の負荷を分散させる。ファイアウォール４０４は、ファイアウォール４０４よりもルータ４０５側のコンピュータネットワークと、ファイアウォール４０４よりもロードバランサ４０３側のコンピュータネットワークとの通信を制限する。ルータ４０５は、通信網１０とＩＣ制御サーバ４０１が接続するＬＡＮとを相互接続し、ＩＣ制御サーバ４０１と通信網１０との間でコマンド及びレスポンスを含むデータを中継する。
【００４２】
ここで、ＩＣ制御サーバ４０１が通信するコマンド及びレスポンスは、通常、数百バイト（Byte）である。このため、ＩＣ制御サーバ４０１と端末装置３１３との間でコマンド及びレスポンスを１回通信する場合に生じる総遅延時間の内で、コマンド及びレスポンスといった通信電文のサイズ（つまり、長さ）に依存した遅延時間は、例えば、平均５００ｋｂｐｓ（kilo bit per second）程度の速度で通信可能なブロードバンド環境においては１ｍｓ（millisecond）にも満たない。
【００４３】
これに対して、ルータ３１４、Ｌ２ＳＷ４０２、ロードバランサ４０３、ファイアウォール４０４、及びルータ４０５におけるデータ中継時間は、それぞれ５ｍｓ程度であり、通信網１０におけるデータ中継時間は、１０ｍｓから２０ｍｓ程度である。このため、コマンド及びレスポンスを１回通信する場合に生じる総遅延時間の内で、データ中継時間に依存した遅延時間は、約７０ｍｓから１４０ｍｓであり、通信電文のサイズに依存した遅延時間よりも大きい。
【００４４】
ここで、本実施形態に係るコマンド通信システム１の比較例であるコマンド通信システム９は、コマンド通信システム９のユーザへサービスを提供するために、図１４に示すようなシーケンスで情報処理を実行する。
先ず、コマンド通信システム９の端末装置９１３がユーザの操作に従って、ユーザに指定されたサービスの提供を求めるリクエストをサービス提供サーバ９２０へ送信する（以下、サービス提供要求実行という）（シーケンスＱ９１）。次に、サービス提供サーバ９２０は、受信したリクエストで提供を求められたサービスを提供する条件（以下、サービス提供条件という）を、ユーザの所有するＩＣチップ９１１ａに記憶されたデータが満足するか否かを判別するためのＩＣ処理を実行するように指示する（シーケンスＱ９２）。尚、本実施形態及び本実施形態の比較例において、サービス提供条件は、例えば、サービス提供に対する代金の決済が完了するという条件及びユーザ認証をクリアするという条件のいずれか１つ以上を含むとして良い。
【００４５】
その後、端末装置９１３は、実行を指示されたＩＣ処理の実行を依頼するリクエストをＩＣ制御サーバ９０１へ送信する（シーケンスＱ９３）。次に、ＩＣ制御サーバ９０１は、受信したリクエストで要求されるＩＣ処理を実行することで、例えば、ＩＣチップ９１１ａが記憶する電子マネーの種類情報を読み出すコマンド（つまり、ＩＣチップ９１１ａに対して種類情報を返信するように命じるコマンド）を生成し（シーケンスＱ９４）、生成されたコマンドを端末装置９１３へ送信する（シーケンスＱ９５）。その後、ＩＣ制御サーバ９０１は、端末装置９１３から応答があるまでスリープする。
【００４６】
端末装置９１３は、受信したコマンドをＩＣチップ９１１ａへ出力することで、ＩＣチップ９１１ａにコマンドを実行させる（シーケンスＱ９６）。その後、端末装置９１３は、ＩＣチップ９１１ａから、コマンドに対するレスポンスを取得し、取得したレスポンスを入力する（シーケンスＱ９７）。その後、端末装置９１３は、取得したレスポンスをＩＣ制御サーバ９０１へ返却する（シーケンスＱ９８）。
【００４７】
ＩＣ制御サーバ９０１は、レスポンスを受信すると、ＩＣ処理の実行を再開する。その後、ＩＣ制御サーバ９０１は、例えば、レスポンスから種類情報を抽出し、抽出した種類情報で表される電子マネーの種類がサービス提供に対する代金の決済に用いられるものであるか否かを判別するなどのレスポンスに対する解釈を行う（シーケンスＱ９９）。
【００４８】
その後、ＩＣ制御サーバ９０１は、シーケンスＱ９４からＱ９９までを複数回繰り返し、サービス提供条件が成立したか否かを判別する。次に、ＩＣ制御サーバ９０１は、ＩＣ処理の実行結果（つまり、サービス提供条件の成立に対する判別結果）を端末装置９１３へ返信する（シーケンスＱ１００）。
【００４９】
その後、端末装置９１３は、受信したＩＣ処理実行結果をサービス提供サーバ９２０へ通知する（シーケンスＱ１０１）。通知を受けたサービス提供サーバ９２０は、ＩＣ処理実行結果が、サービス提供条件が成立したと判別したという結果である場合に、端末装置９１３に対してサービスの提供を開始する（シーケンスＱ１０２）。
【００５０】
ここで、比較例のコマンド通信システム９の構成は、本実施形態のコマンド通信システム１のシステム構成と同様であるので、コマンド及びレスポンスを１回通信する場合に生じる総遅延時間の内で、データ中継時間に依存した遅延時間は、約７０ｍｓから１４０ｍｓである。このため、シーケンスＱ９４からＱ９９の繰り返し回数が１回増加する度に、シーケンスＱ９１でサービスの提供を要求してから、シーケンスＱ１０２でサービスの提供が開始するまでの時間が約７０ｍｓから１４０ｍｓずつ増加する。
【００５１】
以下、シーケンスＱ９４からＱ９９の繰り返し回数が増加しても、サービスの提供を要求してからサービスの提供が開始するまで（つまり、シーケンスＱ９１からＱ１０２まで）の遅延時間の増加を軽減できるコマンド通信システム１について説明を続ける。
【００５２】
図１（ａ）のサービス提供サーバ２０は、図４（ａ）に示すように、サービスの提供に先立って、サービス提供条件を決定した後に、決定されたサービス提供条件をサービス利用システム３１のユーザによって所有されるＩＣチップが満足するか否かを判別するために用いられるＩＣ処理の処理手順を記載したスクリプトを生成する（ステップＳ０１）。次に、サービス提供サーバ２０は、サービス提供サーバ２０が生成したＩＣ処理の処理ロジック（以下、ＩＣ処理ロジックという）を識別するＩＣ処理ロジックＩＤをＩＣ制御サーバ４０１が生成し、生成したＩＣ処理ロジックＩＤ送信する（以下、ＩＣ処理ロジックＩＤの払出しという）ように要求するリクエストをＩＣ制御サーバ４０１へ送信する。尚、ＩＣ制御サーバ４０１は、リクエストを受信し、受信したリクエストに応じてＩＣ処理ロジックＩＤの払出しを行う（ステップＳ０２）。その後、サービス提供サーバ２０は、ＩＣ処理ロジックＩＤを受信し、受信したＩＣ処理ロジックＩＤとＩＣ処理を記載したスクリプトとを対応付けてＩＣ制御サーバ４０１へ保存する（以下、ＩＣ処理ロジックの登録という）（ステップＳ０３）。また、サービス提供サーバ２０は、登録されたＩＣ処理ロジックのＩＣ処理ロジックＩＤと、ＩＣ処理ロジックに従ってサービス提供条件の成立を判別されるサービスを識別するサービスＩＤとを対応付けて記憶する。
【００５３】
サービス提供サーバ２０は、図５（ａ）に示すようなサービス提供処理をさらに実行する。サービス提供処理を開始すると、図４（ｂ）に示すように、端末装置３１３から、端末装置３１３のユーザが指定したサービスを提供するように求めるリクエスト（以下、サービス提供要求という）を受信する（ステップＳ１１）。次に、サービス提供サーバ２０は、サービス提供要求から、提供を求めるサービスのサービスＩＤを抽出した後に、抽出したサービスＩＤに対応付けられたＩＣ処理ロジックＩＤを検索する。その後、サービス提供サーバ２０は、検索したＩＣ処理ロジックＩＤを含む、サービス提供要求に対するレスポンスを生成する（ステップＳ１２）。次に、サービス提供サーバ２０は、生成されたレスポンスを端末装置３１３へ返信する（ステップＳ１３）。このレスポンスは、ＩＣ処理ロジックＩＤで識別されるＩＣ処理ロジックを記載したスクリプトを実行するように指示する（以下、ＩＣ処理実行指示という）。
【００５４】
その後、サービス提供サーバ２０は、図６（ｂ）に示すように、端末装置３１３からＩＣ処理ロジックＩＤで識別されるＩＣ処理ロジックを記載したスクリプトの実行結果（以下、ＩＣ処理実行結果という）を受信する（ステップＳ１４）。次に、サービス提供サーバ２０は、受信したＩＣ処理実行結果が、端末装置３１３を操作するユーザのＩＣチップ３１１ａがサービス提供条件を満足するという結果であるか否かを検証する（ステップＳ１５）。その後、サービス提供サーバ２０は、ＩＣ処理実行結果がサービス提供条件を満足するという結果である場合に、提供を求められたサービスの提供を端末装置３１３に対して開始し、そうでない場合にサービスの提供を拒否するメッセージを端末装置３１３へ送信する（以下、ＩＣ処理実行結果に基づいたサービス提供という）（ステップＳ１６）。その後に、サービス提供サーバ２０は、サービス提供処理の実行を終了する。
【００５５】
図１（ｂ）に示したサービスの利用に用いられる端末装置３１３のＣＰＵ３１３ａは、図２（ａ）のハードディスク３１３ｄに保存されたウェブブラウザプログラムを実行することで、ウェブブラウザを起動する。また、ＣＰＵ３１３ａは、ユーザに操作されたキーボード３１３ｉ又はマウス３１３ｋから取得する信号に基づいて、ユーザに指定されたサーバへ、ユーザに指定されたウェブページを返信するように求めるリクエストを送信するようにＬＡＮカード３１３ｆを制御する。ＣＰＵ３１３ａは、返信されたウェブページに含まれるＪａｖａ（登録商標）スクリプトなどをＬＡＮカード３１３ｆから取得し、取得したスクリプトに従って、図５（ｂ）に示すようなサービス利用処理を実行する。これにより、ＣＰＵ３１３ａは、図７に示すようなサービス利用部３３１として機能する。
【００５６】
また、ＣＰＵ３１３ａは、ハードディスク３１３ｄに保存されたドライバプログラムを実行することで、図７に示すような出力部３３２ａ及び入力部３３２ｂを含む入出力部３３２として機能する。
【００５７】
さらに、ＣＰＵ３１３ａは、ハードディスク３１３ｄに保存されたプログラムを用いて、図８（ａ）及び図１０に示すようなＩＣアクセス処理を実行する。これにより、ＣＰＵ３１３ａは、ＬＡＮカード３１３ｆ及びハードディスク３１３ｄと協働して、図７に示すようなＩＣチップアクセスモジュール３３３として機能する。
【００５８】
図５（ｂ）のサービス利用処理の実行を開始したサービス利用部３３１は、ユーザの操作に応じてキーボード３１３ｉ又はマウス３１３ｋから入力された信号に基づいて、ユーザが提供を指示するサービスを特定する。その後、サービス利用部３３１は、特定されたサービスのサービスＩＤを含むサービス提供要求を生成し、生成したサービス提供要求をサービス提供サーバ２０へ送信する（ステップＳ２１）。その後、サービス利用部３３１は、図５（ａ）のステップＳ１３で送信されたＩＣ処理ロジックＩＤを含むレスポンスをサービス提供サーバ２０から受信する（ステップＳ２２）。
【００５９】
その後、サービス利用部３３１は、受信したレスポンスからＩＣ処理ロジックＩＤを抽出する。次に、サービス利用部３３１は、図４（ｂ）に示すように、ＩＣチップアクセスモジュール３３３に対して、抽出されたＩＣ処理ロジックＩＤを引き渡し、図８（ａ）のＩＣアクセス処理を、引き渡したＩＣ処理ロジックＩＤを用いて実行させる（つまり、呼び出す）（図５のステップＳ２３）。その後、サービス利用部３３１は、スリープするなどしてサービス利用処理の実行を中断する。
【００６０】
図５（ｂ）のステップＳ２３の処理を実行した後に、サービス利用部３３１は、図６（ｂ）に示すように、ＩＣ処理ロジックＩＤを用いたＩＣアクセス処理の完了通知をＩＣチップアクセスモジュール３３３から受信すると（ステップＳ２４）、サービス利用処理の実行を再開する。その後、サービス利用部３３１は、ＩＣ処理ロジックＩＤで識別されるＩＣ処理ロジックに従ったＩＣ処理の実行結果を表す情報をＩＣチップアクセスモジュール３３３から取得する（ステップＳ２５）。
【００６１】
次に、サービス利用部３３１は、サービス提供サーバ２０に対してＩＣ処理の実行結果を表す情報を送信（通知）する（ステップＳ２６）。その後、サービス利用部３３１は、サービス提供サーバ２０からサービスの提供を拒否する旨のメッセージを受信した場合には、図２のＬＣＤ３１３ｈに、受信したメッセージを表示させ、サービスの提供を開始された場合には、提供されたサービスに基づく表示を行わせる（ステップＳ２７）。その後、サービス利用部３３１は、サービス利用処理の実行を終了する。
【００６２】
図５（ｂ）のステップＳ２３で呼出されたＩＣチップアクセスモジュール３３３は、図８に示すようなＩＣアクセス処理を実行する。
ＩＣアクセス処理の実行を開始すると、ＩＣチップアクセスモジュール３３３は、サービス利用部３３１からＩＣ処理ロジックＩＤを引き渡される。その後、ＩＣチップアクセスモジュール３３３は、引き渡されたＩＣ処理ロジックＩＤで識別されるＩＣ処理ロジックに従ったＩＣ処理を実行するように求めるリクエスト（つまり、ＩＣ処理実行依頼）を生成する。その後、図７に示すＩＣチップアクセスモジュール３３３の送信部３３３ｆは、図４（ｂ）に示すように、生成されたＩＣ処理実行依頼をＩＣ制御サーバ４０１へ送信する（ステップＳ３２）。
【００６３】
その後、ＩＣチップアクセスモジュール３３３の受信部３３３ａは、図６（ａ）に示すように、図９（ａ）に示すようなコマンドをＩＣ制御サーバ４０１から受信する（ステップＳ３３）。ここで、図９（ａ）のコマンドは、ＩＣ処理の実行により生成された第１コマンドと第２コマンドとを１つの電文としたコマンドである。１つの電文とされたコマンドは、それぞれ実行される順序を表す情報と対応付けられていても良いし、電文中の開始ビットを基準としたビット位置の前後関係によって実行順序を特定可能とされていても良い。尚、１つの電文とされるコマンドの数は、２つに限定される訳ではない。また、ステップＳ３３においては、２以上の電文が受信されても良い。この場合、２以上の電文のいずれか１つ以上が複数のコマンドを含んでいれば良い。
【００６４】
これらの構成によれば、第１コマンドを第２コマンドと共に受信するので、ＩＣ処理の実行によるコマンドの生成回数が増加しても、コマンドの受信回数の増加を軽減できる。
【００６５】
この第１コマンドは、図９（ａ）に示すように、例えば、エラー制御コードなどの制御情報に対応付けられて受信される。この制御情報は、図９（ｃ）に示すような、第１コマンドの実行状態を表す実行状態情報（例えば、エラーコードなど）に応じた端末装置３１３の動作（つまり、アクション）を定めるアクション定義情報と、アクションの実行条件を表す実行条件情報とを対応付けた情報である。この実行条件情報は、実行状態情報を含み、当該実行条件情報に対応付けられたアクション定義情報で表される動作を端末装置３１３が実行する条件を、第１コマンドの実行状態が当該実行状態情報で表される実行状態となるという条件に定める情報である。第２コマンドも同様である。図７に示すＩＣチップアクセスモジュール３３３のコマンド保存部３３３ｂは、受信した電文から抽出された各コマンドと、コマンドの制御情報とを対応付けて、コマンド記憶部３３３ｃへ保存する。尚、制御情報は、予めＩＣチップアクセスモジュール３３３のコマンド記憶部３３３ｃに記憶され、第１コマンドは、制御情報と別個に受信されるとしても良い。
【００６６】
アクション定義情報で定められるアクションは、図９（ｂ）の表に示すように、継続、リトライ、及び中断に種別される。継続とは、一括送信されてきたコマンドの内で、ＩＣカードＲ／Ｗ３１２へ直近に出力（つまり、発行）されたコマンドの次の実行順序のコマンドを発行することをいう。リトライとは、一括送信されてきたコマンドの内で、直近に発行されたコマンドと同じコマンドを発行することをいう。中断とは、一括送信されてきたコマンドの内で、直近に発行されたコマンドより後の実行順序のコマンドを発行せずに（さらに、直近に発行されたコマンドと同じコマンドを再度発行せずに）、既に発行したコマンドに対するレスポンスを返信することをいう。尚、制御コードは、例えば、種別に応じて先頭２バイトのバイト値がそれぞれ異なっている構成を採用できる。また、種別が継続の制御コードを継続コードといい、リトライの制御コードをリトライコードといい、中断の制御コードを中断コードという。
【００６７】
図９（ｃ）では、コマンドの実行状態が正常（つまり、実行成功）であることを表す実行状態情報’９０００’が入力されるという条件を表す実行条件情報に対して、直近で実行されたコマンドの次の実行順序のコマンドを発行するアクションを定めるアクション定義情報が対応付けられている。つまり、当該条件が成立した場合に、当該アクションを実行することが定められている。同様に、コマンドが処理の対象とするように命じた電子ファイルが、ＩＣチップ３１１ａに存在しない状態を表す実行状態情報’６Ａ８２’が入力されるという条件を表す実行条件情報に対して、処理を中断してコード’１００４’に対応した例外処理を実行するというアクションを定めるアクション定義情報が対応付けられている。さらに、コマンドの発行に失敗したことを表すエラーコードを検出するという条件を定める実行条件情報に対して、発行に失敗したコマンドの発行を所定の回数だけ繰り返すというアクションを定めるアクション定義情報が対応付けられている。
【００６８】
図８のステップ３３の処理を実行した後に、ＩＣチップアクセスモジュール３３３は、受信したコマンドの全てに対して図１０のステップＳ３５からＳ３９の処理を実行したか否かを判別する（ステップＳ３４）。このとき、ＩＣチップアクセスモジュール３３３は、全てのコマンドに対して処理を実行したわけではないと判別すると（ステップＳ３４；Ｎｏ）、処理の対象としていない（つまり、未処理の）コマンドの内で、最も実行順序が早いものを処理の対象とする（ステップＳ３５）。次に、ＩＣチップアクセスモジュール３３３のアクション実行部３３３ｅは、処理の再実行回数を計数するリトライカウンタに値’０’を代入することで初期化する（ステップＳ３６）。その後、ＩＣチップアクセスモジュール３３３は、入出力部３３２の出力部３３２ａを介してＩＣカードＲ／Ｗ３１２へ処理対象としたコマンド（以下、対象コマンドという）を出力することで、図６（ａ）に示すように、対象コマンドを発行する（ステップＳ３７）。その後、ＩＣカードＲ／Ｗ３１２は、図１（ｃ）のＩＣチップ３３１ａへ対象コマンドを送信する。ＩＣチップ３３１ａは、送信された対象コマンドを受信し、受信したコマンドに従った処理を実行する。ＩＣチップ３３１ａは、例えば、エラーコードなどの対象コマンドの実行状態情報を含むレスポンスをＩＣカードＲ／Ｗ３１２へ返信する。
【００６９】
図１０のステップＳ３７の後に、入力部３３２ｂは、ＩＣチップ３３１ａからＩＣカードＲ／Ｗ３１２を介してレスポンスを入力する。次に、ＩＣチップアクセスモジュール３３３は、図６（ａ）に示すように、入力部３３２ｂからレスポンスを入力する（ステップＳ３８）。その後、ＩＣチップアクセスモジュール３３３のアクション実行部３３３ｅは、受信したレスポンスから実行状態情報を抽出した後に（ステップＳ３９）、実行状態情報が対象コマンドの実行成功を表す成功コードであるか否かを判別する（ステップＳ４０）。このとき、アクション実行部３３３ｅは、実行状態情報が成功コードであると判別すると（ステップＳ４０；Ｙｅｓ）、ステップＳ３４から上記処理を繰り返す。これにより、アクション実行部３３３ｅは、実行順序が対象コマンドの次である未処理のコマンドが存在する場合には、当該未処理のコマンドを出力するように出力部３３２ａを制御する。
【００７０】
これらの構成によれば、第１コマンドの実行が成功した成功状態を表す実行状態情報は、第１コマンドの実行状態に応じたアクションを第２コマンドの再出力動作と定めるアクション定義情報に対応付けられている。このため、集積回路による第１コマンドの実行が成功すると、クライアント装置は、成功状態を表す実行状態情報に対応付けられたアクション定義情報に従って第２コマンドを出力するため、第１コマンドと第２コマンドとの実行順序、及び第１コマンドの実行結果によって第２コマンドの実行結果が変更されることを防止できる。
【００７１】
これに対して、アクション実行部３３３ｅが、実行状態情報は成功コードでないと判別すると（ステップＳ４０；Ｎｏ）、定義情報検索部３３３ｄは、発行された対象コマンドに対応付けて記憶されたエラー制御コードをコマンド記憶部３３３ｃから検索する（ステップＳ４１）。その後、アクション実行部３３３ｅは、検索されたエラー制御コードが継続コードであるか否かを判別する（ステップＳ４２）。このとき、アクション実行部３３３ｅは、エラー制御コードが継続コードであると判別すると（ステップＳ４２；Ｙｅｓ）、継続コードに従ってステップＳ３４から上記処理を繰り返す。これにより、アクション実行部３３３ｅは、実行順序が対象コマンドの次である未処理のコマンドが存在する場合には、当該未処理のコマンドを出力するように出力部３３２ａを制御する。
【００７２】
これに対して、アクション実行部３３３ｅは、エラー制御コードが継続コードでないと判別すると（ステップＳ４２；Ｎｏ）、検索されたエラー制御コードがリトライコードであるか否かを判別する（ステップＳ４３）。このとき、アクション実行部３３３ｅは、エラー制御コードがリトライコードであると判別すると（ステップＳ４３；Ｙｅｓ）、リトライカウンタの値を’１’だけインクリメントする（ステップＳ４４）。その後、アクション実行部３３３ｅは、リトライカウンタの値が、エラー制御コードを構成するアクション定義情報で表されるリトライ回数より多いか否かを判別する（ステップＳ４５）。このとき、アクション実行部３３３ｅは、リトライカウンタの値がリトライ回数以下であると判別すると（ステップＳ４５；Ｎｏ）、上記処理をステップＳ３７から再度繰り返す。これにより、アクション実行部３３３ｅは、対象コマンドを再度出力するように出力部３３２ａを制御する。
【００７３】
これに対して、アクション実行部３３３ｅは、リトライカウンタの値がリトライ回数より多いと判別すると（ステップＳ４４；Ｙｅｓ）、ステップＳ３４から再度繰り返す。これにより、アクション実行部３３３ｅは、実行順序が対象コマンドの次である未処理のコマンドが存在する場合には、当該未処理のコマンドを出力するように出力部３３２ａを制御する。
【００７４】
これらの構成によれば、第１コマンドの実行が失敗した失敗状態を表す実行状態情報は、第１コマンドの実行状態に応じたアクションを第１コマンドの再出力動作と定めるアクション定義情報に対応付けられている。このため、集積回路による第１コマンドの実行が失敗すると、クライアント装置は、失敗状態を表す実行状態情報に対応付けられたアクション定義情報に従って第１コマンドを再出力するため、受信した第１コマンドを確実に実行させることができる。
【００７５】
ステップＳ４３において、アクション実行部３３３ｅは、エラー制御コードがリトライコードでないと判別すると（ステップＳ４３；Ｎｏ）、エラー制御コードが中断コードであると判別し、中断コードを構成する１又は複数のアクション定義情報を抽出する。その後、アクション実行部３３３ｅは、実行状態情報で表される実行状態によって成立する実行条件を特定した後に、特定された実行条件を表す実行条件情報に対応付けられたアクション定義情報で定められる例外処理に従って例外動作（つまり、例外アクション）を行ってから、ＩＣアクセス処理の実行を終了する。これにより、アクション実行部３３３ｅは、対象コマンド及び実行順序が対象コマンドの次である未処理のコマンドを出力しないように出力部３３２ａを制御する。
【００７６】
これらの構成によれば、第１コマンドの実行が失敗した失敗状態を表す実行状態情報は、第１コマンドの実行状態に応じたアクションを第１コマンド及び第２コマンドの出力を中断する動作と定めるアクション定義情報に対応付けられている。このため、集積回路による第１コマンドの実行が失敗すると、クライアント装置は、失敗状態を表す実行状態情報に対応付けられたアクション定義情報に従って第１コマンド及び第２コマンドの出力を中断するため、例え、第１コマンドの実行が想定外の失敗であった場合であっても、集積回路の安全を確保できる。
【００７７】
ステップＳ３４において、ＩＣチップアクセスモジュール３３３が、全てのコマンドについて処理を実行したと判別した場合には（ステップＳ３４；Ｙｅｓ）、ＩＣチップアクセスモジュール３３３の送信部３３３ｆは、ステップＳ３８で入力された１又は複数のレスポンスを１つの電文としてＩＣ制御サーバ４０１へ一括送信する（ステップＳ４７）。尚、ステップＳ４７において、２以上の電文が送信されても良い。この場合、少なくとも１つ以上の電文に複数のレスポンスが含まれていればよい。
【００７８】
これらの構成によれば、第１コマンドを第２コマンドと共に受信するだけでなく、第１コマンドに対する集積回路（つまり、ＩＣ）のレスポンスと、第２コマンドに対する集積回路のレスポンスとを共に送信するため、コマンドの生成回数が増加しても、コマンドの受信回数の増加だけでなく、コマンドに対するレスポンスの送信回数の増加をも軽減できる。
【００７９】
図８のステップＳ４７の後に、ＩＣチップアクセスモジュール３３３の受信部３３３ａは、図６（ｂ）に示すように、返信したレスポンスを用いて実行されたＩＣ処理の実行結果をＩＣ制御サーバ４０１から受信する（ステップＳ４８）。その後、ＩＣチップアクセスモジュール３３３は、ＩＣ処理の実行完了をサービス利用部（ブラウザ）３３１へ通知する（ステップＳ４９）。その後、ＩＣチップアクセスモジュール３３３は、ＩＣ処理の実行結果をサービス利用部３３１へ出力した後に（ステップＳ５０）、ＩＣアクセス処理の実行を終了する。
【００８０】
図３（ａ）のＩＣ制御サーバ４０１のＣＰＵ４０１ａは、ハードディスク４０１ｄに保存されたプログラムを用いて、図８（ｂ）に示すようなＩＣ制御処理を実行する。これにより、ＣＰＵ４０１ａは、ＬＡＮカード４０１ｆ及びハードディスク４０１ｄと協働して、図３（ｂ）に示すようなＩＣチップ制御モジュール４１０として機能する。また、ＣＰＵ４０１ａは、ハードディスク４０１ｄと協働して、ＩＣ処理ロジック記憶部４２０として機能する。ＩＣチップ制御モジュール４１０は、受信部４１１、スクリプト登録部４１２、スクリプト検索部４１３、ステップ判別部４１４、スクリプト実行部４１５、コマンド蓄積部４１６、送信制御部４１７、及び送信部４１８で構成される。
【００８１】
図３（ｂ）のＩＣ処理ロジック記憶部４２０には、図１１に示されるような複数の電子ファイルが記憶されている。図１１のサービス定義ファイルは、ＩＣ処理定義ファイルで定義されるＩＣ処理又はＩＣ処理ロジックのＩＤやＩＣ処理などで用いられる認証方式などを定義する。ＩＣ処理定義ファイルは、ＩＣ処理のメインルーチンを記述する。ＩＣ処理のメインルーチンで呼び出される、コマンドを生成する関数又はサブルーチンは、ファンクション定義ファイルで定義（つまり、記述）されている。アクション定義ファイルは、関数又はサブルーチンの実行で生成されるコマンドに対応したエラー制御コードを定義する。ファイル定義ファイルは、コマンドで制御されるＩＣカード（つまり、ＩＣチップ）が記憶する電子ファイルの構成を記述する。フォーマット定義ファイルは、ＩＣカードが記憶する各ファイルのデータ構造を定義する。
【００８２】
図３（ｂ）のスクリプト登録部４１２は、図１（ａ）のサービス提供サーバ２０から受信したＩＣ処理ロジックＩＤをサービス定義ファイルに登録し、ＩＣ処理ロジックに従ったＩＣ処理の実行手順が記載されたスクリプトを、ＩＣ処理ロジックＩＤと対応付けてＩＣ処理定義ファイルに登録する。
【００８３】
図８（ｂ）のＩＣ制御処理の実行を開始すると、ＩＣチップ制御モジュール４１０の受信部４１１は、ＩＣ処理実行依頼を端末装置３１３から受信する（ステップＳ５１）。次に、スクリプト検索部４１３は、ＩＣ処理実行依頼からＩＣ処理ロジックＩＤを抽出した後に、ＩＣ処理ロジックＩＤに基づいて、ＩＣ処理ロジックＩＤで識別されるＩＣ処理ロジックに従ったＩＣ処理を記載したスクリプトをＩＣ処理ロジック記憶部４２０から検索する（ステップＳ５２）。その後、スクリプト検索部４１３は、図４（ｂ）に示すように、検索したスクリプトを記憶部４２０から読み込む（以下、ＩＣ処理ロジックを読み込むともいう）（ステップＳ５３）。
【００８４】
次に、ステップ判別部４１４は、読み込んだスクリプトに従ってＩＣ処理を実行するために使用される変数を管理する変数テーブルを、それぞれの変数に対してそれぞれの初期値を代入することで初期化する（ステップＳ５４）。その後、ステップ判別部４１４は、スクリプトに実行手順が記載されたＩＣ処理の処理ステップが独立ステップであるか、従属ステップであるかを判別する（ステップＳ５５）。
【００８５】
ここで、独立ステップとは、当該ステップより前に実行されるステップで生成されたコマンドに対するレスポンスから当該ステップの実行結果が独立したステップをいい、従属ステップとは、当該ステップより前に実行されるステップで生成されたコマンドに対するレスポンスに対して当該ステップの実行結果が従属（依存）したステップをいう。具体的には、従属ステップは、当該ステップより前に実行されるステップで生成されたコマンドに対するレスポンスを用いてコマンドを生成するステップ、及び当該レスポンスを分岐条件に用いるステップを含む。これに対して、独立ステップは、当該ステップより前に実行されるステップで生成されたコマンドに対するレスポンスを用いてコマンドを生成せず、当該レスポンスを分岐条件に用いないステップを含む。
【００８６】
具体例として、図１２（ａ）に示すような、スクリプトに記載されたＩＣ処理が、ステップ１からステップ６を順に実行する処理である場合を例に挙げて説明する。ステップ１、ステップ４、及びステップ６は、第１コマンド、第２コマンド、及び第３コマンドをそれぞれ生成する処理ステップである（以下、第１コマンド生成ステップ、第２コマンド生成ステップ、及び第３コマンド生成ステップという）。また、ステップ２、ステップ３、及びステップ５は、コマンドを生成するステップ及び条件文ステップのいずれでもない通常ステップである。尚、条件文ステップとは、条件分岐するステップ（例えば、if文又はswitch文）及び条件繰返しするステップ（例えば、while文、do while文、for文）を総称したものである。このため、図１２（ａ）のステップ１からステップ５までは、第１コマンドに対するレスポンス及び第２コマンドに対するレスポンスのいずれを受信していてもいなくとも、ステップの実行結果に違いが生じない。よって、ステップ１からステップ５は、独立ステップである。これに対して、ステップ６は、第１コマンドに対するレスポンスを用いて第３コマンドを生成するため、少なくとも第１コマンドに対するレスポンスを受信するまで実行を保留しなければ、保留しない場合とする場合とで、ステップの実行結果に違いが生じてしまう。よって、ステップ６は、従属ステップであり、保留ステップとも称される。
【００８７】
他の具体例として、図１２（ｂ）に示すような場合を例に挙げて説明する。ステップ１及びステップ４は、それぞれ第１コマンド生成ステップ及び第２コマンド生成ステップである。また、ステップ２、ステップ３、ステップ５、及びステップ６は、条件文ステップである。ステップ２及びステップ３は、第１コマンドに対するレスポンスを条件判断に用いないステップである。つまり、当該ステップより前に生成されるコマンドのレスポンスが当該ステップ以降の処理の流れに影響を与えない。同様に、ステップ５は、第１コマンドに対するレスポンス及び第２コマンドに対するレスポンスのいずれも条件判断に用いないステップである。このため、図１２（ｂ）のステップ１からステップ５までは、第１コマンドに対する第１レスポンス及び第２コマンドに対する第２レスポンスのいずれを受信していてもいなくとも、いずれか１つ以上を受信していても、当該ステップの実行結果に違いが生じない。よって、ステップ１からステップ５は、独立ステップであり、非保留ステップとも称される。これに対して、ステップ６は、第１コマンドに対するレスポンスを分岐条件の判断に用いるため、当該レスポンスが処理の流れに影響を与える。このため、少なくとも第１コマンドに対するレスポンスを受信するまで実行を保留しなければ、保留しない場合とする場合とで、ステップの実行結果に違いが生じてしまう。よって、ステップ６は、従属ステップであり、保留ステップである。
【００８８】
図８のステップＳ５５の処理を実行した後に、ＩＣチップ制御モジュール４１０は、ステップＳ５５の判別結果に基づいて、図１３に示すようなＩＣ処理を実行する（ステップＳ５９）。その後、ＩＣチップ制御モジュール４１０の送信部４１８は、ＩＣ処理の実行結果を表す情報を端末装置３１３へ返信した後に（ステップＳ６０）、ＩＣ制御処理の実行を終了する。
【００８９】
図１３のＩＣ処理が開始すると、ＩＣチップ制御モジュール４１０のスクリプト実行部４１５は、ＩＣ処理を構成する全ステップの実行が終了したか否かを判別する（ステップＳ６１）。このとき、スクリプト実行部４１５は、全ステップの実行が終了した訳ではないと判別すると（ステップＳ６１；Ｎｏ）、未処理のステップの内で、最も実行順序が先のステップを処理対象のステップ（以下、対象ステップという）とし、対象ステップが保留ステップ（つまり、従属ステップ）であるか否か（つまり、独立ステップであるか）を判別する（ステップＳ６２）。このとき、スクリプト実行部４１５が、対象ステップは保留ステップであると判別すると（ステップＳ６２；Ｙｅｓ）、図３（ｂ）の送信制御部４１７は、コマンド蓄積部４１６に蓄積されている１又は複数のコマンドを、図９（ａ）に示すように、それぞれのコマンドの種類に応じてエラー制御コードなどの制御情報と対応付ける。コマンドの種類毎に発生が予想されるコマンドの実行状態や実行状態に応じて端末装置３１３が実行すべき動作（つまり、アクション）が異なるためである。また、コマンドの種類毎に、コマンドのレスポンスがＩＣ処理の実行結果に与える影響が異なるためである。尚、制御情報は、予めコマンドの種類毎に対応付けられてコマンド蓄積部４１６に記憶されている。
【００９０】
その後、送信制御部４１７は、それぞれ対応付けられた１又は複数のコマンドと制御情報とを、コマンドの生成順序（つまり実行順序）を特定可能な状態で１つの電文として、端末装置３１３へ一括送信するように送信部４１８を制御する（ステップＳ６３）。尚、１つの電文とされるコマンドの数は、２つに限定される訳ではない。また、ステップＳ６３においては、２以上の電文が送信されても良い。この場合、２以上の電文のいずれか１つ以上が複数のコマンドを含んでいれば良い。
【００９１】
これらの構成によれば、スクリプトに記載された第１コマンド生成ステップから第２コマンド生成ステップまでの中間ステップが独立ステップであると判別されると、第１コマンドを第２コマンドと共に送信するため、コマンドの生成回数が増加しても、スクリプトの実行結果に対する変更を防止しながら、コマンドの送信回数の増加を軽減できる。
【００９２】
また、これらの構成によれば、コマンドと共に実行状態情報とアクション定義情報とを対応付けた制御情報を送信するため、通信回数の増加を抑制しながらコマンドの実行状態に応じて端末装置３１３に実行させるアクションを定めることができる。
【００９３】
図１３のステップＳ６３の後に、受信部４１１は、送信した１又は複数のコマンドに対する１又は複数のレスポンスを１つの電文として一括受信する（ステップＳ６４）。尚、１つの電文とされるレスポンスの数は、２つに限定される訳ではない。また、ステップＳ６４においては、２以上の電文が受信されても良い。この場合、２以上の電文のいずれか１つ以上が複数のレスポンスを含んでいれば良い。
【００９４】
ステップＳ６２において、スクリプト実行部４１５は、対象ステップが保留ステップでない（つまり、独立ステップである）と判別した場合（ステップＳ６２；Ｎｏ）、又はステップＳ６４を実行した後には、対象ステップを実行する（ステップＳ６５）。その後、スクリプト実行部４１５は、対象ステップの実行によりコマンドが生成されたか否かを判別する（ステップＳ６６）。このとき、スクリプト実行部４１５は、コマンドが生成されなかったと判別すると（ステップＳ６６；Ｎｏ）、ステップＳ６１から上記処理を繰り返す。これに対して、スクリプト実行部４１５は、コマンドが生成されたと判別すると（ステップＳ６６；Ｙｅｓ）、生成されたコマンドを送信せずに、一旦コマンド蓄積部４１６に、コマンドの生成順番を表す情報と対応付けて蓄積する、又は蓄積される位置（アドレス）の前後関係などから生成順番を特定可能に蓄積する（ステップＳ６７）。その後、スクリプト実行部４１５は、ステップＳ６１から上記処理を繰り返す。
【００９５】
これらの構成によれば、スクリプトに記載された制御処理の実行手順に従って制御処理を実行しながら第１コマンドと第２コマンドとを順番に生成し、生成した第１コマンドと第２コマンドとをそれぞれ蓄積した後に、第１コマンドと共に第２コマンドを送信する。このため、制御処理の実行順序を変更せず、制御処理の実行速度の低下を防止し、かつスクリプトの実行結果の変更を防止できる。
【００９６】
ステップＳ６１において、スクリプト実行部４１５は、全てのステップに対して処理を実行したと判別した場合には（ステップＳ６１；Ｙｅｓ）、スクリプト実行部４１５は、コマンド蓄積部４１６に蓄積されたまま送信されていないコマンドが存在するか否かを判別する（ステップＳ６８）。このとき、スクリプト実行部４１５がコマンド蓄積部４１６に未送信のコマンドが存在すると判別すると（ステップＳ６８；Ｙｅｓ）、送信制御部４１７は、ステップＳ６３と同様に、蓄積されている１又は複数のコマンドを１つの電文として、端末装置３１３へ一括送信するように送信部４１８を制御した後に（ステップＳ６９）、ＩＣ制御処理の実行を終了する。
【００９７】
最後に、コマンド通信システム１の動作について説明する。
図４（ａ）に示すように、サービス提供前において、サービス提供サーバ２０は、ステップＳ０１として説明したように、提供されるサービスのサービス提供条件の成立を判別するためのＩＣ処理ロジックを生成する。次に、サービス提供サーバ２０は、ステップＳ０２として説明したように、ＩＣ制御サーバ４０１のＩＣチップ制御モジュール４１０からＩＣ処理ロジックＩＤの払い出しをされる。その後、サービス提供サーバ２０は、ステップＳ０３として説明したように、払いだされたＩＣ処理ロジックＩＤと、当該ＩＤで識別されるＩＣ処理ロジックに従ったＩＣ処理のスクリプトとを対応付けて、ＩＣ制御サーバ４０１のＩＣ処理ロジック記憶部４２０に登録する。
【００９８】
ユーザがサービスの提供を求めると、図４（ｂ）に示すように、サービス提供サーバ２０は、ステップＳ１１として説明したように、端末装置３１３のサービス利用部３３１から、サービス提供要求を受信する。次に、サービス提供サーバ２０は、ステップＳ１１及びＳ１２として順に説明したように、提供を求められたサービスのサービス提供条件の成立を判別するためのＩＣ処理を実行するよう指示するＩＣ処理実行指示を生成し、生成したＩＣ処理実行指示をサービス利用部３３１へ返信する。サービス利用部３３１は、ステップＳ２３として説明したように、ＩＣチップアクセスモジュール３３３を呼び出す。次に、呼び出されたＩＣチップアクセスモジュール３３３は、ステップＳ３２として説明したように、ＩＣ処理の実行を求めるＩＣ処理実行依頼をＩＣ制御サーバ４０１のＩＣチップ制御モジュール４１０へ送信する。その後、ＩＣチップ制御モジュール４１０は、ステップＳ５３及びＳ５４として順に説明したように、依頼に従ってＩＣ処理ロジックに従ったＩＣ処理を記載したスクリプトを読み込み、読み込んだスクリプトに記載されたＩＣ処理で使用される変数テーブルを初期化する。
【００９９】
ＩＣ処理の実行が開始されると、図６（ａ）に示すように、ＩＣチップ制御モジュール４１０は、保留ステップ（つまり、従属ステップ）まで非保留ステップ（つまり、独立ステップ）をスクリプトに記載された順に実行する。次に、ＩＣチップ制御モジュール４１０は、ステップＳ３３として説明したように、非保留ステップの実行により生成及び蓄積された複数のコマンドを１つの電文として端末装置３１３へ一括送信する。端末装置３１３のＩＣチップアクセスモジュール３３３は、ステップＳ３７及びＳ３８として順に説明したように、一括送信されたコマンドが複数の場合には、送信されたコマンドの発行及びコマンドに対するＩＣカード３１１のレスポンスの入力を繰り返す。その後、ＩＣチップアクセスモジュール３３３は、ステップＳ４７として説明したように、入力された複数のレスポンスを１つの電文として一括返信する。
【０１００】
ＩＣ処理の実行が終了すると、図６（ｂ）に示すように、ＩＣチップアクセスモジュール３３３は、ステップＳ４８として説明したように、ＩＣ処理の実行結果を受信する。
次に、ＩＣチップアクセスモジュール３３３は、ステップＳ２４及びＳ２５として順に説明したように、サービス利用部３３１は、ＩＣチップアクセスモジュール３３３から、ＩＣ処理の実行完了通知を受信した後に、ＩＣ処理の実行結果を取得する。その後、サービス提供サーバ２０は、ステップＳ１４、Ｓ１５、及びＳ１６として順に説明したように、サービス利用部３３１からＩＣ処理の実行結果を受信し、実行結果を検証し、サービス提供条件が成立したか否かを判別し、サービス提供条件が成立したと判別するとサービス利用部３３１へサービスの提供を開始する。尚、サービス提供サーバ２０は、サービス提供条件が成立しなかったと判別するとサービス利用部３３１へのサービスの提供を拒否し、エラーメッセージを返信する。
【０１０１】
本実施形態において、端末装置３１３はＩＣカードＲ／Ｗ３１２に接続し、ＩＣカードＲ／Ｗ３１２は、端末装置３１３から出力されるコマンドに従って、端末装置３１３とは分離されているＩＣカード３１１に内蔵されたＩＣチップ３１１ａのデータを読み書きするとして説明した。しかしこれに限定される訳ではなく、端末装置３１３は、ＩＣチップ３１１ａを内蔵した携帯電話であり、ＩＣチップ３１１ａのデータを直接読み書きする構成を採用できる。
【０１０２】
なお、本発明に係る機能を実現するための構成を予め備えたコマンド送信装置又はレスポンス送信装置として提供できることはもとより、プログラムの適用により、既存のサーバ装置又は端末装置を本発明に係るコマンド送信装置又はレスポンス送信装置として機能させることもできる。すなわち、上記実施形態で例示したＩＣ制御サーバ４０１又は端末装置３１３による各機能構成を実現させるためのサーバプログラムを、既存のサーバ装置または端末装置を制御するコンピュータ（ＣＰＵなど）が実行できるように適用することで、本発明に係るコマンド送信プログラム又はレスポンス送信プログラムとして機能させることができる。
【０１０３】
このようなプログラムの配布方法は任意であり、例えば、メモリカード、ＣＤ−ＲＯＭ、又はＤＶＤ−ＲＯＭなどの記録媒体に格納して配布できる他、インターネットなどの通信媒体を介して配布することもできる。また、本発明に係るコマンド送信方法及びレスポンス送信方法は、本発明に係るコマンド送信装置であるＩＣ制御サーバ４０１及び本発明に係るレスポンス送信装置である端末装置３１３を用いて実施できる。
【０１０４】
以上本発明の好ましい実施形態について詳述したが、本発明は係る特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形、変更が可能である。
【符号の説明】
【０１０５】
１：コマンド通信システム
１０：通信網
２０：サービス提供サーバ
３１〜３９：サービス利用システム
４０：ＩＣ制御システム
３１１：ＩＣカード
３１１ａ：ＩＣチップ
３１１ｂ：アンテナ
３１２：ＩＣカードＲ／Ｗ
３１３：端末装置
３１３ａ：ＣＰＵ
３１３ｂ：ＲＯＭ
３１３ｃ：ＲＡＭ
３１３ｄ：ハードディスク
３１３ｅ：メディアコントローラ
３１３ｆ：ＬＡＮカード
３１３ｇ：ビデオカード
３１３ｈ：ＬＣＤ
３１３ｉ：キーボード
３１３ｊ：スピーカ
３１３ｋ：マウス
３１３ｌ：ＵＳＢ端子
３１４：ルータ
３３１：サービス利用部
３３２：入出力部
３３３：ＩＣチップアクセスモジュール
３３３ａ：受信部
３３３ｂ：コマンド保存部
３３３ｃ：コマンド記憶部
３３３ｄ：定義情報検索部
３３３ｅ：アクション実行部
３３３ｆ：送信部
４０１：ＩＣ制御サーバ
４０１ａ：ＣＰＵ
４０１ｂ：ＲＯＭ
４０１ｃ：ＲＡＭ
４０１ｄ：ハードディスク
４０１ｅ：メディアコントローラ
４０１ｆ：ＬＡＮカード
４０１ｇ：ビデオカード
４０１ｈ：ＬＣＤ
４０１ｉ：キーボード
４０１ｊ：スピーカ
４０１ｋ：マウス
４０２：Ｌ２ＳＷ
４０３：ロードバランサ
４０４：ファイアウォール
４０５：ルータ
４１０：ＩＣチップ制御モジュール
４１１：受信部
４１２：スクリプト登録部
４１３：スクリプト検索部
４１４：ステップ判別部
４１５：スクリプト実行部
４１６：コマンド蓄積部
４１７：送信制御部
４１８：送信部
４２０：ＩＣ処理ロジック記憶部
【図１】
0005662777.tif 000002
【図２】
0005662777.tif 000003
【図３】
0005662777.tif 000004
【図４】
0005662777.tif 000005
【図５】
0005662777.tif 000006
【図６】
0005662777.tif 000007
【図７】
0005662777.tif 000008
【図８】
0005662777.tif 000009
【図９】
0005662777.tif 000010
【図１０】
0005662777.tif 000011
【図１１】
0005662777.tif 000012
【図１２】
0005662777.tif 000013
【図１３】
0005662777.tif 000014
【図１４】
0005662777.tif 000015