2015/12/19

NFCの技術記事で書き残っていること

今年は、あまりNFCの技術的な記事を書いてないように思う。
FeliCa Linkのことは書いたけど、あれはFeliCaってよりは、デバイスの扱い方だった。
nRF52のことを書いているときもそうだけど、NFCタグの時に技術記事で書くことって、あまり残っていないと思っている。
UARTとかの通信プロトコルだと、送信して、受信して、が基本だ。
SPIだとマスターがクロックを持つし、I2Cもマスターから要求してこないと何もできない。
NFCの場合、親と子がきっちり分かれている(いや、そうしないところもあるか)。
BLEの場合は、サーバとクライアントが分かれている。
ちょっと、整理する。
image
(整理していないイメージ)

デバイスの扱い方

NFCの通信ができるデバイスを使う場合、だいたいホストとはシリアル通信で接続する。

UARTは、ホストとデバイスがほぼ対等だと思う。
RTS/CTSはあるが、それ以外はルールがほとんどない。
だから、あまり使われていない。

SPIは、クロックが動くと送信と受信が同時に動くのが多い。
私のイメージでは、ギアだ。
片方が動けば、もう片方が逆に動く。
FeliCa PlugはSPI風だった。

I2Cだと1本のデータ線を共通する。
こちらは、2車線の道路が工事中で、1車線になっているイメージ。
けど、送信と受信が同時に行われないシステムであればボトルネックにならない。
無線の通信なんかは、同じ周波数を一度に送信と受信が並列でやることはできないため、I2Cで十分なことも多い。
FeliCa LinkはI2Cだ。





WCDMAとかはよく知らんが、同じ周波数帯の衝突はNGというのが基本だと思っている。
あと、I2Cだと線が2本だけあればいいので、けっこうすっきりするんだと思う。
うまく通信できないときは、どっちが悪いのかはっきりせずにかなり苦しむのだけどね。
思い出したくないです。。


デバイスも、RC-S620/SのようにInitiatorにもTagにもなれるタイプと、FeliCa LinkのようにTag専用のタイプがある。
Tag専用の場合、相手から搬送波をもらってから動くので、搬送波検知機能が付いていることが多い。
また、相手に無線を出さないので、デバイス自体が小さくできる。
Initiatorになるタイプは、無線を出して相手を起こさないといけないので、アンテナが大きくなりがちだ。
FeliCa LinkもInitiatorになれるタイプがあるのだが、見たことがないので小さくもできるのかもしれない。

タグの扱い方

NFCの通信は、主従がはっきり分かれている。
  • Initiatorが主で、Targetが従。
  • Initiatorが無線を出す方で、Targetが無線を受ける方。
  • Initiatorが要求を出す方で、Targetが応答を返す方。
割り切ると、そう難しくはない。
Androidスマホは、だいたいInitiatorに当たる。
といっていた時代は、ずいぶん前のものになるので、もう少し現状にあわせよう。

Androidと、iPhoneが今の主なスマホという認識。
Windows Phoneは、私に知識がないので、今回は除外。
そしてAndroidもiPhoneも、最新の情報だけで見ていく。
BLEの視点ではiPhoneの方が先だが、NFCの視点ではかなり後ろになる。
後ろというか、提供していないので、比較できないというだけだ。
Appleは何をしているかよくわからないので、見えないところについては話をしないようにしておく。

Androidは、NFCを有効にしている場合、画面がON状態になると定期的にNFC-A/B/Fの搬送波を出してタグを検知しようとしている。
タグを検知すると、アプリの優先度によって、NDEFを検知したとかまで見てくれる。
Android APIを見ると、MIFARE Ultralight用のclassがあるので、ちょっと不公平な感じはある。
MIFARE ClassicはNFC Forumの標準には入っていないので、検知できない端末もある。

最近のAndroidは、HCE(Host Card Emulation)という、Secure Elementがないタグとして動く機能も持っている(Type-4Aとして動く)。
通常のタグは、Secure ElementというNFC通信でしかアクセスできないメモリを持っていて、そこに決済の情報(これをアプリと呼んでる)がある。
FeliCa LiteやMIFARE Ultralightのような安いタグは、そのメモリを保護する機能が緩いが、決済できるタイプのタグだと厳しくなっている。
厳しくなっているので、どういうアクセスができるかも情報が秘匿されていて、私みたいな一般人に知ることはできない。

Secure Elementは、携帯電話だと基板上にメモリデバイスとして載せるか、SIM内に載せるかのパターンがある。
FeliCaは前者なのだが、世界的には後者のタイプが多いらしい。
なので、海外製の端末ではNFC-Fとしての通信はできるが、FeliCaの決済としては使える端末がない(と思う)。
SIMに載っていると、携帯電話を変更したときにSIMだけ移動すれば決済の情報も移動できる。
できるのだが、使う際には携帯電話とSIMが通信をしてデータにアクセスすることになるため、速度が上げにくかったと思う(SIMとはSWPという1線で通信することが多い)。
なので、SIMに載せるとFeliCaの特長である高速アクセスができないんじゃないの、という話も出てた気がする。

HCEはそのSecure Elementをソフトウェアとして持つ。
そうなると、セキュリティ的に大丈夫なのかっていう気はするのだが、Secure Elementを持たないでよくなるので参入はしやすくなる。
Secure Elementはある意味で共有財産みたいなもので、例えばFeliCaだとフェリカネットワークスが管理している。
自分でアプリを作ってFeliCaのSecure Elementを使いたいと思ったら、フェリカネットワークスに申請して他と重ならないように領域を取ってもらう作業がいる(たぶんだけど)。
そこには、どうしてもお金が必要になってくるし、あまり安いものではないらしい。

HCEになると、それがいらなくなる(AndroidのHCEはFeliCa通信できないが)。
なので、今まで参入できなかったところもHCEで決済機能を持たせやすくなる。
今のところ、日本ではHCEで決済しているところはなさそうだ。

最後に

NFC Forumができたときには盛り上がったのだけど、最近はNFCっていうのがあまり目立たなくなってきた。
とはいえ、AppleがNFC Forumに参加したし、最近のiPhoneにはNFCが載っているらしいし、全体としてはNFCを使う下地ができつつある。

もうちょっと私がNFCを使う生活をしていれば違うのだろうけど、ほとんど使うことがないため、あまり世の中でどう使われているかを知らない。
ちょっと前は、FeliCa vs. NFC、みたいな記事もちらほらあったのだけど、最近はどうなのかね。
ネットで検索したけど、よくわからんかった。
SIMフリーの端末とか増えてきたので、FeliCaもSIMに入るようになるとは思うけど、スケジュールではどうなっていたか忘れてしまった。

けど、NFCで決済っていうことからすると、FeliCaとかMIFAREとかじゃなくて、NFCを使えばその辺を気にせず決済できる、というのがユーザの理想だろう。
派閥を争うんじゃなくて、使い勝手をよくしていく時期に入ったんじゃなかろうか、という感想を持った。

0 件のコメント:

コメントを投稿

コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。

注: コメントを投稿できるのは、このブログのメンバーだけです。