画像投稿SNSの宿命:「違法投稿 → 自分で退会 → 別アカウントで再登録 → 同じ違法投稿」のイタチごっこ。これを止めないと、運営者の仕事が永遠に終わらない。Moeriumで実装した「RejectionLog」設計を公開します。
RejectionLogとは
却下した投稿の情報をユーザーIDごとに永続保存するログ。違法投稿が検知されたユーザーが退会しても、このログだけは残します。同じメールアドレスで再登録しようとした時に弾くためです。
保存する情報
- userId(または退会済みユーザーのemailハッシュ)
- 却下日時(ミリ秒精度)
- 却下カテゴリ(sexual_minors / violence / etc)
- severity(low / medium / high)
- 画像のハッシュ(同じ画像の再アップロード防止)
- モデレーションAIの生レスポンス(再検証用)
GDPR・個人情報との両立
「退会したらデータ全削除」が原則ですが、安全保護目的のRejectionLogは例外として残せます。EUのGDPRも同様で、安全に必要な記録は「正当な利益」として保持可能。利用規約に明記すれば法的にもクリアです。
実装:cascadeデリート + 例外保持
- アカウント削除時、Users / UserEmails / Media / Likes / Follows / Reports を一括削除
- RejectionLog だけは残す(emailは個人情報なのでハッシュ化)
- 再登録時にメールハッシュ照合で検知
- 違反履歴がある場合は即BAN
安全装置が効いているSNSの実物を体験してください。違法投稿が混ざらない健全な空間を保つための設計です。
Claudeに任せた実装
「アカウント削除時に全データcascade削除、ただしRejectionLogは残す。再登録時はメールハッシュで検知」と1行で指示。Claudeが30分で実装完了、テストもパス。
利用規約への明記が必須
RejectionLogを保持する旨は、利用規約に明記する必要があります。Moeriumの規約には「第7条の2(コンテンツの自動審査)」「第8条(アカウントの管理)」で明示済み。法務と運用は同時に設計すべき部分です。
運用後の効果
現時点でRejectionLogが発動するケースはまだ少数(運用初期だから)。でも、ある程度ユーザーが集まった時点で、必ず違反者は出てきます。そのとき「事前に組み込んでおいて良かった」と思える機能です。
「個人開発でも法務リスクは前倒しで対処する」
AI時代の個人開発では、作るのは速い。でも法務リスクは依然として人間がカバーする領域です。違法投稿対策・通報フロー・規約は最初から組み込む。これをやらないと一発で詰みます。
赤裸々な実装記録の続きはMoeriumブログで
安全装置・モデレーション・利用規約まで含めた個人開発SNSの運用が見えるブログです。
コメント
この記事へのコメントはありません。
この記事へのトラックバックはありません。