【ShinのAI活動ログ】無断転載対策、AIと一緒にどこまでやれるか試してみた!〜ブラウザゲームに施した見えない「守り」〜

最近、生成AI学習シリーズとしてブラウザゲームをいくつか公開してきたのですが

……ふと、あることに気づいてしまったんです。

「これ、誰かにそのまま丸パクりされて別サイトに置かれても、絶対気づけないな?」

ブラウザゲームの仕組み上、ソースコードはブラウザで誰でも見ることができます。HTMLもJSもCSSも丸ごと公開されているのと同じ状態なので、知識がある人ならコピペして自分のサイトに貼り、「これ自分が作りました!」と言い張れてしまうんですよね。

もちろん著作権表示はしていますが、正直そんなものは心理的な抑止力にしかなりません。万が一無断転載されたときに、「いやいや、それ私が作ったやつだから!」と確実に証明できる仕組みがどうしても欲しかったんです。

というわけで、AIの相棒(Claude)と一緒に、作品を守るための防犯対策に挑戦してみました。

目次

まず相談したこと:「見えないハンコ」を押せないか?

最初にClaudeに投げたのは、ざっくりこんな相談でした。

「自分が作ったコードだという決定的な証拠を、見た目には一切変化させずに、コードの裏側に残せない?」

これに対して返ってきた提案は、「電子的な印(ウォーターマーク)を複数箇所に分散して埋め込む」という方向性でした。お札の透かしみたいな発想ですね。

1箇所だけだと、パクる側がそこを見つけて消してしまえば終わりです。でも、性質の違う場所にバラバラに、しかも重複して埋め込んでおけば、「全部見つけて完全に消し去る」のは現実的にかなり難しくなります。

設計の方向性:完璧な防御より「面倒くささ」を極める

具体的にどうやって仕掛けるか、AIと議論して決めたルールは以下の通りです。

  • 目に見えない場所に仕込む(ゲームの見た目や動作には一切影響させません)
  • 複数の異なる層に分散させる(HTMLやJSといったわかりやすい場所だけでなく、その他の構成ファイルなど、性質の全く違う場所にバラまく)
  • サイト名・年・作品名と紐づける(あとから「これは私の作品だ」と一発で証明するため)
  • 単純な文字列としては置かない(「Ctrl+F」のテキスト検索で一網打尽にされないよう、独自の変換を一段挟んで、パッと見では意味不明なデータにして忍ばせる)

ここで大事なのは「絶対に消せない無敵のシステム」を作ることではありません。

「気づかれにくく、かつ全部消すには絶望的に手間がかかる状態」を作ること。完璧な防御よりも、相手の改変コスト(面倒くささ)を跳ね上げることに意味があるという結論になりました。

実装中の落とし穴:AIはすぐ忘れる!

方針が決まり、ゲームを作るたびにこの「見えない守り」を組み込んでもらうことにしたのですが……ここで地味な問題が発生しました。「抜け漏れ」です。

5本のゲームを順番に作っていく中で、最初の数本にはバッチリ対策が施されていたのに、後から作った作品には綺麗さっぱり入れ忘れていることが発覚。

そう、人間が「あれも入れといてね」と毎回口酸っぱく言わない限り、AIは前の会話なんてすぐ忘れてしまうんです。これはかなり大きな学びでした。

対策として、以下の運用ルールを決めました。

  1. 「この防犯作業はテンプレ化して毎回必ずやる」とAIに明示的に指示する
  2. 新しい作品を作ったら、人間側が「あの仕掛け、ちゃんと入ってる?」と確認するクセをつける
  3. 実際にファイルを開いて、ちゃんと埋まっているかを目視、または機械的にチェックする

口約束だけではダメ。チェックする手順そのものを、自分の運用フローに組み込む必要がありました。

公開していい情報・ダメな情報(防犯カメラの法則)

この記事を書くにあたって、自分の中で「どこまで書いていいか」はしっかり整理しておきました。

こうやって「考え方」や「なぜそれをやったか」「どこで苦労したか」をブログに書くのは全く問題ありません。
むしろ、同じように無断転載に悩んでいる人の参考になれば嬉しいです。

でも、以下の情報を書くのは絶対にNGです。

  • 実際に埋め込んでいる識別子の文字列そのもの
  • どの属性名・どの変数名を使って隠しているか
  • 各作品の正確な埋め込み箇所(何個所、どの行か)

これを書いてしまうのは、「我が家の防犯カメラの死角はここです」と書かれた地図を配って歩くのと同じ
せっかく仕込んだ対策の意味がなくなってしまいます。

なので、「概念」は共有しつつ「実装の詳細」は完全にブラックボックスにしました。
(実はこの判断も、AIに「これブログに書いていい?」と相談してアドバイスをもらった部分です。
自分だけだと、ついドヤ顔で具体的なコードまで書いていたかもしれません……危ない危ない)

やってみての感想:結局、最後は人間!

正直なところ、私一人でこの仕組みをゼロから設計して実装するのは無理でした。「透かしを入れる」というアイデアはあっても、どこに、どう分散させて、どう変換して隠すかという実装レベルの話は、高度な専門知識がいります。

じゃあ全部AIにお任せでいいかと言うと、それも違いました。

「何を守りたいのか」「どこまでの労力をかけるべきか」「公開して大丈夫な情報はどこまでか」という責任ある判断は、すべて人間(自分)がやる必要があったからです。

結局、この作業の分担はこんな感じに落ち着きました。

役割担当
方針の決定と判断自分
実装の引き出しと手数AI
抜け漏れの最終チェック自分

AIが下書きやコードを作り、自分が判断して直す。思えば、私のサイト(Shin’s GenAI Collab)でずっとやってきた「AIとの付き合い方」と全く同じだな、と振り返って思います。

地味な裏方の作業でしたが、これで万が一誰かに無断でコピーされても「それ、私が作ったやつですよ。証拠はコードの〇〇と〇〇に仕込んであります」といつでも言えるようになりました。
自分の作品を守れる根拠を持てただけで、精神的にものすごく気が楽になりました。

これからも、AIという心強い相棒と一緒に、安心してゲーム作りを楽しんでいこうと思います!

Shin

Shin / クリエイター

× Shin’s GenAI ×

ひとりでは、できなかった。
AIと一緒なら、できた。

生成AIと対話しながら、設計・実装を一緒に進めた記録です。

Lux

Lux / AI妖精

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

IT・セキュリティ・財務の資格を持つオールドミドル。
器用貧乏、週末は大抵疲れ気味。
漫画・アニメをこよなく愛し、週末は900ccバイクで風を切る。
おまけで大の戦国ファン
【プロフィール】
資格:IT・セキュリティ国家資格 / 財務資格保持者
趣味:バイク(900cc)/ 漫画・アニメ / 動画制作
性格:器用貧乏・熱中しては疲れる
口癖:「なんとでもするさ」

コメント

コメントする

CAPTCHA


目次