iOS 13 Core NFC 超意訳（7/23時点）

# はじめに
iOS公式のCore NFCの非公式超意訳です。
主観で、混乱しそうな内容はわりと省きました。主観で。
正確な情報が欲しい方は↓を読むことをオススメします。

[Core NFC \| Apple Developer Documentation](https://developer.apple.com/documentation/corenfc)

明らかな誤訳や、NFCの文脈でおかしなことなどなどありましたらお気軽にご指摘くださいませ。

先に用語の紹介を。
NFC = Near Field Communication（近距離無線通信規格のひとつ）
NDEF = NFC Data Exchange Format（NFCでよく使われるデータフォーマット）

以下本文です。

# Core NFC
NFCタグを検知し、NDEFデータなどのデータを読み込む。

# Overview
アプリでモノに仕込んだNFCタグを読める。Core NFCを使うとNDEFのtype1からtype5までのNFCタグを読むことができる。例えば博物館で、お店や展示されたモノについての情報を（NFCタグを媒介にして）アプリで読み取れる。

> Note
> Core NFCはApp Extensionsでの利用はできず、端末がNFCをサポートしていないと使えない。判定には[readingAvaiable](https://developer.apple.com/documentation/corenfc/nfcreadersession/3043845-readingavailable)が使える。

# Topics

## Essentials
- [Building an NFC Tag-Reader App](https://developer.apple.com/documentation/corenfc/building_an_nfc_tag-reader_app)
  - NDEF MessageをNFCタグからアプリで読み取るサンプルコード
- [Adding Support for Background Tag Reading](https://developer.apple.com/documentation/corenfc/adding_support_for_background_tag_reading)
  - Background Tag Readingを使うとアプリなしでNFCタグをスキャンできる
- [NFCReaderUsageDescription](https://developer.apple.com/documentation/bundleresources/information_property_list/nfcreaderusagedescription)
    - plistのキー。NFCを使う用途を書く。端末の機能使う時にダイアログ出るアレ。
    - Privacy - NFC Scan Usage Description

## Reader Sessions
リーダーセッションを作り、NFCタグのスキャンと検知を行う。

- [NFCNDEFReaderSession](https://developer.apple.com/documentation/corenfc/nfcndefreadersession)
    - NDEFタグの検知に使うリーダーセッション
- [NFCTagReaderSession](https://developer.apple.com/documentation/corenfc/nfctagreadersession)
    - ISO7816、ISO15693、FeliCa、MIFAREのタグ検知に使うリーダーセッション（ベータ版）
- [NFCVASReaderSession](https://developer.apple.com/documentation/corenfc/nfcvasreadersession)
    - Value Added Service(VAS？初耳…)タグの処理に使うリーダーセッション（ベータ版）
- [NFCReaderSession](https://developer.apple.com/documentation/corenfc/nfcreadersession)
    - 各リーダーセッションの抽象基底クラス。↑の3つの親クラス。
- [NFCReaderSessionProgtocol](https://developer.apple.com/documentation/corenfc/nfcreadersessionprotocol)
    - リーダーセッションの各クラスとやりとりするためのインターフェース
- [Near Field Communication Tag Reader Session Formats Entitlement](https://developer.apple.com/documentation/bundleresources/entitlements/com_apple_developer_nfc_readersession_formats)
    - アプリが読むことができるNFCデータのフォーマット
    - *Key*: com.apple.developer.nfc.readersession.formats

## Tag Types
タグに合うインターフェースを利用することで、タグデータの読み書きをする。

- [Creating NFC Tag from Your iPhone](https://developer.apple.com/documentation/corenfc/creating_nfc_tags_from_your_iphone)
    - タグへのデータ書き込みや、タグとデータのやりとりをするサンプルコード
- [NFCISO7816Tag](https://developer.apple.com/documentation/corenfc/nfciso7816tag)
    - ISO7816タグとやりとりするためのインターフェース（ベータ版）
- [NFCISO15693Tag](https://developer.apple.com/documentation/corenfc/nfciso15693tag)
    - ISO15693タグとやりとりするためのインターフェース（ベータ版）
- [NFCFeliCaTag](https://developer.apple.com/documentation/corenfc/nfcfelicatag)
    - FeliCaとやりとりするためのインターフェース（ベータ版）
- [NFCMiFareTag](https://developer.apple.com/documentation/corenfc/nfcmifaretag)
    - MIFAREとやりとりするためのインターフェース（ベータ版）
- [NFCNDEFTag](https://developer.apple.com/documentation/corenfc/nfcndeftag)
    - NDEFタグとやりとりするためのインターフェース（ベータ版）
- [NFCTagCommandConfiguration](https://developer.apple.com/documentation/corenfc/nfctagcommandconfiguration)
    - NFCタグへのコマンド発行をする際のコンフィグパラメータ
        - 現状リトライの回数とインターバルの設定しかできない模様

## NDEF Messages and Payloads
- [NFCNDEFMessage](https://developer.apple.com/documentation/corenfc/nfcndefmessage)
    - 1〜複数のペイロードレコード（NDEF Record）から作られるNDEF Message
- [NFCNDEFPayload](https://developer.apple.com/documentation/corenfc/nfcndefpayload)
    - ↑の中にいるペイロードレコード自体

## Errors
- [NFCReaderError](https://developer.apple.com/documentation/corenfc/nfcreadererror)
    - タグやリーダーセッションで発生するエラー
- [NFCTagResponseUnexpectedLengthErrorKey](https://developer.apple.com/documentation/corenfc/nfctagresponseunexpectedlengtherrorkey)
    - 不正なレスポンスのデータ長が返ったことを示す `userInfo` のキー(ベータ版）

## Enumerations
- [NFCTag](https://developer.apple.com/documentation/corenfc/nfctag)
    - 中身は以下のとおり
       - feliCa
        - iso15693
        - iso7816
        - miFare

## Protocols
- [NFCTagReaderSessionDelegate](https://developer.apple.com/documentation/corenfc/nfctagreadersessiondelegate)
    - リーダーセッションのプロトコル
        - リーダーセッションがアクティブになった時
        - タグを検知した時
        - エラーでセッションが無効になった時

## Beta Software
ベータ版なので、色々変わるかも！

# まとめ
NFCの書き込みもできるようになるので色々遊べますね！！