コンテンツへスキップ

← NFC.cool Blogに戻る

iPhoneのNFC.coolがICODE 3、SLIX、ICODE DNA、NTAG 5に対応しました

表紙の内側にRFIDラベルが貼られた図書館の本と、NFCタグの詳細を表示しているiPhone

机の上にICODE 3タグ、その上にiPhone。アプリはチップが伝えてくる情報を、何の問題もなくすべて読み取っていました。IDも、メモリも、タップカウンターも、本物であることを証明するNXPの署名も。ところが、ひとつだけ、カウンターを変更しようとしたとたん、アプリは「タグが離れました」と言ってきたのです。

タグは動いていません。もう一度試しても、同じメッセージ。カウンターの代わりにパスワードを設定しようとしても、やはり同じメッセージでした。

何が起きていたのかは、あとでお話しします。今年追いかけたバグの中で、いちばん面白いものだったからです。でもその前に、そもそもなぜICODEタグをいじっていたのかを。

私はNFC.coolを、スマホに入れられるいちばん高機能なNFCアプリにしたいと思っています。この夏に取り組んだのは、ブランドが製品の本物であることを証明するのに使うタグ、NTAG 424 DNAでした。その次に、アプリがまだまともに扱えていなかった最大のチップファミリーが、NXPのICODEです。NFC.cool Tools 7.1.0で、それが扱えるようになりました。


ICODE:知らないうちに手にしているタグ

この20年のあいだに図書館で本を借りたことがあれば、ICODEタグを手にしている可能性はかなり高いはずです。表紙の内側に貼られた、渦巻き状のアンテナが入った平たいラベルがそれです。同じチップは、お店の盗難防止ラベルや、ランドリータグ、商品ラベルにも使われています。

技術的には、これらはISO 15693のチップで、NFCの世界ではType 5と呼ばれます。多くの人が買うNTAG215のようなNFCステッカーは、別の規格です。iPhoneはどちらとも通信できますが、つながったあとの話し方がまるで違います。同じ電話でどちらにもかけられるのに、出てくる相手の話す言葉が違う、というイメージです。

図書館やお店がICODEを選ぶ理由は、読み取り距離です。図書館のゲートや自動貸出機の大きなアンテナなら、一般的なNFCステッカーよりも離れた位置からこれらのタグを読み取れます。スマホの場合はiPhoneのアンテナが小さいので、やはり近づける必要がありますが、チップ自体はああしたゲートのために作られているのです。

ICODEタグに保存されたリンクやテキストを読み取ること自体は、もともと難しくありませんでした。面白いのはその奥にあるものです。パスワード、カウンター、盗難防止フラグ、プライバシーモード。チップのこの部分は、これまでNFC.coolからは手の出せない領域でした。


NFC.coolでICODE 3にできること

ICODE 3は、このファミリーの中でNXPのいちばん新しいチップで、ICODE SLIX2の後継にあたります。ネットでは「SLIX 3」という名前で売られていることもよくあります。NXPにその名前のチップはないので、商品ページに「SLIX 3」とあれば、それはICODE 3です。

NFC.coolでかざすと、チップの全体像がわかります。どのチップなのか、メモリ、カウンター、そして正規のNXPチップかどうか。NXPは工場で一つひとつのチップのIDに署名していて、アプリはその署名を検証します。だから、IDを使い回しただけのコピーでは、署名までは偽れません。

