"コンピュータに、ICカードに記憶された情報に基づいて実行されるシーケンス処理に際して関数の呼出しが行われた場合に、前記シーケンス処理として実行され得る複数の個別シーケンスごとに各個別シーケンス内で順に実行される関数と前記ICカードまたは前記ICカードを読み取るデバイスへの接続または解除処理の要否とを対応付けて記憶した記憶部を参照し、呼出しが行われた関数までのシーケンスと一致するシーケンスに基づいて前記接続または解除処理の要否を判定し、前記接続または解除処理の不要が判定された場合には、当該処理を行わずに前記関数を実行し、前記接続または解除処理の要が判定された場合には、当該処理を行って前記関数を実行する各処理を実行させることを特徴とするシーケンス処理プログラム。前記コンピュータに、さらに、前記記憶部に、前記呼出しが行われた関数までのシーケンスと一致するシーケンスがなかった場合には、当該関数以降に呼出しが行われた関数については、前記接続または解除処理を伴って前記関数を実行し、予め関数ごとに前記接続または解除処理の要否を規定した対応表に基づいて、実行した各関数について前記接続または解除処理の要否を判定し、前記実行した各関数を含むシーケンスを、各関数と前記接続または解除処理の要否とを対応付けて前記記憶部に格納する各処理をさらに実行させることを特徴とする請求項1に記載のシーケンス処理プログラム。前記コンピュータに、さらに、前記接続または解除処理を伴って前記関数を実行した場合には、当該処理後の前記ICカードまたは前記デバイスに対応する接続状態を保持し、前記接続または解除処理を行わずに前記関数を実行した場合には、当該処理を行ったものとして前記ICカードまたは前記デバイスに対応する接続状態を保持し、前記記憶部に、前記呼出しが行われた関数までのシーケンスと一致するシーケンスがなかった場合には、保持している接続状態となるように前記ICカードまたは前記デバイスに対応する接続または解除処理を実行した後に、前記呼出しが行われた関数を実行する各処理をさらに実行させることを特徴とする請求項2に記載のシーケンス処理プログラム。ICカードに記憶された情報に基づいて実行されるシーケンス処理の個別シーケンスごとに各個別シーケンス内で順に実行される関数と前記ICカードまたは前記ICカードを読み取るデバイスへの接続または解除処理の要否とを対応付けて記憶する記憶部と、前記シーケンス処理に際して関数の呼出しが行われた場合に、前記記憶部を参照し、呼出しが行われた関数までのシーケンスが一致するシーケンスに基づいて前記接続または解除処理の要否を判定する判定部と、前記判定部により前記接続または解除処理の不要が判定された場合には、当該処理を行わずに前記関数を実行し、前記接続または解除処理の要が判定された場合には、当該処理を行って前記関数を実行する実行部とを有することを特徴とするシーケンス処理装置。コンピュータが、ICカードに記憶された情報に基づいて実行されるシーケンス処理に際して関数の呼出しが行われた場合に、前記シーケンス処理として実行され得る複数の個別シーケンスごとに各個別シーケンス内で順に実行される関数と前記ICカードまたは前記ICカードを読み取るデバイスへの接続または解除処理の要否とを対応付けて記憶した記憶部を参照し、呼出しが行われた関数までのシーケンスが一致するシーケンスに基づいて前記接続または解除処理の要否を判定し、前記接続または解除処理の不要が判定された場合には、当該処理を行わずに前記関数を実行し、前記接続または解除処理の要が判定された場合には、当該処理を行って前記関数を実行する各処理を実行することを特徴とするシーケンス処理方法。上述したように、シーケンス処理において、アプリケーションプログラムにより呼び出された各関数は、リーダライタのオープンやクローズの処理の他、ICカードとの接続や接続解除の処理などを個別に実行する。このため、シーケンス処理では、各関数間で、リーダライタのオープン処理やクローズ処理、ICカードとの接続処理や接続解除処理が重複して実行される場合があり、処理が冗長となる結果、処理性能が低下するという問題があった。なお、上述した関数の呼出しに関連する技術を用いても、呼び出された関数のそれぞれに求められる処理は変わらないので、処理が冗長となることは避けられない。開示の技術は、上記に鑑みてなされたものであって、処理性能を改善することが可能なシーケンス処理プログラム、シーケンス処理装置およびシーケンス処理方法を提供することを目的とする。本願の開示するシーケンス処理プログラムは、一つの態様において、コンピュータに、ICカードに記憶された情報に基づいて実行されるシーケンス処理に際して関数の呼出しが行われた場合に、次の各処理を実行させる。前記シーケンス処理として実行され得る複数の個別シーケンスごとに各個別シーケンス内で順に実行される関数と前記ICカードまたは前記ICカードを読み取るデバイスへの接続または解除処理の要否とを対応付けて記憶した記憶部を参照させる。続いて、呼出しが行われた関数までのシーケンスが一致するシーケンスに基づいて前記接続または解除処理の要否を判定させる。続いて、前記接続または解除処理の不要が判定された場合には、当該処理を行わずに前記関数を実行し、前記接続または解除処理の要が判定された場合には、当該処理を行って前記関数を実行させる。本願の開示する技術の一つの態様によれば、処理性能を改善できる。以下に、図面を参照しつつ、本願の開示するシーケンス処理プログラム、シーケンス処理装置およびシーケンス処理方法の一実施形態について説明する。以下の実施例では、シーケンス処理の一例として署名処理を例に説明する。なお、関数に基づきリーダライタのオープンやクローズの処理の他、ICカードとの接続や接続解除の処理などの一連の所定単位のシーケンス処理を行うシステム又はプログラムも同様である。後述する実施例は一実施形態にすぎず、本願の開示するシーケンス処理プログラム、シーケンス処理装置およびシーケンス処理方法を限定するものではない。また、後述する各実施例は処理内容に矛盾を生じさせない範囲で適宜組み合わせることもできる。[署名装置の構成実施例1]図1は、実施例1に係る署名装置の構成を示す機能ブロック図である。なお、図1に示す署名装置200は、関数に基づきリーダライタのオープンやクローズの処理の他、ICカードとの接続や接続解除の処理などの一連の所定単位のシーケンス処理の一例として、署名処理を実行する装置であり、シーケンス処理装置の一例である。図1に示すように、実施例1に係る署名装置200は、リーダライタ100と接続する。なお、署名装置200は、例えば、パーソナルコンピュータ、携帯電話装置、PHSPersonalHandyphoneSystem端末、スマートフォン、PDAPersonalDigitalAssistantなどのコンピュータである。また、リーダライタ100は、署名装置200と有線通信もしくは無線通信によって接続されるか、署名装置200に内蔵されてもよい。リーダライタ100は、接触型または非接触型のICIntegratedCircuitカードに記憶されている情報を読み取ったり書き込んだりするデバイスである。例えば、リーダライタ100は、近距離無線通信によって、非接触型のICカードに対して情報の読み書きを行う。署名装置200は、リーダライタ100を介して、ICカードに記憶されている情報を取得し、取得した情報を用いて、PKIPublicKeyInfrastructureに基づく署名処理などを行う。例えば、署名装置200が、ウェブブラウザを介して外部のサーバに接続する際に、ICカードの情報を用いて接続認証に関する署名処理を行う場合がある。そのほか、署名装置200が、ICカードの情報を用いてアプリケーション利用時のユーザ認証に関する署名処理を行う場合がある。例えば、Windows登録商標のOSOperatingSystemが搭載された署名装置200は、CryptoAPICryptographicAPIというWindows標準のインターフェースを有する。そして、署名装置200は、上位のアプリケーションの要求に応じて、CryptoAPIの下で、CSPCryptoServiceProviderというカード固有のライブラリを動作させることによって署名処理を行う。CSPは、CryptoAPIの実処理を担い、例えば、暗号化やハッシュ値の計算を行う。また、CSPは、例えば、ICカードを提供するベンダによって作成され、ICカードに依存した処理を実行する。また、署名装置200には、複数のCSPがインストールされ得る。また、図1に示すように、署名装置200は、入力部210と、出力部220と、記憶部230と、制御部240とを有する。入力部210は、キーボードやマウス、タッチパッドなどの入力デバイスを有し、各種情報の入力を受け付ける。出力部220は、モニタやディスプレイなどの出力デバイスを有し、各種情報の出力を受け付ける。なお、出力部220は、入力部210が有するキーボードやマウスなどの入力デバイスと協働したポインティングデバイス機能を実現することができる。また、図1に示すように、記憶部230は、記録データ231、シーケンスパターンデータ232、関数フラグ対応表データ233および状態乖離記録データ234を記憶する。なお、記憶部230は、例えば、RAMRandomAccessMemoryやフラッシュメモリflashmemoryなどの半導体メモリ素子により実装できる。記憶部230には、記録データ231として、後述する制御部240により署名処理として実行され得るシーケンスごとにシーケンス内で順に実行される各関数の情報が、呼出し元のモジュール名に対応付けて記憶される。なお、署名処理として実行され得るシーケンスとは、該当する署名処理について呼出しが行われた開始関数から終了関数までの一連の処理を意味する。なお、終了関数についての処理が完了しても、次の関数の呼出しが所定の時間内、例えば、1分以内に行われれば、同一のシーケンスとして取り扱うものとする。以下、図2を用いて、記憶部230に記憶される記録データの一例について説明する。図2は、記録データの一例を示す図である。なお、図2に示す記録データは、制御部240により署名処理において呼び出しが行われた各関数のある時点の呼出しの経過を示すものとする。図2に示すように、記録データ231は、呼出しモジュール名、プロセスID、モード、使用回数、最終使用日、終了時刻、関数名および回数カウントの複数のデータ項目を有する。呼出しモジュール名は、署名処理において関数の呼出しを行うアプリケーションを特定する情報である。図2に示すように、呼出し元モジュール名のデータ項目には、例えば、.exeが記憶されている。プロセスIDは、実行中である署名処理を特定するための情報である。図2に示すように、プロセスIDのデータ項目には、例えば、29346が記憶されている。モードは、署名処理において動作するモードを特定する情報であり、システム上、比較モード、記録モード、終了の3つのモードがある。図2に示すように、モードのデータ項目には、比較モードを示す比較が記憶されている。なお、比較モード、記録モード、終了の各モードについては制御部240の説明で後述する。使用回数は、シーケンスパターンとして使用された回数を特定する情報である。なお、使用回数は、記録データの記憶時に使用されず、後述するシーケンスパターンとなった際に利用されるデータ項目であるので、図2に示すように、何も記憶されていない。最終使用日は、シーケンスパターンとして使用された最終の日付を特定する情報である。なお、最終使用日は、使用回数と同様に、記録データの記憶時に使用されず、後述するシーケンスパターンとなった際に利用されるデータ項目であるので、図2に示すように、何も記憶されていない。終了時刻は、同一のプロセスIDが付与された署名処理において終了関数の呼出しが行われた時刻を特定する情報である。なお、終了時刻は、図2は、署名処理において終了関数の呼出しが行われる前の途中経過を表しているので、図2に示すように、現時点では何も記憶されていない。関数名は、CSPの処理において呼出しが行われた関数名を特定する情報である。図2に示すように、関数名のデータ項目には、現時点で、開始関数である1CPAcquireContextから順に、2CPCreateHash、3CPHashData、4CPSignHashの4つの関数名が記憶されている。回数カウントは、署名処理において呼出しが行われた関数のうち、繰り返し呼出しが行われた関数の呼出し回数を示す情報である。図2に示すように、関数名4CPSignHashに対応する回数カウントのデータ項目には、現時点で、2が記憶されている。なお、図2には、関数名のみを順に記憶する場合の一例を示しているが、関数名と関数を呼び出すためのパラメータとの組合せを順に記憶するようにしてもよい。また、記憶部230には、シーケンスパターンデータ232として、署名処理として実行され得る複数の個別シーケンスごとに各シーケンス内で順に実行される関数と、ICカードまたはリーダライタ100への接続または解除処理の要否とが対応付けて記憶される。このシーケンスパターンデータ232は、後述する制御部240による一致判定に用いられる。一致判定の処理については後述する。なお、署名処理において終了関数の呼出しから一定時間が経過することにより、署名処理に伴って逐次記憶された上述の記録データが一連の処理シーケンスを表すシーケンスパターンデータ232となる。以下、図3を用いて、記憶部230に記憶されるシーケンスパターンデータの一例について説明する。図3は、シーケンスパターンデータの一例を示す図である。なお、図3には、図2に示すような記録データ231に基づいて作成されるシーケンスパターンを示す。例えば、図2に示すような記録データ231がシーケンスとしての条件を満足すれば、記録データ231から別スレッドとして立ち上げられてシーケンスパターンデータ232として記憶される。なお、シーケンスパターンデータ232の元となった記録データ231は記憶部231から削除してもよい。図3に示すように、シーケンスパターンデータ232は、パターンID、呼出しモジュール名、プロセスID、モード、使用回数、最終使用日、終了時刻および関数名の複数のデータ項目を有する。パターンIDは、シーケンスパターンを特定する情報である。図3に示すように、パターンIDのデータ項目には、例えば、000001が記憶されている。なお、呼出しモジュール名、プロセスID、モード、使用回数、最終使用日、終了時刻および関数名は、上述した記録データと同様の情報である。図3に示すように、呼出しモジュール名のデータ項目には、例えば、.exeが記憶されている。また、図3に示すように、プロセスIDのデータ項目には、例えば、29346が記憶されている。また、図3に示すように、モードのデータ項目には、終了が記憶されている。また、図3に示すように、使用回数のデータ項目には、例えば、1回が記憶されている。なお、図3には、使用回数として1が記憶されているので、図3に示すシーケンスパターンデータ232が、署名処理において、後述する一致判定に1度使用されたことになる。また、図3に示すように、最終使用日のデータ項目には、例えば、2011/1/1が記憶されている。なお、図3には、最終使用日として2011/1/1が記憶されているので、図3に示すシーケンスパターンデータ232が、署名処理において、後述する一致判定に2011年1月1日に最後に使用されたことになる。また、図3に示すように、終了時刻のデータ項目には、例えば、2010/1/112:00:00が記憶されている。また、関数名のデータ項目には、開始関数から終了関数まで9つの関数名が順に記憶されている。図3に示すように、1CPAcquireContext、2CPCreateHash、3CPHashData、4CPGetHashParam、5CPDestroyHash、6CPCreateHash、7CPSignHash、8CPDestroyHash、9CPReleaseContextの各関数名が順に記憶されている。そして、図3に示すように、シーケンスパターンデータ232には、各関数名ごとに、ICカードまたはリーダライタ100への接続処理または接続解除処理の要否を示すフラグが対応付けて記憶されている。さらに、図3に示すように、シーケンスパターンデータ232には、関数名に対応付けて回数任意の関数であるか否かを示すフラグが対応付けて記憶されている。なお、RWオープンはリーダライタ100のオープン処理、言い換えればリーダライタ100への接続処理を示す。RWクローズはリーダライタ100のクローズ処理、言い換えればリーダライタ100との接続解除処理を示す。なお、以下では、リーダライタ100への接続処理をオープン処理と表記し、リーダライタ100との接続解除処理をクローズ処理と表記するものとする。また、カードオープンはICカードへのアクセスについてのオープン処理、言い換えればICカードへの接続処理を示す。カードクローズはICカードへのアクセスについてのクローズ処理、言い換えればICカードとの接続解除処理を示す。なお、以下では、ICカードに対する処理を、接続処理および接続解除処理と表記するものとする。また、回数任意は、繰り返し実行される回数に関わらず、1つの関数として取り扱う関数を示す。そして、フラグが1である場合には該当の処理を実行することを意味し、フラグが0である場合には該当の処理を実行しないことを意味する。例えば、図3に示すシーケンスパターンデータでは、関数名1CPAcquireContextに対応付けて、RWオープンに関するフラグ1が記憶されている。一方、図3に示すシーケンスパターンデータでは、関数名1CPAcquireContextに対応付けて、RWクローズ、カードオープン、カードクローズ、回数任意に関するフラグ0が記憶されている。このため、関数名1CPAcquireContextの処理では、リーダライタ100のオープン処理を実行することとなる。一方で、関数名1CPAcquireContextの処理では、リーダライタ100のクローズ処理、ICカードの接続処理および接続解除処理を実行しない。なお、図2や図3に示す各種データは一例であり、そのデータ形式は任意のものを採用することができる。また、記憶部230には、関数フラグ対応表データ233として、予め関数ごとに、ICカードまたはリーダライタ100への接続または解除処理の要否を規定したデータが記憶される。この関数フラグ対応表データ233は、後述する制御部240によるシーケンスパターンデータの生成に用いられる。シーケンスパターンデータの生成については後述する。以下、図4を用いて、関数フラグ対応表データ233の一例について説明する。図4は、関数フラグ対応表データの一例を示す図である。図4に示すように、関数フラグ対応表データ233は、関数名のデータ項目に記憶された各関数名ごとに、RWオープン、RWクローズ、カードオープン、カードクローズおよび回数任意の各データ項目のデータが対応付けて記憶されている。例えば、関数フラグ対応表データ233には、関数名ごとに、RWオープン、RWクローズ、カードオープン、カードクローズおよび回数任意について、1または0のフラグが記憶されている。図4に示すように、関数フラグ対応表データ233には、関数名CPAcquireContextについて、例えば、RWオープンに対するフラグとして1が記憶され、RWクローズ、カードオープンおよびカードクローズに対するフラグとして0が記憶されている。つまり、関数フラグ対応表データ233は、関数名CPAcquireContextの処理にて、RWオープンの処理を行い、RWクローズ、カードオープンおよびカードクローズの処理を行わないことを予め規定している。また、図4に示すように、関数フラグ対応表データ233には、関数名CPAcquireContextについて、例えば、回数任意に対するフラグとして0が記憶されている。つまり、関数フラグ対応表データ233は、関数名CPAcquireContextが回数任意ではないことを予め規定している。なお、関数フラグ対応表データは、例えば、CSPとともに、ICカードを提供するベンダによって作成され、CSPとともに、署名装置200にインストールされる。また、記憶部230には、状態乖離記録データ234が記憶されている。この状態乖離記録データ234には、ICカードまたはリーダライタ100への接続または解除処理を伴って関数を実行した場合には、当該処理後のICカードまたはリーダライタ100との接続状態を保持するためのデータを含んでいる。さらに、この状態乖離記録データ234には、ICカードまたはリーダライタ100への接続または解除処理を行わずに関数を実行した場合に、当該処理を行ったものとしてICカードまたはリーダライタ100との接続状態を保持するためのデータを含んでいる。この状態乖離記録データ234は、後述する制御部240によるリカバリ処理に用いられる。リカバリ処理については後述する。以下、図5を用いて、状態乖離記録データ234の一例について説明する。図5は、状態乖離記録データの一例を示す図である。図5に示すように、状態乖離記録データ234には、シーケンスパターンデータ232に従って関数の処理を実行した後の、リーダライタ100との接続状況が現状のステータスとして記憶されている。また、図5に示すように、状態乖離記録データ234には、シーケンスパターンデータ232に従わずに関数の処理を実行したと仮定した場合の、リーダライタ100との仮想的な接続状況が本来のステータスとして記憶されている。また、図5に示すように、状態乖離記録データ234には、ICカードについても、リーダライタ100の場合と同様に、現状のステータスと本来のステータスとが記憶されている。ここで、図5に示す状態乖離記録データ234において、ICカードについての現状のステータスはオープン接続となっている。これに対し、図5に示す状態乖離記録データ234において、ICカードについての本来のステータスはクローズ接続解除となっている。つまり、上述したシーケンスパターンデータ232に従って関数の処理を行った場合には、関数の処理に含まれるRWオープン、RWクローズ、カードオープン、カードクローズのうち実行されないものが出てくる可能性がある。このとき、状態乖離記録データ234を参照すれば、リーダライタ100やICカードとの現在の接続状況と本来の接続状況との乖離を把握することができる。制御部240は、図1に示すように、判定部241および実行部242を有する。また、制御部240は、例えば、上述したCryptoAPIやCSPなどを有する。判定部241および実行部242は、例えば、ベンダから提供されるCSPごとに、CSPの機能として実現される。なお、制御部240は、例えば、電子回路や集積回路により実装することができる。電子回路としては、例えば、CPUCentralProcessingUnitやMPUMicroProcessingUnitがある。また、集積回路としては、例えば、ASICApplicationSpecificIntegratedCircuitやFPGAFieldProgrammableGateArrayなどがある。制御部240は、記憶部230に記憶されている定義情報を参照して、署名処理に際して呼出しが行われる関数について、開始関数、終了関数および回数任意関数を定義するものとする。なお、定義情報は、ICカードを提供するベンダによって作成され、CSPとともに署名装置200にインストールされる。そして、この定義情報は、記憶部230に予め記憶される。図6は、予め定義される開始関数、終了関数および回数任意関数の一例を示す図である。図6に示すように、定義情報には、開始関数、終了関数および回数任意関数と、各関数に対応する関数名とが対応付けて記憶されている。例えば、図6に示す定義情報には、CPAcquireContextが開始関数として予め定義され、CPReleaseContextが終了関数として予め定義され、CPSignHashが回数任意関数として予め定義される。CPAcquireContextは、リーダライタ100のオープン処理を実行する関数である。CPReleaseContextは、リーダライタ100のクローズ処理を実行する関数である。CPSignHashは、例えば、ハッシュ値を計算する関数である。判定部241は、ICカードに記憶された情報に基づいて実行される署名処理に際して関数の呼出しが行われた場合に、記憶部230のシーケンスパターンデータ232を参照して、ICカードまたはリーダライタ100への接続または解除処理の要否を判定する。まず、判定部241は、システムのモードが比較モードであるか否かを判定する。判定部241は、比較モードである場合には、呼出しが行われた関数までのシーケンスが一致するシーケンスパターンデータ232を記憶部230から取得する。続いて、判定部241は、取得したシーケンスパターンデータ232を参照し、呼出しが行われた関数の処理においてICカードまたはリーダライタ100への接続処理または解除処理の要否を判定する。例えば、呼び出された関数がCPAcquireContextであり、一致するシーケンスパターンデータ232として図3に示すデータを取得したとする。この場合、判定部241は、図3に示すシーケンスパターンデータ232にて、関数名CPAcquireContextに対応付けられているRWオープン、RWクローズ、カードオープン、カードクローズおよび回数任意のフラグを参照する。判定部241は、RWオープンのフラグが1であるので、関数CPAcquireContextの処理においてリーダライタ100のオープン処理を実行する。このとき、判定部241は、関数CPAcquireContextの処理において、リーダライタ100のオープン処理を実行することを示すフラグopen=trueをセットする。また、判定部241は、RWクローズ、カードオープンおよびカードクローズのフラグが0であるので、関数CPAcquireContextの処理においてRWクローズ、カードオープンおよびカードクローズの処理を実行しない。このとき、判定部241は、関数CPAcquireContextの処理において、リーダライタ100のクローズ処理を実行しないことを示すフラグclose=falseをセットする。同様に、判定部241は、関数CPAcquireContextの処理において、ICカードの接続処理を実行しないことを示すフラグopen=falseをセットする。同様に、判定部241は、関数CPAcquireContextの処理において、ICカードの接続解除処理を実行しないことを示すフラグclose=falseをセットする。また、判定部241は、回数任意のフラグが0であるので、関数CPAcquireContextを回数任意関数として取り扱わない。そして、判定部241は、セットしたフラグを踏まえて関数の処理を実行するように、実行部242に指示する。また、判定部241は、呼出しが行われた関数までのシーケンスが一致するシーケンスパターンデータ232が記憶部230にない場合には、リカバリ処理を実行するように、実行部242に指示する。また、判定部241は、システムのモードが比較モードではない場合には、記録モードであるものとして、関数の処理を実行するように実行部242に指示する。実行部242は、判定部241からの指示に従って関数の処理を実行する。また、実行部242は、判定部241からの指示に応じてリカバリ処理を実行する。例えば、実行部242が、判定部241からフラグを踏まえて関数の処理を実行するように指示を受けた場合について説明する。実行部242は、呼出しが行われた関数が終了関数である場合には、終了処理1を実行する。以下、実行部242が実行する終了処理1について説明する。例えば、シーケンスパターンデータ232と完全一致で終わった場合には、実行部242は、まず、既存のシーケンスパターンの使用回数のデータ項目を更新1だけインクリメントし、最終使用日のデータ項目を更新し、終了時刻のデータ項目を更新する。続いて、実行部242は、シーケンスパターンデータ232を並び変えて、モードを終了に変更し、終了処理1を完了する。また、呼出しが行われた関数が終了関数ではあるが、シーケンスパターンデータ232側に続きがある場合には、実行部242は、まず、現在の記録データ231をシーケンスの1パターンとして保存する。続いて、実行部242は、モードを比較モードから終了に変更し、図4に示す関数フラグ対応表を元に、シーケンスの1パターンとして保存した記録データ231とフラグとを対応付けたシーケンスパターンデータ232を作成する。なお、記録データ231からシーケンスパターンデータ232を作成する際、終了関数の次に開始関数がある場合、実行部242は、リーダライタ100のクローズ処理とオープン処理のフラグを0にする。なお、実行部242は、最終使用日が新しいものほど上位にくるように、シーケンスパターンデータ232を並び替えて記憶部230に格納するが、最終使用日が同一のものがある場合には使用回数が多いものを上位となるようにする。そして、実行部242は、判定部241によりセットされたフラグを踏まえて関数の処理を実行する。また、実行部242が、判定部241からリカバリ処理を実行するように指示を受けた場合について説明する。実行部242は、システムのモードを比較モードから記録モードに変更する。続いて、実行部242は、記憶部230の状態乖離記録データ234を取得し、取得した状態乖離記録データ234に基づいてリカバリ処理を実行する。なお、リカバリ処理については、図7を用いて後述する。また、実行部242が、判定部241から関数の処理を実行するように指示を受けた場合について説明する。実行部242は、呼出しが行われた関数が終了関数である場合には、終了処理2を実行する。以下、実行部242が実行する終了処理2について説明する。実行部242は、上述した終了処理1と同様に、例えば、現在の記録データ231をシーケンスパターンとして保存する。このとき、実行部242は、使用回数のデータ項目を更新1を記録し、最終使用日のデータ項目を記録し、終了時刻のデータ項目を記録し、モードを比較モードから終了に変更する。続いて、実行部242は、図4に示す関数フラグ対応表を元に、保存した記録データ231とフラグとを対応付けたシーケンスパターンデータ232を作成して、作成したシーケンスパターンデータ232を記憶部230に格納する。続いて、実行部242は関数の処理を実行する。ここで、図7を用いて、上述した判定部241および実行部242による処理の一例を説明する。図7は、シーケンスパターンにより省略される処理の一例を示す図である。図7の左側には、ある署名処理におけるシーケンスを示す。図7の右側には、図7の左側に示すシーケンスに含まれる関数の処理が、シーケンスパターンデータ232により一部省略されたシーケンスを示す。なお、図7に示すシーケンスには、アプリシーケンス単位1、リーダアクセス単位2およびカードアクセス単位3のアクセス単位を明記する。例えば、関数Aの呼出しが行われると、判定部241は、関数Aを開始関数として有するシーケンスパターンデータ232を取得する。そして、判定部241は、取得したシーケンスパターンデータ232に従い、関数Aの処理においてリーダライタOPENを実行するようにフラグをセットする。実行部242は、判定部241によりセットされたフラグを踏まえて、図7の右側に示すように、関数Aの処理リーダライタOPENを実行する。関数Aに続いて、関数Bの呼出しが行われると、判定部241は、関数Bまでのシーケンス関数A→関数Bが一致するシーケンスパターンデータ232を取得する。そして、判定部241は、取得したシーケンスパターンデータ232に従い、関数Bの処理においてカード接続を実行し、カード接続解除を実行しないようにフラグをセットする。実行部242は、判定部241によりセットされたフラグを踏まえて、図7の右側に示すように、関数Bの処理においてカード接続を実行し、カード接続解除を実行しない。このようにすることで、図7の左側に示すシーケンスに含まれる関数の処理のうち、図7の右側に示す各関数におけるカード接続、カード接続解除、リーダライタOPEN,リーダライタCLOSEなどの複数の処理4が省略される。続いて、図7を用いて、リカバリ処理について説明する。例えば、判定部241は、関数Bに続いて、関数Fの呼出しが行われると、関数Fまでのシーケンス関数A→関数B→関数Fが一致するシーケンスパターンデータ232を取得する。このとき、判定部241は、一致するシーケンスパターンデータ232がない場合には、リカバリ処理を実行するように実行部242に指示する。実行部242は、比較モードを記録モードに変更した後、関数Fの直前に呼び出された関数Bの処理のうち、実行したものとして省略した関数Fの呼出し直前の処理をリカバリ処理として実行する。例えば、図7に示すように、関数Bの処理のうち、関数Fの呼出し直前の処理カード接続解除を実行する。続いて、実行部242は、関数Fの処理を実行する。このようにリカバリ処理を実行することで、以後の署名処理において、リーダライタ100やICカードとの接続状態を保持する。[実施例1による処理]次に、図8を用いて、実施例1に係る署名装置200による処理の流れを説明する。図8は、実施例1に係る署名装置による処理の流れを示す図である。以下に説明する図8に示す処理では、未だシーケンスパターンデータ232が登録されていない場合や、開始関数に該当するシーケンスパターンデータ232が登録されていない場合、システム内部を記録モードに移行させる。そして、図8に示す処理では、開始関数の呼出し後、終了関数まで呼出しが行われるまで、一連の処理とみなせる各関数を実行順に記録し、記録された関数に基づいてシーケンスパターンデータ232を作成する。また、図8に示す処理では、開始関数に該当するシーケンスパターンデータ232が既に登録されている場合、システム内部を比較モードに移行させる。そして、図8に示す処理では、開始関数から順に各関数をシーケンスパターンデータ232と比較し、呼出しが行われた関数までのシーケンスと一致するシーケンスパターンデータ232に基づいて、ICカードやリーダライタ100への接続の要否を判定する。なお、以下では、説明の便宜から、上述の記録データ231をシーケンス記録と表記し、上述のシーケンスパターンデータ232をシーケンスパターンと表記する。図8に示すように、判定部241は、関数の呼出しがあったか否かの判定を行うS101。関数の呼出しがない場合にはS101No、同判定を繰り返し行う。判定部241は、関数の呼出しがあった場合にはS101Yes、呼出し元モジュール名ごとに関数名を追記するS102。すなわち、判定部241は、呼出元モジュール名とプロセスIDをキーにシーケンス記録を作成する。例えば、関数名がCPHashDataである関数の呼出しがあったとする。この場合、判定部241は、記憶部230のシーケンス記録を参照し、関数の呼出しを行った呼出元モジュール名.exe、および該当処理のプロセスID29346が一致するシーケンス記録を検索する。例えば、現時点のシーケンス記録が上述した図2の状態である場合には、一致するシーケンス記録が検索できるので、判定部241は、既にある図2のシーケンス記録に関数名CPHashDataを追記する。なお、判定部241は、関数名がCPSignHashの関数の呼出しが行われた場合には、この関数が図6に定義される回数任意関数であるので、図2に示すシーケンス記録の回数カウントを、例えば、1→2に更新し、関数名CPSignHashの追記は行わない。一方、一致するシーケンス記録が検索できなかった場合には、判定部241は、関数の呼出しを行った呼出元モジュール名および該当処理のプロセスIDに対応付けてシーケンス記録を新規に作成し、記憶部230に格納する。続いて、判定部241は、呼ばれた関数が開始関数か否かの判定を行うS103。例えば、判定部241は、図6に示し定義情報に基づいて、呼び出された関数の関数名がCPAcquireContextと一致するか否かを判定する。判定部241は、呼ばれた関数が開始関数である場合にはS103Yes、同一呼出しモジュール名かつ同じプロセスIDのシーケンス記録が残っているか否かの判定を行うS104。例えば、判定部241は、呼出元モジュール名が.exeで、プロセスID29346であるシーケンス記録が記憶部230に残っているか否かを判定する。判定部241は、同一呼出しモジュール名かつ同じプロセスIDのシーケンス記録が残っている場合にはS104Yes、直前に呼ばれた関数処理の終了時刻から1分以内か否かの判定を行うS105。例えば、判定部241は、記憶部230に残っているシーケンス記録の終了時刻を参照し、内部タイマなどが示す現時刻と終了時刻とを比較して、現時刻が、シーケンス記録の終了時刻から1分以内であるか否かを判定する。すなわち、判定部241は、S105の判定により、今回のリーダアクセスを前回のリーダアクセスとひとまとまりの処理とみなすかどうかを判定している。ここで、リーダアクセスとは、開始関数の処理から終了関数の処理が完了するまでのリーダライタへのアクセスに該当する。また、ひとまとまりの処理とは、同一のアプリケーションプログラムにより行われる一連の処理とみなせる処理に該当する。判定部241は、終了時刻から1分以内である場合にはS105Yes、直前のシーケンスパターンを複製し、モードを終了から比較モードに戻してシーケンス記録を作成するS106。例えば、仮に、図6に示す終了関数CPReleaseContextの呼出しが行われた時刻から1分以内に、同一呼出しモジュール名かつ同じプロセスIDの関数の呼出しが行われたものとする。この場合には、判定部241は、直前に作成されたシーケンスパターンを複製し、モードのデータ項目を比較モードに戻して、この複製データをシーケンス記録として復活させて、関数名の追記を行い、記憶部230に記憶する。続いて、判定部241は、現在のモードが比較モードであるか否かの判定を行うS107。判定部241は、比較モードである場合にはS107Yes、呼出し元モジュール名に対応するシーケンスパターンを取得するS108。例えば、呼出し元モジュール名が.exeであれば、呼出し元モジュール名が.exeであるシーケンスパターンを全て取得する。続いて、判定部241は、取得したシーケンスパターンと、シーケンス記録とが一致するか否かの判定を行うS109。例えば、現時点でのシーケンス記録が上述の図2の状態であり、取得したシーケンスパターンが上述の図3の状態であるとする。この場合、シーケンス記録の関数名1CPAcquireContext、2CPCreateHash、3CPHashData、4CPSignHashと、シーケンスパターンの関数名1CPAcquireContext、2CPCreateHash、3CPHashData、4CPGetHashParamとが一致しない。よって、判定部241は、取得したシーケンスパターンとシーケンス記録とを順に比較した結果、一致しない旨の判定を行うこととなる。ここで、判定部241は、取得したシーケンスパターンとシーケンス記録とを順に比較し、一致するシーケンスパターンを検出した時点で、S109の判定結果をYesとし、次の処理に進むようにしてもよい。また、判定部241は、シーケンス記録とシーケンスパターンの比較を行うたびに、一致するシーケンスパターンのみを残していき、次の比較では残ったシーケンスパターンとの比較を行うようにしてもよい。判定部241は、シーケンス記録と一致するシーケンスパターンがある場合にはS109Yes、シーケンスパターンに従ってフラグをセットするS110。すなわち、判定部241は、シーケンスパターンに沿って、リーダライタ100やリーダライタ100に挿入されるICカードのオープン処理やクローズ処理を省略できるようにフラグをセットする。例えば、判定部241は、呼び出された関数が関数名CPAcquireContextの関数である場合には、シーケンスパターンにおいて関数名CPAcquireContextに対応付けられているフラグを参照する。そして、判定部241は、関数名CPAcquireContextの関数の処理のうち、実行する処理についてはフラグTrueをセットし、実行せずにスキップする処理についてはフラグfalseをセットする。例えば、図3に示すシーケンスパターンでは、RWオープンに関するフラグのみが1となっている。そこで、判定部241は、リーダライタ100のオープン処理についてはフラグtrueをセットし、リーダライタ100のクローズ処理、ICカードの接続処理および接続解除処理についてはフラグfalseをセットする。また、関数名CPAcquireContextに対応する回数任意に関するフラグは0となっている。よって、判定部241は、関数名CPAcquireContextの関数の処理は回数任意ではないものとして取り扱う。続いて、実行部242は、呼ばれた関数が終了関数だった場合には、終了処理1を実行しS111、終了関数ではなかった場合には後述するS112の処理にそのまま移行する。終了処理1は、シーケンス記録の終了処理に該当する。例えば、シーケンスパターンと完全一致で終わった場合には、実行部242は、まず、既存のシーケンスパターンの使用回数のデータ項目を更新し、最終使用日のデータ項目を更新し、終了時刻のデータ項目を更新する。例えば、図2に示すようなシーケンス記録の各関数名と、図3に示すようなシーケンスパターンの各関数名とが完全に一致した場合には、シーケンスパターンの使用回数を1インクリメントし、最終使用日を現在の日付に更新し、終了時刻を現時刻に更新する。続いて、実行部242は、最終使用日が新しいものほど上位にくるように、シーケンスパターンを並び変えてモードを終了に変更し、終了処理1を完了する。なお、実行部242は、最終使用日が同一のものがある場合には使用回数が多いものを上位となるようにシーケンスパターンを並び変える。また、シーケンスパターン側に続きがある場合には、実行部242は、まず、現在のシーケンス記録をパターンとして保存してモードを終了に変更する。つまり、実行部242は、シーケンス記録を、比較してきたシーケンスパターンとは異なる新たなパターンとして立ち上げる。そして、実行部242は、新たに立ち上げたパターンに含まれる各関数に対して、関数フラグ対応表を元にフラグを対応付けたシーケンスパターンを作成する。なお、実行部242は、シーケンス記録からシーケンスパターンを作成する際、終了関数の次に開始関数がある場合、リーダライタ100のクローズ処理とオープン処理のフラグを0にする。また、実行部242は、作成したシーケンスパターンを、最終使用日が新しいものほど上位にくるように並び替えて記憶部230に格納するが、最終使用日が同一のものがある場合には使用回数が多いものを上位となるように並び替えて格納する。続いて、実行部242は、フラグを踏まえて関数の処理を実行するS112。例えば、実行部242は、本来の処理ではICカードの接続解除処理を行うべきところで、カードオープンについてセットされたフラグがclose=falseとなっている場合には、ICカードの接続解除処理を行わずにスキップするようにする。そして、実行部242は、状態乖離記録データ234を更新してS113、処理を終了する。なお、上述したS109において、判定部241は、シーケンス記録と一致するシーケンスパターンがない場合にはS109No、モードを比較モードから記録モードに変更するS114。続いて、実行部242は、状態乖離記録データ234に基づいて、リカバリ処理を決定しS115、決定したリカバリ処理を実行するS116。例えば、実行部242は、関数名CPHashDataの関数の呼出しがあった時点で、シーケンス記録とシーケンスパターンが不一致となった場合には、シーケンス記録を参照し、関数名CPHashDataの関数の直前に呼び出された関数CPCreateHashを特定する。そして、実行部242は、関数名CPCreateHashの関数の処理の中から、関数名CPHashDataの関数の呼出し直前に実行すべきであった処理をリカバリ処理として実行する。なお、S115の処理は、一つ前に呼ばれた関数までは、蓄積されたシーケンスパターンとシーケンス記録とが一致していたが、今呼ばれた関数から、シーケンスパターンとシーケンス記録とが一致しなくなった場合の処理に該当する。つまり、シーケンスパターンと一致することを前提にリーダライタ100やリーダライタ100に挿入されるICカードのオープン処理やクローズ処理を省略してきているので、一致しなくなった時点で処理を本来の状態元の状態に戻す趣旨である。続いて、実行部242は、呼ばれた関数が終了関数だった場合には、終了処理2を実行するS117。終了処理2は、基本的には、上述した終了処理1と同様であり、シーケンス記録の終了処理に該当する。例えば、実行部242は、現在のシーケンス記録をパターンとして保存する。このとき、実行部242は、使用回数のデータ項目に0を記録し、最終使用日のデータ項目を記録し、終了時刻のデータ項目を記録し、モードを終了に変更する。続いて、実行部242は、関数フラグ対応表を元に、パターンとフラグとを対応付けたシーケンスパターンを作成して、作成したシーケンスパターンを記憶部230に格納する。そして、実行部242は、関数の処理を実行してS118、処理を終了する。なお、S118において実行される関数の処理は、実行すべき全ての処理をそのまま実行する。なお、上述したS107において、判定部241は、比較モードでない場合にはS107No、記録モードであるものとして、上述したS117の処理に移行する。なお、上述したS103において、判定部241は、呼ばれた関数が開始関数ではない場合にはS103No、上述したS107の処理に移行する。なお、上述したS104において、判定部241は、同一呼出しモジュール名かつ同じプロセスIDのシーケンス記録が残っていない場合にはS104No、上述したS107の処理に移行する。なお、上述したS105において、判定部241は、終了時刻から1分以内ではない場合にはS105No、上述したS107の処理に移行する。[実施例1による効果]上述してきたように、署名装置200は、呼出しが行われた関数までのシーケンスと一致するシーケンスパターンに基づいて、ICカードやリーダライタ100への接続の要否を判定する。そして、署名装置200は、ICカードやリーダライタ100への接続の不要が判定された場合には、当該処理を行わずに、呼出しが行われた関数を実行する。一方、署名装置200は、ICカードやリーダライタ100への接続の要が判定された場合には、当該処理を行って、呼出しが行われた関数を実行する。このようなことから、実施例1によれば、署名処理における各関数間で重複して実行されるリーダライタ100のオープン処理やクローズ処理、ICカードとの接続処理や接続解除処理を省略できるので、結果として、処理性能を改善できる。また、署名装置200は、現時点までに呼出しが行われた関数のシーケンスと、1つ前の関数までは一致していたシーケンスパターンとが一致しなくなった場合には、関数フラグ対応表を元に、現時点までのシーケンスから新たなシーケンスパターンを生成する。このようなことから、実施例1によれば、署名処理において、上位のアプリケーションやアプリケーションバージョンに応じて発生し得る複数の異なるシーケンスから、新たなシーケンスパターンとして動的に生成できる。また、署名装置200は、呼出しが行われた関数までのシーケンスと、1つ前の関数まで一致していたシーケンスパターンとが一致しなくなった場合には、状態乖離記録データ234に基づいてリカバリ処理を実行する。このようなことから、以後の署名処理において、リーダライタ100やICカードとの接続状態を保持することでき、結果として、以後の署名処理を確実に実施できる。以下、本願の開示するシーケンス処理プログラム、シーケンス処理装置およびシーケンス処理方法の他の実施形態を説明する。1装置構成等例えば、図1に示した署名装置200の機能ブロックの構成は概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。例えば、図1に示した制御部240の判定部241および実行部242を機能的または物理的に統合してもよい。このように、例えば、図1に示した署名装置200の機能ブロックの全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散または統合して構成することができる。2署名処理プログラムまた、上述の実施例にて説明した署名装置200により実行される各種の処理は、例えば、電子回路や集積回路などを有するコンピュータで所定のプログラムを実行することによって実現できる。そこで、以下では、図9を用いて、上述の実施例にて説明した署名装置200により実行される処理と同様の機能を実現する署名処理プログラムを実行するコンピュータの一例を説明する。図9は、署名処理プログラムを実行するコンピュータの一例を示す図である。図9に示すように、コンピュータ300は、例えば、メモリ301と、CPUCentralProcessingUnit302を有する。また、コンピュータ300は、図9に示すように、ハードディスクドライブインタフェース303と、光ディスクドライブインタフェース304を有する。また、コンピュータ300は、図9に示すように、シリアルポートインタフェース305と、ビデオアダプタ306と、リーダライタインタフェース307を有する。そして、コンピュータ300は、これらの各部301~307をバス308によって接続する。メモリ301は、図9に示すように、ROMReadOnlyMemory及びRAMRandomAccessMemoryを含む。ROMは、例えば、BIOSBasicInputOutputSystem等のブートプログラムを記憶する。ハードディスクドライブインタフェース303は、図9に示すように、ハードディスクドライブ309に接続される。光ディスクドライブインタフェース304は、図9に示すように、光ディスクドライブ310に接続される。例えば、光ディスクドライブ310には、光ディスク等の着脱可能な記憶媒体が挿入される。シリアルポートインタフェース305は、図9に示すように、例えば、マウス400およびキーボード500に接続される。ビデオアダプタ306は、図9に示すように、例えば、ディスプレイ600に接続される。リーダライタインタフェース307は、図9に示すように、例えば、リーダライタ100に接続される。ここで、図9に示すように、ハードディスクドライブ309は、例えば、OSOperatingSystem、アプリケーションプログラム、プログラムモジュール、プログラムデータを記憶する。すなわち、開示の技術に係る署名処理プログラムは、コンピュータ300によって実行される指令が記述されたプログラムモジュールとして、例えばハードディスクドライブ309に記憶される。つまり、上述の実施例で説明した制御部240と同様の処理を実行する手順が記述されたプログラムモジュールが、ハードディスクドライブ309に記憶される。例えば、このプログラムモジュールには、上述した図8に示す処理と同様の処理を実行する手順が記述されている。また、署名処理プログラムによる処理に用いられるデータは、プログラムデータとして、例えばハードディスクドライブ309に記憶される。例えば、このプログラムデータは、上述の実施例で説明した記憶部230に記憶される各種情報に対応する。そして、CPU302が、ハードディスクドライブ309に記憶されたプログラムモジュールやプログラムデータを必要に応じてRAMに読み出し、上述の実施例で説明したものと同様の処理図8を実行するための手順を実行する。なお、署名処理プログラムに係るプログラムモジュールやプログラムデータは、ハードディスクドライブ309に記憶される場合に限られるものではなく、例えば、着脱可能な記憶媒体である光ディスクドライブ310等に記憶されていてもよい。この場合には、CPU302が、光ディスクドライブ310を介して、署名処理プログラムに係るプログラムモジュールやプログラムデータを読み出す。あるいは、署名処理プログラムに係るプログラムモジュールやプログラムデータは、ネットワークLANLocalAreaNetwork、WANWideAreaNetwork等を介して接続された他のコンピュータに記憶されていてもよい。この場合には、CPU302が、所定のネットワークインタフェースなどを介して、署名処理プログラムに係るプログラムモジュールやプログラムデータを読み出す。なお、CPU302の代わりに、例えば、MPUMicroProcessingUnitなどの電子回路、ASICApplicationSpecificIntegratedCircuitやFPGAFieldProgrammableGateArrayなどの集積回路を用いることもできる。また、メモリ301の代わりに、フラッシュメモリflashmemoryなどの半導体メモリ素子を用いることもできる。"