SlideShare ist ein Scribd-Unternehmen logo
1 von 39
Downloaden Sie, um offline zu lesen
避けては通れないバイナリ地獄
- NDEFってなんだろう 山下智樹 / tomorrowkey

12年11月29日木曜日
もくじ

•
•
•
•
•
•
•
12年11月29日木曜日

自己紹介
NDEFって何?
なぜNDEFが重要になる?
もっとNDEFを知ろう
ちょっとRTD
NDEF完成
さらなるNDEFの世界へ…
自己紹介
12年11月29日木曜日
自己紹介

• NFCラボ運営委員
• 山下智樹 / @tomorrowkey
• 株式会社ブリリアントサービス
• バイナリ楽しい!
12年11月29日木曜日
NDEFって何?
12年11月29日木曜日
NDEFとは

• NFC Data Exchange Format
• NFCの通信で使用されるデータ・フォ
ーマット

12年11月29日木曜日
なぜNDEFが重要になる?
12年11月29日木曜日
NFCのモード

• Reader/Writer Mode
• P2P Mode
• Card Emulation Mode

12年11月29日木曜日
どんなモードでも
NDEFは避けて通れない

12年11月29日木曜日
でも、バイナリまで
知ってる必要あるの?

12年11月29日木曜日
各プラットフォームのNDEFについて

• Android SDK API Level 16
•
•
•

一部サポート
PAYLOADについては自作する必要あり
作成はRTD-URIのみサポート、パースはURIに関連するものをサ
ポート

• Windows(SDK for NFC Starter Kit Ver.1.0)
•
•
12年11月29日木曜日

コマンド発行までサポート
NDEFはすべて自作する必要あり
探せばそのへんに
ライブラリ落ちてます

12年11月29日木曜日
避けて通れます

12年11月29日木曜日
趣味です

12年11月29日木曜日
もっとNDEFを知ろう
12年11月29日木曜日
NDEF Message

• NDEFには一つのNDEF Messageが含
まれる

• NDEF Messageには1つ以上の
NDEF Recordが含まれる

構成

12年11月29日木曜日
NDEF Record

構成

12年11月29日木曜日
FLAGS
•

MB(Message Begin)

•

•

ME(Message End)

•

•

255Byte以下のレコードを意味する
PAYLOAD LENGTHが1Byteになる

IL(ID Length)

•

12年11月29日木曜日

分割されたNDEF Messageの一部を意味する

SR(Short Record)

•
•

•

NDEF Messageの終わりを意味する

CF(Chunked Flag)

•

•

NDEF Messageの始まりを意味する

IDが設定されていることを意味する
TNF (Type Name Format)
•
•

TYPEフィールドの種類を表す
3bitの値を設定する

•
•
•
•
•
•
•
•

12年11月29日木曜日

0x00 Empty
0x01 NFC Forum well-known-type
0x02 Media-type as define in RFC2046
0x03 Absolute URI as define in RFC3986
0x04 NFC Forum external type
0x05 Unknown
0x06 Unchanged
0x07 Reserved
TYPE LENGTH

•
•

12年11月29日木曜日

符号なし8bit整数
TYPEフィールドの長さを指定する
PAYLOAD LENGTH

•
•
•

12年11月29日木曜日

SRの値によって長さが変化する
符号なしビックエンディアン
PAYLOADの長さを指定する
ID LENGTH

•
•
•

12年11月29日木曜日

ILの値によって無い場合がある
符号なし8bit整数
IDの長さを指定する
TYPE
•
•
•

TYPE LENGTHによって長さが変わる
TNFの値によって設定値が変わる
0x01 well-known typesだった場合

•
•

U ... URI Record

•

Sp ... Smart Poster

•

12年11月29日木曜日

T ... Text Record

...
ID

•
•
•

12年11月29日木曜日

ILの値によって無い場合がある
ID LENGTHによって長さが変わる
IDを設定することができる
PAYLOAD

•
•
•

12年11月29日木曜日

PAYLOAD LENGTHの値によって長さが
変化する
TNFとTYPEの値によって内容が変わる
well-known typesの仕様書はNFC
Forumに定義されています
ちょっとRTD
12年11月29日木曜日
RTD

• Record Type Definition
• Typeでwell-known-type(0x01)を指定
した場合に使用されるフォーマット

• NFC Forumで仕様書を見ることができ
ます。
•

12年11月29日木曜日

http://www.nfc-forum.org/specs/spec_list/#rtds
RTDの種類

• Text
• URI
• SmartPoster
• Generic Control
• Handover Request / Select / Carrier
• Signature
12年11月29日木曜日
Textだけ紹介

構成

12年11月29日木曜日
Encode

