2013年5月7日火曜日

NFC携帯とNFCタグで遊んでみた

AndroidでFelica(NFC-F)のほかにNFC Type A(NFC-A)やType B(NFC-B)にも対応したものがそろってきたのでNFCを色々試してみることに。
使用するのはau ISW16SHで、早い段階でNFC(Type A?)を載せてきたSHARP機です。それとASUS/GoogleのNexus 7もあわせて使ってみましょうか。

携帯というかAndroidのNFCはUIM(SIM)カード上にデータを記録するため、機種変してもデータの移行が楽な反面、読み書き速度は遅く、電車の改札などでは使い物にならなかったりするようです。Felicaに代わるといわれていますがFecliaが消えることは当分ありません。それに、最近のカードサイズの変更にはやはりついていけないでしょうね。

NFCのタイプ、カード型、Android携帯・タブレットなどの端末型、PaSoRiのようなPCの外付け型、それとNFCタグがあります。
今回はNFCタグを買ってみたりしてみました。
SMARTRAC NFC Tag (NTAG203 WPP60 ( Circus ) 20p) Amazon.co.jp
144バイト程度の書き込みができる硬貨サイズのNFCタグ Type 2 20枚セットです。電波的にはType Aかな。
白いのがNFCタグです。まだまだ店頭などで買える状態ではなく、サンワサプライ、Amazonなどいくつかのサイトで細々と売られているのみです。 新宿ではヨドバシカメラにもビックカメラにもありませんでした。ソニーからもタグっぽいのが出ていたりするようですが売られているものなのか謎です。
というわけで基礎知識をつらつら書くので読みとばせば?


NFCの種類


仕様を読んだわけではありませんが、まあ分類方法はいろいろあり、
NFCフォーラムではNFC-A(ISO/IEC 14443 Type A)、NFC-B(ISO/IEC 14443 Type B)、NFC-F(JIS X 6319-4?) と呼んでいる読み書き部分がまずあったりします。詳細は略。
NFC-AはフィリップスのMIFARE(マイフェア)とか呼ばれています。NFC-Bはモトローラが作ったけど名前は忘れた。NFC-FはFelica(フェリカ SONY)でType C(仮)と呼ばれることもありますが正式にType Cになったことはありません。その他にNFC-VというISO/IEC 15693の俗称っぽいものもありますが、NFCフォーラムなどで決めたものではないようです。
ISO/IEC 14443 は JIS X 6322の1~4になっているっぽいです。

NFCIP-2(ISO/IEC 21481, JIS X 5212)に含まれるもの
  • NFC-A ISO/IEC 14443 Type A MIFARE (NXPセミコンダクタ 旧Philips) taspoなど
  • NFC-B ISO/IEC 14443 Type B (モトローラ) 住基カード、運転免許証など
  • NFC-F Type C(仮) JIS X 6319-4 Felica (ソニー) Suica、おさいふケータイなど
  • NFC-V(仮?) 物流のRFIDっぽいもの ISO/IEC 15693 (NFCフォーラムでは対象外)
らしいです。NFCIP-1(ISO/IEC 18092, JIS X 5211)はType AとFelicaだけでしたがType BとRFIDも加わります。OSなどはNFCIP-1には含まれていません。NFCの括りは団体ごとにバラバラなようで、Androidなどで世界的にNFCとして使えるのは一般的にNFC-AとNFC-Bですか?NFC-Fの上の方のFelicaはAndroidの標準としては含まれないようです。(リード/ライトはできるがセキュリティ機能が多すぎてカードエミュレーションができない?)日本では最近NFC-Fにもフル対応しています。NFC-Bは生きているのでしょうか謎です。運転免許証を読むアプリはあるようですが、住基カードなんかかざしてみても読めません。実質世界の多くはNFC-Aを使っていますが日本ほど成熟しているわけではありません。

NFC機器の読み書きモードは3つぐらいありますとさ
  • P2Pモード Androidビームなど機器同士で適度に情報交換する
  • カードエミュレーションモード Suica、Google Wallet(米国のみ?)などカードやタグのふりをする
  • リーダ/ライターモード NFCタグ、Suicaなどを読み書きする
カード機能はおさいふケータイにもあります。おさいふケータイのリーダ/ライタモードはNFCと互換性はないかもしれませんがおさいふケータイ3世代目あたりからもありますかね。最近はBluetoothの接続認証にも使われたりします。
NFCタグではAndroid機をリーダ/ライタモードで活用するようで、基本的に画面がONのときだけ使えます。NFCはQRコードのようにアプリを手で起動する必要はありませんが、Suicaなどデータを書き換えるだけのものと比べてみるとやや面倒なところがあります。
今後街中にNFCタグっぽいものが増えてくると、Felicaリーダーが埋め込んであってタッチするだけでいい(カードエミュレーションモード)のかNFCタグで画面を表示しておかなければならない(リーダ/ライタモード)のかわからなくなってしまう事が予想されたりされなかったり。



