REDCLIFF FAN PLATFORM — 技術実装方針 v0.1

技術アーキテクチャ・開発順序メモ

構想提案(Proposal v0.1)の内容を「誰が・どの順番で・どこまでを自作するか」に落とし込むための実装検討資料。対象読者は実際に開発するエンジニア/外部委託先。

この資料の位置づけ:構想提案は意思決定者向けの事業判断材料であり、これはPilot着手が決まった後の実装検討材料。ここに書かれた難易度・順序・期間は現時点の見積りであり、実際のチーム構成や委託先の技術選定によって変わる。

SYSTEM ARCHITECTURE

一人開発を前提にした6ブロック構成

全部を自社で組み上げるのではなく、枯れた外部サービスに任せられる部分は任せ、REDCLIFF固有のロジック(Stamp・Passport・Sponsor向け集計)だけを自作する。

PWA フロントエンド
  • 活動ページ/地図/日程
  • Sky Passport 画面
  • Sky Memory 表示・共有
身元確認システム
  • LINE Login(OAuth / PKCE)
  • メール Magic Link
  • アカウント統合ルール
業務管理バックエンド
  • 活動の作成・編集
  • NFC/QRの有効化・無効化
  • Stamp手動補発・取消
  • スタッフ権限・操作ログ
データベース
  • ユーザー・アイデンティティ
  • 活動・参加記録
  • 分析イベント(訪問・登録・参加・共有)
非同期ジョブ
  • Sky Memory 画像生成(キュー処理)
  • 通知の送信
  • 集計バッチ
基盤・監視
  • CDN(静的ページ・地図)
  • ログ・エラー監視
  • データベースバックアップ

BUILD vs BUY

自作しない部分を先に決める

一人(または少人数)開発を現実的にする一番の判断は、「枯れた領域を自作しない」こと。

✕ 自作しない

  • パスワード認証の仕組み
  • メール送信サーバー
  • 画像・動画ストレージ基盤
  • 動画トランスコード基盤
  • プッシュ通知サーバー
  • 決済・チケット販売基盤
  • 汎用アクセス解析基盤

◯ REDCLIFF固有ロジックとして自作

  • Sky Passport のデータ構造
  • Stamp付与・重複防止のルール
  • Sky Memory 画像テンプレート合成
  • Confirmed/Estimatedを分けた集計
  • Sponsor向け実績まとめ

DIFFICULTY MAP

機能別・技術難易度

「難しいから無理」ではなく、「難易度が高いものはPhase 1に入れない」ための判断材料。

機能難易度判断
PWA活動ページ・静的地図・日程個人開発に十分向く。天気は外部APIで済む
LINE LoginOAuth・PKCE・コールバックを正しく実装する必要あり
メール Magic Link自前パスワード方式にはしない
QR流入パラメータ枯れた手法
Sky Passport データ構造先にスキーマ設計が必要
NFCでStampページを開くWeb NFC APIは不要(詳細は次項)
一人・一場一枚のStamp制御DBのユニーク制約で対応可
静的Sky Memory生成同期処理にせず非同期キューにする
業務管理バックエンド地味だがMVPに必須。後回しにしない
現場オフライン同期Pilotでは「ページの閲覧」だけオフライン対応し、Stamp発行はオンライン限定にする
PWA Push通知iOSはホーム画面追加+許可が前提。主導線にしない
個人化CRM非常に高Phase 1では不要。Phase 2以降
Sponsor Dashboard非常に高権限・データ分離の設計が重い。まずは静的レポートで代替
チケットAPI連携非常に高チケット会社ごとに仕様が異なる。個別協議が前提
モバイルオーダー・仮想待ち列非常に高事実上別プロダクト。単独では推奨しない
Native App非常に高必要性が確認できるまで着手しない

NFC — TECHNICAL NOTE

NFCの技術的な位置づけ

「3D NFC Stamp」は特別なアプリ開発を必要としない、技術的難易度の低い実装で成立する。

  1. 既存のチケットシステムで入場確認を行う
  2. 来場者が会場エリアに入る
  3. スタッフが管理する実体NFCスタンプに、来場者がスマホをかざす
  4. NFCタグ内のHTTPSリンクをスマホが読み取り、そのままブラウザで開く(Web NFC APIは不要)
  5. ページ上でログイン/ユーザー識別
  6. サーバー側でその公演のデジタルStampを付与する(user_id + event_id を一意制約)

ただし、複数Stamp到達で無料チケットなど高価値な報酬に変わる設計である以上、固定リンクは転送・共有されうる。これはNFC自体の欠陥ではなく、報酬設計の問題として段階的に対処する。

PILOT