そこから、チップが備えている設定のほぼすべてを変更できます。

  • タップカウンター。ICODE 3は、読み取られた回数をチップ自身で一回残らず数えられます。NFCミラーをオンにすると、チップが保存されたリンクにIDと現在のカウントを書き込むので、タップのたびに少しずつ違うURLが開き、Webサイト側でそれを数えられます。NFCタップカウンターの記事を読んだことがあれば、それと同じ発想を別のチップで実現したものです。

  • パスワード。ICODE 3にはパスワードが6つあります。読み取り、書き込み、プライバシー、破棄、盗難防止の設定、構成のそれぞれに1つずつです。どのタグも同じ工場出荷時の値で出荷されるので、保護が意味を持つのは自分のパスワードを設定してからです。NFC.coolはパスワードをタグごとにiCloudキーチェーンに保存します。

  • メモリ保護。メモリを2つに分けて、それぞれを別々に保護できます。たとえば、公開用のリンクは誰でも読めるようにしたまま、その後ろに保存したデータは隠しておく、といった使い方です。

  • 盗難防止と図書館向けの設定。お店や図書館のゲートを鳴らすのがEASフラグです。AFIバイトは、図書館が本を貸出中として印を付けるのに使います。どちらも変更でき、ロックすることもできます。

  • プライバシーモード。プライバシーパスワードが提示されるまで、タグはIDとデータを隠します。

  • 改ざん検知。SL2S3003TT版で使えます。このバージョンにはボトルのキャップや箱の封をまたぐように通せるワイヤーがあり、アプリは封が一度でも破られたかどうかを表示します。

  • 独自の署名。ブランドはNXPの署名を自社の署名に置き換え、ロックできます。

  • 破棄。チップを完全に停止させます。製品の役目が終わったときに、プライバシーを守るための機能です。

これらの設定のいくつかは元に戻せず、中にはiPhoneからタグにアクセスできなくなるものもあります。そこで、取り消せない操作の前には、タグのIDの末尾4文字を入力するようNFC.coolが求めます。また、最初に読み取ったタグ以外のタグは変更しません。それでも私なら、初めての操作はまず予備のタグで試します。

ついでに直した小さなことがひとつあります。空のICODEタグを、アプリからNFCタグとしてフォーマットできるようになりました。これでリンクやテキストをすぐに書き込めます。


ファミリーのほかのチップ

アプリは手にしているチップの種類を見分け、そのチップに実際にできることだけを表示します。古いSLIXではICODE 3よりも選択肢が少なくなりますが、それは単にチップの機能が少ないからです。

  • SLIX、SLIX-S、SLIX-L、SLIX2、そして古いSLIチップは、たいていの図書館で使われている定番です。SLIX2はカウンターとメモリ保護を備えています。SLIX-Sはメモリをページ単位で保護でき、64ビットのパスワードに対応しています。この場合、保護された領域にアクセスするたびに、読み取りと書き込みの両方のパスワードが必要になります。

  • ICODE DNAは、セキュリティに特化した兄弟分です。チップの外に決して出ないAESの秘密鍵を内蔵しています。NFC.coolに鍵を入力すると、アプリはチップに、その鍵を持っていることを証明させます。コピーされたチップは、IDとメモリが完全に一致していても、この検証を通りません。

  • NTAG 5は、電子工作好きとして私がいちばんワクワクしているチップです。回路基板に載せることを前提にしたNFCチップで、switchはピンを直接駆動し、linkとboostはI2Cでマイコンとやり取りします。スマホの電磁界だけで小さな回路に電力を供給したり、ピンでイベントを知らせたり、基板と256バイトのメモリを共有したりできます。NFC.coolはこれらの設定を読み取って変更でき、NTP5332とNTA5332では、チップにつないだセンサーとiPhoneから直接やり取りすることもできます。

これらはすべて、NFCツールの中のNXP ICODEとNTAG 5から使えます。NTAG 424 DNAのすぐ隣です。あるいは、ICODEタグをスキャンするだけで、アプリが自動的にその詳細を開きます。


iOSが直させてくれなかったバグ

話を、机の上の「離れた」はずのタグに戻しましょう。

ISO 15693では、スマホがタグと話す方法が2つあります。ひとつは、メッセージを送るたびにタグのIDを書き添える方法です。封筒に宛名を書くようなもので、そのタグだけが応答します。もうひとつは、先にタグを選択しておく方法です。部屋の中で話したい相手のほうに向き直ってから、あとは普通に話しかけるようなものです。

