Developer's Blog

NFCについて調べてみたこと





こんにちは。モバイルアプリエンジニアの谷口です。

フェンリルではこの夏、「夏のIoT自由研究キャンペーン」と題し、IoTの理解を深めてもらうためフェンリルスタッフに対してRaspberryPiの購入補助金が出る制度が実施されました。

私もこの制度を利用しRaspberryPiを購入しました!
そしてRaspberryPiを用いて様々なことを行なっていくなかで、RaspberryPiをNFCを組み合わせて何かを作ってみようということになり、
その過程でNFCについて調べたことを今回のブログでまとめてみます!

 

NFCを取り巻く用語集

 

NFCという名前だけ知っている状態でその実体を詳しく知りませんでした。NFCを調べていくなかで良く見かけた様々な用語をまとめて行きます。

NFC Type

NFCには複数のTypeがあり、通信技術で区別され規格ごとにTypeが異なります。Type-A, Type-B, Type-Fなどがあり、Type-FはSony製のFelicaの通信技術を指します。

またTypeAは、MIFAREと呼ばれています。MIFAREはFelicaと共に数多くの場所で使われています。Felicaに比べ通信速度は劣りますが、安価であることから広まったようです。

NFC Tag Type

NFC Tag Typeには、Type 1からType 5まであります。この内,Type 3がSonyのFelicaベースとなっており,Suica, Apple Payやおサイフケータイなどで採用されています。

NDEF

NDEFとはNFC Data Exchange Formatの略称であり、NFCのデータを読み書きするフォーマットことを指します。各プラットフォーム(iOS, Android, Windowsなど)ごとにNDEFをサポートしているレベルが異なり、プラットフォームごとに対応が必要でそれはとても複雑です。そのため、ここでは説明を割愛します。

NFCのモード

Reader / Write Mode , P2P Mode , Card Emulation Mode があります。これらのモードを実装するには、NDEFの知識が不可欠です。

RasPiを使って実際にNFCを読み取ってみる

 

実際にRaspberry Piを使ってNFCを読み取ってみました。
Raspberry PiでNFCを読み取るには、Sony製の非接触ICカードリーダー/ライター PaSoRi RC-S380と、pythonで書かれたライブラリである nfcpy を使用することにより、Raspberry PiでもNFC Tagの読み取りが可能です。Raspberry Piへの nfcpy をインストールする方法は、たとえば nfcpy の公式ドキュメントを参照してください。

今回はiPhoneのApplePayに登録しているSuicaとiDを読み取ってみました。Apple Payに使用されるTouch IDの認証が通っている状態でなければ読み取れませんでした。

以下に試してみた結果を示します。

ApplePay / Suica

Type3Tag 'FeliCa Mobile 3.0' ID=013**********6F5 PMM=01************FF SYS=0003

ApplePay / iD

Type3Tag 'FeliCa Mobile 3.0' ID=013**********DE3 PMM=01************FF SYS=FE00

日本で購入したiPhoneで試し、Type 3のTagであるFelicaが読み取ることが出来ています。
また、Apple Payに登録されているSuicaとiDではそれぞれが別々のIDを持っていることも分かります。

iOS11からNFCTagの読み取りが可能に!

 

いままでApplePayのみに利用が限定され開発者はNFCにアクセスできませんでしたが、iOS11よりCoreNFCというAPIが公開されました。しかし、これはiPhone7/7 Plus以降のiPhoneに限定されます。iPhone8やiPhoneXのサポートについては今現在、Appleのドキュメントに記載されておりませんが、たぶんサポートされるはずです。

CoreNFCを用いて、市販されているNFC Tagを用意しそれを読み取ってみました。Stackover Flowを参考に実装し、NFC TagからNFC Tag Type, IDなどを読み取ることが出来ました!

CoreNFCにはiOS側で専用のUIが用意されています。どのようなUIが表示されるかは、下記参考リンク内のビデオを御覧ください。

実際のアプリ開発にCoreNFCを用いる場合、NFC Tagに情報を書込み、iPhoneをリーダーとしてそのデータを読み取り利用する。といった機能実装になると思われます。

まとめ

 

ApplePayを日常的に使っていながらもNFCについては名前だけ知りその中身を詳しくは理解できていない状態だったのですが、今回のIoT補助制度をきっかけとして、RasPi, NFCについてたくさんのことを知ることが出来ました。今回NFCについてまとめてみることで、iOS11のCore NFCにつながっていく知識、きっかけを得ることが出来たと思います。

参考書籍 / リンク

 

 

フェンリルのオフィシャル Twitter アカウントでは、フェンリルプロダクトの最新情報などをつぶやいています。よろしければフォローしてください!

 

フェンリルの開発者アカウントでは、フェンリルプロダクトの最新開発情報などをつぶやいています。よろしければフォローしてください!

 

フェンリル採用チームの Twitter アカウントです。応募前のお問い合わせや、ちょっとした相談ごとなどお気軽にどうぞ!

 

フェンリルの Facebook ページでは、最新トピックをお知らせしています。よろしければいいね!してください!

 

Sleipnir の Facebook ページでは、ユーザーの方たちとのコミュニケーションや最新情報の投稿などを行なっています。よろしければいいね!してください!

 

Copyright © 2019 Fenrir Inc. All rights reserved.