• テキストの文字コードを表す
• 0 ... UTF-8
• 1 ... UTF-16
12年11月29日木曜日
RFU

• Reserved For Future Use

12年11月29日木曜日
Language Code Length

• 言語コードの長さを指定する

12年11月29日木曜日
Language Code

•
•
•

言語コードを表す
Language Code Lengthによって長さが変わる
ISO/IANA

•
•
•

12年11月29日木曜日

en ... English
en-us ... English(United States)
ja ... Japanese
Actual Text

•
•
•

12年11月29日木曜日

実際のテキスト
PAYLOADの残り部分
Encodeで指定されたエンコードを使用する
NDEF完成!
12年11月29日木曜日
Hello, World.と書かれたNDEF
•

D1
02
65
2C
72

01
65
6C
20
6C

10
6E
6C
57
64

54
48
6F
6F
2E

FLAGS

•
•
•
•
•

•
•
•
•
•

Message End : 1
Chunked Flag : 0
Short Record : 1
ID Length : 0

TNF : 01(well-known types)
TYPE LENGTH : 1
PAYLOAD LENGTH : 10
TYPE : T
PAYLOAD

•
•
•

12年11月29日木曜日

Message Begin : 1

Encoding : utf-8
Language Code : en
Actual Text : Hello, World.
さらなるNDEFの世界へ
12年11月29日木曜日
まだ始まったばかり

• 紹介したフォーマットはごく一部
• well-known-typeだけでも知っておく
べき

12年11月29日木曜日
おわり

12年11月29日木曜日

Weitere ähnliche Inhalte

Was ist angesagt?

Windows 10 mobileでnfc~suica・edy対応編~(公開用)
Windows 10 mobileでnfc~suica・edy対応編~(公開用)Windows 10 mobileでnfc~suica・edy対応編~(公開用)
Windows 10 mobileでnfc~suica・edy対応編~(公開用)Nobuaki Aoki
 
FeliCa/NFCの概説とAndroidの対応状況
FeliCa/NFCの概説とAndroidの対応状況FeliCa/NFCの概説とAndroidの対応状況
FeliCa/NFCの概説とAndroidの対応状況Isao Soma
 
fpgax #11+TFUG ハード部:DNN専用ハードについて語る会-2019-02-02 MN-coreについて 金子 紘也
fpgax #11+TFUG ハード部:DNN専用ハードについて語る会-2019-02-02 MN-coreについて 金子 紘也fpgax #11+TFUG ハード部:DNN専用ハードについて語る会-2019-02-02 MN-coreについて 金子 紘也
fpgax #11+TFUG ハード部:DNN専用ハードについて語る会-2019-02-02 MN-coreについて 金子 紘也Preferred Networks
 
Pythonでパケット解析
Pythonでパケット解析Pythonでパケット解析
Pythonでパケット解析euphoricwavism
 
イチからはじめるUSB Host API
イチからはじめるUSB Host APIイチからはじめるUSB Host API
イチからはじめるUSB Host APIksk sue
 
mbot2.0教學-四路顏色感測器應用.pdf
mbot2.0教學-四路顏色感測器應用.pdfmbot2.0教學-四路顏色感測器應用.pdf
mbot2.0教學-四路顏色感測器應用.pdf吳錫修 (ShyiShiou Wu)
 
nfcpy 0.10.0 でハマった話
nfcpy 0.10.0 でハマった話nfcpy 0.10.0 でハマった話
nfcpy 0.10.0 でハマった話Masaki Yamamoto
 
Unityで作ったVRMポーズをUE4でも使う!
Unityで作ったVRMポーズをUE4でも使う!Unityで作ったVRMポーズをUE4でも使う!
Unityで作ったVRMポーズをUE4でも使う!Yusuke Kobayashi
 
C# 継承フォームの作成
C# 継承フォームの作成C# 継承フォームの作成
C# 継承フォームの作成Hiroki Takahashi
 
プロフェッショナルSSL/TLS 1.2章
プロフェッショナルSSL/TLS 1.2章プロフェッショナルSSL/TLS 1.2章
プロフェッショナルSSL/TLS 1.2章MITSUNARI Shigeo
 
メタバースのビジネスモデルと技術限界
メタバースのビジネスモデルと技術限界メタバースのビジネスモデルと技術限界
メタバースのビジネスモデルと技術限界Ryo Kurauchi
 
ゼロから始める自作 CPU 入門
ゼロから始める自作 CPU 入門ゼロから始める自作 CPU 入門
ゼロから始める自作 CPU 入門Hirotaka Kawata
 
AndroidでIDm読み取ってみた
AndroidでIDm読み取ってみたAndroidでIDm読み取ってみた
AndroidでIDm読み取ってみたDaisuke Hirata
 
