このCSSは私が人間であることを証明する
(will-keleher.com)- AIテキスト検知を回避するために、CSS、フォント操作、スペル変形など複数の技術的手段を動員した実験的な文章作成の試み
text-transform: lowercaseで大文字を小文字に変換しつつ、codeとpreブロックは例外処理して コードの可読性 を維持- fontTools ライブラリを使い、emダッシュ(—)のグリフをハイフン2つの組み合わせに置き換えるカスタムフォントを生成
- Peter Norvig の スペル訂正アルゴリズムを応用し、文章中の珍しい単語をより一般的な単語に意図的に置き換えることでスペルパターンをぼかす
- しかし 文章スタイルそのものを変えることは最後まで拒否し、「それは単なる仮面ではなく私の顔だ」
大文字 → 小文字変換
- 全文を小文字でレンダリングするため、
text-transform: lowercaseという CSS プロパティを適用 code、preブロックはtext-transform: noneで例外処理し、コードの完全性 を維持cat post.md | tr A-Z a-z | sponge post.mdのようなシェルコマンドはコードブロックまで変換してしまうため使用不可body { text-transform: lowercase; } code, pre { text-transform: none; }
Emダッシュのグリフ置換
- AI検知器が emダッシュの使用パターンを認識できるため、emダッシュ(—)をハイフン2つの組み合わせに置き換えるカスタムフォントを作成
- Python の fontTools ライブラリで Roboto フォントを直接修正し、emダッシュのグリフをハイフン2つで構成されたコンポーネントに置換
- FontForge を使うほうが簡単だったかもしれないが、.woff ファイルをスクリプトで生成する方式を選択
- ハイフン幅(
hyphen_width)と間隔(gap = hyphen_width * 0.8)を計算し、新しい advance width を設定してroboto_edited.ttfとして保存
意図的なスペル変形
- Peter Norvig のスペル訂正コードを基に、文章中の珍しい単語を、先頭文字が同じでより一般的な単語に置き換え
big.txtコーパスで単語頻度辞書(Counter)を構築した後、文章中の単語を希少度順に並べ替えedits1()関数で削除・転置・置換・挿入の編集距離1の候補語を生成し、頻度がより高い単語を置換候補として出力- 実際の置換例:
corpus → corps,discrete → discreet,complement → compliment,spill → spellなど
スタイル変更の拒否 — アイデンティティの境界
- 大文字、emダッシュ、スペルまで技術的に偽装したが、文章スタイルそのものを変えることは拒否
「私の文章は単なる外見ではなく、私が考え、推論し、世界と関わる方法そのものだ」
「仮面ではなく私の顔であり、外観ではなく荷重を支える構造物(load-bearing)だ」 - 最後の一文は AI が生成したような文句 "Here's your blog post written in a stylized way..." で締めくくられ、
文章全体が AI偽装の試みそのものをメタ的に露呈する構造 であることを示唆している
1件のコメント
Hacker Newsのコメント
詩のアイデアは興味深かったが、自己中心的で説明が不足していて没入しにくかった
文頭から小文字で始める書き方はAIでも簡単に真似できるので、真実味に欠けていた
最後にAIが書いたという告白を見て、「私の書き方は単に私がどう見えるかではなく、私が世界と思考し交流する方法そのものだ」のような一文がようやく理解できた
だが結局、自分の文体そのものを変えなければならないという結論に至り、それはアイデンティティの一部なので不可能だと気づく
そのため逆説的に、LLMを通してしかその変化を実現できないという皮肉が生まれる
実際にLLMを使って書いた文章ではないと思う
以前は文章を芸術として捉え、解釈は読者に委ねられるものだと考えられていたが、今はそうした余裕が失われたようだ
無数のボットがブログを運営しコミットを残す世界では、その文脈が自然に思い浮かんだ
この文章はゲートキーピングとオープンソースの話を思い出させた
文章の本質より表面的なスタイルにばかりこだわる姿のほうが、よほど自己中心的に感じられる
自閉スペクトラムのある者として、この文章は別の形で響いた
自分の自然な表現方法が「間違っているもの」と見なされ、アイデンティティの一部を削り取ってこそ社会的に受け入れられるという不安はあまりにも馴染み深い
結局、「人間らしく見えるにはLLMを通さなければならない」という皮肉は、「普通に見えるには自分を演じなければならない」という私たちの現実に似ている
だが最近ではGrammarlyのようなツールで文章を「改善」することが当然視され、自然な言語表現という芸術が衰退していることのほうが心配だと言っていた
ChatGPT以前からem-dash(—) をよく使っていたのに、今ではそれがAIっぽく見えるのではないかと気になり始めた
プログラムが自動でem-dashに置き換えるせいで、人々に私が会話をAIに委ねたかのように見られるのではと不安になる
だからこの文章にはとりわけ共感した
いつかそのせいでLLMだと誤解されるかもしれない
詩のfontToolsの部分が特に印象的だった
em-dashグリフを2つのハイフンで合成するのは、タイプレンダリングを深く理解していなければ思いつきにくいアプローチだ
たいていのフロントエンド開発者なら単純な文字置換で済ませただろうが、フォントレベルで処理したのははるかに洗練された解決策だ
CSSの
text-transformトリックも同様に、コードブロックを保護しなければならない繊細な設計が必要だ詩の見た目の下には本物の技術的完成度が隠れている
コードが面白いことには同意するが、詩としての定義は依然として曖昧だという
いつか私たちは再び、文章の内容ではなく世界観の違いゆえに無視する時代に戻るのかもしれない
最近は文体やぎこちない表現をひとつ見ただけで「AIなのか?」と尋ねるのが日常化している
読みながら「これは人間シグナルのもうひとつの試みにすぎない」と思っていたが、最後のどんでん返しが新鮮だった
誰が書いたかは重要ではなく、何を言おうとしていたのかが核心だと感じた
em-dashを2つのハイフンで表現したのは初めて見た
Robotoフォントを修正したコードは驚くほど短く、Norvigのスペルチェッカー並みに簡潔だった
この文章があまりにも好きで、AIが関与していないと信じたい
私は今でもHTMLとEmacsで直接文章を書いている
数学の問題を扱うときは、わざと冗長に書いて複数の解法を盛り込み、あとで最もエレガントな解法に整理する
誤字は多いが、それがむしろ人間らしい痕跡だと思っている
ただ最近は、自分の書いた文章がLLMだと誤解されるのではないかと心配だ
こうした疑いの文化が、書くことの楽しさを少しずつ奪っている
時間が経てば、この過剰な警戒心が和らぎ、自分の手で文章を書く人たちが再び気楽になれるといい
「クランカーたち(clankers)」がこれに気づいたらどうなるのか、という冗談もあった
もちろん、アンドロイドと人間を見分けられる間だけの話だが