スタッフ管理+活動時間内のみ開放+一人一場一枚の制御で十分

正式報酬運用

スタッフが発行する短期有効コード、または検票後の引換券と紐付ける

高額報酬時

チケット購入記録との突合、またはワンタイムトークンを検討(Phase 1では不要)

BUILD ORDER

Phase区分ではなく、依存関係で並べた開発順序

事業側のPhase 1〜3は「何を先に見せるか」の区分。ここでは「何が何より先に作られていなければ動かないか」で並べ直す。

  1. データモデルと身元確認の基本設計

    Users / Identities / Events の3テーブルと、LINE・メールのアカウント統合ルールを最初に固める。ここが曖昧なまま先に進むと、後から全機能を作り直すことになる。

  2. 業務管理バックエンドの最小版

    活動の作成、NFC/QRの有効化、Stamp手動補発。地味だが、これがないとPilot当日にスタッフが対応できない。

    依存:データモデル
  3. 身元確認(LINE Login/メールMagic Link)

    枯れたホスティングサービスの利用を前提に実装。

    依存:データモデル
  4. Sky Passport(活動ページ・登録・NFC/QR Stamp)

    MVPの中核。一人・一場一枚の制御をここで確定する。

    依存:身元確認、業務管理バックエンド
  5. Basic Analytics(訪問・登録・参加・共有の計測)

    匿名IDとログイン後ユーザーIDの紐付けを含めて設計する。後回しにすると数字が合わなくなる。

    依存:Sky Passport
  6. 静的Sky Memory(非同期生成)

    同期処理にせず、生成をキューに乗せる。終演直後のアクセス集中を前提に設計する。

    依存:Sky Passport
  7. 現場演練・負荷確認

    実機・実NFCタグでのリハーサルと、エンディングQR直後を想定した簡易的な負荷確認。

    依存:上記すべて

UNVALIDATED ASSUMPTIONS

Pilotで検証すべき、まだ解けていない技術仮説

構想提案の中では「できる」と書いているが、技術的にはまだ検証されていない前提。断定はせず、この5つをPilotの検証項目として明示する。

1
現場のオフライン同期

回線混雑時の一時保存と復旧後の同期は、重複送信・多重取得・時刻ズレなど考慮すべき論点が多い。Pilotでは「ページ閲覧のみオフライン対応、Stamp発行はオンライン限定」に絞って検証する。

2
通知の到達率

PWA Pushは、ホーム画面に追加し通知を許可したユーザーにしか届かない。QRを一度開いただけの来場者への到達率は未検証。

3
複数アカウントの統合

同一人物がメール登録後にLINEで再登録するなど、複数アカウントが発生しうる。統合ルールをPilot後に運用しながら固める。

4
共有ボタンの計測

計測できるのは「共有ボタンをタップした数」までで、実際に外部SNSへ投稿されたかどうかは通常把握できない。Pilot Scorecardの「共有・反応」はこの前提で読む。

5
エンディングQR直後の同時アクセス

数万人規模の来場者のうち、終演直後の数十秒に閲覧・ログイン・画像生成リクエストが集中する。静的ページのCDNキャッシュ、画像生成の非同期化、DB書き込みの冪等性が前提になる。

MISSING MODULES

構想提案にはほぼ出てこないが、本番運用には必要なもの

特に「Stampの手動補発」は優先度が高い。スマホの電池切れ・回線不通・NFC読み取り不良は、現場では必ず起こる前提で設計する。

DATA MODEL

最低限必要なエンティティ

Usersアプリ上のアカウント本体
IdentitiesLINE/メールなど認証手段の紐付け
Events公演・活動の単位
Campaign Sources流入チャネル・QRパラメータ
Visitsページ訪問ログ
Attendance Claims参加申告・NFC/QR読み取り記録
Stamps正式Stamp・Experience記録
Sky Memories生成された空の記憶データ
Share Intents共有ボタンのタップ記録
Consent Records個人情報・通知許可の同意記録
Admin Audit Logsスタッフによる操作履歴

TIMELINE

現実的な開発期間の目安

一定の技術力を持つ開発者が、AIを補助的に使い、枯れた外部サービスを組み合わせる前提。初めてのプロダクト開発でゼロから積み上げる場合は、これより長くなる。

フェーズ期間目安
クリック可能な試作+データ構造設計1〜2週
身元確認・活動ページ・Passport2〜3週
NFC/QR Stamp1〜2週
静的Sky Memory1〜2週
業務管理バックエンド2〜3週
Analytics・レポート1〜2週
実機テスト・現場演練2〜3週

合計でおよそ10〜14週でPilotに使える版を目指す。この期間・体制はチーム構成が決まった段階で改めて見積もり直す。