NFC タグは NFC フォーラムが作成した NDEF(NFC データ交換フォーマット)と呼ばれる特別なフォー マットでデータを保存します。これはデータの構造を定義するもので、NdefMessage または NdefRecord のいずれかに実装することができます。
そのため、NDEFフォーマットでは、1つのタグに複数の種類のデータを格納することができ、非接触型決済やマーケティングキャンペーンなどのアプリケーションに最適です。今回は、NDEFフォーマットとその主な特徴について説明します。
NDEFフォーマットとは?
NDEF形式は、NFCタグの情報をエンコードするために使用できる標準的なデータ構造です。これにより、互換性のあるNFCデバイスとNFCタグの間で完璧なデータ交換が可能になります。データ・フォーマットは主に以下の要素で構成されています。
- NDEFレコード
- NDEFメッセージ
NDEFレコード
NDEFレコードは主に3つの要素から構成されている。
レコードタイプ識別子
レコードタイプ識別子は、その特定のNDEFレコードに保存されている情報の種類をNFCリーダーに知らせます。
例えば、非接触型決済端末がNFCタグと相互作用する場合、レコードタイプ識別子を読み取り、決済関連のNDEFレコードのみを処理します。
レコードタイプ識別子は、URIレコード、サービス提供レコード、URI &MIMEレコード、またはEddystone UDIレコードなどの異なるフォーマットで保存することができる。
NDEFがサポートするデータ型
NDEFフォーマットでサポートされるデータ型は、URIレコード、MIMEタイプレコード、およびサービスディスカバリーレコードです。NFCタグは、NDEFレコードごとに多様な情報または1種類のデータを格納することができます。
例えば、ウェブサイトのURL、Androidアプリのダウンロードアドレス、会社の連絡先などを、それぞれ別のURIレコードで保存することができます。
- URIレコード
このタイプは Uniform Resource Identifier(URI)データを保存するためだけに使用されま す。その名前が示すように、これはさまざまなタイプの URI データのソースに NFC 装置を向けるために使用されます。例えば、ウェブサイトのURL 、アプリケーションのインストール、および連絡先情報などです。
- MIMEタイプレコード
MIMEとは、Multipurpose Internet Mail Extensionの略です。このレコードには、統一資源識別子(URI)とNDEF形式のMIMEタイプレコードの両方が格納されています。MIMEタイプはレコードのURI部分に格納された情報をどのように処理するかを決定するために使用されるため、NFCタグにコンテンツを格納する場合は常にこれを含める必要があります。たとえば、ウェブサイトを指す URI レコードを NFC タグに保存する場合、このレコードの MIME タイプは「text/HTML」である必要があります。
- サービスディスカバリーレコード
このレコードはサービス発見情報をNDEFフォーマットで保存するために使用されます。この情報は、「発見可能な」NFC デバイスが、自分に関連するサービスの範囲内にあるかどうかを判断するために使用することができます。
タイプCのNDEFレコードに格納される情報は、合計で最大27バイトである。
- Eddystone UIDレコード
Type Dレコードは、Eddystoneプロトコルに準拠したURLの形で一意な識別子を格納するために使用される。このURLの正確なフォーマットは、どのEddystoneプロトコルが使用されているかに依存する。
NDEFフォーマットにおけるNDEFメッセージとは?
NDEF メッセージは、NFC タグに保存された情報を含むデータパケットです。これらのメッセージは、NDEF レコードをNDEF メッセージと呼ばれるコンテナ構造に配置することで作成されます。
各レコードは、その「ペイロード」形式のフィールド値で認識できる特定のタイプのデータを含んでいます。ほとんどの場合、データにはURL、Uniform Resource Identifiers (URI)、NDEFメッセージ、またはデータの内容を特定するためのMIMEタイプが含まれます。
NDEFの記録は3つの部分から構成される。
- ヘッダー
- ペイロード
- フッター
ヘッダーはレコードの種類とペイロードの開始位置を定義する。例外はペイロードを持たないNDEF URIレコードである。フッターはレコードの終わりを示す単なる文字列のターミネーターである。
NDEF形式は、1枚のタグに複数の種類のデータを格納できるため、非接触型決済やマーケティングキャンペーンなどのアプリケーションに最適です。
NDEF仕様とは何ですか?
いくつかの仕様により、NFC タグとデバイスの互換性が保証されています。これは異なる製造業者間における相互運用性の問題を回避するために不可欠です。
NFC フォーラムの仕様は、NDEF データの記述、フォーマット、およびエンコーディングのガイド ラインを定義しています。これにより、すべてのメーカーが互換性のあるコンテンツをNFC タグに書き込むことができ ます。
この仕様の最も重要な部分の1つは、NDEFレコードタイプテーブルである。これはNDEFメッセージに含めることができるレコードの種類と、それぞれが遭遇したときにデバイスが取るべきアクションを指定します。例えば、NDEF フォーマットを使用してNFC タグにURI を書き込む場合、これはレコードタイプテーブルで指定される必要があり、そうでなければデバイスはこのレコードに出会ったときにどのようなアクションを取るべきかがわかりません。
NDEF形式を使用するメリット
フォーマットの最も明白な利点は、互換性です。NFC ユーザーが簡単にデータを交換できるよう、広く受け入れられている フォーマットを提供します。その他の利点は以下の通りです。
- NDEF レコードには最小または最大のサイズはありません。このため、他の多くの形式よりも多くの情報をNFC タグに保存することが可能です。例えば、他の多くのフォーマットでは大きすぎるYouTube ビデオやフォトギャラリーのURL をNDEF レコードに格納することができます。
- NDEF フォーマットは、ほとんどすべての NFC デバイスとオペレーティング・システムでサポートされています。唯一の例外は、古い Windows Phone 7 デバイスで、NFC タグを読み取る際に NDEF フォーマットをサポートしません。
- NDEF レコードは、1 つの NFC タグに複数のデータを格納するために使用できます。より多くの情報を1 つのタグに収める必要がある場合、これは使用すべき形式です。情報を格納するためにNDEF を使用する素晴らしい点は、他のNFC タグが異なるソースか ら情報を読み取り、集約することを可能にすることです。
NDEFレコードタイプテーブルとは何ですか?
上述したように、NDEFレコードタイプテーブルは、どのタイプのレコードがNDEFメッセージに含まれることができるか、そしてそれらに遭遇したデバイスがどのようなアクションを取るべきかを定義しています。
このように、NDEFフォーマットでは、1つのタグに複数の種類のデータを格納することができます。そのため、非接触型決済やマーケティングキャンペーンなど、さまざまなデータ形式を必要とするアプリケーションに最適です。
このプロセスを開発者が容易に行えるように、AndroidはNDEFメッセージを直接操作するために使用できるいくつかのAPIを実装しています。