CastMatrix

必読 — 利用条件 · 必読

コンプライアンス・プライバシー・ライセンス



1. ライセンスと利用条件

1-1. 利用許諾の範囲

本テンプレート(以下「本ソフトウェア」)は、1 購入ライセンス = 1 事業者・1 店舗サイト の運営にのみ使用できます。

行為 可否
自店舗サイトへのデプロイ・運用
購入者自身によるカスタマイズ・改変
ウェブ制作会社が顧客 1 店舗分として導入・納品する (納品先が運営する 1 サイトのみ)
同一事業者による複数店舗サイトへの展開 店舗数分のライセンス購入が必要
本ソフトウェアをそのまま、または改変して第三者へ販売・頒布 不可
オープンソースとして公開 不可
テンプレート・SaaS・マルチテナントプラットフォームとして再利用 不可

1-2. 再販・再頒布の禁止

本ソフトウェアのソースコード(全体・一部を問わず)を:

  • 別製品・テンプレートとして販売すること
  • GitHub・GitLab 等のパブリックリポジトリで公開すること
  • ZIP ファイルや他の形式で第三者に無償・有償を問わず配布すること

は、いずれも 明示的に禁止します。違反は著作権法上の問題となりえます。

1-3. 派生物(カスタマイズ済みサイト)

購入者が自店舗向けにカスタマイズしたサイト(フロントエンドのデザイン改変・機能追加など)は、自店舗での運用目的に限り許諾されます。カスタマイズ済みの状態であっても、ソースコードを別テンプレートとして配布・販売することは禁止です。

1-4. サポート範囲

詳細は 03-support-policy.md を参照してください。一般的なインストール手順への質問・明らかなバグ報告はサポート対象ですが、以下は対象外です:

  • カスタム機能の開発代行
  • 他社ホスティングへの移植
  • デザイン変更の代行作業

1-5. ライセンス認証と決済(Gumroad)

本テンプレートは Gumroad の決済およびライセンスキー発行機能を前提に提供される場合があります。

  • ライセンスキーは Gumroad の購入情報に紐づきます。
  • 管理画面での初回アクティベーション時にキー認証が必要になる場合があります。
  • 決済・請求・領収書・購入履歴の一次情報は Gumroad 上の記録が基準となります。

返金可否および返金期間は販売者が Gumroad 商品ページで定義したポリシーに従います。購入前に必ず確認してください。


2. 法的免責事項

2-1. ソフトウェアの提供形態

本ソフトウェアは "現状有姿(AS IS)" で提供されます。著作者は以下について一切の保証を行いません:

  • 特定目的への適合性
  • 動作の無中断・無エラー性
  • セキュリティ上の瑕疵がないこと

2-2. 運営者の法的責任

本テンプレートを使用して運営されるウェブサイトに関するすべての法的責任は、運営者(購入者)が負います。 著作者はいかなる損害(直接損害・間接損害・逸失利益を含む)に対しても賠償責任を負いません。これには以下を含みますが、これらに限りません:

  • 行政処分・業務停止命令
  • 利用者とのトラブル・訴訟
  • 個人情報漏洩による損害賠償
  • 著作権侵害(コンテンツ面)
  • 年齢確認義務違反に伴う行政・刑事上の責任

2-3. 著作者が保証しないこと

項目 説明
法令への準拠性 本テンプレートが日本国内外の特定の法令に準拠することを保証しません
年齢確認の完全性 Cookie ベースの年齢確認は完全な本人確認ではありません
継続的な法令対応 法改正に伴うアップデートは保証されません
セキュリティの完全性 脆弱性が皆無であることを保証しません

3. 成人向けコンテンツと法令

3-1. 風俗営業等の規制及び業務の適正化等に関する法律(風営法)

本テンプレートは、風営法の適用を受ける事業者(ソープランド・ファッションヘルス・デリバリーヘルス等)のウェブサイトとして利用されることを想定しています。

運営者が確認・遵守すべき主な事項:

  • 都道府県公安委員会への届出・許可(業種に応じた手続き)
  • 広告規制:「性的サービスの具体的内容」「料金」の表示に関するガイドライン
  • 未成年者の雇用禁止・年齢確認義務
  • 深夜営業規制(地域・業種による)

3-2. 年齢確認の実装と限界

本テンプレートが提供する年齢確認機能の仕様:

