TRETNFCKit 再設計メモ

treastrain/TRETJapanNFCReader は、2019年の iOS 13 で行われた Core NFC の機能拡充をきっかけに開発された、Japan NFC Reader のコアとなる NFC を用いた通信部分を OSS 化して公開しているものである。
しかし、当時の私の技術力不足であったり、年数の経過からイケてない実装が随所に見られる。何度かリニューアルを試みているものの、どこかのタイミングで頓挫している。
今回はn回目の再設計に挑戦する。メモをこの Zenn のスクラップで公開していこうと思う。

名称を「TRETNFCKit」に改める。これは、今までアプリ名が「Japan NFC Reader」、ライブラリ名が「TRETJapanNFCReader」と意図的に寄せて命名していたのだが、やはり説明のときに少々不便だからだ。
自分の名前の接頭辞と「NFC」という略称がくっつくことで「TRETNFC」と大文字が続いてしまうが仕方がない。本当は自分の名前の接頭辞を「TR」にしたいが、これは ロイター通信 に先に取られてしまっている。

フェーズ1
フェーズ1では、既存のファイルたちを一旦全て無効化し、新しい TRETNFCKit としての Swift Package 化する。その後、NFC を使うための最小限の構成のみを行う。
-
NFCTagReaderSession
に対応するNFCReader<NativeTag>
-
NFCNDEFReaderSession
でreaderSession(_:didDetectNDEFs:)
を用いるタイプに対応するNFCReader<NDEFMessage>
-
NFCNDEFReaderSession
でreaderSession(_:didDetect:)
を用いるタイプに対応するNFCReader<NDEFTag>

Release TRETNFCKit 3.0.0-alpha.1 · treastrain/TRETJapanNFCReader

フェーズ2
フェーズ2では、NFCReader<NativeTag>
を用いて FeliCa 専用の Reader を作成する。

Release TRETNFCKit 3.0.0-alpha.2 · treastrain/TRETJapanNFCReader

フェーズ3
フェーズ3では、NFCReader<NativeTag>
を用いて ISO 7816 向け、MIFARE 向け、ISO 15693 向けの Reader を作成する。

Release TRETNFCKit 3.0.0-alpha.3 · treastrain/TRETJapanNFCReader

フェーズ4
フェーズ4では、Core NFC の利用に必要な Info.plist の設定が正しく行われているかを確認する、Info.plist Checker の導入を行う。

Release TRETNFCKit 3.0.0-alpha.4 · treastrain/TRETJapanNFCReader

フェーズ5
フェーズ5では、SwiftUI から用いられる際に使用を推奨するための ViewModifier を追加する。
-
NFCReader<NDEFMessage>
向けのSwiftUI.ViewModifier
-
NFCReader<NDEFTag>
向けのSwiftUI.ViewModifier
-
NFCReader<NativeTag>
向けのSwiftUI.ViewModifier
-
FeliCaTagReader
向けのSwiftUI.ViewModifier
-
ISO7816TagReader
向けのSwiftUI.ViewModifier
-
ISO15693TagReader
向けのSwiftUI.ViewModifier
-
MiFareTagReader
向けのSwiftUI.ViewModifier

Release TRETNFCKit 3.0.0-alpha.5 · treastrain/TRETJapanNFCReader

フェーズ6
フェーズ6では、NFCReaderSession.sessionQueue
に対して、適当な TaskPriority
と対応した指定を行えるようにする。
また、any
を用いている typealias の定義を some
または同等のものへ置き換え、メモリの節約を図る。

Release TRETNFCKit 3.0.0-alpha.6 · treastrain/TRETJapanNFCReader