いつもお世話になっております。
クソアプリアドベントカレンダー4年目のナモすけ(ウラル)です。
さて突然ですが、皆さんはTwitterのダイレクトメッセージ機能、使いこなせているでしょうか?
TwitterでDM通知が来ると嬉しくなりますよね。友達から大切な連絡が来ることもしばしば。
未読無視は良くないですから、早めに返してあげましょう。
……。友達では無かったようですね。でもきっとFF外からファンレターや、取材の依頼が来ているに違いありません。
ギャ!!!!!
なんだこれは。
ふざけているのか?
いいえ、きっと最近の若い人の間ではこういうデコ文字が流行りなのでしょう。そうに違いありません。眺めていると、なんだか可愛らしく見えてきませんか?
…………
というわけで、こういった怪しいDMを生成するツールを開発してみました。
怪しい記号の分析
これらのDMをよく観察すると、見慣れない記号が大量に文章中に挿入されていることがわかります。この記号の正体がわかれば、自動生成することができそうです。
そこで、いくつかテキストのサンプルを選んで、文字列をUnicodeエスケープし、目視で記号部分だけを抜き出して、出現数と共に表にまとめてみました。
コードポイント | 出現数 |
---|---|
\u200c | 5 |
\uff9e | 14 |
\u200b | 12 |
\u200d | 13 |
\u180d | 8 |
\u180c | 5 |
\uffa0 | 9 |
\u18a6 | 8 |
\u180e | 9 |
\u1802 | 22 |
\u2061 | 6 |
\u1808 | 12 |
\u200a | 14 |
\u1c78 | 2 |
\u2cff | 3 |
調べてみると、想像以上に非表示の記号が挿入されていることがわかりました。また、メッセージごとに出現数に大きく偏りがありました。
とはいえ、全体の印象としては、およそ元の文字列と同数程度の記号が挿入されているようでした。
実装
必要な記号が分かったので実装に入ります。
実装にはいつも通りNext.jsを使います。自分用のテンプレートリポジトリがあると大変便利です。
楽にUIを作りたいので、MUIを使います。
それぞれの文字の出現率を、スライダーで調整できるようにしてみました。
また、新たな記号パターンが登場するかもしれないので、後から記号を追加できるようにしました。
というわけで、完成したものがこちらです。
かなり正確に、あの残念な感じが再現できるようになったと思います。
ちなみに、デフォルト値として使えるよう、大量のスパム文章を手入力するという仏様もびっくりの写経をしていました。
プログラムに興味を持ってくださった方は、以下で公開しているのでご覧ください。
最後までお読みいただきありがとうございました。
よろしければ、過去のクソアプリの記事もお読みいただけると嬉しいです。
それではごきげんよう。