スマホをかざすだけで改札を通れたり、タッチ決済ができたり。気づけばNFCは日常のあちこちに入り込んでいます。
でも「どういう仕組みなの?」と聞かれると、正直ふわっとしたイメージしかない…。
今回は自分でもNFCを使ったアプリを作ってみたいと思ったので、その前にまずは基礎を整理してみました!

FlutterFlowを用いたNFCを活用したアプリ開発【後編】はこちら

そもそもNFCとは?

NFC(Near Field Communication)は、ICカードやスマホ決済に使われる「かざして通信する仕組み」のことです。
数センチ程度まで近づけないと反応しないため、安全性が高く、日常生活に広く浸透しています。

ただし、NFCは単独の技術ではなく、もともと RFID(Radio Frequency Identification)=電波を使ってモノを識別する技術 の一部のようです。

RFIDは周波数帯によって使い分けられています。

周波数帯

呼び方

通信距離

主な用途

LF帯(125〜134kHz)

低周波RFID

数cm〜1m

ペットの体内チップ、車のイモビライザー

HF帯(13.56MHz)
↑これがNFC

高周波RFID

数cm

交通系ICカード、スマホ決済、社員証

UHF帯(860〜960MHz)

超高周波RFID

数m〜数十m

物流・在庫管理、アパレルのタグ

このうち HF帯13.56MHzを使うのがNFC です。

技術的には「13.56MHzの電波を使って、数センチ以内で無線通信をする」方式で、タグ側は電池なしでも利用できます。この仕組みが、シールやカードをかざすだけで動く便利さを実現しています。

身近なところだと、

  • 交通系ICカード(Suica、Pasmoなど):Felica方式。

  • スマホ決済(Apple Pay, Google Pay):カードエミュレーション。

  • オフィスやホテルの入退室管理:社員証やルームキー。

  • IoTトリガー:自宅の照明をオンにしたり、特定のアプリを起動したり。

  • ゲーム:Nintendo Amiiboなど、NFCタグを読み込むことでデータ連携。

こうした事例を見ると、NFCは「ちょっとした動作でデジタルと現実をつなぐ橋渡し」をしている技術だとわかります。

主な動作モードは以下の3つに分けられます。

  • リーダー/ライターモード:スマホがタグを読み書きする。もっとも一般的。

  • P2Pモード:スマホ同士でデータを交換する。Android Beamが代表例。現在はほぼ使われていない。

  • カードエミュレーションモード:スマホがICカードとして振る舞う。Apple PayやモバイルSuicaで利用されている。

👉 開発で実際に利用できるのは主にリーダー/ライターモードで、P2PやカードエミュレーションはOSや既存サービスに制御されているため自由度は限られると考えてよさそうです。

スマホでの対応状況

次に、押さえておきたいのは、NFCをアプリで扱うならネイティブ開発が前提だということです。
Webブラウザ経由では基本的にNFCハードウェアにアクセスできません(※例外的に「Web NFC API」がChromeで実験的に動いているそうですが、対応端末が限られ、iOSでは使えないため実用性はほぼゼロです)。

ここで重要なのが、OSごとの対応状況と端末差です。

Android

  • NfcAdapter を通じて 読み取り・書き込みの両方が可能

  • 独自フォーマットや低レベルAPIにもアクセスでき、自由度が高い

  • ただし 端末ごとの実装差が大きい(PixelではOKでもGalaxyでは挙動が違うなど)

  • 実機検証必須。複数メーカーでテストしないと安心できない

iOS

  • Core NFC フレームワークで NDEFタグの読み取りが可能

  • ただし 書き込みやカードエミュレーションは不可

  • Apple製品なので 挙動が統一されていて安定

  • NFCは基本的に アプリがフォアグラウンドにある時だけ利用可能

👉 このように、Androidは自由度が高い代わりに機種差が大きく、iOSは安定しているが機能制限が厳しい。
加えて、エミュレータではNFCを再現できないため、必ず実機検証が必要になります。実用レベルのものを作るのはなかなかハードルが高そうです。

まとめると、NFCアプリ開発の難易度が高いのは次の3点に集約されます。

  • ネイティブ開発が前提:Webでは扱えず、Android/iOSそれぞれのAPIに依存する

  • OSごとの制約差:Androidは自由だが機種差が大きく、iOSは安定しているが機能制限が多い

  • 実機検証が必須:エミュレータではテストできず、複数端末での検証が欠かせないのでテスト工程が増える

アプリでの活用事例(開発に役立ちそうなもの)

調べていて「これなら自分でも作れそう」と思った事例を挙げます。

  • URLジャンプ:タグを読み取ると公式サイトやSNSにアクセス。名刺代わりにも使える。

  • Wi-Fi接続:SSIDとパスワードをタグに書き込み、読み取るだけで接続。

  • IoTトリガー:タグを玄関や机に置き、読み取ったら家電やアプリを操作。

  • チェックイン:出席管理や簡易的な入場システム。

こうしたシンプルな機能は、実装難易度も低めで学習用にもちょうどよい印象です。

NFCタグの種類と特徴

さて、そろそろ実際にNFCタグを購入して実験してみる必要がありそうです。ただ、NFCタグとひと口に言っても、いくつかの規格やシリーズが存在します。用途やスマホ対応状況を知らずに選ぶと「読めない」「容量不足」といった落とし穴にハマるので、最初に整理しておきます。

NFCは「NFC Forum」という業界団体で Type 1〜5 に分類されています。周波数はすべて13.56MHzですが、メモリ容量や通信速度、セキュリティ機能が違います。

規格の種類:Type 1〜5(NFC Forum規格)

チップ例

メモリ容量

特徴

Type1: Topaz

数百バイト〜2KB

シンプルで安価。普及は少なく互換性に制約あり

Type2: NTAG213/215/216(NXP)

144〜888バイト

最も一般的。NDEF対応。安価で入手性良し。iOS/Android両対応

Type3: FeliCa(Sony)

数百KB〜1MB

高速・大容量。日本の交通系ICカードや電子マネーで広く利用

Type4: MIFARE DESFire(NXP)

数KB〜32KB

暗号化やセキュア領域を持ち、セキュリティ強い

Type5: STMicro ST25TV など

数KB〜64KB

ISO15693ベース。NFCの中では長距離(〜1m)読み取り可能

NDEFとは?

NDEF(NFC Data Exchange Format)はNFCでやり取りする共通フォーマット。
URLやテキストをスマホがすぐ理解できる形で保存でき、iOS/Androidが標準対応しています。
👉 実用的に使うには「NDEF対応タグ」を選ぶのが無難のようですね。

NTAGシリーズ(定番のNFCタグ)

市販されている中でも広く利用されているのが、NXP社のNTAGシリーズ(Type 2)。容量ごとに3種類があります。

  • NTAG213:144B。安価でシンプル用途に最適

  • NTAG215:504B。テキストや複数データに余裕。

  • NTAG216:888B。大容量で複雑な連携向き。価格はやや高め

👉 今回は、学習と実験に十分な容量を持ち、拡張性もある NTAG215 を選びました。

調べて参考になった資料

結論

今回の調査から、最初の一歩に最適なのはNDEF対応のNTAG213/215/216という結論に至りました。
理由は以下の通りです。

  • iOS/Androidどちらでもサポートされている

  • URLやテキストなどのシンプルなデータを書き込める

  • 安価に入手可能で、テストに向いている

一方で、交通系や決済系の領域は個人開発者にはほぼ触れない領域だと再認識しました。

次回の【後編】では、今回選んだタグを実際に使ってアプリを開発してみた過程と、直面した課題についてまとめてみようと思います。