Redmineで始めるチケット駆動開発
Redmineで始めるチケット駆動開発Redmineで始めるチケット駆動開発
Redmineで始めるチケット駆動開発Takuya Sato
 
普段C#を使っている僕から見たKotlin
普段C#を使っている僕から見たKotlin普段C#を使っている僕から見たKotlin
普段C#を使っている僕から見たKotlinRyota Murohoshi
 
DS-LiteをFreeBSDで使う
DS-LiteをFreeBSDで使うDS-LiteをFreeBSDで使う
DS-LiteをFreeBSDで使うSatoshi Togawa
 
SDCCオープンネットワークのご紹介【2021/01版】
SDCCオープンネットワークのご紹介【2021/01版】SDCCオープンネットワークのご紹介【2021/01版】
SDCCオープンネットワークのご紹介【2021/01版】ProjectDC-01
 
Floodlightってぶっちゃけどうなの?
Floodlightってぶっちゃけどうなの?Floodlightってぶっちゃけどうなの?
Floodlightってぶっちゃけどうなの?Noritaka Sekiyama
 

Was ist angesagt? (20)

Windows 10 mobileでnfc~suica・edy対応編~(公開用)
Windows 10 mobileでnfc~suica・edy対応編~(公開用)Windows 10 mobileでnfc~suica・edy対応編~(公開用)
Windows 10 mobileでnfc~suica・edy対応編~(公開用)
 
FeliCa/NFCの概説とAndroidの対応状況
FeliCa/NFCの概説とAndroidの対応状況FeliCa/NFCの概説とAndroidの対応状況
FeliCa/NFCの概説とAndroidの対応状況
 
NFVについて
NFVについてNFVについて
NFVについて
 
fpgax #11+TFUG ハード部:DNN専用ハードについて語る会-2019-02-02 MN-coreについて 金子 紘也
fpgax #11+TFUG ハード部:DNN専用ハードについて語る会-2019-02-02 MN-coreについて 金子 紘也fpgax #11+TFUG ハード部:DNN専用ハードについて語る会-2019-02-02 MN-coreについて 金子 紘也
fpgax #11+TFUG ハード部:DNN専用ハードについて語る会-2019-02-02 MN-coreについて 金子 紘也
 
Pythonでパケット解析
Pythonでパケット解析Pythonでパケット解析
Pythonでパケット解析
 
イチからはじめるUSB Host API
イチからはじめるUSB Host APIイチからはじめるUSB Host API
イチからはじめるUSB Host API
 
mbot2.0教學-四路顏色感測器應用.pdf
mbot2.0教學-四路顏色感測器應用.pdfmbot2.0教學-四路顏色感測器應用.pdf
mbot2.0教學-四路顏色感測器應用.pdf
 
nfcpy 0.10.0 でハマった話
nfcpy 0.10.0 でハマった話nfcpy 0.10.0 でハマった話
nfcpy 0.10.0 でハマった話
 
Unityで作ったVRMポーズをUE4でも使う!
Unityで作ったVRMポーズをUE4でも使う!Unityで作ったVRMポーズをUE4でも使う!
Unityで作ったVRMポーズをUE4でも使う!
 
C# 継承フォームの作成
C# 継承フォームの作成C# 継承フォームの作成
C# 継承フォームの作成
 
UI/UXなUXのお話
UI/UXなUXのお話 UI/UXなUXのお話
UI/UXなUXのお話
 
プロフェッショナルSSL/TLS 1.2章
プロフェッショナルSSL/TLS 1.2章プロフェッショナルSSL/TLS 1.2章
プロフェッショナルSSL/TLS 1.2章
 
メタバースのビジネスモデルと技術限界
メタバースのビジネスモデルと技術限界メタバースのビジネスモデルと技術限界
メタバースのビジネスモデルと技術限界
 
ゼロから始める自作 CPU 入門
ゼロから始める自作 CPU 入門ゼロから始める自作 CPU 入門
ゼロから始める自作 CPU 入門
 
AndroidでIDm読み取ってみた
AndroidでIDm読み取ってみたAndroidでIDm読み取ってみた
AndroidでIDm読み取ってみた
 
Redmineで始めるチケット駆動開発
Redmineで始めるチケット駆動開発Redmineで始めるチケット駆動開発
Redmineで始めるチケット駆動開発
 
普段C#を使っている僕から見たKotlin
普段C#を使っている僕から見たKotlin普段C#を使っている僕から見たKotlin
普段C#を使っている僕から見たKotlin
 
DS-LiteをFreeBSDで使う
DS-LiteをFreeBSDで使うDS-LiteをFreeBSDで使う
DS-LiteをFreeBSDで使う
 
