👩❤️💋👩
UUIDを絵文字にするライブラリを作った
概要
暇つぶしにネットサーフィンをしていて、次のような記事を見つけました。こちらの記事では、UUIDをBase58にエンコードすることで、URLをスッキリさせるライブラリが紹介されています。
スッキリするのは素敵ですが、無機質な文字の羅列では愛が足りないと感じたので、UUIDをすべて絵文字で表現するライブラリを作成してみました。
どんな感じ
たとえば、こんな無機質なUUIDが:
https://example.com/resource/87040469-7443-4416-bf64-7d45031397b8
このライブラリでエンコードすると……
https://example.com/resource/👩🏽❤️💋👩🏿👩🏻❤️👨🏾👩🏿❤️💋👩🏻🧚🏻♂️🤷🏼♂️👩🏿❤️💋👩🏼👨🏾❤️💋👨🏿👩🏽❤️💋👨🏿🧍🏻♂️👨🏼❤️💋👨🏽👩🏼❤️💋👩🏻
のような、愛のあふれる絵文字に変換されます[1]。しかも、11文字に短縮可能です!
デメリット
愛にあふれてはいますが、残念ながらデメリットもあります。
-
バイト数が増える
- マルチバイト文字のため、文字数は短くなってもバイト数は増えてしまいます
- 中には、1文字で35バイトにもなるとんでもない絵文字も存在します
- 平均では1文字あたり5バイト強なので、UUID全体で約55バイト必要になります
-
手打ちできない
- 絵文字なので基本的に手打ちは困難
-
絵文字にちゃんと対応していない環境もある
- アドレスバーにちゃんと表示されない
- ZWJが含まれると挙動がおかしい時が多い
- (Zennもちょっと怪しい…)
技術面
技術的な部分は、先の記事で紹介されていたライブラリに丸投げしています。UUID自体をちゃんと触ったことがなかったので、パリティがあるのかどうかなども正直わかっていません。
自分が作ったのは「Base58を絵文字に変換する」部分だけです。TypeScriptも頻繁に書いているわけではないので、ほとんど元のライブラリと同じ構造にしています。uuid58の特徴を読んでもらうとほぼ一緒です。
コード
日曜日の暇つぶしでネタとして作っただけなので、使う人がいるとは思いませんが、もし興味があればご自由にどうぞ。
-
ハートを含む絵文字は結構あるため、まあまあな頻度で💖ハートが登場します。 ↩︎
Discussion