#はじめに
iOS13にて、CoreNFCの機能が強化されることが発表されました。
https://developer.apple.com/documentation/corenfc
上記のドキュメントをもとに、できるようになったこと、Androidと比べてまだできないこと、今まで使用できたQRコード、BLE、超音波通信との比較をしてみます。
注意: 当方iOS開発をろくに経験していないため、ここに記載したことがすべて実際に実行可能とは限りませんのでご注意ください。
また、法規制に関する記述は、筆者には一切の保証ができないため、業務などの際には専門家にお問い合わせください
#iOS12まで
以下のことができました。
・NDEF読み取り
・NDEFバックグラウンド読み取り(iPhone XS以降のみ)
これとシステム対応の結果、だいたい以下のことができるようになりました。
・名刺についたNDEFタグの読み取り(URLなど)
・Wi-Fiアクセスポイントへの接続
・アプリの起動(URLスキーム経由)
・フィットネス機器など超小容量のデータ読み取り
NDEFタグへの書き込みはできないため、予め作っておく必要があります。
また、NDEFの情報以上のものは読み取れないため、セキュリティなど担保することはできませんでした。
ほぼQRコード以下と言ってもいいかもしれません。
#iOS13から
以下ができるようになります。
・NFCタグ直接読み取り(システムコード指定、暗号化通信可)
・NFCタグ直接書き込み
これによりできることが格段に増えます。
NDEFに対応しない生データの読み取りと書き込みができるようになったため、以下のようなことができます。
※(?)は自信がない物
・カード固有IDの読み出し
・高機能/複雑な構造を持ったカード・タグの取り扱い
・暗号化通信や署名を用いたセキュリティの担保(?)
・交通系電子マネーの履歴読み取り
・会員カードの読み取り
・カード内の電子マネーを用いた決済(?)
・NDEFタグの作成・書き換え
・フィットネス機器などとの双方向の通信
・各種機器の設定
・各種機器のそれなりの容量のデータの読み取り
夢が広がりますね。
P2PやHCEはできないようなので、端末間の通信や、既存のカードのエミュレーションによる通信はできませんが、NFCタグとして振る舞う組み込み機器(体温計や体重計など)との通信はできそうです。
※FeliCa Plug, FeliCa Linkその他など
早速作られている方が居るようです。
【WWDC19】Core NFC で FeliCa(Suica) を読み取るサンプル【iOS 13 以降】
TRETJapanNFCReader
免許証、交通系ICカードの取得
#比較
iOSで今まで使われてきた方式とのメリット・デメリットの比較をしてみます。
組み込み機器orタグ 対 スマホを想定。
##vs QRコード
オンライン誘導が前提のQRコードと、オフラインで完結することもできるNFCといった構図。
また、書き換え可能な点、セキュリティ確保が必要かどうかなどで使いみちが分かれる。
大量配布ではQRコードのほうがわかりやすく、対応機種が多く、安い。
組み込み機器では、高解像度の画面を搭載しているか否か、いちいちカメラを向けることが問題ないかどうかなどで分かれる。
機能 | QRコード | NFCタグ |
---|---|---|
値段 | とても安い | 少し高い |
書き換え | 不可 | 可能 |
署名検証 | なし | あり |
書き込みロック | なし | あり |
読み出しロック | なし | あり |
対応機種 | ほぼすべて | 少ない |
データ容量 | 少ない | 多い |
機構 | カメラ | NFC |
位置合わせ | 必須 | それなり |
耐環境性 | 高 | 低~高 |
読み取り距離 | 20cm~∞(サイズ依存) | 0~3cm |
見た目 | わかりやすい | デザイン依存 |
読み取り速度 | 位置合わせ後即時 | タッチして即時 |
オフライン利用 | 可 | 可 |
機能 | QRコード(画面表示) | NFC(機器) |
---|---|---|
画面 | 必須 | 不要 |
NFC通信機能 | 不要 | 必須 |
通信 | 単方向 or オンライン併用 | 双方向 |
セキュリティ | 不可(オンライン併用でコード化可) | 可 |
読み取り距離 | 20cm~∞(サイズ依存) | 0~3cm |
位置合わせ | 必須 | それなり |
データ容量 | 少ない | 多い |
##vs BLE
BLEは、ある程度の距離までつながること、接続位置を気にしなくて良いこと、接続に多少時間がかかることから、個人所有の機器の初期設定やデータの吸出し、持続的な通信が必要な用途に便利である。
また、ペアリング済みだと接続開始に極めて高速なことが多いので、繰り返し使う用途にも向いている。
NFCは、即座に通信できる半面、通信にはかざす必要があり、持続的な通信には向いていないため、小容量、一期一会、ワンタイムの場面に向いている。
なお、BLEビーコンをNFC的に使う用途もあるが、接続タイミングが不安定で困ることが多い(実体験)。
NFCのパッシブ型モジュールの場合は電波法の対象にならない(*1)ため、BLEより少々手軽かもしれない
変わり種として、NFCタグモジュールの中には、動作中に不揮発メモリに書き込んでおくと、電源切れていてもNFCで受電してメモリ内容を読み書きできるタイプの物がある。そのためBLEよりもさらに電源条件がタイトな環境でも使えるかもしれない。
※FeliCa Linkなど
機能 | BLE(通常) | NFC |
---|---|---|
画面 | 不要 | 不要 |
機構 | BLE | NFC |
電波法 | 対象 | パッシブは対象外(*1)、アクティブは出力電力により型式指定必要 |
暗号化 | あり | あり(制限付き) |
持続的通信 | 可 | 不可 |
接続開始 | 3ms(ペアリング済み)数秒(スキャン・アドバタイジング含む) | 数十ms~数百ms(ポーリング周期依存) |
位置合わせ | 不要 | それなり |
通信距離 | 0~5m(一般的)~350m(実測最大) | 0~3cm |
オフライン利用 | 可 | 可 |
電源 | 必須 | 必須ではない |
##vs 超音波通信
超音波通信はQRコードよりも不安定で小容量になるため、オンライン通信のトリガとして組み合わせて使うことが多い。
少し離れていても受信できるのがメリット。あと、マイクがついてないスマホはないのでそこと組み合わせる時に便利。
機能 | 超音波 | NFC |
---|---|---|
画面 | 不要 | 不要 |
安定性 | 低 | 高 |
通信 | 双方向? | 双方向 |
機構 | マイク&スピーカ | NFC |
電波法 | 対象外 | パッシブは対象外(*1)、アクティブは出力電力により型式指定必要 |
セキュリティ | なし | あり(制限付き) |
位置合わせ | 不要 | それなり |
通信距離 | 0~?(音量依存) | 0~3cm |
オフライン利用 | 不可 | 可 |
#補足
*1 一部国を除く
参考: 総務省 電波利用ホームページ 高周波利用設備の概要 (型式指定について)
https://www.tele.soumu.go.jp/j/sys/others/highfre/
総務省 電波利用ホームページ 免許及び登録を要しない無線局
https://www.tele.soumu.go.jp/j/adm/proc/free/
ねとらぼ iPhoneの「総務省指定」はなぜAndroid端末に刻印されないのか arrowsとXperia担当者に聞いてみた (出力電力による違い)
https://nlab.itmedia.co.jp/nl/articles/1609/30/news136.html
RRR 鉄道技術アラカルト(83) スイカの種 2011.4 三木彬生 p41 (電波を出さないので法規制を受けない)
https://bunken.rtri.or.jp/doc/
#関連
NFCと組み込み機器で通信する際の3モードの使い分け
Android端末同士でNFCで通信するための手段メモ
NFC関係用語と解説
AndroidのHCE-FでFelica Lite相当の機能を実装してみた
AndroidのHCE-Fについて調べてみたメモとサンプルソース
LazyPCSCFelicaLite (C++でPC/SCを使ってFelica Liteにアクセスするライブラリ)
PC/SCでFelica LiteにC言語でアクセスする