項目 実装内容
確認方法 / ページでの「18 歳以上」ボタン押下
記録方法 ブラウザ Cookie(age_confirmed=1
有効期間 24 時間(max-age=86400
対象ルート /home 以下すべてのページ
バイパス防止 サーバーサイドミドルウェアで Cookie 検証

この実装の限界:

  • ユーザーが実際に 18 歳以上であることを検証する手段ではありません(生年月日入力・身分証明なし)
  • ブラウザの Cookie 削除や別ブラウザでの再アクセスにより容易にリセットされます
  • 法令によっては、より厳格な年齢確認(身分証明書提示等)が求められる場合があります

運営者の対応責任:

現行法令・行政指導の要件を確認し、必要に応じて追加の年齢確認手段(例:会員登録時の年齢入力・確認フロー)を実装してください。本テンプレートの Cookie 確認はあくまで 最低限の技術的措置であり、法的要件の充足を保証するものではありません。

Cookie の詳細仕様: 02-age-verification.md

3-3. コンテンツ規制

掲載コンテンツ(画像・動画・テキスト)については、運営者が以下を確認する責任を負います:

  • 猥褻物頒布罪(刑法175条): わいせつ物の電磁的記録による頒布は刑事罰の対象となりえます。どの範囲が「わいせつ」にあたるかは個別判断が必要です。
  • 児童ポルノ禁止法(児童買春・児童ポルノに係る行為等の規制及び処罰並びに児童の保護等に関する法律): 18 歳未満の性的画像・映像の作成・頒布・保管は厳格に禁止されています。本テンプレートをこの目的に使用することは禁止します。
  • プロバイダ責任制限法: ユーザー生成コンテンツを扱う場合の発信者情報開示・削除対応義務

4. キャストの個人情報保護

4-1. 個人情報保護法(個人情報の保護に関する法律)

キャストの氏名・源氏名・顔画像・動画・生年月日・その他識別情報は「個人情報」に該当し得ます。運営者は個人情報保護法に基づく義務を負います。

主な義務(事業者向け):

義務 概要
利用目的の特定・通知 キャストに対して収集目的を明示
同意取得 画像・動画の公開について本人同意を記録
安全管理措置 不正アクセス・漏洩防止のための技術的・組織的対策
委託先の管理 Cloudflare 等のクラウドベンダへのデータ委託に関する管理
保有個人データの開示等 本人からの開示・訂正・削除請求への対応

4-2. 本テンプレートのアクセス制御

技術的な安全管理措置として以下を実装しています:

  • RBAC(Role-Based Access Control): スタッフの権限を JSON カラムで管理。admin ロールと staff ロール(スケジュール・キャスト・コンテンツ権限を個別に設定可能)。
  • JWT 認証: 管理画面 API は Bearer トークンで保護。有効期限あり。
  • シークレット管理: JWT_SECRET は Cloudflare Workers の Secret として保管(環境変数とは別の暗号化ストレージ)。

詳細: 02-staff-and-permissions.md

4-3. 退店キャストの個人情報処理

退店(離職)したキャストの情報については、以下の処理フローを実装しています:

自動処理(退店操作時):

  1. Casts.status'retired' に更新
  2. 公開サイトのキャスト一覧・詳細から非表示
  3. Cloudflare Images / R2 でメディアアセットに requireSignedURLs=true を設定し、旧公開 URL を 403 に

手動操作が必要な物理削除:

  • ストレージからの完全削除は管理画面 → キャスト詳細 → メディア削除 から明示的に操作
  • 誤削除防止のため自動削除は行いません

運営者の対応:
本人から「自分の画像・動画を削除してほしい」という請求があった場合は、退店処理後に管理画面から物理削除を実行してください。削除後の復元は不可能です。

詳細: 05-cast-retirement.md

4-4. プライバシーポリシーの整備

本テンプレートはウェブサイトのプライバシーポリシーページを提供しません。 運営者は、個人情報保護委員会のガイドラインに沿ったプライバシーポリシーを自社で作成し、サイトに掲載する必要があります。

フリーページ機能(10-free-pages.md(購入後 ZIP 同梱))を使って掲載できます。


5. データ保管と第三者サービス

5-1. Cloudflare へのデータ委託

本テンプレートはすべてのデータを Cloudflare のインフラ上に保管します:

データ種別 保管先 所在地
キャスト・スケジュール等のデータ Cloudflare D1(SQLite) 選択したリージョン(APAC 等)
画像・動画 Cloudflare R2 / Images / Stream Cloudflare グローバルエッジ
管理者セッション JWT(ステートレス、サーバー側は秘密鍵のみ保管) Workers Secret

Cloudflare のプライバシーポリシー・DPA(データ処理契約)については Cloudflare 社のドキュメントを参照してください。

5-2. Google Analytics

サイト設定から Google Analytics 4(GA4)のトラッキング ID を設定した場合、訪問者の行動データが Google へ送信されます。

  • GA を使用する場合は、プライバシーポリシーにその旨を明記してください。
  • GA4 のデータ保持期間・削除手順は Google Analytics の管理画面から設定してください。
  • EU 圏向けサービスの場合は GDPR 対応(同意バナー等)が必要となる場合があります。

設定方法: 11-site-settings.md


6. セキュリティ運用

6-1. JWT シークレットの管理

JWT_SECRET は管理者ログインのトークン署名に使用されます。

  • 48 文字以上のランダム文字列を使用してください(openssl rand -base64 48 で生成可能)
  • Cloudflare Workers の Secret(暗号化保管)として設定し、wrangler.toml に直接記載しないでください
  • シークレットが漏洩した場合は、直ちに wrangler secret put JWT_SECRET で更新してください(既存セッションは即時無効化されます)

6-2. 管理画面へのアクセス制限

管理画面(/cmm/)は JWT によって保護されていますが、追加の対策として:

  • パスワードは十分な強度のものを設定してください(8 文字以上、英数字記号混在推奨)
  • 不要なスタッフアカウントは削除してください
  • 定期的にスタッフ一覧を確認し、退職者のアカウントを削除してください

6-3. 既知のセキュリティ上の制限

項目 詳細
パスワードリセット 管理画面 UI からのセルフリセット機能なし。API または D1 直接操作が必要
MFA(多要素認証) 未実装。Cloudflare Access を前段に置くことで代替可能
レートリミット ログイン試行の制限なし。Cloudflare WAF で補完可能
セッション強制失効 JWT 個別失効の仕組みなし(有効期間切れまで有効)

これらの制限について追加対策が必要な場合は、Cloudflare Access・Cloudflare WAF・カスタム実装で補完してください。

詳細: 02-known-limitations.md


7. 本テンプレートが提供するもの・しないもの

購入判断の参考として、本テンプレートのスコープを明示します。

提供するもの

機能 概要
年齢確認ゲート Cookie ベースの 18 歳確認、サーバーサイド検証
キャスト個人情報のアクセス制御 RBAC による管理画面の権限分離
退店処理のメディアアクセス制限 Cloudflare Images/R2 の URL 制限(旧 URL を 403 に)
管理者認証 PBKDF2 パスワードハッシュ、JWT 署名・検証
HTTPS 強制 Cloudflare Pages / Workers は HTTPS のみ
シークレット管理機構 Cloudflare Workers Secrets を使った暗号化保管

提供しないもの(運営者が準備するもの)

項目 理由・補足
プライバシーポリシー本文 店舗ごとの事業内容・提供サービスに依存
利用規約本文 同上
特定商取引法表記ページ 通信販売に該当する場合は店舗が用意
厳格な年齢確認(身分証明等) 法令要件に応じて追加実装が必要
MFA(多要素認証) Cloudflare Access で補完可能
監査ログ 管理操作の記録機能なし(自前実装または Cloudflare ログ活用)
バックアップ自動化 D1 のバックアップは Cloudflare ダッシュボードから手動またはスケジュール設定
GDPR 対応 Cookie 同意バナー EU 圏向けサービスで必要な場合は実装が必要

8. 運営者が取るべき最低限の措置

本テンプレートを導入する際に、運営者が最低限実施することを推奨する事項を示します。

デプロイ前

  • 風営法に基づく届出・許可の確認
  • キャストの画像・動画掲載に関する同意書の整備
  • プライバシーポリシーの作成・掲載(フリーページ機能で掲載可能)
  • JWT_SECRET に 48 文字以上のランダム文字列を設定

運用中

  • 退職スタッフのアカウントを削除
  • 退店キャストのメディアを退店処理後に物理削除(本人請求時)
  • Cloudflare D1 のバックアップ設定(ダッシュボード → D1 → Backups)
  • Cloudflare ダッシュボードのセキュリティイベントを定期確認