確定申告のために、PaSoRiを購入された方もおられるのではないでしょうか?
あれを他の事にも利用できないかと考えたことは無いでしょうか?
ソニー SONY 非接触ICカードリーダー/ライター PaSoRi RC-S380
- 出版社/メーカー: ソニー(SONY)
- 発売日: 2012/10/10
- メディア: Personal Computers
- 購入: 5人 クリック: 9回
- この商品を含むブログ (18件) を見る
最近では、「WebUSB API」と言うブラウザとデバイスを直接繋ぐ技術を使って、ブラウザーからPaSoRi経由でデータを読み込むと言う話も耳にします。
ブラウザの進化は止まりませんね…。
脱線してしまいましたが、
今回はICカードを扱う際に、仕様調査の触りとなる部分について触れたいと思います。
注意
今回取り上げるのは、NFCを用いたICカードについてです。
全てのタッチするICカード(非接触型)が必ずしもNFCではありませんのでご注意ください。
NFCとは
Suicaを改札を近づけると電子マネーで決済出来るのは、NFCと言う通信技術を使っているためです。
NFCとはNear field communicationの略で、日本語だと近距離無線通信と言います。
フィリップス(現: NXPセミコンダクターズ)とソニーが国際規格を決めた通信規格です。
www.sony.co.jp ja.wikipedia.org
カード種類
Suicaのようなタッチで扱えるカードをよく見かけます。
あれは何なのでしょうか?
ちなみに、SuicaはFeliCaとよばれる規格で、FeliCa Standardとよばれる種類になります。
NFCの規格で製作されたカードは複数ありますが、よく日本で見かけるのは次の2つになります。
名前 | 開発元 | 特徴 |
---|---|---|
FeliCa | ソニー(日本) | 日本のみ普及している規格 |
MIFARE | NXPセミコンダクターズ(オランダ) | 海外で普及している規格 |
もちろん、厳密にはまだあるかもしれませんが、集められる情報だと2つに絞られます。
FeliCaについて
ソニーが開発した非接触型ICカードの規格のことです。
ソニーだけあって日本で多く普及されているカードです。
カード発行(厳密にはチップ発行)時に、IDmという固有IDを保持しているため、サービスを作るときはこの情報がキーとなります。
www.orangetags.jp
MIFAREについて
NXPセミコンダクターズが開発した非接触型ICカードの規格のことです。
日本以外で広く取り扱われている規格です。
FeliCa同様、カード発行時にUIDという固有IDを保持しています。
FeliCaと比べて、性能は低いものの価格が安いのが特徴です。
雑感
日本での認知度については、「NFC≒FeliCa」の様な状況です。
そのため、検索で得られる情報もFeliCaの方が多いです。
実装する場合の環境について
実際に開発、運用を行う場合はどう言う環境が良いのでしょうか?
日本だと情報が集めやすいFeliCaを使う前提で考えてみます。
その場合、下記のような環境が考えられます。
項目 | 種類 | 備考 |
---|---|---|
PC | windows | バージョンは7以上 |
カードリーダー | PaSoRi RCS380 | 2019年5月時点の現行モデル |
カードリーダーについては、Sonyが作った製品であるためPaSoRiを使う事を前提にします。
実装方法について
最初に「WebUSB API」について触れましたが、現実的にはWindowsネィティブアプリで実装するのが良いと思われます。
何故、Windowsのネィティブアプリで実装する必要があるのか?
MicrosoftはPC/SC (Personal Computer/Smart Card)と言うNFC用の規格があります。
Windowsにも、規格を取得するためのAPIが標準搭載されています。
FeliCaのIDmであればこのAPIを使用して取得する事が可能です。
Windowsで開発した方が破綻しないアプリケーションが作れます。
ただし、FeliCaのカード自体に保存されているデータを読み込む場合は、カードリーダーの仕様に準じます。
FeliCaのカード内のデータを取り扱う場合は、SDKを利用する必要があります。
WebUSB APIの懸念点について
確かに、「WebUSB API」でSuicaのデータを読み込んだと言う話は聞きます。
qiita.com
ただし、上記の参考ページはとても高度な事をしています。
要は、「PC/SC」のような規格がないので自力で作ったと言うことになります。
低レイヤーの知識が無いと扱いきれるものではありません。
ちなみに、Web USB APIはChrome専用のAPIです。
developers.google.com
利用環境についても、ブラウザをChromeに縛る必要があったり、使用するPCで利用できるように設定する必要があります。
自社で実験的に使うだけであれば良いかもしれません。
しかし、客先で使うのであれば、様々なトラブルに備える必要が出てくると思われます。
以上です。
単純にICカードを使うと言っても、かなり色々な情報を知る必要がありました。
仕様調査する際の手がかりになればと思います。