昨年、私はBolognaで開催されたPragmaConf 2025に参加しました。あのカンファレンスに行くのは初めてで、結果的に最後にもなりました - 主催者が運営を続けられなくなり、私が行った回が最終回となったのです。今でも少し寂しく思っています。
そこで、同じくiOSとNFCの開発者であるAlexander Manzerと話す機会がありました。話はやがて、私が長らく「不可能」と分類していた問題に流れていきました。iPadでNFCタグを読み取るという問題です。iPadにはNFCチップがないので、私はずっと「それは無理だ」と人に言ってきました。Alexanderはできると言いました - 適切な外付けリーダーがあれば - そして、手始めになる小さなコードを送ってくれると申し出てくれました。数日後、彼は本当に送ってくれました。そのコードの断片こそが、NFC.coolが今やiPadとMacでNFCタグを読み取れるようになった理由です。
これは無理だと言いましたよね
5月にNFC.coolがMacに登場したとき、私はMacにできないことについて丸ごと一節を書き、その筆頭にNFCスキャンを挙げました。理由は単純でした。MacにはNFC無線がなく、iPadにもNFC無線がなく、それは私のどんなソフトウェアアップデートでも直せないハードウェアの限界だということです。
その部分は今でも本当です - デバイスに内蔵されたチップについては。私が見落としていたのは、内蔵チップを使う必要はないということでした。外付けすればいいのです。
NFCチップなしで動く仕組み
カギは外付けのUSB NFCリーダーです。それをiPadやMacに接続すると、NFC.coolが直接そのリーダーと通信します。ドライバーのインストールは不要です。AppleがすでにiPadOSとmacOSに搭載しているスマートカードサポートを通じて動くので、リーダーをUSB-Cポートに挿した瞬間に、アプリがそれを検知して自動的に切り替わります。
リーダーが挿さっているときは、アプリは常に外付けリーダーを優先します。iPadやMacではそのリーダーが唯一のNFCハードウェアなので、判断の余地はありません。iPhoneでは、アプリが代わりに選んでくれます。リーダーを挿せばNFC.coolはそれを使い、挿さなければ本体内蔵のNFCに戻ります。設定を切り替える必要も、モードを選ぶ必要もありません - アプリがどのハードウェアを持っているかを判断し、それに応じて動きます。
私がこれを作るうえで基準にし、実際にテストした唯一のリーダーは、HID OMNIKEY 5022 CLです。他のUSBリーダーも動くかもしれませんが、約束はできません。エンドツーエンドで動作を確認できたのはこの一台だけだからです。別のリーダーを試したら、ぜひその結果を知りたいです。教えてください - 動いたのか、どこでうまくいかなかったのか。学んだことはアプリとこの記事に反映していきます。
これで何ができるか
iPhoneでできることのほぼすべてです。タグを読み取ってメモリ全体をダンプしたり、NDEFメッセージを書き込んだり、たくさんのタグを次々に読み書きするバッチ処理を実行したりできます。タグのパスワード保護も機能します。3Dプリンターのフィラメントスプール形式であるOpenPrintTagも、読み書き両方向で動きます。そして、Philips Sonicareのブラシヘッドのリセットもちゃんと動きます。
最後のものが一番の難所でした。Sonicareのヘッドをリセットするには、タグからカウンターを読み取り、それからパスワード保護されたページに書き戻す必要があります。しかもタグは、直前から認証済みの状態が続いていると見なしているときだけ、その書き込みを受け付けるのです。外付けリーダー越しでは、これはリーダーとの一つのセッションを両方のステップにまたいで開いたままにし、間で閉じさせないということを意味しました。それが保てるようになると、それに依存する操作 - 保護された書き込みやブラシのリセット - がiPhone上と同じように振る舞い始めました。
正直な制限事項
いくつかまだ実現できていないことがあります。あなたが自分で気づくより、私から先にお伝えしたいと思います。
テストしたリーダーはOMNIKEY 5022 CLだけです。別のものを使うと、未検証の領域に入ります。
MIFARE Classicタグはリーダー越しでは読み取り専用です。読むことはできますが、書き込みはできません。
どれも、ほとんどの人の使い方を壊すものではありませんが、現実にある制限であり、リーダーを買う前に知っておきたいと私自身が思う類のことです。
ありがとう、Alexander
これがどこから生まれたのかは、はっきりさせておきたいです。私が机に向かって発明したわけではありません - Alexanderが糸口を手渡してくれて、私がそれを手繰り寄せたのです。彼はあのコードを共有する義務などなかったのに、共有してくれた。感謝しています。その後あれほど熱心に追いかけた理由の一つは率直なものです。NFC.coolを、実際にNFCタグを読み取れる最初のiPadアプリにしたかったのです。本当に一番最初になるかどうかはともかく、そこにたどり着くだけの価値はある仕事でした。
iPadとMacでのNFCタグ読み取りは、NFC.cool 6.15.0で登場します。iPadかMac、対応リーダー、そしてこれまで机の前ではどうしてもスキャンできなかったタグをお持ちなら、それはそのまま動きます。
リーダーが必要ですか?HID OMNIKEY 5022 CLはこちらです - Amazon USとAmazon ヨーロッパ。これらはアフィリエイトリンクです。どちらか経由でご購入いただくと、追加費用なしで私にわずかな手数料が入ることがあり、NFC.coolの開発資金の助けになります。
iPhone、iPad、Mac向けNFC.cool Toolsをダウンロード
そして、Bolognaでのあの最後のPragmaConfに参加していた方へ - 良い回をありがとう。また次があればよかったのに。