(58)【調査した分野】(Int.Cl.,DB名)
【背景技術】
【0002】
オブジェクト指向環境で動作するソフトウェアシステムを採用する情報処理装置を含む情報処理システムには、たとえば、カードリーダライタ等の電子機器装置と、カードリーダライタと通信を行うATM等の上位装置が含まれる。
金融機関などで使用され、キャッシュレスや個人認証などを実現するカードとして、プラスチック基板内部に集積回路チップ(ICチップ)が埋め込まれ、表面にIC端子が配置されたICカード(接触式ICカード)や内部にアンテナコイルが配置されたICカード(非接触式ICカード)がある。
そして、このICカードに対する情報の再生または記録は、電子機器装置としてのカードリーダライタによって行われる。
【0003】
カードリーダライタは、上位装置からのコマンド(コマンドAPDU:Application Protocol Data Unit)を受信し、ICカードとの通信プロトコルに沿った形式(コマンドTPDU:Transmission Protocol Data Unit)に変換する。
そして、電圧や通信速度等も変換した後に、そのコマンドをICカードへ送信する。また、ICカードからの応答を受信した後、逆変換(レスポンスTPDUからレスポンスAPDUへの変換)を行って、その応答を上位装置へ送信する。
【0004】
上位装置とカードリーダライタとの間の通信は、RS232CやUSB(Universal Serial Bus)などが一般的であり、カードリーダライタとICカードとの間の通信は、TTLレベル、USB、および非接触通信等が一般的である。
また、一般に、カードリーダライタは、APDUのデータ内容を解釈することなく、単にTPDUに変換する処理を行う。
【0005】
このようなカードリーダライタ等の電子機器装置と通信を行うATM等の上位装置には、電子機器装置との通信を制御するために、オブジェクト指向環境で動作する通信制御用クラスライブラリ(ソフトウェアシステム)が適用される場合がある。
なお、対象となる通信制御用クラスライブラリは、ターゲットとなるカードリーダライタとの通信規約をカプセル化し、カードリーダライタを機能させるためのコマンド送信、レスポンス受信を行うためのインターフェースの提供を主な目的とする。
【0006】
以下、一例として、オブジェクト指向プログラミング言語であるJava(登録商標)で開発されたクラスライブラリについて説明する。
Javaで開発されたミドルウェアは、一般にクラスライブラリという形にまとめられて提供される。
【0007】
Java言語で開発されたクラスライブラリは、複数のクラスを名前空間内に配置し、一つのファイルにまとめた形で提供されることが一般的である。この名前空間をパッケージと呼ぶ。
パッケージへのライブラリの配置は、フォルダ構造(フォルダを使用した階層構造)という形で実現され、このフォルダ構造を維持したままjar(ファイルフォーマット)という形式の圧縮ファイルとして配布するのが一般的である。なお、jarはzip方式によるファイル圧縮の一形態である。
以下に一例を示す。
【0008】
例)
ICT3K5_3R6940Ctrl.jar
+META‐INF
| +MANIFEST.MF
+jp
+co
+nidec_sankyo
+crd
+ICT3K5_3R6940
+DevCtrl.class
+ICCardTransmitCtrl.class
+SAMCardTransmitCtrl.class
+UpdateFirmwareCtrl.class
+<以下省略>
【0009】
例は、拡張子“class”を持つ複数のJavaクラスのファイル、すなわち、クラスライブラリが、“jp/co/nidec_sankyo/crd/ICT3K5_3R6940”なるパッケージ内に配置され、“ICT3K5_3R6940Ctrl.jar”なる名称のファイルとしてまとめられていることを示している。
一つのjarファイルには複数のパッケージを格納することも可能である。
また、“MANIFEST.MF”は“マニフェストファイル”と呼ばれ、一つのjarファイルに一つだけ存在する。
【0010】
上述したように、対象となる通信制御用Javaクラスライブラリは、ターゲットとなるカードリーダライタとの通信規約をカプセル化し、このカードリーダライタを機能させるためのコマンド送信、レスポンス受信を行うためのインターフェースの提供を主な目的とする。
【0011】
なお、特許文献1〜3には“Java言語プログラムを用いた大規模業務系の影響分析ツール”に関する技術が記載され、特許文献4は“クラス情報を管理するための方法および装置”が記載されている。
【発明の概要】
【発明が解決しようとする課題】
【0013】
ところで、上記クラスライブラリは、jarと呼ばれる圧縮形式のファイルとして適用されるが、そのファイルの固有情報、たとえばバージョン情報の取得方法については一般化されておらず、特に具体的に示されていない。
ただし、そのファイルのバージョン情報を取得する方法としては、以下の第1から第4の方法が考えられる。
以下にこれらの方法とその課題について述べる。
【0014】
[第1の方法]
第1の方法は、マニフェストファイルにバージョン情報を埋め込む方法である。
この第1の方法では、所定のプログラムを実行し、“マニフェストファイル”に埋め込んだ情報を読み出すことは可能である。
ただしこの場合、以下の不利益がある。
一般的にオペレーティングシステム(OS)は所定の検索ルールに従ってファイルを探し出すようになっている。
アプリケーションプログラムを実行することによりバージョン情報を取得する方式では、バージョン確認対象となるクラスライブラリを格納するjarファイルが複数存在した場合、意図するものとは異なるものがロードされ、結果として誤った情報を取得する事態が懸念される。
アプリケーションプログラムよりメソッドを実行することによりバージョン情報取得を行う方式は、あくまでも間接的な情報取得方法の範疇に留まるため、前出の例のようなjarファイルが存在しないかなど、予め環境設定にも気を配っておく必要がある。
また、CUI(Character User Interface)での操作が必須となるため、不慣れな場合には間違いやすい。
【0015】
また、第1の方法によれば、以下の不利益がある。
クラスライブラリパッケージは通常jarファイルとして配布される。jarファイルは、前述したように、ファイル圧縮方式であるzipの一形態である。
このため、jarファイルを一旦解凍してマニフェストファイルを取り出し、テキストエディタで閲覧することでバージョン情報を読み出す方法がある。この場合、解凍、閲覧にそれぞれ専用のソフトウェアが必要になる。また、そのための手間が発生する。
【0016】
[第2の方法]
第2の方法は、バージョンを通知するメソッド(手続き)を実装する方法である。
しかし、第2の方法によれば、以下の不利益がある。
第2の方法では、別のソフトウェアモジュール経由でないとメソッドを実行することができないため、別のソフトウェアモジュールであるアプリケーションプログラムを別途準備する必要がある。
第2の方法では、バージョン確認は、それを利用するソフトウェアの開発着手時やクラスライブラリのバージョンアップ時など、利用者が当該クラスライブラリに関する知識や、それを利用するためのソフトウェア開発環境に関する知識を十分に持ち合わせていない状況下で必要となるケースがほとんどである。
このような状況下でのアプリケーションプログラムの作成は、利用者の負担となり、確認までに時間を要する原因となる。
【0017】
また、第2の方法では、上述した第1の方法と同様の不利益がある。
一般的にOSは所定の検索ルールに従ってファイルを探し出すようになっている。
アプリケーションプログラムを実行することによりバージョン情報を取得する方式では、バージョン確認対象となるクラスライブラリを格納するjarファイルが複数存在した場合、意図するものとは異なるものがロードされ、結果として誤った情報を取得する事態が懸念される。
アプリケーションプログラムよりメソッドを実行することによりバージョン情報取得を行う方式は、あくまでも間接的な情報取得方法の範疇に留まるため、前出の例のようなjarファイルが存在しないかなど、予め環境設定にも気を配っておく必要がある。
【0018】
[第3の方法]
第3の方法は、バイナリイメージにバージョン情報を埋め込む方法である。
しかし、第3の方法によれば、以下の不利益がある。
Java言語によるソフトウェアの開発においては、バイナリイメージにおける出力位置を指定する方法がない。したがって、第3の方法では、キーワードを設けるなどして検索できるようにしておく必要がある。
第3の方法では、閲覧にはバイナリエディタが必要となる。
また、jarファイルは圧縮ファイルにつき、元々のバイナリイメージは原型をとどめない。したがって、直接jarファイルを閲覧しても意味がない。このため、第3の方法では、一旦解凍し、バージョン情報が書かれているファイルを閲覧することになるが、通常複数の元ファイルにより構成されるため、バージョンが書かれているファイルがどれであるか別ルールを設けるなどして明らかにしておく必要がある。
第3の方法では、難読化処理を施した場合には、可読性の確保ができないケースも発生する。
【0019】
[第4の方法]
第4の方法は、バージョン情報をファイル名に反映させる方法である。
しかし、この第4の方法によれば、ファイルのリネームは使用者に関する制限等なく、また容易であるため、管理上混乱をきたす恐れがある。
【0020】
本発明は、ファイルのバージョン情報等の固有情報を直接かつ容易に取得することが可能な情報処理装置、情報処理システム、情報処理方法、およびプログラムを提供することにある。
【課題を解決するための手段】
【0021】
本発明の第1の観点は、少なくとも電子機器装置との間で通信制御を行い、当該電子機器装置からの情報を取得する情報処理装置であって、状況に応じた処理を実行するアプリケーションプログラムおよび前記電子機器装置との通信制御用の複数のミドルウェアを含むソフトウェアシステムを有しており、前記通信制御用の複数のミドルウェアをまとめてクラスライブラリとして形成され、前記クラスライブラリには、前記ソフトウェアシステムの固有情報を記憶するクラスを備え
、前記固有情報は前記クラスライブラリのファイル自身に内蔵されており、ファイルを直接クリックすることにより、メッセージボックスが現れ、前記固有情報が表示装置に表示されるように構成されている。
これにより、ソフトウェアシステムのバージョン情報等の固有情報を他のモジュールを介することなく直接かつ容易に取得することができる。
【0022】
好適には、前記クラスライブラリを提供するクラスは、実行プログラム部およびクラスライブラリのエキスポート部を含む形態で形成され、前記クラスライブラリのエキスポート部は、前記電子機器装置との通信制御用クラスライブラリのエキスポートを行う機能を含み、前記実行プログラム部は、実行すると前記ファイルまたはエキスポートされるクラスライブラリの固有情報としてのバーション情報を出力する機能を含む。
これにより、ファイルまたはエキスポートされるクラスライブラリのバーション情報を直接かつ容易に取得することができる。
【0023】
本発明の第2の観点の情報処理システムは、情報処理装置と、前記情報処理装置との間で通信を行うとともに状況に応じた処理を実行して、前記情報処理装置に対し現在の状態と処理結果を送信する電子機器装置と、を有し、前記情報処理装置は、少なくとも電子機器装置との間で通信制御を行い、当該電子機器装置からの情報を取得する機能を含み、状況に応じた処理を実行するアプリケーションプログラムおよび前記電子機器装置との通信制御用の複数のミドルウェアを含むソフトウェアシステムを有しており、前記通信制御用の複数のミドルウェアをまとめてクラスライブラリとして形成され、前記クラスライブラリには、前記ソフトウェアシステムの固有情報を記憶するクラスを備え
、前記固有情報は前記クラスライブラリのファイル自身に内蔵されており、ファイルを直接クリックすることにより、メッセージボックスが現れ、前記固有情報が表示装置に表示されるように構成されている。
【0024】
本発明の第3の観点は、少なくとも電子機器装置との間で通信制御を行い、当該電子機器装置からの情報を取得する情報処理装置における情報処理方法であって、状況に応じた処理を実行するアプリケーションプログラムおよび前記電子機器装置との通信制御用の複数のミドルウェアを含むソフトウェアシステムを形成し、前記通信制御用の複数のミドルウェアをまとめてクラスライブラリとして形成し、前記クラスライブラリには、前記ソフトウェアシステムの固有情報を記憶するクラスを形成し、
前記固有情報は前記クラスライブラリのファイル自身に内蔵し、ファイルを直接クリックすることにより、メッセージボックスを現出させ、前記固有情報を表示装置に表示する。
【0025】
本発明の第4の観点は、少なくとも電子機器装置との間で通信制御を行い、当該電子機器装置からの情報を取得する上位装置としての情報処理装置における情報処理であって、状況に応じた処理を実行するアプリケーションプログラムおよび前記電子機器装置との通信制御用の複数のミドルウェアを含むソフトウェアシステムを形成し、前記通信制御用の複数のミドルウェアをまとめてクラスライブラリとして形成し、前記クラスライブラリには、前記ソフトウェアシステムの固有情報を記憶するクラスを形成する情報処理をコンピュータに実行させるプログラムである。
【発明の効果】
【0026】
本発明によれば、ファイルのバージョン情報等の固有情報を直接かつ容易に取得することができる。
【発明を実施するための形態】
【0028】
以下、本発明の実施形態を図面に関連付けて説明する。
以下の実施形態においては、電子機器装置としてカードリーダライタを例に説明する。
【0029】
図1は、本発明の実施形態に係る情報処理システムの概要を示すブロック図である。
【0030】
情報処理システム10は、情報処理装置としての上位装置(ホスト装置)20、カードリーダライタ(電子機器装置)30、およびICカード40を含んで構成されている。
【0031】
本実施形態では、このようなカードリーダライタ等の電子機器装置と通信を行うATM等の上位装置20には、電子機器装置との通信を制御するために、オブジェクト指向環境で動作する通信制御用クラスライブラリ(ソフトウェアシステム)が適用される。
上位装置20には、提供するアプリケーションプログラムAPが格納されている。このアプリケーションプログラムAPは、オブジェクト指向のコンピュータ言語の1つであるJava(登録商標)により記述されたプログラムであり、Java実行環境で実行可能なJavaバイトコードで構成されている。
本実施形態では、本発明に係るプログラム実行装置をJava(登録商標)言語で記述されたJava(登録商標)アプリケーションプログラムを実行するJava(登録商標)アプリケーション実行装置を一例として実施の形態で、図面を参照しながら説明する。
【0032】
[上位装置の構成および機能]
上位装置20は、カードリーダライタ30との間で通信制御を行い、コマンドの送信に対応したレスポンスを受信する等の各種情報の授受を行って、カードリーダライタ30からの情報を取得する。
【0033】
図2は、本実施形態に係る上位装置の構成例を概念的に示す図である。
図2の上位装置20は、基本的に、処理装置であるCPU21、ROM22、RAM23、ストレージユニット24、バージョン(リビジョン)等の情報が表示される表示装置25、およびキーボード261やマウス262を含む操作部26を含んで構成される。
【0034】
CPU21は、Java(登録商標)仮想マシン、オペレーティングシステム(OS)、アプリケーションプログラムを実行する。
RAM23は、具体的にはSRAM、DRAM等の一時記憶メモリで構成され、CPU21が処理を行う際、一時的にデータを保存するために使用される。
ROM22は、具体的にはフラッシュメモリや、ハードディスク等の不揮発性メモリで構成され、CPU21から指示されたデータやプログラムを記憶する。
【0035】
本例においては、図中のストレージユニット24内に保存されたオペレーティングシステム(OS)、Java実行環境を構築するためのソフトウェアとしてのミドルウェアMW、オブジェクト指向プログラム言語で記載されたJava(登録商標)言語などで記述されたアプリケーション等のプログラムがソフトウェアシステムの一部をなして格納されている。そして、これらプログラムを実行する実行時にいわゆるコンピュータ(電子計算機)のソフトウェアとしてRAM23上に展開される。
【0036】
このような構成を有する上位装置20においては、次の特徴をもって構成されている。
上記したように、状況に応じた処理を実行するアプリケーションプログラムおよびカードリーダライタ30との通信制御用の複数のミドルウェアを含むソフトウェアシステムを有している。
上位装置20においては、この通信制御用の複数のミドルウェアをまとめてクラスライブラリとして形成され、この通信制御用クラスライブラリには、ソフトウェアシステムの固有情報を記憶するクラスを備えている。
【0037】
なお、クラスライブラリとは、ある特定の機能をもったプログラムを、オブジェクト指向プログラミング言語を用いて一つの「クラス」として部品化し、関連する複数のクラスを一つのファイルにまとめたものをいう。
オブジェクト指向プログラミング言語では、共通する属性やメソッド(データと、このデータを操作する手続き)をもったオブジェクト群の雛形を「クラス」と呼ぶ。
こうした「クラス」はプログラムの部品として利用できるため、よく使われる汎用的なものをクラスライブラリに集めておくことで、プログラミングの労力を軽減することができる。
また、クラスライブラリでは、ファイル入出力、数学演算、ネットワークなど様々な機能を提供するライブラリを用意することが可能である。
また、クラスライブラリは「パッケージ」と呼ばれる単位で機能ごとに分類されている。
【0038】
本実施形態では、通信制御用のクラスライブラリに関連する処理について説明する。
本実施形態において、対象となる通信制御用クラスライブラリは、ターゲットとなるカードリーダライタ30との通信規約をカプセル化し、カードリーダライタ30を機能させるためのコマンド送信、レスポンス受信を行うためのインターフェースの提供を主な目的とする。
【0039】
また、固有情報とは、クラスライブラリを提供するファイルまたはエキスポートされるクラスライブラリのバーション情報を例示することができる。
固有情報は、このようなバージョン情報だけでなく、クラスライブラリのバージョン以外のプロパティ、たとえば著作権者、作成年月日、コメント(社内ユーザオンリー等)、テストバージョン等も同時にあるいは個別に情報提供することが可能である。
本実施形態では、通信制御用ソフトウェアシステムを開発等する際に、極めて重要な情報となるバージョン情報を例に説明する。
【0040】
ここで、本実施形態に係るクラスライブラリを提供するファイルについて説明する。
図3は、本実施形態に係るクラスライブラリを提供するファイルについて概念的に説明するための図である。
【0041】
クラスライブラリを提供するファイル200は、実行プログラム部201およびクラスライブラリのエキスポート部202を含む形態で形成される。
【0042】
実行プログラム部201は、実行すると(実行指示を受けて実行すると)ファイルまたはエキスポートされるクラスライブラリのバーション情報を出力する実行機能を有する。
ここで、実行指示を受けて実行するとは、たとえば
図2の構成において、Windows(登録商標)環境などで、ユーザがマウス262を使って表示装置25上に表示されているファイル200を示すアイコンに対してダブルクリックを行うこと等の操作が含まれる。
【0043】
クラスライブラリのエキスポート部202は、カードリーダライタ30との通信制御用クラスライブラリのエキスポートを行う機能を含む。
ここで、エキスポート(またはエクスポート)とは他のアプリケーションソフトで使用できるよう、インターフェースを提供することを言う。
【0044】
クラスライブラリを提供するファイルの一例としてJavaのjarファイルをあげると、jarファイルを目的別に分類すると、次の3形態が存在する。
(1)クラスライブラリのエキスポートのみ
(2)実行プログラムのみ
(3)実行プログラム+クラスライブラリのエキスポート
【0045】
本実施形態においては、(3)実行プログラム+クラスライブラリのエキスポートの形態を応用したものである。
すなわち、本実施形態においては、本来の目的であるカードリーダライタとの通信制御用クラスライブラリのエキスポートに加え、バージョン情報を出力する実行機能を持たせている。
【0046】
これらの具体的な例は後で詳述する。この場合、一例として、オブジェクト指向プログラミング言語であるJava(登録商標)で開発されたクラスライブラリに関連付けて説明する。
【0047】
次に、上位装置20の要部の具体的なアーキテクチャの例について説明する。
図4は、本実施形態に係る情報処理装置としての上位装置の要部の具体的なアーキテクチャを示す図である。
【0048】
ソフトウェアシステム(ブロック)210は、ソフトウェアを実行するプログラムを収納し実行する。
ソフトウェアシステム210は、たとえば
図4に示すように、アプリケーション部210A、ミドルウェア部210B、システム全体を制御するオペレーティングシステム(OS)部210C、および仮想マシン(JavaVM)210Dにより形成される。
また、ソフトウェアシステム210は、システム起動時に働くブートプログラム(BP)220を含んで構成されてもよい。
【0049】
図4は、OS上で仮想マシン(JavaVM)が動いているJava実行環境の一例を示しており、システム起動時に働くインターフェース(I/F)、システム全体を制御するOS、OSの違いを吸収して共通のプラットフォームを提供する仮想マシン(JavaVM)、仮想マシン(JavaVM)上で動くクラスライブラリ、機器の利用目的を実行する実行アプリケーションによって構成されている。
ここで、OS、仮想マシン(JavaVM)、およびクラスライブラリがアップデート対象となる動作プログラムである。
【0050】
アプリケーション部210Aは、オブジェクト指向プログラミング言語のソースコード生成部211、並列コンパイラ212、および実行形式部213を含む。
ミドルウェア部210Bは、通信制御用クラスライブラリ214を含む。
通信制御用クラスライブラリ214には、バージョン情報用クラスの“RevInfo.class”、カードリーダライタ30を機能させるためのコマンド送信、レスポンス受信を行うための主たる制御を行う通信制御用の“DevCtrl.class”等を含む。クラスライブラリ214には、ソフトウェアシステムの固有情報であるバージョン情報を記憶するクラスCLSを備えている。
また、オペレーティングシステム部210Cは、ホストファイル部215、ユーティリティ部216、および常駐プログラム部217を含む。
【0051】
なお、実行環境とは、オブジェクト指向技術を用いてアプリケーションプログラムを実行する環境をいい、本実施形態では、オブジェクト指向技術の1つとしてのJava(商標登録)を用いている。
仮想マシン210Dでは、たとえば中間言語である実行コード(バイトコード)の実行時に最終的にハードウェアにネイティブな機械語コードに変換されて実行される。
【0052】
このように形成されるソフトウェアシステム210の実行ファイル生成について説明する。
【0053】
実行ファイルの生成処理においては、まず、ソースコード生成部211において、ソースコードを作成する。
クラスライブラリ214を参照しコンパイラ212で作成したソースコードに関するコンパイルを行う。
コンパイル結果を用いて実行形式部213が並列アプリケーションの実行ファイルを完成する。完成した実行ファイルは、OS(オペレーティングシステム)部210Cに与えられる。
そして、仮想マシン210DはOS上で動作し、バイトコードを解釈して実行する。
【0054】
以上、上位装置20の構成および機能について具体的に説明した。
次に、カードリーダライタ30の構成および機能について説明する。
【0055】
[カードリーダライタ30の構成および機能]
カードリーダライタ30は、上位装置20との通信およびICカード40との通信機能を有する。
図5は、本実施形態に係る電子機器装置としてのカードリーダライタの信号処理系の構成例を示す図である。
【0056】
カードリーダライタ30は、カードリーダライタ30全体を統合的に制御するCPU31、カードリーダライタ30の動作プログラムや初期値、パラメータなどを格納するROM32、CPU31のワーキングエリアとして機能するRAM33、上位装置I/F(インターフェース)34、およびカードI/F35を有している。
カードリーダライタ30は、上位装置I/F34を介して上位装置20と接続され、カードI/F35を介してICカード40と(無線または有線で)通信可能に構成されている。
カードリーダライタ30は、上位装置20との間の通信規約に沿った情報列のコマンドに基づき動作し、ICカード40との間の通信規約に沿った情報列の送受信を行う機能を有する。
【0057】
上位装置I/F34は、上位装置20からカードリーダライタ30へ送られた信号をTTLレベルの信号に変換し、それをCPU31に転送する機能を有する。
また、CPU31からの信号を逆変換して、上位装置20に転送する。上位装置20とカードリーダライタ30の間の通信は、USBやRS232C等が一般的である。
【0058】
CPU31は、上位装置20との間の通信規約(たとえばUSB)に沿った情報列(コマンドAPDU)内のコマンドに基づいて動作する。
そして、CPU31は、そのコマンドAPDUを、ICカード40との間の通信規約(たとえば非接触通信)に沿った情報列に変換し、これをICカード40に送信する。
すなわち、CPU31は、上位装置20からのコマンドAPDUを、ICカード40との通信プロトコルに沿った形式(コマンドTPDU)に変換する。
変換されたコマンドTPDUは、カードI/F35を通じてICカード40に送信される。
【0059】
一方で、ICカード40からのレスポンス受信時には、CPU31はレスポンスTPDUをレスポンスAPDUに変換する。変換されたレスポンスAPDUは、上位装置I/F34を通じて上位装置20に転送される。
【0060】
カードI/F35は、コマンドTPDUを、ICカード40に応じた電圧や通信速度に変換し、ICカード40に送信する。
また、カードI/F35は、ICカード40から受信した信号をTTLレベルの信号に変換し、それをCPU31に伝える機能を有する。
カードリーダライタ30とICカード40間の通信は、TTLレベル、非接触通信、およびUSB等が一般的である。
【0061】
ROM32は、プログラム等の不揮発性データを保存するのに対し、RAM33は、CPU31のワーキングエリアとして機能するとともに、一時的にデータを保存する。
【0062】
[クラスライブラリの具体的な実行例]
上述したように、本実施形態においては、対象となるクラスライブラリは、ターゲットとなるカードリーダライタとの通信規約をカプセル化し、カードリーダライタを機能させるためのコマンド送信、レスポンス受信を行うためのインターフェースの提供を主な目的とする。
そして、本実施形態において、クラスライブラリを提供するファイルは、本来の目的であるカードリーダライタ通信制御用クラスライブラリのエキスポートに加え、バージョン情報を出力する実行機能を持たせている。
以下これらの具体的な例を説明する。
ここでは、一例として、オブジェクト指向プログラミング言語であるJava(登録商標)で開発されたクラスライブラリに関連付けて説明する。
【0063】
Jarファイルは、Java(登録商標)アプリケーションを構成する複数のファイルをひとつにまとめた、上位装置のプラットフォームに依存しないファイルの形式である。
Java言語で開発されたクラスライブラリは、複数のクラスを名前空間内に配置し、一つのファイルにまとめた形で提供されることが一般的である。この名前空間をパッケージと呼ぶ。
パッケージへのライブラリの配置は、フォルダを使用した階層構造という形で実現され、このフォルダ構造を維持したままjarという形式の圧縮ファイルとして配布するのが一般的である。なお、jarはzip方式によるファイル圧縮の一形態である。
以下に一例を示す。また、
図6は、本実施形態に係るバージョン情報取得の基本的な処理を示すフローチャートである。
【0064】
(具体的な実現例)
ICT3K5_3R6940Ctrl.jar
+META−INF
| +MANIFEST.MF
+jp
+co
+nidec_sankyo
+crd
+ICT3K5_3R6940
+RevInfo.class(→*)
+DevCtrl.class
+ICCardTransmitCtrl.class
+SAMCardTransmitCtrl.class
+UpdateFirmwareCtrl.class
+<以下省略>
【0065】
この例は、前述した例と同様に、拡張子“class”を持つ複数のJavaクラスのファイル、すなわち、クラスライブラリが、“jp/co/nidec_sankyo/crd/ICT3K5_3R6940”なるパッケージ内に配置され、“ICT3K5_3R6940Ctrl.jar”なる名称のファイルとしてまとめられていることを示している(
図6のステップST1)。
一つのjarファイルには複数のパッケージを格納することも可能である。
また、“MANIFEST.MF”は“マニフェストファイル”と呼ばれ、一つのjarファイルに一つだけ存在する。
【0066】
上述したように、対象となるJavaクラスライブラリは、ターゲットとなるカードリーダとの通信規約をカプセル化し、このカードリーダを機能させるためのコマンド送信、レスポンス受信を行うためのインターフェースの提供を主な目的とする。
【0067】
本実施形態では、このクラスライブラリにバージョン情報を取得するためのクラスである、(*)印を付した“RevInfoクラス”を作成し、クラスライブラリ214に追加する(ステップST2)。
RevInfoクラスにはmainメソッドを定義する(ステップST3)。
そして、ICT3K5_3R6940Ctrl.jarを実行すると(ステップST4)、このmainメソッドがコールされる(ステップST5)。
これに伴い、mainメソッドはバージョン情報を出力する(ステップST6)。
【0068】
このjarファイルには、通常どおりのクラスライブラリが、通常どおりの形でパッケージに格納されている。したがって、バージョン出力機能が追加されたこと以外は、通常のものに対して完全互換となっている。
【0069】
こうすることで、通常の方法に対し次の利点が生じる。
アプリケーションプログラムなど、他のモジュールを介することなく、使用するjarファイルのバージョン情報を取得することができる。
Windows環境などでは、jarファイルをダブルクリックすることにより直接実行することができる。したがって、ファイルの検索パスを気にする必要がない。換言すると、意図したものとは異なるjarファイルのバージョン情報を取得するような誤りを犯す心配がない。
jarファイルの解凍用ソフト、バイナリエディタ、テキストエディタなどを使用する必要がない。
【0070】
すなわち、本実施形態によれば、クラスライブラリのファイル自身にバージョン情報を内蔵することにより、間接的なバージョン確認による誤りを排除することが可能になる。
ここでいう「間接的なバージョン確認」とは、ファイルの更新日時など、本来バージョンとは無関係な情報を介した形でのバージョン確認のことを指す。
本実施形態では、ファイルを直接クリックすることにより、メッセージボックスが現れ、バージョンが表示装置25に表示されるように構成されている。これは、客観的に考えて、現在考え得る最も直接的なバージョン確認手段である。
【0071】
なお、本実施形態では、通信制御対象としてカードリーダライタを例に説明したが、本発明は、上述したICカードに対する情報の再生または記録を行うICカードリーダライタに限らず、磁気情報を記録された磁気ストライプを搭載する磁気カードに対する情報の再生または記録を行う磁気カードリーダライタであってもよく、または、他の電子機器装置、たとえば、カードスキャナ、カードプリンタ等にも適用が可能である。
また、クラスライブラリのバージョン以外のプロパティ、たとえば、著作権者、作成年月日、なども同時に情報提供することが可能である。