SlideShare uma empresa Scribd logo
1 de 39
Baixar para ler offline
避けては通れないバイナリ地獄
- 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日木曜日

Mais conteúdo relacionado

Mais procurados

C# 継承フォームの作成
C# 継承フォームの作成C# 継承フォームの作成
C# 継承フォームの作成Hiroki Takahashi
 
これからLDAPを始めるなら 「389-ds」を使ってみよう
これからLDAPを始めるなら 「389-ds」を使ってみようこれからLDAPを始めるなら 「389-ds」を使ってみよう
これからLDAPを始めるなら 「389-ds」を使ってみようNobuyuki Sasaki
 
nfcpy 0.10.0 でハマった話
nfcpy 0.10.0 でハマった話nfcpy 0.10.0 でハマった話
nfcpy 0.10.0 でハマった話Masaki Yamamoto
 
GKE multi-cluster Ingress
GKE multi-cluster IngressGKE multi-cluster Ingress
GKE multi-cluster IngressKiyoshi Fukuda
 
JANOG43 Forefront of SRv6, Open Source Implementations
JANOG43 Forefront of SRv6, Open Source ImplementationsJANOG43 Forefront of SRv6, Open Source Implementations
JANOG43 Forefront of SRv6, Open Source ImplementationsKentaro Ebisawa
 
さいきんの InnoDB Adaptive Flushing (仮)
さいきんの InnoDB Adaptive Flushing (仮)さいきんの InnoDB Adaptive Flushing (仮)
さいきんの InnoDB Adaptive Flushing (仮)Takanori Sejima
 
NVIDIA GPUで作るHeadless X11 Linux
NVIDIA GPUで作るHeadless X11 LinuxNVIDIA GPUで作るHeadless X11 Linux
NVIDIA GPUで作るHeadless X11 LinuxTomoki SHISHIKURA
 
Linux女子部 iptables復習編
Linux女子部 iptables復習編Linux女子部 iptables復習編
Linux女子部 iptables復習編Etsuji Nakai
 
第 1 回 Jetson ユーザー勉強会
第 1 回 Jetson ユーザー勉強会第 1 回 Jetson ユーザー勉強会
第 1 回 Jetson ユーザー勉強会NVIDIA Japan
 
Domain Modeling Made Functional (DevTernity 2022)
Domain Modeling Made Functional (DevTernity 2022)Domain Modeling Made Functional (DevTernity 2022)
Domain Modeling Made Functional (DevTernity 2022)Scott Wlaschin
 
超激安WinタブレットにLinux、*BSDを入れて 賢く経済的にリサイクルしよう in OSC東京2018 #osc18tk
超激安WinタブレットにLinux、*BSDを入れて 賢く経済的にリサイクルしよう in OSC東京2018 #osc18tk超激安WinタブレットにLinux、*BSDを入れて 賢く経済的にリサイクルしよう in OSC東京2018 #osc18tk
超激安WinタブレットにLinux、*BSDを入れて 賢く経済的にリサイクルしよう in OSC東京2018 #osc18tkNetwalker lab kapper
 
低レイヤー入門
低レイヤー入門低レイヤー入門
低レイヤー入門demuyan
 
はじめてのUserLAnd。AndroidでUbuntu,Debian ArchLinuxなどをprootで動かそう Beginner for inst...
はじめてのUserLAnd。AndroidでUbuntu,Debian ArchLinuxなどをprootで動かそう  Beginner for inst...はじめてのUserLAnd。AndroidでUbuntu,Debian ArchLinuxなどをprootで動かそう  Beginner for inst...
はじめてのUserLAnd。AndroidでUbuntu,Debian ArchLinuxなどをprootで動かそう Beginner for inst...Netwalker lab kapper
 
