背景
自分のサイト群には「絵文字を使わない」というルールがあります。
見た目を軽くしたいだけの、わりと気分的なルールです。
守るために、ビルド後の HTML を走査して絵文字を見つけたら落とす、というだけの lint を置いてあります。
これが今日、真っ当な理由で落ちました。
落ちた原因
Kindle のセール情報をまとめているのは下記のサイトです。
ここに1件追加したところ、5件の違反が出ました。
中身を見ると、全部これです。
めぷちん☆『うそつきキツネの恋噺』全3巻
☆(U+2605 ではなく U+2606)が入っている。
けれどこれは飾りではなく、作者のペンネームそのものだ。
めぷちん に直したら、それは別人の名前になってしまいます。
前にも同じことがあった
実は同じ型のバグを前に踏んでいて、そのときは『ラブ★コン』でした。
こちらの ★ も正式名称の一部です。
機械的に消すと作品名が間違いになる。
そのとき作ったのが、名前そのものを許可リストに載せる仕組みでした。
{
"names": ["ラブ★コン", "聖☆おにいさん", "めぷちん☆"]
}
lint は走査前にこの文字列だけをマスクして、除外した延べ件数を出力に出します。
{ ok: true, count: 0, nameSkipped: 113,
namesUsed: { 'めぷちん☆': 5, 'ラブ★コン': 107, '聖☆おにいさん': 1 } }
黙って無効化されないように、件数が必ず残る作りにしてあるのがポイントだと思っています。
なぜ「★を常に許可」にしなかったか
一番簡単なのは、★ と ☆ を除外文字に足すことです。
でもそれをやると、装飾で ★ を使ってもルールを素通りしてしまう。
それだと lint を置いた意味がなくなる気がする…
なので単位を「文字」ではなく「名前」にしました。
記号1文字だけのエントリは登録できないように弾いてもいます。
★ 単体を登録しようとすると exit 2 で落ちる、という地味な守りです。
効き目
『ラブ★コン』を登録したときの実測では、誤検知97件がゼロになりました。
今日は めぷちん☆ を1行足しただけで、また0件に戻っています。
lint は誤検知が増えると誰も見なくなるので、ここは維持しておきたいところです。
除外リストが伸び続けたら、そのときはまた考えることにします…
本記事はAI補助で執筆した、個人開発の紹介記事です。