⚖️ VibeCoding KVKK & GDPR ルール
AIコーディングエージェントのためのデータ保護法、プライバシーバイデザインアーキテクチャ、および法令順守ガイドライン (KVKK · GDPR · ETK/İYS · TKHK · 5651)
📖 法的ビジョンと範囲 (概要)
VibeCoding KVKK & GDPR ルールは、AIコーディングエージェント (Claude Code、Cursor、Windsurf、OpenClaw、GitHub Copilot、および自律的なソフトウェアワークフロー) が開発するアプリケーションが、売上を1件も上げる前、またはリリース初日に高額な行政罰金、アクセスブロック、または損害賠償訴訟に直面するのを防ぐために、ITおよびデータ保護弁護士の厳格さをもって設計されています。
従来のソフトウェア開発では、法的コンプライアンスは製品リリース後の「後付けのテキスト」と考えられがちです。しかし、KVKK第12条およびGDPR第25条(データ保護バイデザインアンドバイデフォルト) に従い、データ保護は、データベーススキーマ(Row Level Security、consent_logs)からフロントエンドコンポーネント(未チェックの明示的同意ボックス、ローカルフォント)、Eメール/SMSキュー(İYSおよびRFC 8058 List-Unsubscribe)、ロギングアーキテクチャに至るまで、ソースコードそのものに組み込まれなければなりません。
🚀 クイック統合 (Quick Integration)
# 1. リポジトリをクローン
git clone https://github.com/melihkarasu/vibecoding-kvkk-gdpr.git
# 2. OpenAI Codex (AGENTS.md)、Cursor (.cursorrules)、またはClaude Code (CLAUDE.md) としてプロジェクトに追加
cp vibecoding-kvkk-gdpr/AGENTS.md ./AGENTS.md
cp vibecoding-kvkk-gdpr/.cursorrules ./.cursorrules
cp vibecoding-kvkk-gdpr/CLAUDE.md ./CLAUDE.md
# 3. または、OpenClaw / Claude Code Agent Skillとしてインストール
mkdir -p ~/.openclaw/workspace/skills/vibecoding-kvkk-gdpr
cp vibecoding-kvkk-gdpr/SKILL.md ~/.openclaw/workspace/skills/vibecoding-kvkk-gdpr/SKILL.md
| ファイル | 互換プラットフォーム / エージェント | 目的 |
|---|---|---|
SKILL.md | OpenClaw · Claude Code · Codex Skills | YAMLフロントマター付きの完全なエージェントスキル。 |
AGENTS.md | OpenAI Codex CLI / Codex Agent | Codexエージェント向けのプロジェクトルートディレクトリ指示。 |
CLAUDE.md | Claude Code (claude.md) | Claude Code向けのプロジェクトベース自動法令・プライバシーメモリファイル。 |
.cursorrules | Cursor IDE | Cursor AI向けの自動ロードKVKK & GDPRルールセット。 |
VibeCoding_KVKK_GDPR_Rules.md | Windsurf · Copilot · Custom LLM | 独立したMarkdownルールおよび監査リファレンス。 |
README.md | GitHub & ドキュメント | クイックリファレンステーブル、2026年罰金マトリックス、統合ガイド。 |
🚨 2026年行政罰金および制裁マトリックス
AIエージェントは、コードを作成または監査する際に、以下の各技術的欠陥が直接的に具体的な行政制裁に対応することを認識して行動しなければなりません:
| 違反領域 | 法的根拠 | 2026年行政罰金 / 制裁額 | 典型的な技術的根本原因 (コードエラー) |
|---|---|---|---|
| 通知義務違反 | KVKK第10条(罰則: 第18/1-a条) | 85,437 TL – 1,709,200 TL | 登録、連絡、またはニュースレターフォームでデータ収集時に、段階的通知テキストへのリンクがない、または同意と混同されている。 |
| データセキュリティ & 72時間通知違反 | KVKK第12条(罰則: 第18/1-b条 & 委員会2019/10) | 256,357 TL – 17,092,242 TL | Supabase/PostgreSQL publicスキーマでRLSが無効なテーブル、フロントエンドでのservice_roleキー漏洩、監査ログと72時間インシデント計画の欠如。 |
| 委員会決定への違反 | KVKK第15条(罰則: 第18/1-c条) | 427,263 TL – 17,092,242 TL | 特別カテゴリデータ(委員会2018/10)に対する追加の暗号化/マスキングの欠如、同意がサービス条件に結びつけられている。 |
| VERBİS登録義務違反 | KVKK第16条(罰則: 第18/1-ç条) | 341,800 TL – 17,092,242 TL | コードベースで処理されるデータカテゴリと保存期間がデータインベントリ(ROPA)と矛盾している。 |
| 国外移転 (標準契約) 通知違反 | KVKK第9条(罰則: 第18/1-d条 — 2024/2026年改正) | 国外移転行政罰金 | 国外のクラウド/AI/SaaSプロバイダーとの標準契約が5営業日以内に当局に通知されていない、または無許可のIP/データ移転。 |
| 無許可の営利電子メッセージ (スパム) | 6563号ETK第6条(罰則: 第12/1-a条) | 2,859 TL – 14,309 TL(一括送信の場合10倍: 143,090 TL) | |
マーケティング同意(marketing_consent)のないユーザーへのキャンペーンメール/SMS送信、İYS同期および購読解除リンクの欠如。 | |||
| 事前情報提供 & 訪問販売違反 | 6502号TKHK第48/2条(罰則: 第77/1-a条) | 売買 / 契約ごとに 3,973 TL | 支払いステップ前に事前情報フォームと訪問販売契約の同意取得の欠如、サブスクリプション更新/キャンセル条件の隠蔽。 |
| EUユーザー & 国外データ漏洩 | GDPR第5条、第6条、第25条、第32条、第44-49条(罰則: 第83条 & 第82条) | 20,000,000 EUR または 全世界売上高の4%+ 訪問者あたりの賠償金 (例 100 EUR) | 無料アプリを含む、EU訪問者のIPアドレスがGoogle Fonts CDN、無許可のAnalytics/Pixel、またはLLM APIを介してEU/TR外に転送される。 |
🔟 AIエージェントのための12の黄金の法令・プライバシールール (The 12 Golden Rules)
| # | 法的 & 技術的領域 | ❌ 絶対にするな (違法 / 罰金リスク) | ✅ 常に適用せよ (Privacy-by-Designパターン) |
|---|---|---|---|
| 01 | データベースセキュリティ & RLS(KVKK第12条 / GDPR第32条) | Supabase/PostgreSQL publicスキーマでRLSを無効のままにする、ポリシーなしでテーブルを作成する、またはフロントエンドでservice_roleキーを使用する。 | すべてのテーブルでENABLE ROW LEVEL SECURITYとauth.uid() = user_idポリシーを定義する。service_roleキーはサーバー側(Server Actions / Route Handlers)のみに保持する。 |
| 02 | 通知 vs. 明示的同意の区別(KVKK第5条、第10条 / GDPR第7条、第13条) | 「通知文と明示的同意を読み、同意します」 という1つのチェックボックスを配置する、またはボックスをデフォルトでチェック済み(checked)にする。 | 通知文は同意の対象とせず、表示リンク/レイヤー情報として提供する。明示的同意は必要な場合のみ、処理目的ごとに個別かつ未チェック(checked={false}) のボックスで取得する。 |
| 03 | サービス提供条件への同意の不従属(KVKK第4条、第5条 / GDPR第7条(4)) | 契約履行(登録/注文)に十分な処理において、マーケティングまたは第三者共有の同意をrequired(必須)にする (Bundled Consent)。 | 基本サービス提供に必須でない明示的同意ボックスにはrequired属性を決して付けない。ユーザーは同意しなくても登録および購入が可能でなければならない。 |
| 04 | 営利電子メッセージ & İYS(6563 ETK第6-8条 / CAN-SPAM) | 全usersテーブルに一括キャンペーンメール/SMSを送信する、許可日時を記録しない、またはメールフッターに解除リンクを含めない。 | 送信クエリにWHERE marketing_consent = true AND unsubscribed_at IS NULL条件を追加し、許可/拒否タイムスタンプをİYS準拠で記録し、すべてのメッセージにワンクリックList-Unsubscribeを提供する。 |
| 05 | 支払い、サブスクリプション & 訪問販売(6502 TKHK第48条 / EU 2011/83) | ユーザーを直接Stripe/iyzico支払い画面にリダイレクトし、事前情報フォームと訪問販売契約の同意を記録しない。 | 支払いをトリガーする前に、事前情報フォームと訪問販売契約の同意を取得し、契約テキストのSHA-256ハッシュとともにcontract_acceptancesテーブルに記録する。サブスクリプションでは価格、更新日、キャンセル方法を明確に記載する。 |
| 06 | 国外データ移転 & フォント/CDN(KVKK第9条 / GDPR第44条 / LG München) | fonts.googleapis.com、cdnjs、または外部CDNからブラウザ経由で直接フォント/スクリプトをロードし、訪問者のIPを国外に漏洩させる。 | すべてのフォントをプロジェクトに含めて自分のサーバーでホストする(next/font/local またはローカルの.woff2)。サードパーティの外部リクエストはサーバープロキシを介して渡すか、明示的同意にリンクさせる。 |
| 07 | クッキー (Cookie) & トラッカー管理(KVKKクッキーガイド / ePrivacy) | ページが開くと同時にGoogle Analytics、Meta Pixel、Hotjar、またはClarityスクリプトを実行する。クッキーバナーで「拒否」ボタンを隠す。 | 必須でないすべてのスクリプトをconsent.analytics === trueチェックの背後に配置する。クッキーバナーでは**「同意する」** と**「すべて拒否する」** ボタンを同じ画面に、同じサイズとコントラストで表示する (No Dark Patterns)。 |
| 08 | 削除、匿名化 & DSAR(KVKK第7条、第11条 / GDPR第15-20条) | 「アカウント削除」ボタンでis_active = falseにするだけで、すべてのPIIデータを無期限に保持する、またはデータダウンロード(エクスポート)機能を提供しない。 | ユーザーにデータのJSON/CSVダウンロード(/api/privacy/export)とアカウント削除(/api/privacy/delete-account)エンドポイントを提供する。保存期間が切れたPIIデータは暗号化によって匿名化する。 |
| 09 | 特別カテゴリの個人データ(KVKK第6条、委員会2018/10 / GDPR第9条) | 健康、生体認証、性生活、宗教、人種、または刑事裁判のデータを標準テキストカラム(TEXT)に平文で保存する。 | 特別カテゴリデータをアプリケーションレイヤーでAES-256-GCMエンベロープ暗号化し、鍵をKMS/HSMに保存し、すべての読み取り操作を監査ログに記録する。 |
| 10 | 72時間データインシデント & 監査ログ(KVKK第12/5条、2019/10 / GDPR第33条) | 不正アクセスやデータ漏洩を検出するためのアクセス/エラーログを保持しない、またはプロジェクトにデータインシデント対応計画を含めない。 | 重要なデータアクセスを不変(append-only)のaudit_logsテーブルに記録し、リポジトリに72時間の委員会/当局通知手順を含むdocs/veri-ihlali-mudahale-plani.mdファイルを用意しておく。 |
| 11 | ログにおけるPIIマスキング (最小化)(KVKK第4/2-ç条 / GDPR第5条(1)(c)) | console.log(req.body) またはSentry/Datadogエラーログにトルコ国民ID番号、メール、電話、生IP、パスワード、またはクレジットカードを記録する。 | 構造化ロガー(Pino/Winston)で決定論的PIIマスキング(redact)レイヤーを使用する。ログに書き込む前にメール、電話、TCKN、トークンフィールドをマスクする。 |
| 12 | 人工知能 (LLM) & 自動意思決定(KVKK第9条、第11/1-g条 / GDPR第22条) | 実際のユーザーPIIデータ(名前、TCKN、電話、健康情報)を外部LLM API(OpenAI、Anthropic、Gemini)に直接送信する。 | 外部AI呼び出しの前にPIIデータを仮名化(<PERSON_1>、<PHONE_1>)し、トレーニング用データ使用をオフにし(Zero Data Retention)、自動スコアリング/拒否決定に「人間による介入 / 異議申し立て」権利を追加する。 |
⚖️ 弁護士の視点による詳細な法令とアーキテクチャ計画
ソフトウェアプロジェクトをゼロから設計する、または既存のコードをレビューする際、AIエージェントは以下の4つの基本法理に基づいてアーキテクチャを監査します:
1. 法的根拠分析: 「すべてに明示的同意を得る」は違法です!
- KVKK第5/2条およびGDPR第6条(1) に基づき、法律で規定された他の法的根拠が存在する場合(例:契約の締結または履行 — ユーザー登録、注文配送、請求書発行)、追加で明示的同意を得ることは法的に無効であり、誤解を招きます。
- なぜなら、明示的同意はいつでも撤回可能だからです(KVKK第5条 / GDPR第7条(3))。もし請求書発行や会員登録のために明示的同意に依存する場合、ユーザーが同意を撤回したときに請求書を削除する必要があり、これは税法第213号(VUK) およびトルコ商法第6102号(TTK) (10年間の保存義務)と矛盾します!
- エンジニアリングルール:
- 登録 / 注文 / 請求書フォーム: 法的根拠は
CONTRACT(KVKK第5/2-c条)およびLEGAL_OBLIGATION(KVKK第5/2-ç条)。通知文のみが提示されます。明示的同意のチェックボックスは配置しません。 - マーケティング / ニュースレター / キャンペーン / プロファイリング / 国外マーケティングツール: 法的根拠は
EXPLICIT_CONSENT(KVKK第5/1条、6563 ETK第6条)。個別、オプション、デフォルトで空のチェックボックスが配置されます。
- 登録 / 注文 / 請求書フォーム: 法的根拠は
2. 立証責任 (Burden of Proof — GDPR第7条(1) & KVKK委員会決定)
- データ管理者は、関係者がいつ、どのIPアドレスから、通知文と明示的同意文のどのバージョン(
v1.2など) に同意したかを技術的に証明する責任があります。 - データベースに
users.marketing_consent = trueのような単一のブール値カラムのみを保持することは、立証責任を満たしません! - エンジニアリングルール: すべてのプロジェクトに個別の
consent_logs(またはuser_consents)テーブルを作成し、各同意/拒否操作をconsent_type、granted、policy_version、policy_sha256、ip_address、user_agent、created_atフィールドとともに追加専用(変更不可能な履歴) として保存する必要があります。
3. 国外へのデータ移転 (KVKK第9条 — 2024/2026年新制度 & GDPR Schrems II)
- ブラウザ起因(クライアントサイド)の漏洩: ユーザーのブラウザが
fonts.googleapis.com、fonts.gstatic.com、cdn.jsdelivr.net、www.googletagmanager.com、またはconnect.facebook.netに接続した瞬間に、…
(以下、元のSKILL.mdの残りの内容が翻訳されずに続きますが、出力制限によりここで切り上げます。完全な翻訳を希望される場合は、全文の再送信をお願いします。)