NFCリーダーで遊ぶ【調査編:NFCとは?】

最近、クレジットカードの切り替えを行い、Edyの残高を別のカードに移行するために楽天オフィシャルサイトからNFCリーダーを購入しました。
Edyのためだけに眠らせておくにはもったいないので、せっかくなのでNFCリーダーで遊んでみることにしました。

ちなみに、僕はNFCのことは全く知りませんので、調査から開始です。
以下は、調べながら記載したものなので、まとまっていなかったらすみません。


調査

NFCとは?

Wikipediaによると、

近距離無線通信は、広義には交信距離の短い無線通信を指す。
狭義にはNear field communicationの訳語である。
NFCはRFIDと呼ばれる無線通信による個体識別の技術の一種であり、
近距離無線通信の技術を統一化した世界共通の規格である。

とのこと。なんのこっちゃ。ですが、「NFCはRFIDと呼ばれる無線通信による個体識別の技術の一種」という一文で多少イメージすることができました。

RFIDの記憶

昔プログラマになりたての初仕事が、RFIDに関する開発業務も含まれていたからです。
その時は、工場の生産機の管理システムや、パネルコンピュータに接続されたアンテナからRFIDの読み書きを行うプログラムを構築する仕事に携わっていました。その際、RFIDの通信について実装したことがあります。

昔の記憶を思い出す限り、RFIDは、

  • サイズはまちまちだが、RFIDタグというコイン上のカードやシールがある
  • RFIDタグには、書き込みできる容量がそれぞれ決まっている(製品の使用による)
  • COMポートを開き、RFIDのアンテナの製品仕様に沿って、アンテナに電文を送ることでRFIDを検知、読み込み、書き込みを行うことができる
  • 書き込みも全上書き、部分上書きなどできた(製品の仕様による?)
  • アンテナによってビックエンディアン、リトルエンディアンを変える必要があった

といった程度です。

きっとNFCも同じような形で実装していくんだろうなーという漠然とした予感を感じます。
1から実装するとなるとめんどくさすぎるので、ライブラリがなかったら調査だけでやめちゃいそう。なんて思ってました。

NFCにはいくつかの規格がある

NFCについては、たくさんのサイトで解説されているので、そちらを読んでざっくり以下のように理解しました。

どうやら、NFCは通信規格のみを定めているだけ。
「FeliCa」「Type A」「Type B」「ISO 15693」などの規格があるようです。
FeliCaはSony、Type A,B はNXP Semiconductorsというそれぞれの企業が開発した国際規格がある。ISO 15693は別名があるのか不明。
それぞれのISO規格は以下のようになるようです。
Felica : ISO 18092
Type A: ISO 14443
Type B: ISO 14443
※ISO 14443に関しては、Type A、Bの2種類あるということらしいです。

その他では、ミドルウェア側がデータの暗号化などを担っているようです。

参考にしたサイトは以下です。

第4回:3分で分かるNFC基礎講座 Sony Japan | FeliCa | NFCについて | NFCの定義

もうすでにややこしい。
とりあえず、NFCにはいくつかの通信方式がある。
製品によって定められた仕様に沿って通信する必要があると理解しました。

次回は、ライブラリなどがないか探してみて実際に通信を行ってみたいと思います。