スマホをかざすだけで改札を通れたり、タッチ決済ができたり。気づけば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ごとの対応状況と端末差です。AndroidNfcAdapter を通じて 読み取り・書き込みの両方が可能独自フォーマットや低レベルAPIにもアクセスでき、自由度が高いただし 端末ごとの実装差が大きい(PixelではOKでもGalaxyでは挙動が違うなど)実機検証必須。複数メーカーでテストしないと安心できないiOSCore 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〜64KBISO15693ベース。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 を選びました。調べて参考になった資料NFC Forum(公式) – 規格団体による基本情報NXP: NTAGシリーズ – NTAG213/215/216の製品仕様Android Developers: NFC basicsApple Developer: Core NFCQiita: NFCタグを読み込めるiOSアプリを作ろうとしてつまづいた話Qiita: Flutter で NFC タグの読み取り・書き込みを行う(iOS)結論今回の調査から、最初の一歩に最適なのはNDEF対応のNTAG213/215/216という結論に至りました。理由は以下の通りです。iOS/AndroidどちらでもサポートされているURLやテキストなどのシンプルなデータを書き込める安価に入手可能で、テストに向いている一方で、交通系や決済系の領域は個人開発者にはほぼ触れない領域だと再認識しました。次回の【後編】では、今回選んだタグを実際に使ってアプリを開発してみた過程と、直面した課題についてまとめてみようと思います。