1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

エンジニアが新婦のために結婚式にITで全力で貢献しようとした話【連載第11回】「祭りのあと」を設計する

1
Posted at

エンジニアが新婦のために結婚式にITで全力で貢献しようとした話【連載第11回】「祭りのあと」を設計する

NFC実装Tips

結婚式でNFCタグを活用する際の実装ポイントをまとめます。

NFCタグの選定

NTAG215またはNTAG216を推奨します。URLを書き込むだけなら容量は十分です。カジノチップ型のケースに埋め込むことで、見た目の体験も向上します。

URL設計

https://example.com/c/{CHIP_CODE}

CHIP_CODE にはUUIDを含めて推測困難にします。

-- 40枚分のチップを生成
INSERT INTO chips (code)
SELECT 'CHIP-' || LPAD(n::TEXT, 3, '0') || '-' || gen_random_uuid()
FROM generate_series(1, 40) AS n
ON CONFLICT (code) DO NOTHING;

イベント後のルーティング

同じNFCタグを、イベントのフェーズによって異なるページにルーティングできます。

  • イベント前: /onboarding/chip(登録ページ)
  • イベント中: /casino(ゲームページ)
  • イベント後: /thank-you(サンキューページ)

サーバー側でイベントフェーズを管理し、同一URLでもリダイレクト先を切り替える設計が有効です。

セキュリティ

  • 1ユーザー1チップの制約を設ける(同一ユーザーが複数チップを紐付けることを防止)
  • チップ紐付け処理はレースコンディション対策を実施(SELECT FOR UPDATE を使用)
  • UUIDを含むコードで推測を防止

この記事の関連情報・背景解説はブログでも公開しています。
エンジニアが新婦のために結婚式にITで全力で貢献しようとした話【連載第11回】「祭りのあと」を設計する - Secure Auto Lab

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?