今回買ってみたNFCタグと呼ばれるものは
  • Type 1 Tag ISO/IEC 14443A 例? TOPAZ (Broadcom)
  • Type 2 Tag ISO/IEC 14443A 例? MIFARE Ultralight (NXP)
  • Type 3 Tag JIS X 6319-4 FeliCa (Sony)
  • Type 4 Tag ISO/IEC 14443-4, JIS X 6322-4 DESFire (NXP) 交通系?
というような企業ごとに違う4つのタグをまとめたよくわからないものですが、最初から用途が決まっているものではなく自由に書き込みができるようなものです。
一例ではType 3、Type 4が比較的大容量、Type 1がMIFARE Classicとか呼ばれている旧式のもの? Type 2が最も小さい容量なようです。Type 3はFelica Lite系ですね。実際のところはどこまで増やせるのか謎ですが規格的なところではType 1 Tag、Type 2 Tagは1~2KB、Type 3は1MB程度、Type4が64KB程度?ともいわれていたりで販売されているサンプルタグの容量とは異なる仕様も持っているようです。購入するときにはどれであるかや容量が明記されていないことも多いので注意しましょうな。基本的にはType 2が多いのかもしれません。Type 4にはType A系のものとType B系のものがあるようです。
セキュリティ機能での違い等々いろいろあるようなので単純に比較できなくて謎。Type 1や2にはセキュリティなどの機能はなく、書き込み禁止程度のことができるようです。
住基カードや運転免許証、交通系カード(Suicaなど)などは機能があらかじめ決められているのでNFCタグとは別と考えればいいのでしょうか? よくわかりませんね。NDEFとかいうフォーマットを採用しているものがType 1~4に納まるものなのかもしれません。

さて、今回購入したものはType 2 Tagで144バイトの情報がユーザに開放されているようで、他にID 7バイト、システム13バイトなどの領域があるようです。思ったより少ない容量を工夫しながら使うわけですね。
AndroidのアプリではTypeがなんだか気にしているものは少ないはずですが、容量の大きいものなども試してみたい気もします。

ではでは、アプリケーションのご紹介。
基本的な読み書きに対応したKDDIのNFCタグリーダーを入れてみましょう。NFC対応であればキャリアに関係なくインストールすることができます。
docomoでも類似のツールが提供されていますが、Nexus 7には対応していないようで残念です。
KDDIのNFCタグリーダーではNFCタグの他、電子マネーのカードなども表示することができます。NFCタグには11種類程度の情報が書き込めるのでまずは144バイトの限界を体感してみることをおすすめしますよ。144バイトでは半分の機能も使えませんが、短縮URL的なものが活用できればなんとかなったりするんでしょうか。
一方のdocomoのICタグ・バーコードリーダーではトルカというクーポン的なもの含め5種類ほどしか作れません。電子マネーも読めませんね。
これらの機能を使う場合には、携帯同士をあわせてカードエミュレーションで情報交換してみるとだらだらと長い情報も読めそうですが、はたしておすすめなのでしょうか?
書き換えは10000回程度できるようなので、あまり気にしなくてもいい程度かな。

で、短い情報しか書き込めないNFCタグでは何をすればいいのかというと、マナーモードなどの変更がタッチだけでできれば便利だったりしませんか? というわけでNFCタグに付いてきた説明ではNFCタスクランチャー、ISW16SHについてきたNFCメニューにはSmartTouchというアプリケーションが紹介されています。
それぞれNFCタグを読むといろいろなモードを切り換えたりすることができます。NFCタスクランチャーは高機能なのですが、いまいち使い方がわかりにくかったりするときはSmartTouchでマナーモードをシンプルに切り換えるのもいいんではないでしょうか。NFCタスクランチャーのサンプルはディスプレイ消灯を解除してくれたりやんちゃですよ。モードを指定してNFCタグに書き込むと、次にタッチしたときにそのような状態に切り換えてくれるので複数状態を用意しておくと便利かもしれません。状態はアプリ側ではなくNFCタグ側で記録されているので複数Android機で同じように使えるはずです。NFCにタッチするときは少なくともNFCリーダー機能をONにして画面も点灯しておく必要があるのですが…QRコードよりはきっと便利。

他にもいろいろあるようで、貼ったものに合わせて?Evernoteの特定のメモを開くもの、ラーメンタイマーなどなど、タグはアプリ次第でどうにでも使えるようです。

これらのアプリは書き込まれたアプリと同じアプリがインストールされている必要があるため、なければGoogle Playの対象アプリの画面を開いてくれるので、インストールすれば次回から簡単に使うことができます。アプリのURL短縮には苦労しているようですね。

その他見つけたアプリでは、運転免許証の中身を見るアプリなんかもあるようなので試してみるのをおすすめしてみます。暗証番号はさっぱり忘れてしまったりしましたが。 住基カードも読めたりするんでしょうかね。

標準で使えるような簡単なアプリなどをさくっと紹介してみましたが、使い方次第ではまだまだいろいろできるようです。特にQRコードなどの代わりにどこかに張り付けて使ってみることができればいいかもしれません。GPSやアプリの情報を配るときに使ってみるのは効果的かもしれません。

開発にまわってみようという人にはNXPがいろいろなアプリを出しているようなので、それらも見てみるといいんではないかなと。