SDCCオープンネットワークのご紹介【2021/01版】
SDCCオープンネットワークのご紹介【2021/01版】SDCCオープンネットワークのご紹介【2021/01版】
SDCCオープンネットワークのご紹介【2021/01版】
 
Floodlightってぶっちゃけどうなの?
Floodlightってぶっちゃけどうなの?Floodlightってぶっちゃけどうなの?
Floodlightってぶっちゃけどうなの?
 

Andere mochten auch

UIDのことわかってますか? -フォーマット編-
UIDのことわかってますか? -フォーマット編-UIDのことわかってますか? -フォーマット編-
UIDのことわかってますか? -フォーマット編-Natsuhiko Suwamura
 
About FeliCa Lite(日本語)
About FeliCa Lite(日本語)About FeliCa Lite(日本語)
About FeliCa Lite(日本語)Hirokuma Ueno
 
NDEF Writerを使ってみよう
NDEF Writerを使ってみようNDEF Writerを使ってみよう
NDEF Writerを使ってみようHirokuma Ueno
 
月刊NDEF 2013年1月号
月刊NDEF 2013年1月号月刊NDEF 2013年1月号
月刊NDEF 2013年1月号Hirokuma Ueno
 

Andere mochten auch (6)

UIDのことわかってますか? -フォーマット編-
UIDのことわかってますか? -フォーマット編-UIDのことわかってますか? -フォーマット編-
UIDのことわかってますか? -フォーマット編-
 
About FeliCa Lite(日本語)
About FeliCa Lite(日本語)About FeliCa Lite(日本語)
About FeliCa Lite(日本語)
 
NDEF Writerを使ってみよう
NDEF Writerを使ってみようNDEF Writerを使ってみよう
NDEF Writerを使ってみよう
 
About FeliCa Plug
About FeliCa PlugAbout FeliCa Plug
About FeliCa Plug
 
月刊NDEF 2013年1月号
月刊NDEF 2013年1月号月刊NDEF 2013年1月号
月刊NDEF 2013年1月号
 
About FeliCa Lite-S
About FeliCa Lite-SAbout FeliCa Lite-S
About FeliCa Lite-S
 

Mehr von Tomoki YAMASHITA

Few command line tools for help Android development
Few command line tools for help Android developmentFew command line tools for help Android development
Few command line tools for help Android developmentTomoki YAMASHITA
 
ぼくのビルドはにゃあとなく
ぼくのビルドはにゃあとなくぼくのビルドはにゃあとなく
ぼくのビルドはにゃあとなくTomoki YAMASHITA
 
Android Studio Pluginを使ってみた
Android Studio Pluginを使ってみたAndroid Studio Pluginを使ってみた
Android Studio Pluginを使ってみたTomoki YAMASHITA
 
Android SDK Toolsのおさらい
Android SDK ToolsのおさらいAndroid SDK Toolsのおさらい
Android SDK ToolsのおさらいTomoki YAMASHITA
 
避けては通れないバイナリ地獄 もっとRTDを-
避けては通れないバイナリ地獄 もっとRTDを-避けては通れないバイナリ地獄 もっとRTDを-
避けては通れないバイナリ地獄 もっとRTDを-Tomoki YAMASHITA
 
Dialogを使うときはこうしてます
Dialogを使うときはこうしてますDialogを使うときはこうしてます
Dialogを使うときはこうしてますTomoki YAMASHITA
 

Mehr von Tomoki YAMASHITA (9)

Few command line tools for help Android development
Few command line tools for help Android developmentFew command line tools for help Android development
Few command line tools for help Android development
 
ぼくのビルドはにゃあとなく
ぼくのビルドはにゃあとなくぼくのビルドはにゃあとなく
ぼくのビルドはにゃあとなく
 
UUID
UUIDUUID
UUID
 
Android Studio Pluginを使ってみた
Android Studio Pluginを使ってみたAndroid Studio Pluginを使ってみた
Android Studio Pluginを使ってみた
 
Android SDK Toolsのおさらい
Android SDK ToolsのおさらいAndroid SDK Toolsのおさらい
Android SDK Toolsのおさらい
 
What is androider
What is androiderWhat is androider
What is androider
 
避けては通れないバイナリ地獄 もっとRTDを-
避けては通れないバイナリ地獄 もっとRTDを-避けては通れないバイナリ地獄 もっとRTDを-
避けては通れないバイナリ地獄 もっとRTDを-
 
NFC QUEST作ったよ
NFC QUEST作ったよNFC QUEST作ったよ
NFC QUEST作ったよ
 
Dialogを使うときはこうしてます
Dialogを使うときはこうしてますDialogを使うときはこうしてます
Dialogを使うときはこうしてます
 

Ndefってなんだろう