こんにちは、tampopo256です。
普段は大学でアイドルコピーダンスの全国大会を運営するサークルに所属していたりします。
最近、「連絡先は交換したくないけどURLだけは共有したい」という場面が増えてきました。例えば、
- 誰かに限定公開の資料URLを渡したいとき
- 誰かに特典ページを見せたいとき
- スタッフだけにアクセスできる控室マップを共有したいとき
などなど。
LINEやメールを使わずに、**「QRコードだけ渡す」**運用ができるとすごく便利なんですよね。
というわけで、Cloudflare Workers を使って「一意のURLを発行→QRに変換→印刷」という流れを一括で管理できる仕組みを作ってみました。
🎯 やりたかったこと
- ユーザーに渡すチケットには「QRコード+短縮URL」を記載
- 管理者用の切り離し部分には「管理用QR+ID情報+URL」を記載
- QRコードの転送先は後からWebで変更可能にしたい
- 複数チケットをまとめて発行&CSV保存できるようにしたい
- 印刷前に「QRコード未設定」状態も許容したい
🧱 技術構成
役割 | ツール |
---|---|
バックエンドAPI | Cloudflare Workers |
データ保存 | KV Storage(IDとURLのマッピング) |
QRコード生成 | Python(qrcode ライブラリ) |
発行バッチ+CSV記録 | Python(requests + csv ) |
🖨 チケット構成
今回は、こちらの製品を活用し簡単に制作しました。
コストが結構かかるので、厚紙に印刷し加工するのが良いとは思います。
それぞれの面に以下を記載:
左(渡す) | 右(管理用) |
---|---|
QRコード(アクセス用) | QRコード(管理用) |
短縮URL | 管理画面URL |
有効期限の注意書き | アクセスID・管理ID |
備考欄(手書き可) | 更新期限の目安など |
🐍 QR生成+CSV記録スクリプト(Python)
チケットを複数発行したかったので、以下の処理をPythonでバッチ化しました:
-
/create
にリクエストを送り、短縮URL・管理URLを受け取る -
generated_urls.csv
に日時・URL・IDを追記保存
CLIで件数指定できるようにもしています:
$ python generate_urls_to_csv.py
何件発行しますか?: 100
✅ 100件発行し、CSVに保存しました。
🛡 プライバシーポリシー
QRコードにアクセスする利用者の安心のため、券面には要約版、Webには全文を設置しました。
- 券面には以下のような簡潔な注意文を印刷:
【プライバシーポリシー(要約)】
アクセス情報は統計処理のみに使用され、個人を特定することはありません。
詳細は r.example.com/privacy をご覧ください。
- Web版:
https://r.example.com/privacy
に静的HTMLで全文を設置
💡 工夫したこと・気づき
-
await request.json()
は送信データが空だとクラッシュ →.catch(() => ({}))
でガード - Workersのログ確認は
wrangler tail
が最強 - フォントサイズは
8pt
程度でも現場で読める - Pythonスクリプトと連携することで現場即対応がしやすい
🔚 まとめ
Cloudflare Workers でQR付きの短縮URLチケットを発行・管理するシステムを作ってみたところ、0円・ノーインフラで即実戦投入できるレベルに仕上がりました。
小規模イベント・体験会・配布物付きの受付など、幅広く使えそうです。
同様のニーズがある方の参考になれば幸いです!
🛠 補足
この記事では、具体的なコードやリンクは公開していません。
というのも、この仕組みは現在、実際のイベント現場で運用されているため、セキュリティや運用上の都合で一般公開できない構成になっています。
とはいえ、同じような課題を感じている方や、
「これ現場でめっちゃ使いたい…!」という方がいれば、個別にご連絡いただければコードや構成は共有可能です。
💬 ご興味ある方は、
kazuya@village-se.com
までお気軽にご連絡ください!