(57)【要約】【課題】通信インターフェースを確実に一致させる。【解決手段】ＩＣカード１２は、通信インターフェース３１−１乃至３１−Ｎを備えている。コマンド回数設定部４２は、乱数生成部４１が生成した乱数を用いて、各通信インターフェース３１のコマンドの受信回数を設定する。インターフェース選択部４３は、設定された回数だけ、その時点で設定されている通信インターフェース３１で、リーダライタ１１からのコマンドを処理したが、処理できなかった場合、他の通信インターフェース３１に切り換える。このように、受信回数を基準として通信インターフェース３１が切り換えられ、コマンドが処理できる通信インターフェース３１が設定される。本発明は、非接触で通信を行うＩＣカードなどに適用できる。【選択図】図１
2010181950.tif 000002
【特許請求の範囲】
【請求項１】
他の装置からのコマンドを受信する受信手段と、
複数の通信インターフェースのうちの１つの通信インターフェースを、前記受信手段で受信される前記コマンドを処理する通信インターフェースとして選択する選択手段と、
前記選択手段で選択される前記通信インターフェースで、前記機器からのコマンドを処理する回数を設定する設定手段と
を備え、
前記選択手段は、その時点で選択されている前記通信インターフェースで、前記設定手段で設定された前記回数だけ前記機器からのコマンドを処理したと判断した場合、他の通信インターフェースを選択する
情報処理装置。
【請求項２】
乱数を生成する乱数生成手段をさらに備え、
前記設定手段は、前記乱数生成手段で生成された前記乱数を構成する各ビットを、所定の数値に対応させ数値例を生成し、その数値列を構成する各数値を前記複数の通信インターフェースにそれぞれの前記回数として設定する
請求項１に記載の情報処理装置。
【請求項３】
乱数を生成する乱数生成手段と、
前記複数の通信インターフェース毎の重み付けの値を記憶する記憶手段とをさらに備え、
前記設定手段は、前記乱数生成手段で生成された前記乱数と、前記記憶手段に記憶されている前記重み付けの値を乗算し、その値を前記複数の通信インターフェースのそれぞれの前記回数として設定する
請求項１に記載の情報処理装置。
【請求項４】
乱数を生成する乱数生成手段と、
前記複数の通信インターフェース毎の重み付けの値を記憶する記憶手段とをさらに備え、
前記設定手段は、前記乱数生成手段で生成された前記乱数を、前記記憶手段に記憶されている前記重み付けの値で配分し、その値を前記複数の通信インターフェースのそれぞれの前記回数として設定する
請求項１に記載の情報処理装置。
【請求項５】
前記複数の通信インターフェースが、それぞれ前記機器からのコマンドを処理した回数を学習し、前記重み付けを更新する更新手段をさらに備える
請求項３または請求項４に記載の情報処理装置。
【請求項６】
前記設定手段は、乱数を生成し、その乱数を、前記選択手段で選択された前記通信インターフェースの回数として設定する
請求項１に記載の情報処理装置。
【請求項７】
前記複数の通信インターフェースの前記回数を関連付けたテーブルを記憶する記憶手段をさらに備え、
前記設定手段は、前記テーブルを参照して前記複数の通信インターフェース毎の回数を設定する
請求項１に記載の情報処理装置。
【請求項８】
前記複数の通信インターフェースが、それぞれ前記機器からのコマンドを処理した回数を学習し、前記テーブルを更新する更新手段をさらに備える
請求項７に記載の情報処理装置。
【請求項９】
他の装置からのコマンドを受信する受信手段と、複数の通信インターフェースを備える情報処理装置の情報処理方法において、
前記複数の通信インターフェースのうちの１つの通信インターフェースを、前記受信手段で受信される前記コマンドを処理する通信インターフェースとして選択し、
前記選択される前記通信インターフェースで、前記機器からのコマンドを処理する回数を、乱数を生成し、その生成された乱数に基づき設定する
ステップを含み、
前記選択は、その時点で選択されている前記通信インターフェースで、前記設定された前記回数だけ前記機器からのコマンドを処理したと判断した場合、他の通信インターフェースを選択することで行われる
情報処理方法。
【請求項１０】
他の装置からのコマンドを受信する受信手段と、複数の通信インターフェースを備える情報処理装置に、
前記複数の通信インターフェースのうちの１つの通信インターフェースを、前記受信手段で受信される前記コマンドを処理する通信インターフェースとして選択し、
前記選択される前記通信インターフェースで、前記機器からのコマンドを処理する回数を、乱数を生成し、その生成された乱数に基づき設定する
ステップを含み、
前記選択は、その時点で選択されている前記通信インターフェースで、前記設定された前記回数だけ前記機器からのコマンドを処理したと判断した場合、他の通信インターフェースを選択することで行われる
処理をコンピュータに実行させるためのプログラム。
【請求項１１】
複数の通信インターフェースを備える第１の情報処理装置と、前記第１の情報処理装置と通信を行う第２の情報処理装置とから構成される情報処理システムにおいて、
前記第１の情報処理装置は、
前記第２の情報処理装置と通信を確立する前の時点で、前記複数の通信インターフェースを所定の間隔で切り換え、切り換え先の通信インターフェースでコマンドを送信する送信手段
を備え、
前記第２の情報処理装置は、
乱数を生成する乱数生成手段と、
前記第１の情報処理装置からの前記コマンドを受信する受信手段と、
自己が備える複数の通信インターフェースのうちの１つの通信インターフェースを、前記受信手段で受信される前記コマンドを処理する通信インターフェースとして選択する選択手段と、
前記選択手段で選択される前記通信インターフェースで、前記第１の情報処理装置からの前記コマンドを処理する回数を、前記乱数生成手段により生成前記乱数に基づき設定する設定手段と
を備え、
前記選択手段は、その時点で選択されている前記通信インターフェースで、前記設定手段で設定された前記回数だけ前記機器からのコマンドを処理したと判断した場合、他の通信インターフェースを選択する
情報処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は情報処理装置および方法、並びにプログラムに関し、特に、複数の通信方式に対応し、かつ、それらの通信方式の切り換えのタイミングを調整することで、通信相手と確実に通信ができるようにした情報処理装置および方法、並びにプログラムに関する。
【背景技術】
【０００２】
従来、ＩＣチップを内蔵したカードであってリーダライタと非接触で通信する非接触ＩＣカードは、カードという構造的条件などによって機能面での技術的な制約が多く存在していた。そして、非接触ＩＣカードとリーダライタからなる従来の非接触ＩＣカードシステムは、単一の通信インターフェースを備え、その通信インターフェースに対応した非接触ＩＣカードおよびリーダライタの間でのみ通信することが可能であった。
【０００３】
また、非接触ＩＣカードシステムの製造業者の違いにより多くの通信インターフェースが存在しており、通信インターフェースが異なる非接触ＩＣカードとリーダライタとの間では相互に通信することができない状態であった。近年、通信インターフェースについて国際的に標準化しようとする機運が高まり、現在では、いくつかの通信インターフェースに関しては標準化作業が進行中である。
【０００４】
一方、ＩＣカードシステムの利用拡大およびＩＣ製造技術の向上に伴って、非接触ＩＣカードで用いられるＩＣチップの機能が向上してきたため、複数の通信インターフェースに対応することができるＩＣカード用ＩＣチップが実現できる可能性がでてきた。
【０００５】
しかしながら、このような複数の通信インターフェースに対応可能な非接触ＩＣカードとリーダライタとの間の通信では、製造業者の違いや設計者の設計思想の違いにより、通信接続を確立する過程である初期接続過程での通信のタイミングの取り方が問題となって、効率良く通信接続の確立をすることができない可能性がある。
【０００６】
即ち、非接触ＩＣカードが複数の通信インターフェースに対応可能であって、リーダライタも複数の通信インターフェースに対応可能であり、相互に共通の通信インターフェースを持つ非接触ＩＣカードシステムを開発しても、初期接続過程において送信信号（通信要求命令）の通信インターフェースと、受信側の通信インターフェースが一致しなければ通信接続を確立することができず、その通信インターフェースを一致させるのに長時間かかってしまう、又は通信接続の確立が不成功となる、あるいは複雑で大規模なシステムを開発しなければならなかった。
【０００７】
そこで、複数の通信インターフェースに対応することが可能な非接触ＩＣカードとリーダライタとの間において、効率良く通信接続の確立をすることを可能とするために、通信接続を確立する過程において、逐次に通信インターフェースを切り換え、各通信インターフェースで通信要求命令を逐次送信するときに、各通信要求命令を送信する時の時間間隔を変更することが提案されている。（例えば、特許文献１参照）
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特許第３５７６１４１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
特許文献１では、時間間隔を変更すること、具体的には、時間を基準として発生させた乱数で待ち時間を調整することで、リーダライタとの接続を確立させることが開示されている。しかしながら、時間を基準としてリーダライタとの接続を確立させる場合、接続のタイミングが、アプリケーションや機器(リーダライタ)の設定や性能(Polling間隔等)に依存してしまう可能性があった。また、ＩＣカードを製造するとき、各機器の設定を考慮した時間のチューニングが必要であった。さらに、将来的に各機器の性能、例えば、応答速度などが向上した時に、再チューニングが必要となる可能性があった。
【００１０】
すなわち、複数の通信インターフェースに対応させるためには、複数の通信インターフェースに適した設定にしなくてはならない。通信インターフェース毎に、例えば、ポーリング間隔が異なるため、複数の通信インターフェースに対応させるためには、それらの複数の異なるポーリング間隔に対応するように、最適化された設定を行う必要がある。そのために、例えば、特許文献１に記載されていることをＩＣカードに適用した場合、複数の通信インターフェースのポーリング間隔などを考慮して、発生される乱数の範囲を最適化して設定しておく必要がある。しかしながら、このような最適化は、例えば、最適化後の新たな通信方式に対しては最適ではない可能性があるため、上記したように再チューニングが必要となる可能性があった。
【００１１】
本発明は、このような状況に鑑みてなされたものであり、複数の通信インターフェースを有する機器同士の通信確立を、効率良く確実に行えるようにすることができるようにするものである。
【課題を解決するための手段】
【００１２】
本発明の一側面の情報処理装置は、他の装置からのコマンドを受信する受信手段と、複数の通信インターフェースのうちの１つの通信インターフェースを、前記受信手段で受信される前記コマンドを処理する通信インターフェースとして選択する選択手段と、前記選択手段で選択される前記通信インターフェースで、前記機器からのコマンドを処理する回数を設定する設定手段とを備え、前記選択手段は、その時点で選択されている前記通信インターフェースで、前記設定手段で設定された前記回数だけ前記機器からのコマンドを処理したと判断した場合、他の通信インターフェースを選択する。
【００１３】
乱数を生成する乱数生成手段をさらに備え、前記設定手段は、前記乱数生成手段で生成された前記乱数を構成する各ビットを、所定の数値に対応させ数値例を生成し、その数値列を構成する各数値を前記複数の通信インターフェースにそれぞれの前記回数として設定するようにすることができる。
【００１４】
乱数を生成する乱数生成手段と、前記複数の通信インターフェース毎の重み付けの値を記憶する記憶手段とをさらに備え、前記設定手段は、前記乱数生成手段で生成された前記乱数と、前記記憶手段に記憶されている前記重み付けの値を乗算し、その値を前記複数の通信インターフェースのそれぞれの前記回数として設定するようにすることができる。
【００１５】
乱数を生成する乱数生成手段と、前記複数の通信インターフェース毎の重み付けの値を記憶する記憶手段とをさらに備え、前記設定手段は、前記乱数生成手段で生成された前記乱数を、前記記憶手段に記憶されている前記重み付けの値で配分し、その値を前記複数の通信インターフェースのそれぞれの前記回数として設定するようにすることができる。
【００１６】
前記複数の通信インターフェースが、それぞれ前記機器からのコマンドを処理した回数を学習し、前記重み付けを更新する更新手段をさらに備えるようにすることができる。
【００１７】
前記設定手段は、乱数を生成し、その乱数を、前記選択手段で選択された前記通信インターフェースの回数として設定するようにすることができる。
【００１８】
前記複数の通信インターフェースの前記回数を関連付けたテーブルを記憶する記憶手段をさらに備え、前記設定手段は、前記テーブルを参照して前記複数の通信インターフェース毎の回数を設定するようにすることができる。
【００１９】
前記複数の通信インターフェースが、それぞれ前記機器からのコマンドを処理した回数を学習し、前記テーブルを更新する更新手段をさらに備えるようにすることができる。
【００２０】
本発明の一側面の情報処理方法は、他の装置からのコマンドを受信する受信手段と、複数の通信インターフェースを備える情報処理装置の情報処理方法において、前記複数の通信インターフェースのうちの１つの通信インターフェースを、前記受信手段で受信される前記コマンドを処理する通信インターフェースとして選択し、前記選択される前記通信インターフェースで、前記機器からのコマンドを処理する回数を、乱数を生成し、その生成された乱数に基づき設定するステップを含み、前記選択は、その時点で選択されている前記通信インターフェースで、前記設定された前記回数だけ前記機器からのコマンドを処理したと判断した場合、他の通信インターフェースを選択することで行われる。
【００２１】
本発明の一側面のプログラムは、他の装置からのコマンドを受信する受信手段と、複数の通信インターフェースを備える情報処理装置に、前記複数の通信インターフェースのうちの１つの通信インターフェースを、前記受信手段で受信される前記コマンドを処理する通信インターフェースとして選択し、前記選択される前記通信インターフェースで、前記機器からのコマンドを処理する回数を、乱数を生成し、その生成された乱数に基づき設定するステップを含み、前記選択は、その時点で選択されている前記通信インターフェースで、前記設定された前記回数だけ前記機器からのコマンドを処理したと判断した場合、他の通信インターフェースを選択することで行われる処理をコンピュータに実行させるためのプログラム。
【００２２】
本発明の一側面の情報処理システムは、複数の通信インターフェースを備える第１の情報処理装置と、前記第１の情報処理装置と通信を行う第２の情報処理装置とから構成される情報処理システムにおいて、前記第１の情報処理装置は、前記第２の情報処理装置と通信を確立する前の時点で、前記複数の通信インターフェースを所定の間隔で切り換え、切り換え先の通信インターフェースでコマンドを送信する送信手段を備え、前記第２の情報処理装置は、乱数を生成する乱数生成手段と、前記第１の情報処理装置からの前記コマンドを受信する受信手段と、自己が備える複数の通信インターフェースのうちの１つの通信インターフェースを、前記受信手段で受信される前記コマンドを処理する通信インターフェースとして選択する選択手段と、前記選択手段で選択される前記通信インターフェースで、前記第１の情報処理装置からの前記コマンドを処理する回数を、前記乱数生成手段により生成前記乱数に基づき設定する設定手段とを備え、前記選択手段は、その時点で選択されている前記通信インターフェースで、前記設定手段で設定された前記回数だけ前記機器からのコマンドを処理したと判断した場合、他の通信インターフェースを選択する。
【００２３】
本発明の一側面の情報処理装置および方法、並びにプログラムにおいては、複数の通信インターフェースを備える装置が、所定の間隔で送信してくるコマンドが、自己が備える複数の通信インターフェースのうちから選択した通信インターフェースで処理され、その処理回数が、乱数などに基づき設定された回数以上になった時点で、他の通信インターフェースに切り換えられる。
【発明の効果】
【００２４】
本発明の一側面によれば、複数の通信インターフェースを有する機器同士の通信確立を、効率良く確実に行えるようになる。
【図面の簡単な説明】
【００２５】
【図１】本発明を適用したシステムの一実施の形態の構成を示す図である。
【図２】通信の確立に係わる処理について説明するためのフローチャートである。
【図３】コマンドの受信回数の設定に係わる処理について説明するためのフローチャートである。
【図４】通信の確立に係わる他の処理について説明するためのフローチャートである。
【図５】コマンドの受信回数の設定に係わる他の処理について説明するためのフローチャートである。
【図６】コマンドの受信回数の設定に係わる他の処理について説明するためのフローチャートである。
【図７】ＩＣカードの他の構成例を示す図である。
【図８】通信の確立に係わる他の処理について説明するためのフローチャートである。
【図９】通信の確立に係わる他の処理について説明するためのフローチャートである。
【図１０】通信の確立に係わる他の処理について説明するためのフローチャートである。
【図１１】ＩＣカードの他の構成例を示す図である。
【図１２】通信の確立に係わる他の処理について説明するためのフローチャートである。
【図１３】テーブルの一例である。
【図１４】記録媒体について説明するための図である。
【発明を実施するための形態】
【００２６】
以下に、本発明の実施の形態について図面を参照して説明する。
【００２７】
［システムの構成について］
図１は、本発明を適用した情報処理システムを含むシステムの構成を示す図である。図１に示したシステムは、リーダライタ１１とＩＣカード１２から構成されている。リーダライタ１１とＩＣカード１２との間では、電磁波が用いられた非接触でのデータの送受信が行われる。すなわち、リーダライタ１１が、所定のコマンドをＩＣカード１２に送信し、ＩＣカード１２は、そのコマンドを受信し、そのコマンドに対応する処理を行う。そして、ＩＣカード１２は、その処理結果に対応する応答データをリーダライタ１１に送信する。
【００２８】
リーダライタ１１は、通信インターフェース２１−１乃至２１−Ｍ、インターフェース切り換え部２２、および送受信部２３を含む構成とされている。以下の説明において、通信インターフェース２１−１乃至２１−Ｍを、個々に区別する必要がない場合、単に、通信インターフェース２１と記述する。他の部分に関しても同様とする。
【００２９】
通信インターフェース２１−１乃至２１−Ｍは、それぞれ異なる通信方式でＩＣカード１２と通信を行うインターフェースである。例えば、通信インターフェース２１−１はフェリカ（商標）方式で通信し、通信インターフェース２１−２はＩＳＯで規定されているタイプＡ方式で通信し、通信インターフェース２１−３はＩＳＯで規定されているタイプＢ方式で通信するといったように、それぞれ異なる通信方式で通信を行うインターフェースとされている。このような構成を有するため、リーダライタ１１は、通信方式が異なる複数のＩＣカード１２と通信を行うことが可能である。
【００３０】
リーダライタ１１のインターフェース切り換え部２２は、通信インターフェース２１−１乃至２１−Ｍを適宜切り換えることで、通信を行うＩＣカード１２に適した通信インターフェース２１を選択する。送受信部２３は、インターフェース切り換え部２２により切り換えられた通信インターフェース２１でＩＣカード１２と通信を行う。
【００３１】
リーダライタ１１と通信するＩＣカード１２は、通信インターフェース３１−１乃至３１−Ｎ、インターフェース切り換え部３２、送受信部３３、データ記憶部３４、およびデータ処理部３５を含む構成とされている。また、データ処理部３５は、乱数生成部４１、コマンド回数設定部４２、およびインターフェース選択部４３を含む構成とされている。
【００３２】
ＩＣカード１２も、リーダライタ１１と同じく、複数の通信インターフェース３１−１乃至３１−Ｎを備え、異なる通信方式で、リーダライタ１１と通信を行えるように構成されている。ＩＣカード１２のインターフェース切り換え部３２は、通信インターフェース３１−１乃至３１−Ｍを適宜切り換えることで、通信を行うリーダライタ１１に適した通信インターフェース３１を選択する。送受信部３３は、インターフェース切り換え部３２により切り換えられた通信インターフェース３１でリーダライタ１１と通信を行う。
【００３３】
データ記憶部３４は、例えば、リーダライタ１１と送受信したデータを記憶する。また、データ記憶部３４は、後述する重み付けの値やテーブルを、適宜記憶する。データ処理部３５は、リーダライタ１１と送受信したデータや、データ記憶部３４に記憶するデータまたは記憶されているデータを処理する。データ処理部３５が行う処理の詳細は後述するが、乱数生成部４１は、乱数を生成し、その生成された乱数に応じて、コマンド回数設定部４２は、コマンドの受信回数を設定する。さらに、インターフェース選択部４３は、コマンドを受信した回数などに応じて、通信インターフェース３１を切り換えるための指示を、インターフェース切り換え部３２に出すように構成されている。
【００３４】
リーダライタ１１の基本的な動作として、ポーリングし、その結果、近傍にデータの通信を行える装置、この場合、ＩＣカード１２が存在していることを検知すると、その検知した装置と通信を開始する。リーダライタ１１は、通信方式が異なる複数のＩＣカード１２と通信を行うことが可能であるが、どの通信方式に対応したＩＣカード１２が、近傍に存在するのか、ポーリングリクエストを出し、ポーリングレスポンスを受信しなければ認識することができない。
【００３５】
リーダライタ１１は、所定の間隔で、通信方式を変えて、ポーリングリクエストを出す。換言すれば、リーダライタ１１は、通信インターフェース２１を、例えば、所定の間隔で順次切り換え、その切り換えられた通信インターフェース２１のポーリングリクエストを出すように構成される。
【００３６】
以下の説明においては、通信インターフェース２１−１と通信インターフェース３１−１は、同一の通信方式であり、通信インターフェース２１−２と通信インターフェース３１−２は、同一の通信方式であり、通信インターフェース２１−３と通信インターフェース３１−３は、同一の通信方式であるとして説明を続ける。
【００３７】
例えば、リーダライタ１１が通信インターフェース２１−１のポーリングリクエストを送信しているときに、通信インターフェース３１−１に設定されているＩＣカード１２が、そのポーリングリクエストを受信したとする。このようなときには、同一の通信方式で通信していることになるので、ＩＣカード１２は、受信したポーリングリクエスト（コマンド）を処理し、レスポンスを送信することができる。
【００３８】
一方、例えば、リーダライタ１１が通信インターフェース２１−１のポーリングリクエストを送信しているときに、通信インターフェース３１−２に設定されているＩＣカード１２が、そのポーリングリクエストを受信したとする。このようなときには、異なる通信方式で通信していることになるので、ＩＣカード１２は、受信したポーリングリクエスト（コマンド）を処理できず、レスポンスを送信することができないため、リーダライタ１１とＩＣカード１２と間で通信を確立することができない。
【００３９】
このようなことを防ぐために、リーダライタ１１は、所定の間隔で、通信方式（通信インターフェイス２１）を切り換えて、ポーリングを行う。すなわち例えば、リーダライタ１１が通信インターフェース２１−１のポーリングリクエストを送信しているときに、通信インターフェース３１−２に設定されているＩＣカード１２が、そのポーリングリクエストを受信してもＩＣカード１２は処理できないが、その後、リーダライタ１１が通信インターフェース２１を、通信インターフェース２１−２に設定し、再度通信インターフェース２１−２でポーリングリクエストを送信すれば、ＩＣカード１２と同じ通信方式になり、ＩＣカード１２と通信が確立されることになる。
【００４０】
このように、リーダライタ１１が通信インターフェース２１を所定の間隔で切り換えることで、ＩＣカード１２と通信を確立することができる。しかしながら、ＩＣカード１２も、複数の通信インターフェース３１を備え、例えば、何かデータを受信したときに、そのデータを処理できなかったら通信インターフェース３１を適宜切り換えて、リーダライタ１１と通信を確立するように構成されている。
【００４１】
このＩＣカード１２の通信インターフェース３１の切り換えのタイミングと、リーダライタ１１の切り換えのタイミングがうまく一致しないと、通信が確立できないことになる。例えば、上記したように、リーダライタ１１が、通信インターフェース２１−１から通信インターフェース２１−２に切り換えたときに、ＩＣカード１２も、通信インターフェース３１−２から通信インターフェース３１−３に切り換えてしまうと、結果として、異なる通信方式になってしまい、通信が確立できないことになる。
【００４２】
このようなことを考慮し、リーダライタ１１が所定の間隔で通信インターフェース２１を切り換える状況下で、最も効率良く、確実に通信が確立できるように、ＩＣカード１２側でも通信インターフェース３１を切り換えるときの処理について、以下に説明する。以下の処理は、複数のリーダライタ１１に対して有効な切り換えの処理である。
【００４３】
すなわち、複数の異なるリーダライタ１１が存在するときに、リーダライタ１１毎に、通信インターフェース２１を切り換える所定の間隔が異なっている可能性がある。そして、そのような場合には、例えば、時間を基準として切り換えを行う方式だと、所定のリーダライタ１１のタイミングには適しているが、他のリーダライタ１１のタイミングには適していない場合などもある。しかしながら、以下の切り換えの方式は、そのような異なるタイミングで通信インターフェース２１を切り換える複数のリーダライタ１１に対しても、以下に説明する切り換え方式は、有効な方式である。
【００４４】
［切り換えに係わる処理１（乱数のビットの値に対応した回数の設定）について］
図２を参照し、ＩＣカード１２における通信インターフェース３１の切り換えに係わる処理について説明する。以下に切り換えに係わる処理に関し、複数の実施の形態をあげて説明する。
【００４５】
ステップＳ１０１において、データ処理部３５のコマンド回数設定部４２は、コマンドの受信回数の設定を行う。このステップＳ１０１におけるコマンドの受信回数の設定に係わる処理について、図３のフローチャートを参照して説明する。本実施の形態においては、設定された回数だけコマンドを受信した後、通信インターフェース３１が切り換えられるように処理するため、その回数が、ステップＳ１０１において設定される。
【００４６】
ステップＳ１２１において、コマンド回数設定部４２は、乱数生成部４１に指示を出し、乱数を生成させる。乱数生成部４１は、１バイト（８ビット）で表される乱数を生成する。ここでは、８ビットで表される数値を用いるのではなく、各ビットの数値を用いる。例えば、生成された乱数が “９８”である場合、その“９８”を８ビットで表すと“０１１０００１０”となる。この“９８”という数値を用いるのではなく、“０１１０００１０”を用いて、コマンドの受信回数が設定される。
【００４７】
ステップＳ１２２において、コマンド回数設定部４２は、乱数生成部４１で生成された乱数を構成する各ビットの値を１または２に対応させる。すなわち、例えば、“０１１０００１０”というビット列が生成された場合、“０”を“１”に対応させ、“１”を“２”に対応させることにより、“１”、“２”、“２”、“１”、“１”、“１”、“２”、“１”という数値列が生成される。この数値列により、各通信インターフェース３１におけるコマンドの受信回数が設定される。なお、ここでは、“０”を“１”に対応させ、“１”を“２”に対応させるとして説明を続けるが、“０”や“１”に対応させる数値は、“１”または“２”に限定されるわけではなく、所定の数値を対応させることができる。
【００４８】
ステップＳ１２３において、コマンド回数設定部４２は、１と２に対応させた数値列を、各通信インターフェース３１のコマンドの待ち回数に設定する。ここでは、ＩＣカード１２は、通信インターフェース３１−１乃至３１−３を備えているとする。また上記したような、“１”、“２”、“２”、“１”、“１”、“１”、“２”、“１”が数値列として生成されているとする。このような場合、
通信インターフェース３１−１のコマンド受信回数を“１”回、
通信インターフェース３１−２のコマンド受信回数を“２”回、
通信インターフェース３１−３のコマンド受信回数を“２”回、
通信インターフェース３１−１のコマンド受信回数を“１”回、
通信インターフェース３１−２のコマンド受信回数を“１”回、
通信インターフェース３１−３のコマンド受信回数を“１”回、
通信インターフェース３１−１のコマンド受信回数を“２”回、
通信インターフェース３１−２のコマンド受信回数を“１”回、
と設定される。
【００４９】
この場合、通信インターフェース３１−１乃至３１−３は、順次この順で切り換えられるとして説明を続ける。この順が、最も広く普及しており、リーダライタ１１との通信を確立する確立が高い通信インターフェース３１順であると、通信を確立する可能性が高くなり、好ましい設定である。
【００５０】
また、通信インターフェース３１−１、通信インターフェース３１−２、通信インターフェース３１−３の順で切り換えられるようにしても良いし、予め使用される頻度の高い（予測）順を設定しておき、その順に切り換えられるようにしても良い。例えば、通信インターフェース３１−３、通信インターフェース３１−１、通信インターフェース３１−３、通信インターフェース３１−１、通信インターフェース３１−２、通信インターフェース３１−３、・・・・、といった順で切り換えられるようにしても良い。この場合、通信インターフェース３１−３が最も使用頻度が高いと予測され、次に、通信インターフェース３１−１が使用頻度が高いと予測されるときである。
【００５１】
このようにして、各通信インターフェース３１のコマンドの受信回数の設定が行われると、処理は図２に示したフローチャートの処理に戻される。ステップＳ１０２において、インターフェース選択部４３は、通信インターフェース３１−１乃至３１−Ｎ（上記した例では通信インターフェース３１−１乃至３１−３）の中から、１つの通信インターフェース３１を選択する。上記した例で、かつ、最初にステップＳ１０２の処理が実行されるときには、通信インターフェース３１−１がリーダライタ１１と通信を行う通信インターフェース３１として設定される。
【００５２】
その選択された通信インターフェース３１に関する情報は、インターフェース選択部４３からインターフェース切り換え部３２に出され、インターフェース選択部４３は、供給された情報に基づき、通信インターフェース３１を切り換える。送受信部３３は、切り換えられた（その時点で設定されている）通信インターフェース３１で、リーダライタ１１との通信（初期接続）を行う。
【００５３】
ステップＳ１０３において、ＩＣカード１２は、リーダライタ１１からのコマンドの受信するまで、待機状態を維持する。そして、ステップＳ１０４において、リーダライタ１１のコマンドが、送受信部３３により受信されると、ステップＳ１０５において、受信されたコマンドを処理できたか否かが判断される。
【００５４】
送受信部３３は、コマンドを受信すると、その時点で設定されている通信インターフェース３１に、受信したコマンドを供給する。通信インターフェース３１は、供給されたコマンドを処理するが、自己の通信方式で送信されてきたコマンドでなければ処理できない。ステップＳ１０５において、その時点で設定されている通信インターフェース３１が、供給されたコマンドを処理できなかったと判断した場合、ステップＳ１０６に処理が進められる。コマンドを処理できなかったという情報は、データ処理部３５のインターフェース選択部４３に供給される。
【００５５】
ステップＳ１０６において、インターフェース選択部４３は、所定の回数だけコマンドを処理したか否かを判断する。所定の回数とは、ステップＳ１０１において設定された回数であり、その時点で選択されている通信インターフェース３１に対して設定された回数である。例えば、上記した例であれば、通信インターフェース３１−１には、“１”回という回数が設定されているので、所定の回数は１回である。
【００５６】
ステップＳ１０６において、所定の回数だけコマンドを処理していないと判断された場合、ステップＳ１０３に処理が戻され、それ以降の処理が繰り返される。一方、ステップＳ１０６において、所定の回数だけコマンドを処理したと判断された場合、ステップＳ１０２に処理が戻され、次の通信インターフェース３１が選択される。例えば、上記したように、
通信インターフェース３１−１のコマンド受信回数を“１”回、
通信インターフェース３１−２のコマンド受信回数を“２”回、
と設定されているとき、通信インターフェース３１−１で１回、コマンドが処理されたことにより、ステップＳ１０６に処理がきたときには、ステップＳ１０６で、所定の回数だけコマンドを処理したと判断され、ステップＳ１０２に処理が戻され、ステップＳ１０２において、通信インターフェース３１−２が選択され、通信インターフェース３１−２に通信インターフェース３１が切り換えられる。
【００５７】
このようにして、コマンドの受信回数（処理回数）に応じて、通信インターフェース３１が切り換えられる。
【００５８】
一方、ステップＳ１０５において、受信されたコマンドを処理できたと判断された場合、ステップＳ１０７に処理が進められる。ステップＳ１０７において、その時点で設定されている通信インターフェース３１で、リーダライタ１１との通信を確立し、リーダライタ１１との通信が開始される。
【００５９】
図４のフローチャートを参照し、図２、図３のフローチャートを参照して説明した通信インターフェース３１の切り換えに係わる処理について、具体的な例をあげて再度説明を加える。
【００６０】
図４のフローチャートの処理は、ＩＣカード１２が、通信インターフェース３１−１乃至３１−３を備えているときの処理である。ステップＳ１５１において、乱数が生成され、通信インターフェース３１−１乃至３１−３の、それぞれのコマンドの受信回数が設定される。ここでは、上記した例と同じく、乱数として“０１１０００１０”が生成され、この乱数に基づき、
通信インターフェース３１−１のコマンド受信回数を“１”回、
通信インターフェース３１−２のコマンド受信回数を“２”回、
通信インターフェース３１−３のコマンド受信回数を“２”回、
通信インターフェース３１−１のコマンド受信回数を“１”回、
通信インターフェース３１−２のコマンド受信回数を“１”回、
通信インターフェース３１−３のコマンド受信回数を“１”回、
通信インターフェース３１−１のコマンド受信回数を“２”回、
通信インターフェース３１−２のコマンド受信回数を“１”回、
と設定されたとして説明を続ける。この処理は、図２のフローチャートにおけるステップＳ１０１の処理（図３のフローチャートの処理）に相当する。
【００６１】
ステップＳ１５２において、通信インターフェース３１−１がその時点でリーダライタ１１と通信を行う通信インターフェース３１として設定される。ステップＳ１５３において、リーダライタ１１からのコマンドが受信され、通信インターフェース３１−１で処理される。その結果、ステップＳ１５４において、コマンドを処理できたか否かが判断される。換言すれば、リーダライタ１１の通信インターフェースと一致したか否かが判断される。このステップＳ１５２乃至Ｓ１５４の処理は、図２のフローチャートのステップＳ１０２乃至１０５の処理に相当する。
【００６２】
ステップＳ１５４において、コマンドを処理できなかったと判断された場合、ステップＳ１５５に処理が進められる。ステップＳ１５５において、所定の回数だけ、コマンドを処理したか否かが判断される。このステップＳ１５５における処理は、図２のフローチャートのステップＳ１０６の処理に相当する。
【００６３】
通信インターフェース３１−１に対しては、上記したように、１回目に順番が回ってきたときには１回、２回目に順番が回ってきたときには１回、３回目に順番が回ってきたときには２回と設定されている。通信インターフェース３１−１に、１回目の順番が回ってきていたときに、ステップＳ１５５の処理がきたときには、所定の回数とは１回であるので、１回コマンドを処理したかが判断される。そして、この場合、ステップＳ１５５においては、所定の回数だけコマンドを処理したと判断され、ステップＳ１５６に処理が進められる。
【００６４】
ステップＳ１５６において、通信インターフェース３１−１から通信インターフェース３１−２に通信インターフェース３１が切り換えられ、通信インターフェース３１−２がその時点でリーダライタ１１と通信を行う通信インターフェース３１として設定される。ステップＳ１５７において、リーダライタ１１からのコマンドが受信され、通信インターフェース３１−２で処理される。その結果、ステップＳ１５８において、コマンドを処理できたか否かが判断される。このステップＳ１５６乃至Ｓ１５８の処理は、図２のフローチャートのステップＳ１０２乃至１０５の処理に相当する。
【００６５】
ステップＳ１５８において、コマンドを処理できなかったと判断された場合、ステップＳ１５９に処理が進められる。ステップＳ１５９において、所定の回数だけ、コマンドを処理したか否かが判断される。このステップＳ１５９における処理は、図２のフローチャートのステップＳ１０６の処理に相当する。
【００６６】
通信インターフェース３１−２に対しては、上記したように、１回目に順番が回ってきたときには２回、２回目に順番が回ってきたときには１回、３回目に順番が回ってきたときには１回と設定されている。通信インターフェース３１−２に、１回目の順番が回ってきていたときに、ステップＳ１５５の処理がきたときには、所定の回数とは２回であるので、２回コマンドを処理したかが判断される。そして、この場合、ステップＳ１５９においては、１回処理しただけであると判断され、所定の回数だけコマンドを処理していないと判断され、ステップＳ１５７に処理が戻される。
【００６７】
そして、再度、ステップＳ１５７とステップＳ１５８の処理が実行され、ステップＳ１５８において、コマンドを処理できなかったと判断され、ステップＳ１５９に処理が進められると、２回コマンドを処理したので、所定の回数だけコマンドを処理したと判断され、ステップＳ１６０に処理が進められる。
【００６８】
ステップＳ１６０において、通信インターフェース３１−２から通信インターフェース３１−３に通信インターフェース３１が切り換えられ、通信インターフェース３１−３がその時点でリーダライタ１１と通信を行う通信インターフェース３１として設定される。ステップＳ１６１において、リーダライタ１１からのコマンドが受信され、通信インターフェース３１−３で処理される。その結果、ステップＳ１６２において、コマンドを処理できたか否かが判断される。このステップＳ１６０乃至Ｓ１６２の処理は、図２のフローチャートのステップＳ１０２乃至１０５の処理に相当する。
【００６９】
ステップＳ１６２において、コマンドを処理できなかったと判断された場合、ステップＳ１６３に処理が進められる。ステップＳ１６３において、所定の回数だけ、コマンドを処理したか否かが判断される。このステップＳ１６３における処理は、図２のフローチャートのステップＳ１０６の処理に相当する。
【００７０】
通信インターフェース３１−３に対しては、上記したように、１回目に順番が回ってきたときには２回、２回目に順番が回ってきたときには１回と設定されている。通信インターフェース３１−３に、１回目の順番が回ってきていたときに、ステップＳ１６３の処理がきたときには、所定の回数とは２回であるので、２回コマンドを処理したかが判断される。そして、この場合、ステップＳ１６３においては、１回処理しただけであると判断され、所定の回数だけコマンドを処理していないと判断され、ステップＳ１６１に処理が戻される。
【００７１】
そして、再度、ステップＳ１６１とステップＳ１６２の処理が実行され、ステップＳ１６２において、コマンドを処理できなかったと判断され、ステップＳ１６３に処理が進められると、２回コマンドを処理したので、所定の回数だけコマンドを処理したと判断され、ステップＳ１５２に処理が戻される。
【００７２】
ステップＳ１５２に処理が戻されることで、通信インターフェース３１−３から通信インターフェース３１−１に通信インターフェース３１が切り換えられ、通信インターフェース３１−１がその時点でリーダライタ１１と通信を行う通信インターフェース３１として、再度設定される。
【００７３】
このようにしてＩＣカード１２は、リーダライタ１１からのコマンドを処理できるまで、換言すればリーダライタ１１の通信インターフェースと一致するまで通信インターフェース３１の切り換えを行う。そして、一方で、ステップＳ１５４、ステップＳ１５８、またはステップＳ１６２において、コマンドが処理できたと判断されると、その時点で設定されている通信インターフェース３１で、リーダライタ１１との通信が確立され、通信が開始される（ステップＳ１６４）。このステップＳ６４の処理は、図２のフローチャートのステップＳ１０７の処理に相当する。
【００７４】
上述した実施の形態においては、８ビットで表される乱数が生成され、その８ビットを構成する各値を用いて、各通信インターフェース３１のコマンドの待ち回数を設定した。この乱数が生成されるタイミングは、例えば、ＩＣカード１２に電力が供給されたときである。ＩＣカード１２に電力が供給されるのは、ＩＣカード１２がリーダライタ１１の近傍に位置しているときである。
【００７５】
上述した実施の形態においては、８ビットで表される乱数が生成される例をあげて説明したが、８ビットであると、８回の通信インターフェース３１の切り換えの回数しか設定できない。例えば、図４のフローチャートを再度参照するに、ステップＳ１６０の処理に、３度目にきたときには、既に３回、通信インターフェース３１−１に切り換えられ、３回、通信インターフェース３１−２に切り換えられ、２回、通信インターフェース３１−３に切り換えられ、それぞれの処理が実行された状態である。すなわち、ステップＳ１６０の処理に３度目にきたときには、既に、８回の通信インターフェース３１の切り換えが実行され、９回目の切り換えの処理が実行されるときである。
【００７６】
このような場合には、生成された乱数で設定された各通信インターフェース３１の回数は、既に使ってしまっている状態であるので、再度乱数を生成し、各通信インターフェース３１の回数を設定し直し、同様の処理が繰り返されるようにする。このように、乱数は、切り換えの所定の回数分だけ生成され、その所定の回数分がオーバーするときには、その都度生成される。
【００７７】
または、既に生成された乱数で設定されている回数を再度繰り返されるようにしても良い。または、８ビット以上の乱数が生成されるようにし、切り換え回数が増えても対応できるようにしても良い。
【００７８】
さらには、複数の通信インターフェース３１を組として分類し、その組毎に乱数が生成されるようにしても良い。例えば、通信インターフェース３１−１乃至通信インターフェース３１−１を第１組とし、通信インターフェース３１−４乃至通信インターフェース３１−６を第２組とし、第１組と第２組、それぞれに、乱数が生成されるようにしても良い。
【００７９】
また、組の例として、通信インターフェース３１−１乃至通信インターフェース３１−１の順で切り換えが行われる第１組とし、通信インターフェース３１−１、通信インターフェース３１−２、通インターフェース３１−１、通信インターフェース３１−２、通信インターフェース３１−３の順で切り換えが行われる第２組といったように、切り換えの順が規定され、その組の中で回数が既に設定されている（例えば、第２組では、通信インターフェース３１−１は、２回と設定されている）組を複数設けても良い。
【００８０】
このように、乱数が生成されるタイミングや、生成された乱数に基づき回数を設定する対象となる通信インターフェース３１の選定などは、種々のバリエーションがあり、上記した実施の形態に限定されるわけではない。また、上記した実施の形態における、乱数が生成されるタイミングや、生成された乱数に基づき回数を設定する対象となる通信インターフェース３１の選定などは、以下の実施の形態においても適用できる。
【００８１】
［切り換えに係わる処理２（乗算による重み付けでの回数の設定）について］
図５を参照し、ＩＣカード１２における通信インターフェース３１の切り換えに係わる他の処理について説明する。
【００８２】
図５に示したフローチャートは、図２のステップＳ１０１で実行される処理である。すなわち、図２のフローチャートのステップＳ１０１においては、コマンドの受信回数の設定が行われるが、その設定に関する他の処理が、図５に示したフローチャートの処理である。よって、図２のフローチャートにおけるステップＳ１０２以下の処理については、既に上述したので、その説明は省略する。
【００８３】
ステップＳ１８１において、コマンド回数設定部４２は、乱数生成部４１に指示を出し、乱数を生成させる。乱数生成部４１は乱数を生成する。ステップＳ１８２において、コマンド回数設定部４２は、データ記憶部３４に記憶されている重み付けの値を読み出し、その読み出した値と、生成された乱数とを乗算する。そして、ステップＳ１８３において、その乗算された結果の値が、各通信インターフェース３１のコマンド待ち回数として設定される。
【００８４】
ここで、ＩＣカード１２は、通信インターフェース３１−１、通信インターフェース３１−２、および通信インターフェース３１−３を備えているとする。そして、予め設定されている重みが、
通信インターフェース３１−１：通信インターフェース３１−２：通信インターフェース３１−３＝１：３：４
であるとする。この重み付けは、使用される頻度が高いと予測される通信インターフェース３１の重みが最も大きくなるように設定されていることが好ましい。よって、例えば、上記した例は、通信インターフェース３１−３が最も使用頻度が高いと予測され、次に、通信インターフェース３１−２の使用頻度が高いと予測されているときの重み付けの例である。
【００８５】
このようなときに、乱数として“２”が生成された場合、通信インターフェース３１−１乃至３１−３に対して設定されるコマンドの受信回数は、以下のようになる。通信インターフェース３１−１乃至３１−３の重みは、１：３：４なので、それらの値に乱数の“２”を乗算した値が各インターフェース３１のコマンドの受信回数とされる。
通信インターフェース３１−１のコマンド受信回数を“２”回
通信インターフェース３１−２のコマンド受信回数を“６”回
通信インターフェース３１−３のコマンド受信回数を“８”回
【００８６】
このようにして、各通信インターフェース３１のコマンドの受信回数の設定が行われると、処理は図２に示したフローチャートの処理に戻される。ステップＳ１０２において、インターフェース選択部４３は、通信インターフェース３１−１乃至３１−Ｎ（上記した例では通信インターフェース３１−１乃至３１−３）の中から、１つの通信インターフェース３１を選択する。これ以降の処理は既に説明したので、ここではその説明を省略する。
【００８７】
このように、重み付けを設定し、その重み付けに応じて各通信インターフェース３１のコマンドの待ち受信回数が設定されることで、使用頻度の多い通信インターフェース３１で、リーダライタ１１との通信確立のための処理が、より多く実行されるようにすることができる。よって、リーダライタ１１との通信を、より早く確立させること（より早く、同じ通信インターフェース３１に設定すること）が可能となる。
【００８８】
なお、上述したように、設定されている重み付けに、生成された乱数が乗算されることで、各通信インターフェース３１のコマンドの受信回数が設定されるため、仮に生成される乱数が大きいと、１つの通信インターフェース３１に設定される受信回数が大きくなってしまう。このようなことを考慮すると、生成される乱数は、例えば、１〜９の間などの範囲内という限定があった方が好ましい形態である。図３のフローチャートの処理に基づいて処理が実行されるときには、例えば、８ビット（１バイト）で表される乱数が生成されるとしたが、図５のフローチャートの処理に基づいて処理が実行されるときには、例えば、３または４ビット程度で表される乱数が生成されると好ましい形態であると考えられ、そのように設定されるようにすることができる。
【００８９】
［切り換えに係わる処理３（配分による重み付けでの回数の設定）について］
図６を参照し、ＩＣカード１２における通信インターフェース３１の切り換えに係わる他の処理について説明する。
【００９０】
図６に示したフローチャートは、図２のステップＳ１０１で実行される処理である。すなわち、図２のフローチャートのステップＳ１０１においては、コマンドの受信回数の設定が行われるが、その設定に関する他の処理が、図６に示したフローチャートの処理である。また、図６に示したフローチャートの処理は、図５に示したフローチャートの処理と同じく、重み付けを用いた受信回数の設定を行う点で一致している。しかしながら、以下に説明する図６に示したフローチャートの処理においては、重み付けに応じて、生成された乱数を配分することで、各通信インターフェース３１の受信回数を設定する点が、図５に示したフローチャートの処理と異なる。
【００９１】
ステップＳ１９１において、コマンド回数設定部４２は、乱数生成部４１に指示を出し、乱数を生成させる。乱数生成部４１は乱数を生成する。ステップＳ１９２において、コマンド回数設定部４２は、データ記憶部３４に記憶されている重み付けの値を読み出し、その読み出した値で、生成された乱数を配分する。そして、ステップＳ１９３において、その配分された結果の値が、各通信インターフェース３１のコマンドの受信回数として設定される。
【００９２】
ここで、ＩＣカード１２は、通信インターフェース３１−１、通信インターフェース３１−２、および通信インターフェース３１−３を備えているとする。そして、予め設定されている重みが、
通信インターフェース３１−１：通信インターフェース３１−２：通信インターフェース３１−３＝１：３：４
であるとする。この重み付けは、使用される頻度が高いと予測される通信インターフェース３１の重みが最も大きくなるように設定されていることが好ましい。よって、例えば、上記した例は、通信インターフェース３１−３が最も使用頻度が高いと予測され、次に、通信インターフェース３１−２の使用頻度が高いと予測されているときの重み付けの例である。
【００９３】
このようなときに、乱数として“８”が生成された場合、通信インターフェース３１−１乃至３１−３に対して設定されるコマンドの受信回数は、以下のようになる。生成された乱数“８”を、通信インターフェース３１−１乃至３１−３の重み付けである１：３：４で配分した値が各インターフェース３１のコマンドの受信回数とされる。
通信インターフェース３１−１のコマンド受信回数を“１”回
通信インターフェース３１−２のコマンド受信回数を“３”回
通信インターフェース３１−３のコマンド受信回数を“４”回
【００９４】
このようにして、各通信インターフェース３１のコマンドの受信回数の設定が行われると、処理は図２に示したフローチャートの処理に戻される。ステップＳ１０２において、インターフェース選択部４３は、通信インターフェース３１−１乃至３１−Ｎ（上記した例では通信インターフェース３１−１乃至３１−３）の中から、１つの通信インターフェース３１を選択する。これ以降の処理は既に説明したので、ここではその説明を省略する。
【００９５】
このように、重み付けを設定し、その重み付けに応じて各通信インターフェース３１のコマンドの待ち受信回数が設定されることで、使用頻度の多い通信インターフェース３１で、リーダライタ１１との通信確立のための処理が、より多く実行されるようにすることができる。よって、リーダライタ１１との通信を、より早く確立させること（より早く、同じ通信インターフェース３１に設定すること）が可能となる。
【００９６】
なお、上述したように、設定されている重み付けで、生成された乱数が配分されることで、各通信インターフェース３１のコマンドの受信回数が設定されるため、仮に生成される乱数が大きいと、１つの通信インターフェース３１に設定される受信回数が大きくなってしまう。また仮に生成される乱数が小さいと、１つの通信インターフェース３１に設定される受信回数は小さくなってしまう。このようなことを考慮すると、生成される乱数は、例えば、ＩＣカード１２が備える通信インターフェース３１の数に応じて、適切な値が生成されるのが好ましい形態である。
【００９７】
ＩＣカード１２が備える通信インターフェース３１の数が比較的多い場合、例えば、１０個の通信インターフェース３１が備えられている場合、それらの１０個の通信インターフェース３１のそれぞれが、少なくとも１回、受信回数として設定されるような乱数の範囲が設定される。よってこのような場合、例えば、１０以上、１００以下の値の乱数が生成されるように設定される。
【００９８】
また、ＩＣカード１２が備える通信インターフェース３１の数が比較的少ない場合、例えば、２個の通信インターフェース３１が備えられている場合、それらの２個の通信インターフェース３１のそれぞれが、受信回数として多くない値、換言すれば、あまり大きな差がある受信回数とならないような乱数の範囲が設定される。例えば、重み付けが１：２と設定され、乱数として“１５０”が生成されると、一方が、５０回、他方が１００回となるが、このような場合、受信回数に偏りがあり、１つの通信インターフェース３１の受信回数が多すぎると考えられる。このようなことが発生しないような範囲に、生成される乱数の値の範囲が設定される。
【００９９】
［切り換えに係わる処理４（重み付けの学習）について］
図５または図６に示したフローチャートを参照して説明したコマンドの受信回数の設定に係わる処理は、重み付けを用いて通信インターフェース３１のコマンドの受信回数を設定したが、その重み付けの値は、予め設定されているとして説明した。この重み付けは学習により更新することも可能である。
【０１００】
ＩＣカード１２で、重み付けの更新を行うための学習が行われるようにした場合、ＩＣカード１２は、図７に示すような構成となる。図７に示したＩＣカード１２は、図１に示したＩＣカード１２に学習部１０１を追加した構成とされている。学習部１０１以外の部分は図１に示したＩＣカード１２の構成と同様であるので、同様の符号を付し、適宜その説明は省略する。
【０１０１】
図８のフローチャートを参照し、図７に示したＩＣカード１２で行われる通信インターフェース３１の切り換えに係わる処理について説明する。
【０１０２】
ステップＳ２０１において、コマンドの受信回数の設定が行われる。このステップＳ２０１で行われるコマンドの受信回数の設定に係わる処理は、既に説明した図５のフローチャート、または図６のフローチャートに基づき実行される。すなわち、重み付けを用いた受信回数の設定が行われる。
【０１０３】
ステップＳ２０１において、各通信インターフェース３１に対するコマンドの受信回数が設定されると、ステップＳ２０２において、通信インターフェース３１が選択、設定される。ステップＳ２０２乃至２０７の処理は、図２のステップＳ１０２乃至Ｓ１０７の処理と同様に行われるため、その説明は省略する。
【０１０４】
ステップＳ２０７において、リーダライタ１１との通信が確立され、通信が開始されると、ステップＳ２０８において、学習部１０１は、学習を行い、重み付けの値を更新する。このように、学習部１０１は、リーダライタ１１との通信が確立した時点で、その通信を確立した通信インターフェース３１の情報を用いて、データ記憶部３４に記憶されている重み付けの値を更新する。
【０１０５】
または、学習として、通信インターフェース３１毎に、リーダライタ１１と通信を確立した回数をカウントし、所定の回数になった時点で、データ記憶部３４に記憶されている重み付けの値が更新されるようにしても良い。このように構成したとき、その所定の回数になった時点とは、総合計が所定の回数になった時点でも良いし、所定の通信インターフェース３１が所定の回数に達した時点でも良い。
【０１０６】
このように重み付けが更新されることにより、ＩＣカード１２毎に、適切な重み付けの値を設定することが可能となる。例えば、ユーザＡは、通信インターフェース３１−１で通信を行うリーダライタ１１を多用し、ユーザＢは、通信インターフェース３１−２で通信を行うリーダライタ１１を多用するなど、ユーザ毎にＩＣカード１２が備える通信インターフェース３１の使用頻度は異なることが考えられる。このように使用頻度が異なる場合において、同じ重み付けの値が用いられると、所定のユーザのＩＣカード１２では、リーダライタ１１との通信が比較的早く確立されるが、他のユーザのＩＣカード１２では、リーダライタ１１との通信が確立されづらいといったことが起こる可能性がある。
【０１０７】
重み付けの値自体を更新することで、ユーザ毎（ＩＣカード１２毎）に、使用する通信インターフェース３１の回数の違いがあるということを吸収した、最適な重み付けの値を常に提供できるようになる。もって、ＩＣカード１２毎に、ユーザに適した重み付けを行い、リーダライタ１１との通信を確実に、早く確立することが可能となる。
【０１０８】
［切り換えに係わる処理５（通信インターフェース毎に乱数生成）について］
次に、図９を参照し、ＩＣカード１２における通信インターフェース３１の切り換えに係わる他の処理について説明する。
【０１０９】
上述した実施の形態においては、複数の通信インターフェース３１に対して、１つの乱数を生成し、各通信インターフェース３１に対するコマンドの受信回数を設定した。ここでは、通信インターフェース３１が設定された時点で、その都度１つの乱数を生成し、その乱数を、その通信インターフェース３１のコマンドの受信回数とする実施の形態について説明する。
【０１１０】
ステップＳ３０１において、その時点でリーダライタ１１と通信する通信インターフェース３１が選択される。そして、ステップＳ３０２において、乱数が生成され、その乱数が、選択された通信インターフェース３１のコマンドの受信回数として設定される。
【０１１１】
例えば、通信インターフェース３１−１が選択され、生成された乱数が“３”である場合、通信インターフェース３１−１でリーダライタ１１からのコマンドが処理され、その処理回数（受信回数）が、３回と設定される。
【０１１２】
ステップＳ３０３において、コマンドを受信するまで待機状態が維持され、ステップＳ３０４において、コマンドが受信されると、その時点で設定されている通信インターフェース３１で処理が行われる。そして、ステップＳ３０５において、コマンドを処理できたか否かが判断され、処理できなかったと判断されると、ステップＳ３０６に処理が進められ、所定の回数だけコマンドを処理したか否かが判断される。このステップＳ３０３乃至Ｓ３０６の処理は、図２のステップＳ１０３乃至Ｓ１０６の処理と基本的に同様である。
【０１１３】
ステップＳ３０６において、所定の回数だけコマンドを処理していないと判断された場合、ステップＳ３０３に処理が戻され、それ以降の処理が繰り返されることにより、設定されている受信回数になるまで、またはコマンドを処理できるまで、処理が繰り返される。
【０１１４】
一方、ステップＳ３０６において、所定の回数だけコマンドを処理したと判断された場合、ステップＳ３０１に処理が戻される。ステップＳ３０１において、その時点で設定されている通信インターフェース３１から、他の通信インターフェース３１に、通信インターフェース３１が切り換えられる。そして、ステップＳ３０２において、その切り換えられた通信インターフェース３１に対して、乱数が生成され、その乱数がコマンドの受信回数として設定される。
【０１１５】
このように、１つの通信インターフェース３１毎に１つの乱数を生成し、その乱数を、その通信インターフェース３１のコマンドの受信回数として設定するような処理が、コマンドを処理できるまで繰り返される。そして、ステップＳ３０５において、その時点で設定されている通信インターフェース３１で、リーダライタ１１からのコマンドを処理できたと判断された場合、ステップＳ３０７に処理が進められ、リーダライタ１１との通信が確立され、通信が開始される。
【０１１６】
図１０を参照し、図９に示したフローチャートの処理について、具体的な例をあげて説明をさらに加える。図１０のフローチャートの処理は、ＩＣカード１２に通信インターフェース３１−１と通信インターフェース３１−２の２つの通信インターフェース３１が備えられている場合の処理である。
【０１１７】
ステップＳ３３１において、通信インターフェース３１−１が、リーダライタ１１からのコマンドを処理する通信インターフェース３１として設定される。ステップＳ３３２において、乱数が生成される。ここでは、乱数として“５”が生成されたとする。ステップＳ３３３において、リーダライタ１１からのコマンドを受信し、そのコマンドが、通信インターフェース３１−１で処理できたか否かが判断される。
【０１１８】
ステップＳ３３３において、受信されたコマンドは、通信インターフェース３１−１では処理できなかったと判断された場合、ステップＳ３３４に処理が進められ、通信インターフェース３１−１でコマンドを処理したのは５回であるか否かが判断される。ステップＳ３３４において、５回、コマンドは処理されていないと判断された場合、ステップＳ３３３に処理が戻される。ここまでの処理は、図９のステップＳ３０１乃至Ｓ３０５に相当する。
【０１１９】
仮に、リーダライタ１１が、通信インターフェース２１−１以外の通信インターフェース２１でコマンドを送信していた場合、ＩＣカード１２においては、ステップＳ３３３とステップＳ３３４の処理、すなわち、コマンドを受信し、処理するという回数が、５回繰り返される。そして、５回繰り返されると、ステップＳ３３４において、５回、コマンドを処理したと判断され、ステップＳ３３５に処理が進められる。
【０１２０】
ステップＳ３３５において、通信インターフェース３１−１から通信インターフェース３１−２に、リーダライタ１１からのコマンドを処理する通信インターフェース３１が切り換えられる。ステップＳ３３６において、乱数が生成される。ここでは、乱数として“８”が生成されたとする。ステップＳ３３７において、リーダライタ１１からのコマンドを受信し、そのコマンドが、通信インターフェース３１−２で処理できたか否かが判断される。
【０１２１】
ステップＳ３３７において、受信されたコマンドは、通信インターフェース３１−２では処理できなかったと判断された場合、ステップＳ３３８に処理が進められ、通信インターフェース３１−２でコマンドを処理したのは８回であるか否かが判断される。ステップＳ３３８において、８回、コマンドは処理されていないと判断された場合、ステップＳ３３７に処理が戻される。
【０１２２】
仮に、リーダライタ１１が、通信インターフェース２１−２以外の通信インターフェース２１でコマンドを送信していた場合、ＩＣカード１２においては、ステップＳ３３７とステップＳ３３８の処理、すなわち、コマンドを受信し、処理するという回数が、８回繰り返される。そして、８回繰り返されると、ステップＳ３３８において、８回、コマンドを処理したと判断され、ステップＳ３３１に処理が戻される。
【０１２３】
このようにして、通信インターフェース３１−１と通信インターフェース３１−２が、リーダライタ１１からのコマンドが処理できるまで、順次切り換えられる。また、切り換えられる毎に乱数が生成され、その生成された乱数が、受信回数に設定される。そして、通信インターフェース３１−１または通信インターフェース３１−２が、リーダライタ１１からのコマンドを処理できたと、ステップＳ３３３またはステップＳ３３７で判断すると、ステップＳ３３９に処理が進められ、リーダライタ１１との通信が、コマンドを処理した通信インターフェース３１で確立され、通信が開始される。
【０１２４】
このように、通信インターフェース３１毎の受信回数を設定しても良い。この実施の形態の場合、乱数が受信回数に設定されるため、あまり大きな数値が乱数として生成されることは好ましくないと考えられる。よって、生成される乱数は、ＩＣカード１２が備える通信インターフェース３１の数などに応じて、適宜、範囲が設定されていることが好ましい形態である。
【０１２５】
［切り換えに係わる処理６（テーブル参照での回数の設定）について］
上述した実施の形態においては、乱数を生成することで、コマンドの受信回数の設定を行う例をあげて説明した。乱数を生成し、受信回数の設定を行うのではなく、テーブルを参照し、受信回数の設定が行われるようにしても良い。
【０１２６】
ＩＣカード１２で、テーブルを参照して受信回数を設定するようにした場合、ＩＣカード１２は、図１１に示すような構成となる。図１１に示したＩＣカード１２は、図１に示したＩＣカード１２から、乱数生成部４１を削除した構成とされている。乱数生成部４１を削除した以外の部分は図１に示したＩＣカード１２の構成と同様であるので、同様の符号を付し、適宜その説明は省略する。テーブルは、データ記憶部３４に記憶されているとして説明を続ける。
【０１２７】
図１２のフローチャートを参照し、図１１に示したＩＣカード１２で行われる通信インターフェース３１の切り換えに係わる処理について説明する。
【０１２８】
ステップＳ４０１において、コマンド回数設定部４２は、データ記憶部３４に記憶されているテーブルを参照し、各通信インターフェース３１のコマンドの受信回数を設定する。ここで、図１３にテーブルの一例を示す。図１３に示したテーブルは、ＩＣカード１２が、通信インターフェース３１−１乃至３１−３を備えているときの一例である。
【０１２９】
図１３に示したテーブル２２１は、パターンと通信インターフェース３１が関連付けられ、パターンと通信インターフェース３１で、受信回数が設定されているテーブルである。パターンＸは、通信インターフェース３１−１の受信回数を３回、通信インターフェース３１−２の受信回数を２回、通信インターフェース３１−３の受信回数を１回と、それぞれ設定、この順序で切り換えられるパターンである。
【０１３０】
パターンＹは、通信インターフェース３１−１の受信回数を２回、通信インターフェース３１−２の受信回数を２回、通信インターフェース３１−３の受信回数を２回と、それぞれ設定し、この順序で切り換えられるパターンである。パターンＺは、通信インターフェース３１−１の受信回数を４回、通信インターフェース３１−２の受信回数を５回、通信インターフェース３１−３の受信回数を６回と、それぞれ設定し、この順序で切り換えられるパターンである。
【０１３１】
このように、パターン毎に、通信インターフェース３１−１乃至３１―３毎の受信回数が設定されている。このようなテーブル２２１に基づき処理が行われる場合、パターンＸで通信が確立されなければ、パターンＹに移行し、パターンＹでも通信が確立されなければ、パターンＺに移行しというパターンの移行が繰り返される。
【０１３２】
図１３に示したテーブル２２２は、パターンと受信回数が関連付けられ、パターンと回数で通信インターフェース３１が設定されているテーブルである。パターンＸは、通信インターフェース３１−１の受信回数を２回、通信インターフェース３１−２の受信回数を３回、通信インターフェース３１−３の受信回数を１回と、それぞれ設定し、この順序で切り換えられるパターンである。
【０１３３】
パターンＹは、通信インターフェース３１−２の受信回数を２回、通信インターフェース３１−３の受信回数を３回、通信インターフェース３１−１の受信回数を１回と、それぞれ設定し、この順序で切り換えられるパターンである。パターンＺは、通信インターフェース３１−３の受信回数を２回、通信インターフェース３１−１の受信回数を３回、通信インターフェース３１−２の受信回数を１回と、それぞれ設定し、この順序で切り換えられるパターンである。
【０１３４】
このように、パターン毎に、通信インターフェース３１−１乃至３１―３毎の切り換えの順序と、受信回数が設定されている。このようなテーブル２２２に基づき処理が行われる場合も、パターンＸで通信が確立されなければ、パターンＹに移行し、パターンＹでも通信が確立されなければ、パターンＺに移行しというパターンの移行が繰り返される。
【０１３５】
データ記憶部３４には、テーブル２２１、またはテーブル２２２のどちらかが記憶されている。または、データ記憶部３４には、テーブル２２１とテーブル２２２が記憶され、適宜、コマンド回数設定部４２により参照されるテーブルが決定される。ここでは、テーブル２２１が、データ記憶部３４に記憶され、そのテーブル２２１が参照されて受信回数が設定されるとして説明を続ける。
【０１３６】
図１２の説明に戻り、ステップＳ４０１において、コマンド回数設定部４２は、データ記憶部３４に記憶されているテーブル２２１を参照し、各通信インターフェース３１のコマンドの受信回数を設定する。例えば、一番始めに、ステップＳ４０１の処理が実行されるときには、パターンＸが選択される。このような場合、ステップＳ４０１において、通信インターフェース３１−１の受信回数が３回、通信インターフェース３１−２の受信回数が２回、通信インターフェース３１−３の受信回数が１回と、それぞれ設定される。
【０１３７】
このようにして、各通信インターフェース３１の受信回数が設定されると、ステップＳ４０２において通信インターフェース３１が選択される。この処理では、例えば、パターンＸであれば、まず通信インターフェース３１−１が選択される。このようにして、通信インターフェース３１が選択されると、ステップＳ４０３において、リーダライタ１１からのコマンドの受信待ちの状態が維持される。このステップＳ４０４からステップＳ４０６までの処理は、基本的に、図２に示したステップＳ１０３乃至１０６の処理と同様であるので、その説明は省略する。
【０１３８】
ステップＳ４０６において、所定の回数だけコマンドを処理したと判断された場合、ステップＳ４０７に処理が進められる。ステップＳ４０７において、次のパターンに移行するか否かが判断される。例えば、パターンＸが実行されている場合であり、通信インターフェース３１−１が通信インターフェース３１として設定されているときには、次に、通信インターフェース３１−２に切り換えが行われるため、次のパターンに移行しないと判断される。このように、次のパターンに移行しないと判断されたときには、ステップＳ４０２に処理が戻され、次の通信インターフェース３１が選択され、それ以降の処理が繰り返される。
【０１３９】
一方、例えば、パターンＸが実行されている場合であり、通信インターフェース３１−３が通信インターフェース３１として設定されているときには、次に、切り換える通信インターフェース３１が、パターンＸでは規定されていないので、次のパターンＹに移行すると判断される。このように、次のパターンに移行すると判断されたときには、ステップＳ４０１に処理が戻され、次のパターン（この場合、パターンＹ）が、テーブル２２１から読み出され、各通信インターフェース３１のコマンドの受信回数が設定される。そして、それ以降の処理が繰り返される。
【０１４０】
このように、テーブルに基づき各通信インターフェース３１の受信回数が設定される。ここでは、テーブル２２１の場合を例にあげて説明したが、テーブル２２２がデータ記憶部３４に記憶され、そのテーブル２２２に基づき処理が実行される場合であっても、上記したテーブル２２１の場合と同様に処理することができる。
【０１４１】
このように、テーブルに基づき、受信回数が設定され、リーダライタ１１との通信インターフェース２１と一致するまで、通信インターフェース３１が切り換えられる。そして、ステップＳ４０５において、コマンドを処理できたと判断された場合、ステップＳ４０８に処理が進められ、その時点で設定されている通信インターフェース３１で、通信が確立され、通信が開始される。
【０１４２】
このように、テーブルを用いても、受信回数を設定できる。そして、その効果は、乱数を生成して受信回数を設定する場合と同様の効果を得ることができる。
【０１４３】
テーブルは、予め作成され、データ記憶部３４に記憶されるようにし、記憶された後は、そのまま継続的に使用されるように構成することも可能であるし、適宜更新されるように構成することも可能である。適宜更新されるようにした場合、図１１に示したＩＣカード１２の構成に、図７に示したＩＣカード１２の学習部１０１を加えた構成とすることで実現できる。
【０１４４】
また処理としては、図１２に示したフローチャートの、例えば、ステップＳ４０８の処理の後に、ステップＳ４０９（不図示）として、学習し、テーブルを更新すると行った処理を追加すれば実現できる。ステップＳ４０９として実行される学習と更新の処理は、例えば、図８に示したフローチャートのステップＳ２０８の処理と、基本的に同様に行うことができる。
【０１４５】
なお、上述した実施の形態においては、コマンドが処理できるまで、通信インターフェース３１の切り換えが行われるとしたが、所定の時間が経過したら、そのような切り換えの処理を強制的に終了するようにしても良い。また、強制的に終了した後、再度始めから処理が実行されるようにしても良い（リセットされるようにしても良い）。
【０１４６】
このように、本発明においては、コマンドの受信回数を基準として、ＩＣカード１２の通信インターフェース３１を切り換えることで、以下のような効果がある。まず、将来的に使用される通信インターフェースが増えたような状況下であっても、確実に適切な通信インターフェース３１を選択し、通信を確立させることが可能となる。すなわち、コマンドの受信回数を基準としているので、新しい通信インターフェースに対応させる場合であっても、その通信インターフェース独自のコマンドの送信タイミングなどに依存することなく、通信インターフェース３１を設定することが可能である。
【０１４７】
また、複数のリーダライタ１１に対しても、チューニングなどを行うことなく、柔軟に対応させることが可能となる。すなわち、複数のリーダライタ１１が存在し、複数の通信インターフェース２１が存在しているような状況下では、リーダライタ１１からコマンドが送信されてくる間隔など、まちまちであるが、コマンドの受信回数を基準として通信インターフェース３１を切り換えることで、そのような違いを吸収して、処理することが可能となる。よって、複数のリーダライタ１１のことを考慮して設定する事項がないため、複数のリーダライタ１１に対してのチューニングをしなければ、処理ができないといったようなことは、本発明を適用することで発生することはない。
【０１４８】
［プログラムを記録する記録媒体について］
上述した一連の処理は、ハードウエアにより実行することもできるし、ソフトウエアにより実行することもできる。一連の処理をソフトウエアにより実行する場合には、そのソフトウエアを構成するプログラムが、コンピュータにインストールされる。ここで、コンピュータには、専用のハードウエアに組み込まれているコンピュータや、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどが含まれる。
【０１４９】
図１４は、上述した一連の処理をプログラムにより実行するコンピュータのハードウエアの構成例を示すブロック図である。
【０１５０】
コンピュータにおいて、CPU（Central Processing Unit）３０１、ROM（Read Only Memory）３０２、RAM（Random Access Memory）３０３は、バス３０４により相互に接続されている。バス３０４には、さらに、入出力インターフェース３０５が接続されている。入出力インターフェース３０５には、入力部３０６、出力部３０７、記憶部３０８、通信部３０９、およびドライブ３１０が接続されている。
【０１５１】
入力部３０６は、キーボード、マウス、マイクロフォンなどよりなる。出力部３０７は、ディスプレイ、スピーカなどよりなる。記憶部３０８は、ハードディスクや不揮発性のメモリなどよりなる。通信部３０９は、ネットワークインターフェースなどよりなる。ドライブ３１０は、磁気ディスク、光ディスク、光磁気ディスク、又は半導体メモリなどのリムーバブルメディア３１１を駆動する。
【０１５２】
以上のように構成されるコンピュータでは、CPU３０１が、例えば、記憶部３０８に記憶されているプログラムを、入出力インターフェース３０５およびバス３０４を介して、RAM３０３にロードして実行することにより、上述した一連の処理が行われる。
【０１５３】
コンピュータ（CPU３０１）が実行するプログラムは、例えば、パッケージメディア等としてのリムーバブルメディア３１１に記録して提供することができる。また、プログラムは、ローカルエリアネットワーク、インターネット、デジタル衛星放送といった、有線または無線の伝送媒体を介して提供することができる。
【０１５４】
コンピュータでは、プログラムは、リムーバブルメディア３１１をドライブ３１０に装着することにより、入出力インターフェース３０５を介して、記憶部３０８にインストールすることができる。また、プログラムは、有線または無線の伝送媒体を介して、通信部３０９で受信し、記憶部３０８にインストールすることができる。その他、プログラムは、ROM３０２や記憶部３０８に、予めインストールしておくことができる。
【０１５５】
なお、コンピュータが実行するプログラムは、本明細書で説明する順序に沿って時系列に処理が行われるプログラムであっても良いし、並列に、あるいは呼び出しが行われたとき等の必要なタイミングで処理が行われるプログラムであっても良い。
【０１５６】
また、本明細書において、システムとは、複数の装置により構成される装置全体を表すものである。
【０１５７】
なお、本発明の実施の形態は、上述した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能である。
【符号の説明】
【０１５８】
１１  リーダライタ，  １２  ＩＣカード，  ２１  通信インターフェース，  ２２  インターフェース切り換え部，  ２３  送受信部，  ３１  通信インターフェース，  ３２  インターフェース切り換え部，  ３３  送受信部，  ３４  データ記憶部，  ３５  データ処理部，  ４１  乱数生成部，  ４２  コマンド回数設定部，  ４３  インターフェース選択部，  １０１  学習部，  ２２１，２２２  テーブル
【図１】
2010181950.tif 000003
【図２】
2010181950.tif 000004
【図３】
2010181950.tif 000005
【図４】
2010181950.tif 000006
【図５】
2010181950.tif 000007
【図６】
2010181950.tif 000008
【図７】
2010181950.tif 000009
【図８】
2010181950.tif 000010
【図９】
2010181950.tif 000011
【図１０】
2010181950.tif 000012
【図１１】
2010181950.tif 000013
【図１２】
2010181950.tif 000014
【図１３】
2010181950.tif 000015
【図１４】
2010181950.tif 000016