VSCodeで作るPostgreSQL開発環境(第25回 PostgreSQLアンカンファレンス@オンライン 発表資料)
VSCodeで作るPostgreSQL開発環境(第25回 PostgreSQLアンカンファレンス@オンライン 発表資料)VSCodeで作るPostgreSQL開発環境(第25回 PostgreSQLアンカンファレンス@オンライン 発表資料)
VSCodeで作るPostgreSQL開発環境(第25回 PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 
どうやらテスト駆動型開発は死んだようです。これからのCI
どうやらテスト駆動型開発は死んだようです。これからのCIどうやらテスト駆動型開発は死んだようです。これからのCI
どうやらテスト駆動型開発は死んだようです。これからのCIKoichiro Sumi
 
The Forefront of the Development for NVDIMM on Linux Kernel
The Forefront of the Development for NVDIMM on Linux KernelThe Forefront of the Development for NVDIMM on Linux Kernel
The Forefront of the Development for NVDIMM on Linux KernelYasunori Goto
 
「実践ドメイン駆動設計」 から理解するDDD (2018年11月)
「実践ドメイン駆動設計」 から理解するDDD (2018年11月)「実践ドメイン駆動設計」 から理解するDDD (2018年11月)
「実践ドメイン駆動設計」 から理解するDDD (2018年11月)A AOKI
 
講演資料: コスト最適なプライベートCDNを「NGINX」で実現するWeb最適化セミナー
講演資料: コスト最適なプライベートCDNを「NGINX」で実現するWeb最適化セミナー講演資料: コスト最適なプライベートCDNを「NGINX」で実現するWeb最適化セミナー
講演資料: コスト最適なプライベートCDNを「NGINX」で実現するWeb最適化セミナーNGINX, Inc.
 

Mais procurados (20)

C# 継承フォームの作成
C# 継承フォームの作成C# 継承フォームの作成
C# 継承フォームの作成
 
これからLDAPを始めるなら 「389-ds」を使ってみよう
これからLDAPを始めるなら 「389-ds」を使ってみようこれからLDAPを始めるなら 「389-ds」を使ってみよう
これからLDAPを始めるなら 「389-ds」を使ってみよう
 
SRv6 study
SRv6 studySRv6 study
SRv6 study
 
nfcpy 0.10.0 でハマった話
nfcpy 0.10.0 でハマった話nfcpy 0.10.0 でハマった話
nfcpy 0.10.0 でハマった話
 
GKE multi-cluster Ingress
GKE multi-cluster IngressGKE multi-cluster Ingress
GKE multi-cluster Ingress
 
JANOG43 Forefront of SRv6, Open Source Implementations
JANOG43 Forefront of SRv6, Open Source ImplementationsJANOG43 Forefront of SRv6, Open Source Implementations
JANOG43 Forefront of SRv6, Open Source Implementations
 
さいきんの InnoDB Adaptive Flushing (仮)
さいきんの InnoDB Adaptive Flushing (仮)さいきんの InnoDB Adaptive Flushing (仮)
さいきんの InnoDB Adaptive Flushing (仮)
 
NVIDIA GPUで作るHeadless X11 Linux
NVIDIA GPUで作るHeadless X11 LinuxNVIDIA GPUで作るHeadless X11 Linux
NVIDIA GPUで作るHeadless X11 Linux
 
Linux女子部 iptables復習編
Linux女子部 iptables復習編Linux女子部 iptables復習編
Linux女子部 iptables復習編
 
第 1 回 Jetson ユーザー勉強会
第 1 回 Jetson ユーザー勉強会第 1 回 Jetson ユーザー勉強会
第 1 回 Jetson ユーザー勉強会
 
Domain Modeling Made Functional (DevTernity 2022)
Domain Modeling Made Functional (DevTernity 2022)Domain Modeling Made Functional (DevTernity 2022)
Domain Modeling Made Functional (DevTernity 2022)
 
超激安WinタブレットにLinux、*BSDを入れて 賢く経済的にリサイクルしよう in OSC東京2018 #osc18tk
超激安WinタブレットにLinux、*BSDを入れて 賢く経済的にリサイクルしよう in OSC東京2018 #osc18tk超激安WinタブレットにLinux、*BSDを入れて 賢く経済的にリサイクルしよう in OSC東京2018 #osc18tk
超激安WinタブレットにLinux、*BSDを入れて 賢く経済的にリサイクルしよう in OSC東京2018 #osc18tk
 
AS45679 on FreeBSD
AS45679 on FreeBSDAS45679 on FreeBSD
AS45679 on FreeBSD
 
低レイヤー入門
低レイヤー入門低レイヤー入門
低レイヤー入門
 
はじめてのUserLAnd。AndroidでUbuntu,Debian ArchLinuxなどをprootで動かそう Beginner for inst...
はじめてのUserLAnd。AndroidでUbuntu,Debian ArchLinuxなどをprootで動かそう  Beginner for inst...はじめてのUserLAnd。AndroidでUbuntu,Debian ArchLinuxなどをprootで動かそう  Beginner for inst...
はじめてのUserLAnd。AndroidでUbuntu,Debian ArchLinuxなどをprootで動かそう Beginner for inst...
 
VSCodeで作るPostgreSQL開発環境(第25回 PostgreSQLアンカンファレンス@オンライン 発表資料)
VSCodeで作るPostgreSQL開発環境(第25回 PostgreSQLアンカンファレンス@オンライン 発表資料)VSCodeで作るPostgreSQL開発環境(第25回 PostgreSQLアンカンファレンス@オンライン 発表資料)
VSCodeで作るPostgreSQL開発環境(第25回 PostgreSQLアンカンファレンス@オンライン 発表資料)
 
どうやらテスト駆動型開発は死んだようです。これからのCI
どうやらテスト駆動型開発は死んだようです。これからのCIどうやらテスト駆動型開発は死んだようです。これからのCI
どうやらテスト駆動型開発は死んだようです。これからのCI
 
The Forefront of the Development for NVDIMM on Linux Kernel
The Forefront of the Development for NVDIMM on Linux KernelThe Forefront of the Development for NVDIMM on Linux Kernel
The Forefront of the Development for NVDIMM on Linux Kernel
 
「実践ドメイン駆動設計」 から理解するDDD (2018年11月)
「実践ドメイン駆動設計」 から理解するDDD (2018年11月)「実践ドメイン駆動設計」 から理解するDDD (2018年11月)
「実践ドメイン駆動設計」 から理解するDDD (2018年11月)
 
講演資料: コスト最適なプライベートCDNを「NGINX」で実現するWeb最適化セミナー
講演資料: コスト最適なプライベートCDNを「NGINX」で実現するWeb最適化セミナー講演資料: コスト最適なプライベートCDNを「NGINX」で実現するWeb最適化セミナー
講演資料: コスト最適なプライベートCDNを「NGINX」で実現するWeb最適化セミナー
 

Destaque

FeliCa/NFCの概説とAndroidの対応状況
FeliCa/NFCの概説とAndroidの対応状況FeliCa/NFCの概説とAndroidの対応状況
FeliCa/NFCの概説とAndroidの対応状況Isao Soma
 
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
 

Destaque (7)

FeliCa/NFCの概説とAndroidの対応状況
FeliCa/NFCの概説とAndroidの対応状況FeliCa/NFCの概説とAndroidの対応状況
FeliCa/NFCの概説とAndroidの対応状況
 
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
 

Mais de 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
 

Mais de 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ってなんだろう