宛名を書くやり方のほうがすっきりしているので、NFC.coolはまずそちらを試します。それが使えるかどうかを確かめるために、アプリはIDを付けた簡単なテストメッセージを送っていました。タグが応答したので、アプリは宛名付きのメッセージが使えると判断して、そのまま先に進みました。

ここで私が知らなかったことがあります。iOSはこうしたコマンドを2つのグループに分けているのです。どのISO 15693チップでも理解できる標準コマンドと、パスワードやカウンター、構成を扱うNXP独自のコマンドです。宛名付きのメッセージにNXP独自のコマンドが入っていると、iOSはその送信を拒否します。メッセージはスマホから出ることすらありません。iOSは黙って「invalid parameter」エラーを返すだけです。そして私のコードにとって、そのエラーはタグが離れてしまったときのものと見分けがつきませんでした。

テストメッセージは標準コマンドだったので、あっさり通って、何も問題ないと教えてくれました。一方で、実際の変更はどれもNXPのコマンドを使うので、一つ残らず失敗していたわけです。

原因がわかってしまえば、修正は拍子抜けするほど小さなものでした。今はテストに、NXP独自のコマンドのうち、チップに乱数を返してもらうだけの無害なものを使っています。iOSがそれを拒否したら、アプリはタグを選択する方式に切り替えます。ICODE 3をもう一度iPhoneの下に置き、カウンターを設定をタップすると、タグの数字が変わりました。カウンターが動くのを見て、あれほどうれしかったことはめったにありません。


使える環境

iPhoneでは、これらすべてが本体に内蔵されたNFCリーダーで動作します。NFCチップのないiPadとMacでは、外付けのUSB NFCリーダーを使います。その場合、リーダーがICODEのコマンドをそのままタグに受け渡せる必要があります。それができるリーダーなら、アプリはiPhoneとまったく同じようにICODEタグを読み取って管理できますし、前の節のバグもそちらでは一切起きません。コマンドを受け渡せないリーダーでも、タグのメモリを読み取ることはできます。

Android版のアプリは、まだICODEに対応していません。

使い道がないまま引き出しに眠っている図書館用のタグや、出番を待っているNTAG 5の基板があるなら、7.1.0にアップデートして1枚かざしてみてください。NFC.cool ToolsはApp Storeで入手できます。

関連記事

2026年10月12日

電子ペーパーのスマホケースをハックして、iPhoneから書き込めるようにしました

背面が電子ペーパーになっている、バッテリー不要のNFCスマホケースを持っているのですが、付属のアプリが気に入りませんでした。そこで通信の仕組みを解析し、NFC.cool Tools 7.2.0から、DeerPhoneCase、KAZAVA、Novixand、TYOHINNのアプリを使うケースに、写真やQRコード、次のイベント、今日の予定、リマインダーを表示できるようにしました。

2026年9月24日

iPhoneとAndroidのNFC目覚まし:タグを順番にスキャンしないと止まらないアラーム

夜ふかしでコードを書いては、毎朝スヌーズボタンに負け続けていました。そこでNFC.cool Toolsに「NFCアラーム」を作りました。家の中に貼ったNFCタグを順番にたどらないと鳴りやまない、iPhoneとAndroidの目覚ましです。その仕組みと、Appleがすべてのアラームに付けている「停止」ボタンをどう攻略したかを紹介します。

2026年9月5日

スプレッドシートからNFCタグを一括で書き込む方法

私はカンファレンスやミートアップで、App Storeのプロモコードを入れたNFCタグを配っています。その数はもう何百枚にもなりました。ここではその書き込み方を紹介します。スプレッドシートでリストを作り、CSVに書き出し、ファイルをスマホに移して、あとはNFC.cool Toolsに一枚ずつ書き込ませるだけ。どんなリストにも使えるやり方です。

スキャンの準備はいい?

★4.5·73,500 件の評価·無料