Androidアプリ「NFC TagInfo」でタグを読む
「NFC TagInfo」というNFC機能搭載Android端末向けアプリがある。このアプリ、端末から出ている搬送波に応答したNFCタグの情報を表示できるという優れものである。NFCタグリーダーはいくつかあるが、個人的にはこれが一番良い感じだと思う。
ところで、我が家にはそれなりの種類のNFCタグがある。いつの間にやらこんなに集まっていたなんて我ながらビックリだ。
この記事では、手持ちのNFC/RFIDタグを「NFC TagInfo」を用いて情報表示させた結果を私の補足を含めて示す。各タグの結果は以下の書式をもって記録し、特記事項は別に示すこととする。
- RF technology(e.g. Type A(ISO/IEC 14443 Type A))
- Tag Type(e.g. MIFARE Classic 1K)
- ID Name & Length(e.g. UID (4bytes))
- Target technology classes(Android)
電子マネー
- Type F (JIS-X 6319-4 / FeliCa)
- FeliCa Standard
- NFCID2 / IDm (8bytes)
- Target technology classes(Android)
- android.nfc.tech.NfcF
クレジットカードとかマイレージカードとかによくついてるあれ。ヨドバシのカードとANAのカードの2枚で試した感じだとシステムコードは不定。Edyとかは共通領域(システムコード0xFE00)を使っていることを考えると、別のシステムが入っている可能性高し。
交通系ICカード
- Type F (JIS-X 6319-4 / FeliCa)
- FeliCa Standard
- NFCID2 / IDm(8bytes)
- Target technology classes(Android)
- android.nfc.tech.NfcF
FeliCaのシステムコードは0x0003(サイバネ領域)。
ICカード免許証
- Type B (ISO/IEC 14443 Type B)
- ISO/IEC 14443-4 Smart Card
- PUPI (4bytes) // これがIDに相当するのかは不明
- Target technology classes(Android)
- android.nfc.tech.IsoDep
- android.nfc.tech.NfcB
NFC的不思議ちゃんを貫き続けるType B。行政系に多い印象。なお、免許証については以前ちょこっと調べた。
おサイフケータイ
- Type F (JIS-X 6319-4 / FeliCa)
- Mobile FeliCa
- NFCID2 / IDm(8bytes)
- Target technology classes(Android)
- android.nfc.tech.NfcF
サンプルは大学にあった大量のREGZA Phone(IS04)と自分のスマホ(INFOBAR A01)と過去使っていたガラケー(W61P)。これらはすべてモバイルFeliCaチップが載っている。
ご存知の通り、モバイルFeliCaは電源をバッテリーから供給している(RFIDでいうところのアクティブ・タグ)。これはユーザが任意におサイフ機能をON/OFFしたり、端末を紛失した時に遠隔地からFeliCaの機能を殺したりするためだと思われる。
さて、実験用の端末や放置していた端末はバッテリーが完全に空になっていたようで、そのままでは反応してくれなかった。故、給電しながら調査した。
おサイフケータイを調査していて面白かったのは、モバイルSuicaなどFeliCa対応アプリを入れている端末がシステムコード0xFE00(共通領域)を返すのに対して、入れていない端末では0xFFFF(オールビット1)が返ってきたことだ。どうも、おサイフケータイにおいてはFeliCaサービスを使い始めたタイミングで共通領域が生成されるようになっているらしい。
NFC QUEST
ブリリアントサービスさんのイベント向けNFCスタンプラリーシステム「NFC QUEST」のために用意されたカード・タグ。東京の方のNFCラボ主催イベントに顔出して、主催の方あたりに「NFC Questのカードが欲しいのじゃが」的なことを言うともらえるかもしれないし、もらえないかもしれない。
プロトタイプ版
- Type A (ISO/IEC 14443 Type A)
- MIFARE Classic 1K
- UID (4bytes)
- Target technology classes(Android)
- android.nfc.tech.MifareClassic
- android.nfc.tech.NfcA
- android.nfc.tech.NdefFormatable
恐らく中身は「ISO14443 TypeA compatibility」。「Google Developer Day」用に作成したけれど、様々な大人の事情からボツになったらしいレアなモデル。
Google Developer Day版
- Type A (ISO/IEC 14443 Type A)
- MIFARE Classic 1K
- UID (4bytes)
- Target technology classes(Android)
- android.nfc.tech.MifareClassic
- android.nfc.tech.NfcA
- android.nfc.tech.NdefFormatable
そしてこちらが正式版と思われる。SlideShare にある資料によると、中身は「ISO14443 TypeA compatibility」。
NFC & Smart World 2012 「SAG×Sony」版
- Type F (JIS-X 6319-4 / FeliCa)
- FeliCa Lite
- NFCID2 / IDm (8bytes)
- Target technology classes(Android)
- android.nfc.tech.NfcF
- android.nfc.tech.Ndef
NFC Forum Type 3 Tagに発行されたFeliCa Lite。NDEF messageがSmart Posterの書式になっているため、NFC端末をカードにかざすと、端末指定の意味のある動作をさせることが期待できる(手持ちのNexus Sだと直接ブラウザが起動され、NFC QUESTのページに飛ばされた)。タグの内容は以下の3つも同じ。
NFC & Smart World 2012 「凸版印刷×Sony」版
NFC QUESTカードのピカピカモデル。イベントでも一番人気だったとかなんとか。
NFC & Smart World 2012 「DNP×Sony」版
これは余談だが、FeliCaにおいてシステムコードが0x88B4だったらFeliCa Liteである。
NFC & Smart World 2012 「サトー×Sony」版
シールを貼り合わせて自分でカードを作るタイプ。薄い。カードを透かした感じ、多分後述のFeliCa Liteシールが入っているんだと思う。
NFC & Smart World 2012 「UPM×NXP」版
- Type A (ISO/IEC 14443 Type A)
- NTAG203
- UID (7bytes)
- Target technology classes(Android)
- android.nfc.tech.MifareUltralight
- android.nfc.tech.NfcA
- android.nfc.tech.Ndef
NFC & Smart World 2012版の中で唯一の非「FeliCa Lite」。シール形状になっている。NFC Forum Type 2 Tagに発行されている。NDEF messageはSmart Poster形式で、NFCポータルに飛ばされるようになっている。
UPMタグサンプル
東京・八重洲のRFID / NFC Real Touch Shopに行って「サンプルちょーだい♪」と言えばもらえるかもしれないし、「何この人、残念な子……!」的な顔をされるかもしれない。
NFC TAGS AND INLAYS
写真の上段左
- Type A (ISO/IEC 14443 Type A)
- MIFARE Ultralight(MF0ICU1)
- UID (7bytes)
- Target technology classes(Android)
- android.nfc.tech.MifareUltralight
- android.nfc.tech.NfcA
- android.nfc.tech.NdefFormatable
写真の上段中央、下段左
- Type A (ISO/IEC 14443 Type A)
- MIFARE Ultralight C(MF0ICU2)
- UID (7bytes)
- Target technology classes(Android)
- android.nfc.tech.MifareUltralight
- android.nfc.tech.NfcA
- android.nfc.tech.NdefFormatable
写真の上段右、下段右
- Type A (ISO/IEC 14443 Type A)
- MIFARE Classic 1K
- UID (7bytes)
- Target technology classes(Android)
- android.nfc.tech.MifareClassic
- android.nfc.tech.NfcA
- android.nfc.tech.NdefFormatable
NTAG203 NFC TAGS AND INLAYS
すべて共通
- Type A (ISO/IEC 14443 Type A)
- NTAG203
- UID (7bytes)
- Target technology classes(Android)
- android.nfc.tech.MifareUltralight
- android.nfc.tech.NfcA
- android.nfc.tech.Ndef
HF RFID TAGS AND INLAYS
写真の上段左、上段中央
- Type V (ISO/IEC 15693 / Vincinity)
- SL2 ICS2001 (ICODE SLI)
- UID (8bytes)
- Target technology classes(Android)
- android.nfc.tech.NfcV
- android.nfc.tech.NdefFormatable
写真の上段右、下段左、下段右
- Type V (ISO/IEC 15693 / Vincinity)
- SL2 ICS2002/SL2 S2102 (ICODE SLIX)
- UID (8bytes)
- Target technology classes(Android)
- android.nfc.tech.NfcV
- android.nfc.tech.NdefFormatable
Type Vは全体的に読み込みに時間がかかる印象。
UHF RFID TAGS AND INLAYS
こいつらはUHF帯(900MHzくらい)のRFIDタグなので読めず。当然か。
orange Tags
MIFARE Classic 1K
- Type A (ISO/IEC 14443 Type A)
- MIFARE Classic 1K
- UID (4bytes)
- Target technology classes(Android)
- android.nfc.tech.MifareClassic
- android.nfc.tech.NfcA
- android.nfc.tech.NdefFormatable
MIFARE Ultralight
- Type A (ISO/IEC 14443 Type A)
- MIFARE Ultralight(MF0ICU1)
- UID (7bytes)
- Target technology classes(Android)
- android.nfc.tech.MifareUltralight
- android.nfc.tech.NfcA
- android.nfc.tech.NdefFormatable
FeliCa Lite
- Type F (JIS-X 6319-4 / FeliCa)
- FeliCa Lite
- NFCID2 / IDm(8bytes)
- Target technology classes(Android)
- android.nfc.tech.NfcF
Amazonで取り扱ってくれている(MIFARE Classic 1K、MIFARE Ultralight、FeliCa Lite)ので手に入れやすい。
Touchanote
- Type A (ISO/IEC 14443 Type A)
- MIFARE Ultralight C(MF0ICU2)
- UID (7bytes)
- Target technology classes(Android)
- android.nfc.tech.MifareUltralight
- android.nfc.tech.NfcA
- android.nfc.tech.Ndef
昨年GIGAZINEで紹介され話題となったTouchanote。カナダから発送のため時間はかかるが、リーズナブルな値段でタグが手に入るので魅力的。ただしNFCタグに関しては、今年初めにオープンしたRFID / NFC Real Touch Shopでも入手可能。デフォルトではNDEF messageとしてURIが入っている。
RL-700Sのラベル
- Type V (ISO/IEC 15693 / Vincinity)
- SL2 ICS2001 (ICODE SLI)
- UID (8bytes)
- Target technology classes(Android)
- android.nfc.tech.NfcV
- android.nfc.tech.Ndef
ブラザー工業のNFCラベルプリンタRL-700S(生産終了)から出力されたシールに入っているタグ。写真は@touchRLさんにハッカソンの時についったー NFC ラベルメーカーで作っていただいたもの。NDEF messageには@h_madoromiのURIが入っている。
e-Amusement Pass
- Type V (ISO/IEC 15693 / Vincinity)
- SL2 ICS2001 (ICODE SLI)
- UID (8bytes)
- Target technology classes(Android)
- android.nfc.tech.NfcV
- android.nfc.tech.NdefFormatable
ゲームセンターにおいてあるKONAMIのネットワーク対戦機能搭載の筐体に必要なIDカード。300円で買える。マジアカ、キャラがリストラされたり復活したり、大変である。
ホテルのメンバーズカード(兼ルームキー)
- Type A (ISO/IEC 14443 Type A)
- MIFARE Classic 1K
- UID (4bytes)
- Target technology classes(Android)
- android.nfc.tech.MifareClassic
- android.nfc.tech.NfcA
- android.nfc.tech.NdefFormatable
都内某ホテル。コミケの時にお世話になってる。
スマートタグ
- Type F (JIS-X 6319-4 / FeliCa)
- FeliCa Plug
- NFCID2 / IDm (8bytes)
- Target technology classes(Android)
- android.nfc.tech.NfcF
大人気!アイオイシステムズさんのスマートタグ。ライブラリも充実しているのでアイデアがあれば遊べる。NFC勉強会で発表したのは私にとって地味に黒歴史。当日資料完成させるのはいかんね、うん。
その他
FeliCa Liteシール
その名の通り、FeliCa Lite。ハッカソンの時に@SDK4FeliCaさんが配られていた。
ペットボトルオーバーキャップ
ペットボトルのキャップが開けやすくなるグッズ。NTAG203シールの応用例。
NFCタグ入りストラップ
これも中身はNTAG203だった。
まとめ
さまざまなタグを読んでみて、帰納的に以下のことが分かった。最初からこれを書けよという話ではあるが。
- NFC Technologyは、Type A、Type B、Type F、Type Vの4つ。
- Android的には、NFC Forum Type X Tag(NDEF用に発行されているもの)が扱いやすい。
- NFC TagInfoでのFeliCaシリーズの微妙なやっつけ感。MIFAREだとTag Nameまで細かく表示してくれるのに。
何はともあれ、多彩な種類のタグを同じ端末で読み取れるのはすごいことだと思う。