BlankTar

about | blog | works | photo

最近多いっすよね、カードをピッてかざす奴。PASMO的な。いわゆるRFID。
あれで色々遊びたかったのですが、上手くいかないのでとりあえず断念。

読みたいカードがどうやらマイナーな形式らしくて(多分TypeAかTypeB)、情報が見つからないのよね・・・。
んでも調べたものを放置するのも悲しいので、記録しておきます。俺の屍を越えてゆけ?

カードの種類

すべて同じ物と思うなかれ、実は色々種類があるようです。

ひとつ目が、日本で一番流通しているFeliCaってやつ。
PASMO、suicaにEdy、その他諸々。大体これみたい。
日本独自に近くて、ガラパゴスな感じ。
ISO/IEC 14443 Type-Cとして規格化しようとしていたものの、時間切れでダメだったらしい。
その後ISO/IEC 18092として規格化されました。

ふたつ目が、MIFARE(マイフェア)っていうの。
単価が安いらしくて、世界ではいっぱい出回ってる、らしい。
日本ではtaspoで使われているとか。
ISO/IEC 14443 Type-Aとして規格化されています。

みっつ目、ISO/IEC 14443 Type-B。なんと、名前(愛称?)がないっぽい。
格納できる情報量が多い、らしい。よく分からん。
運転免許証、住民基本台帳カード、パスポートなどなどに使われているあたり、セキュリティも強いのかもね。

PaSoRiで使う

SonyのPaSoRiを使っているのなら、これは比較的簡単。
Sonyさんが開発者向けにSDK for NFCというのを公開してくれているので、それを使えばおっけー。
ダウンロードはここからね。
個人で使う場合はSDK for NFC Starter Kitってのを使えばおっけーっす。
TypeA、TypeBともに対応しているらしいのだけれど、なんかうちの環境(RC-S330 / Windows XP)だと上手く行かなかった。
FeliCaなら問題なく。

ただ。ただね、めんどくさいんだ、これ。
なんかこう、これで開発しようとすると手間が多くてまどろっこしい。

そこで、有志の方が公開してくださっているfelicalibというのを使ってみる。
これは結構シンプル。しかもBSD Licenseなので、色々使える。素敵。
ただ、やはりTypeA、TypeBでの動作は確認できず。残念。

ACR120で使う

手持ちにリーダーがないので試せてないけれど、一応。
持ってる人は知ってるので、もしも借りれたら? 借りれる気がしないけれど。

なんか有料の高価なSDKもあるようですが、これじゃなくて英語サイトのdriversのページにあったACS Synchronous API Drivers (Proprietary Drivers)ってのが使えそうな雰囲気。
開いてみると、x86版とx64版のdllファイルが入ってます。
これ使えば行けるんじゃないかな、きっと。
APIのマニュアル(pdf)もあるので、端末持ってる方はぜひ試してみてください。

とまあ、とりあえず調べたのはこんな感じ。
結局TypeAだかBだか分からない手元のカードは読めませんでしたとさ。がっかり。

RFIDってのはすごい楽しいものだと思うのだけれど、どうにもまだ情報が少ないよね。
そもそも同じ事するのに規格が3つって何事やねん。めんどくさいやん。
< pythonのlambda内で無理やり変数を定義する MeCabさんが記号を「サ変接続」と認識してしまう >