私は自分のアプリを紹介するために、カンファレンスやミートアップに出かけます。良い会話ができた相手には、最後にプロモコード入りのNFCタグを渡すのが習慣になっています。タグにスマホをかざすと、コードが入力済みの状態でApp Storeが開き、そのままアプリが手に入る、という仕掛けです。
問題はタグそのものではなく、その枚数でした。プロモコードは一つひとつ違うので、タグにも一枚ずつ別のリンクが必要になります。しかも私は、それを数百枚用意したかったのです。アプリで一枚ずつ書いていては、とてもその数はこなせません。NFC.cool ToolsにCSV一括書き込みを組み込んだのは、そのためです。Macでリストを作り、CSVとして書き出し、ファイルをスマホに移す。あとはアプリが行を一つずつ処理していく間、タグを次々とスマホにかざすだけです。この方法で書き込んだタグは、もう何百枚にもなります。
ここでは、スプレッドシートから最後の一枚まで、手順の全体をお見せします。製品ページのリンク、シリアル番号、Wi-Fiの接続情報など、スプレッドシートのセルに収まるものなら何でも、やり方は同じです。
CSV一括書き込みで何が起きるのか
アプリにCSVファイルを渡すと、その1行が1枚のタグになります。各タグに何が書き込まれるかをプレビューで確かめ、書き込みを開始をタップし、あとはタグを一枚ずつスマホにかざしていくだけです。書き込みが済んだ行はファイルから取り除かれていくので、画面に並んでいるのは常に「まだ残っている分」だけ。途中でやめて、あとから、それこそ数日後にでも続きから再開できます。
NFCタグを書き込んだことが一度もなければ、まずiPhoneでNFCタグを書き込むガイドから始めてください。この記事は、それを大量にこなすための話です。
ステップ1:パソコンでスプレッドシートを作る
Numbers、Excel、Google Sheets(Googleスプレッドシート)のどれでも構わないので、パソコンでリストを作ります。スマホで作業するよりはるかに速いですし、リンクの組み立てもスプレッドシートに任せられます。
いちばん簡単なレイアウトは、1列だけ、1行に1タグです。各行の内容が、そのまま1枚のタグの中身になります。製品リンクの列なら、こんな具合です。
https://example.com/products/1001
https://example.com/products/1002
https://example.com/products/1003値の違いが番号やIDだけなら、列は数式に作らせましょう。最初の1行を入力してオートフィルで下まで伸ばせば、何行あってもリストは一瞬で仕上がります。IDがすでに別のファイルにあるなら、それをスプレッドシートで開き、数式で前に固定部分をつなげれば済みます。
アプリは値がどう始まっているかを見て、それに合ったレコードの種類を選びます。
リンク(
https://、http://、www.)はURLレコードになります。タグをかざすとブラウザで開きます。tel:、mailto:、sms:、geo:はそれぞれ対応するアクションになり、電話をかける、メールを書き始める、地図で場所を開く、といったタグが作れます。WIFI:T:WPA;S:MyNetwork;P:secret;;はWi-Fiレコードになります。Wi-Fi接続用のQRコードと同じ書式です。ただし一つ注意点があります。この文字列にはセミコロンが含まれているので、アプリはファイルをセミコロン区切りだと判断し、値をばらばらに分割してしまいます。アプリ側で区切り文字をカンマに設定すれば、行はそのまま一つに保たれます。shortcuts://はiOSのショートカットを実行します。それ以外はすべて、プレーンテキストとして書き込まれます。
値は必ず1行に収めてください。ファイルは1行ずつ読まれるので、何行にもまたがる連絡先カードは、複数のタグに分かれて書き込まれてしまいます。
気をつけたいことが二つあります。
ヘッダー行は入れない。アプリは空でない行をすべて内容として扱います。1行目に「URL」と書いてあれば、最初のタグには「URL」という単語が書き込まれます。
空行はあっても大丈夫。空行は飛ばされますし、値の前後の空白も取り除かれます。
1枚のタグに複数のレコードを入れたいとき
1枚のタグに複数の内容を載せたいこともあります。たとえば、人ごとにウェブサイト、電話番号、メールアドレスの三つを入れる、といった場合です。そのときは列を増やしてください。アプリのグループ化するの設定で行ごとを選ぶと、1行が1枚のタグになり、セルごとに1レコードが入ります。列ごとはその逆で、1列を1枚のタグにまとめます。シートを縦横逆に作ってしまった場合のための選択肢です。1列だけのファイルには、代わりにタグごとの行数という設定があり、たとえば3行を3つのレコードとして1枚のタグに入れられます。
ステップ2:CSVとして書き出す
CSVファイルの正体は、ただのテキストファイルです。ファイルの1行がシートの1行に当たり、行の中のセルはカンマ、セミコロン、またはタブで区切られています。TextEditやメモ帳で開けば、アプリが受け取るものをそのまま見ることができます。人ごとにリンクと電話番号を入れたシートなら、書き出したあとはこうなります。
https://example.com/anna,tel:+4915112345678
https://example.com/ben,tel:+4915198765432書式や数式は書き出しで消え、残るのは値だけです。Numbers、Excel、Google Sheetsのそれぞれから、このファイルを取り出す手順を説明します。
MacのNumbers
ファイルメニューから書き出す、CSVの順に選びます。
書類に表が複数ある場合、表ごとにファイルを分けるか、一つにまとめるかを聞かれます。ここで欲しいのは、一つの表だけが入った一つのファイルです。
表の名前を含めるのチェックは外したままにします。オンにするとNumbersが表の名前を独立した1行として書き込んでしまい、その行がタグに載ってしまいます。
詳細オプションのテキストエンコーディングは、Unicode(UTF-8)のままにしておきます。
次へをクリックし、ファイル名を付けて書き出すをクリックします。
Numbersについて二つほど補足があります。新しい表には必ず色付きのヘッダー行が付いていて、そこに入力したものは他の行と同じように書き出されます。空のままにするか、削除してください。もう一つ、Numbersの区切り文字は常にカンマです。値の中にカンマが含まれていると、Numbersはその値を引用符で囲みますが、アプリはその引用符を取り除きません。Numbersから書き出すときは、値にカンマを入れないようにしましょう。
MacまたはWindowsのExcel
ファイルから名前を付けて保存を選びます(バージョンによっては「コピーを保存」)。
ファイル形式としてCSV UTF-8(コンマ区切り)(.csv)を選びます。
Excelが保存するのは、いま表示しているシートだけです。書式が失われるという警告が出ますが、書式は必要ないので、そのまま確定します。
名前に反して、Excelがいつもカンマを使うとは限りません。使われるのはシステムの地域設定にあるリスト区切り文字で、日本語環境ならカンマですが、ドイツ、フランス、オランダをはじめヨーロッパの多くの環境ではセミコロンになります。そこではカンマが小数点として使われているからです。設定を変える必要はありません。NFC.coolはカンマ、セミコロン、タブを自動で判別します。セミコロン区切りになる環境なら、値の中にカンマがあっても問題ない、ということでもあります。
Google Sheets
ファイルからダウンロード、カンマ区切り形式(.csv)の順に選びます。
書き出されるのは現在のシートだけで、区切りは常にカンマです。
ファイルを移す前に
私は、書き出したファイルをスマホに送る前に、一度テキストエディタで開いて確かめています。見るべきは、1行が1タグになっているか、ヘッダー行がないか、値が引用符で囲まれていないか、そしてカンマ区切りのファイルの中に余計なカンマが紛れていないか、です。どうしても値にカンマを入れたいなら、Excelからセミコロン区切りで書き出すか、NumbersでTSV(タブ区切り)として書き出してから、拡張子を.csvに変えてください。iPhoneではどのみちファイル名が.csvで終わっている必要があります。ファイル選択画面がそれを条件に絞り込んでいるからです。
ステップ3:ファイルをスマホに移す
iPhoneなら「ファイル」アプリに、Androidならシステムのファイル選択画面から届く場所に、ファイルが収まりさえすれば、方法は何でも構いません。
AirDropでMacからiPhoneに送り、「ファイルに保存」を選びます。
iCloud Drive:MacでCSVをiCloud Driveに保存すれば、スマホの「ファイル」アプリに現れます。Google DriveやDropboxも同じで、「ファイル」アプリから参照できます。
自分宛てにメールで送り、添付ファイルを保存します。
Android:パソコンからQuick Share、Google Drive、あるいはUSBケーブルで。アプリはシステムのドキュメント選択画面を使うので、そこから開ける場所ならどこでも大丈夫です。
ステップ4:インポートしてプレビューを確認する
NFC.cool ToolsでNFCツールの画面を開き、バッチモードの中からCSV一括書き込みを探します。Androidでも同じく、NFCツールの一覧にあります。CSVインポートをタップして、ファイルを選びます。
アプリはインポートの時点でファイルのコピーを作ります。タグを書き込むにつれて行が消えていくのは、このコピーのほうです。パソコン上の元のスプレッドシートはそのままなので、完全なリストはいつでも手元に残ります。
ファイルを選ぶと、アプリが検出した内容が表示されます。区切り文字、列の数、グループ化の方法、そして必要なタグの枚数です。私が毎回必ず確認するのは、NFCタグあたりのバイト数という一つの数字。このバッチでいちばん大きなメッセージのサイズです。これを手持ちのタグと照らし合わせます。NTAG213に入るのは144バイト、NTAG215は504バイト、NTAG216は888バイトです。短いリンクは50バイト前後なので、リンクだけなら一番安いタグで十分。Wi-Fiレコードや長めの連絡先カードには215か216が必要です。手元のチップがどれか分からなければ、NFCタグの種類のガイドを見てみてください。
バッチプレビューを開くと、各タグに入るレコードを一枚ずつ確認できます。そこに見えているものが、そのまま書き込まれます。
ステップ5:タグの山を書き込む
書き込みを開始をタップして、最初のタグをiPhoneの上端に当てます。スマホが振動したら書き込み完了、次のタグを手に取ります。書き終えた行はリストから消え、カウンターが残りの枚数を教えてくれます。
作業中に起きても慌てなくていいことを、いくつか挙げておきます。
スキャン画面が60秒で消える。これはiOSの制限で、クラッシュではありません。数秒すれば勝手に戻ってくるので、そのまま続きから再開できます。
タグの書き込みに失敗する。ロックされていたのかもしれませんし、離すのが早すぎたのかもしれません。その行はファイルに残ったままで、アプリが先に進んでしまうことはありません。同じタグをもう一度かざすか、別のタグに替えてください。
途中で中断しなければならない。アプリを閉じて、別の用事を済ませて、明日また戻ってきても大丈夫です。残りはファイルが覚えています。Androidでは、未完了のバッチが表示され、再開するかどうか尋ねられます。
いったん調子が出れば、100枚でもそれほど時間はかかりません。
何百枚も書いてきて分かったこと
まず2枚だけ書く。それをアプリで読み取って、タグが期待どおりに動くことを確かめます。残りを書くのは、それからです。
いちばん大きなチップは要らない。リンクならNTAG213で十分ですし、まとめ買いすると価格差がはっきり出ます。NTAG216は連絡先カードやWi-Fi用に取っておきましょう。
配るタグはロックするか、パスワードで保護する。CSV一括書き込みのすぐ隣に、「バッチロック」と「一括パスワード保護」というモードがあります。ロックはタグを永久に読み取り専用にします。パスワードなら、自分だけがあとから書き換えられ、他の人には触れません。手元を離れるタグは、書き込んだあとにどちらかのモードで一通り処理しておけば、誰にも内容を上書きされずに済みます。
CSV一括書き込みは、iPhone版NFC.cool ToolsとAndroid版で使えます。そしてカンファレンスやミートアップで私を見かけたら、タグをもらいに声をかけてください。