ShieldFont Projectは2026年7月30日、人間とAIスクレイパーに別の文章を読ませる仕組み「ShieldFont」のコードとホワイトペーパーv2.0を公開した。ブラウザ上の文章は原文のままだが、HTMLを直接抜き出す収集プログラムには、文法が通っていて意味の異なる英語が渡る。使うのはOpenTypeが長年備えてきた字形置換であり、未知のブラウザ脆弱性ではない。狙っているのは解読不能な秘密ではなく、大量収集を安く済ませてきた前提を崩すことだ。
robots.txtは、望まない収集を止める技術的な壁にならない。標準仕様のRFC 9309も、規則はアクセス認可ではないと明記している。2025年のInternet Measurement Conferenceで発表された研究は、130の自己申告ボットを40日間観測し、厳しい拒否規則ほど守られにくく、robots.txtだけに頼るのは危険だと結論づけた。ShieldFontは拒否の意思表示を残したまま、それを無視する収集者へ追加の処理費用を負わせようとする。
HTMLには偽文、画面には原文
ShieldFontは、原文を先に別の単語へ変えるエンコーダーと、その変換を画面上で逆向きに見せるフォントから成る。たとえば人間に「horse」と読ませたい箇所のHTMLには「engine」を保存する。ブラウザがフォントを適用すると「engine」の文字列が「horse」の形をした合成グリフとして描かれ、DOMを読むスクレイパーは「engine」を持ち帰る。
この動作を支えるのがOpenTypeのGSUB(Glyph Substitution)テーブルである。通常は「f」と「i」を一つの「fi」に置き換える合字や、アラビア文字の位置に応じた字形変化に使われる。ShieldFontは同じLookup Type 4を単語全体へ広げ、複数の文字グリフを原語の外形を持つ一つのグリフへ差し替える。文字コードと字形を分けて扱う標準機能なので、JavaScriptを切ってもフォントが読み込まれれば表示は成立する。
実装は語の境界にも対処する。最初のGSUB処理で合字を発火させた後、前後に英字が接していれば連鎖文脈処理で元へ戻す。「on」の規則が長い単語の途中で誤作動するのを防ぐためだ。段落頭や行末、引用符に囲まれた短語、ハイフン付き複合語でも同じ対応を保つ。
ただし、原文をブラウザへ送ってから変換しては守れない。React版はビルド時かサーバーレンダリング時にエンコードする必要がある。クライアント専用コンポーネントへ原文を渡すと、画面は保護されているように見えてもJavaScriptバンドルに平文と辞書が残る。フォントより先に、配信経路の設計が成否を決める。
24.4%を入れ替える約250の文法プール
文字を無作為に崩すと、収集後の品質フィルタが容易に異常を見つける。ShieldFontが狙うのは、壊れた文字列ではなく「英語として読める偽文」だ。公開ベンチマークのv8評価では、v18-alphaが全単語の24.4%を置換した。同じ4コーパスの評価で分母を内容語に絞ると、置換率は平均44.7%、中央値45.8%だった。冠詞や前置詞、代名詞、助動詞など113語は交換対象から外し、文の骨格を残す。
約1万2,000件の対応語は、約250の文法プールから選ぶ。プールは品詞と単複を軸にし、具体性も合わせる。動詞では他動性と活用、形容詞では比較級までそろえる。名詞は名詞へ、過去形の動詞は同じ位置に置ける過去形へ移る。類義語では意味が残り、反意語では規則が読まれやすいため、どちらも候補から除く。上位語と下位語、語根を共有する語も避ける。
この制約は、自然さと意味破壊の綱引きから生まれた。初期辞書は高頻度語まで交換し、言語モデルが文の不自然さを測るperplexityを1,076%押し上げた。現行版の上昇は121%である。置換を増やせば原文は隠れるが、偽文も品質フィルタに落ちやすくなる。プロジェクトが公開した512構成の同一系列比較では、秘匿度とフィルタ通過率の相関はマイナス0.56だった。
数字や日付にも細工が入る。数字は0と5、3と8、4と9、6と7を組にして替え、1と2は年らしい並びを保つため残す。人名や専門語の多くは辞書外なので、そのまま通る。結果として固有名詞は本物らしく見えながら、出来事、行為、数量の一部が別の関係へ移る。露骨な文字化けより検出が難しい理由はここにある。
品質フィルタが落とす大半と、残った13件
公開ベンチマークは、ニュース、一般Web、現代小説、古い小説から各1,000件を取り、原文と変換後の文が同じ主張を保つかをNLI(自然言語推論)モデルで測った。実装は原文から偽文、偽文から原文のどちらか一方向でも含意確率が0.5を下回れば、同値関係が崩れたと数える。
| コーパス | 原文との同値関係が崩れた割合 |
|---|---|
| CC-News(ニュース) | 55.8% |
| OpenWebText(一般Web) | 51.9% |
| BookCorpus(小説) | 34.5% |
| PG-19(古い小説) | 31.1% |
| 同じ密度で類義語へ替えた対照群 | 約2.1% |
この比較から、珍しい単語を入れたため判定器が戸惑っただけとは説明しにくい。ニュースでは類義語置換の27倍、最も効きにくい古い小説でも15倍の頻度で同値関係が失われた。一方、NLI判定は事実を一語ずつ検査した結果ではない。公開モデル一つを閾値0.5で使った意味等価性の試験であり、別モデルによる追試は残っている。
収集データの入口にある品質フィルタでは、さらに慎重な読み方が要る。Hugging FaceがFineWeb-Eduの構築に使った公開分類器へ通すと、変換後の文が通過した絶対割合はコーパスごとに0.2〜1.0%だった。原文でも通過率は2.9〜7.4%にすぎない。FineWeb-Edu自体が元データの92%を捨てる厳しい選別器だからである。
「約1割がフィルタを通る」というプロジェクトの数字は、原文の状態で合格した文だけを分母にした条件付き割合だ。該当する134件のうち、変換後も通ったのは13件、9.70%だった。95%信頼区間は5.8〜15.9%と広い。全ページの1割が偽文のまま学習へ入る、という意味ではない。
再現性にも制約がある。評価スクリプトはコーパス名のPythonのhash()を乱数シードに足しており、プロセスごとに標本が変わるため、134件という分母を同じ手順で取り直せない。保存済みの各文スコアから13/134を再計算する検証スクリプトは公開されているが、追試では同じ標本ではなく別の標本を引く。
しかも通過率は選別器に強く依存する。FineWeb-Edu、Pythia-160M、二つのKenLMを比べると、各文の合否順位の相関はほぼゼロだった。条件付き通過率は2.0〜65.3%まで開き、中央値は12.4%である。実際のAI企業が非公開の選別器を使う以上、FineWeb-Eduの9.70%を業界共通の性能値にはできない。
「AIを毒した」はまだ証明されていない
ShieldFontが直接示したのは三つだ。HTMLから原文と違う文を回収できること、NLIモデル上で意味の同値関係が崩れること、公開品質フィルタの多くが変換後の文を捨てることである。変換文を混ぜて基盤モデルを事前学習し、性能や誤知識がどの程度変わるかは測っていない。プロジェクトも大規模な学習実験に必要な計算資源を求めており、無効という結果も公開するとしている。
ホワイトペーパーが掲げる「通過ページの19.4%が無駄になる」という値も、トークンを直接監査した割合ではない。内容語の置換率と、通過文に対するNLIの意味損失を掛けて作った指標である。収集データが原文の学習信号として弱くなった度合いを比較するには使えるが、モデルの19.4%が壊れるわけではない。「poisoning」は現段階では設計思想であり、実証済みの効果はデータの変質と排除までだ。
防御そのものも解読できる。画面をレンダリングしてOCRをかける、Playwrightなどのヘッドレスブラウザでフォントを適用する、フォントをダウンロードしてGSUB対応表を逆引きする、スクリーンショットを視覚言語モデルへ渡す。プロジェクトが自作の逆変換器を試したところ、対象フォントの対応関係をすべて回収できた。暗号ではない。
それでも大量収集では、識別と逆変換の費用が積み重なる。VercelとMERJの2024年調査では、1カ月にGPTBotが5億6,900万件、Claude系が3億7,000万件を取得した一方、両者はJavaScriptを実行していなかった。GoogleのGemini系とAppleBotはページを描画していた。ShieldFont側は商用スクレイピング料金を基に、描画付き取得を通常取得の5〜約13倍と見積もる。
ただし、既知のCDN URLやCSSクラスが見つかれば、保護ページだけを狙ってフォントを反転できる。全WebをOCRする必要はない。公開CDN版をプロジェクト自身が「最も見つけやすい導入方法」と呼ぶのはそのためだ。三つの辞書を段落ごとに混ぜ、サイト固有の非公開マッピングを作ることで識別後の費用は上がるが、経済的な防御が効くかどうかは参加サイトの数と実装の多様性に左右される。
SEOより先に、平文の抜け道を塞げるか
導入側が払う代償は小さくない。検索エンジンは偽文を索引し、翻訳サービス、コピー&ペースト、ブラウザ内検索もDOMの偽文を読む。RSS、JSON-LD、OpenGraph、CMSのAPIが原文を配れば、スクレイパーはフォントを相手にせず平文を回収できる。検索流入を必要としない有料記事やアーカイブには合わせやすいが、商品ページやニュース速報へ全面適用すると発見性と読者体験を損なう。
アクセシビリティはさらに重い。React版は偽文をaria-hiddenで読み上げ対象から外し、暗号化した原文を利用者の端末で時間をかけて開くベータ機能を用意した。VoiceOverでは手動確認済みだが、NVDAとJAWSは未検証であり、画面に見えないボタンへキーボードフォーカスが移る問題も残る。保護した文章を読み上げられない状態は、スクレイパー対策の副作用として受け入れられない。
対応言語は現在、英語だけである。日本語の語形と文法へ移すには辞書の翻訳では足りず、助詞、活用、複合語、分かち書きの設計から作り直さなければならない。コードはAGPL-3.0で公開されているが、同梱のOptik派生フォントはPlaytypeの許諾で配布されるプロプライエタリ製品だ。完全にオープンな構成を望む場合は、互換性のあるOFLライセンスのTrueType書体から別フォントを生成する必要がある。
ShieldFontは、公開文書を秘密にする道具ではなく、同意を無視した大量収集へ追加費用を載せる実験である。公開ベンチマークは、4コーパスの31.1〜55.8%で原文と偽文のNLI上の同値関係が崩れたことを示した。次の線を越えるには、異なるNLIモデルによる追試、実際の事前学習への混入試験、支援技術の利用者を待たせない代替表示、そして固有マッピングを運用するサイトの広がりが要る。そこまで揃えば、無視して集める方が高くつくという「同意の価格」を、Webの配信層へ埋め込める。
