- Sqidsは数字からYouTubeスタイルのIDを生成するオープンソースライブラリ
- 生成されたIDは短く、カスタムアルファベットで生成可能であり、衝突が起きないことが保証される
- 例として提供されているIDは
https://example.com/Lqj8a0 のような形式
Sqidsを使う理由
- Sqidsの主な用途は視覚的な効果にある
- Webアプリで数字の代わりにIDを使いたい場合、Sqidsは良い選択肢になりうる
- ユースケースとしては、リンク短縮、URLセーフな利用、イベントID、衝突のないエンコード/デコード、ワンタイムパスワードなどがある
- 機密データには適しておらず、ユーザーIDとして使う場合はユーザー数が露出する可能性がある
Sqidsの特徴
- 非負整数から短いIDを生成可能
- エンコードとデコードが簡単
- 自動生成されたIDには一般的な卑語が含まれない
- カスタムID向けのアルファベットシャッフルをサポート
- 40のプログラミング言語をサポートし、そのうち15は新しいデザインを採用
- すべてのバージョンで同じIDを生成
- ライブラリサイズが小さく、寛容なライセンスを備える
GN⁺の見解
- Sqidsライブラリは、Webアプリで数字の代わりに短く衝突のないIDを使いたい開発者に有用
- このライブラリは視覚的に魅力のあるIDを提供し、多様なプログラミング言語をサポートしているため導入しやすい
- オープンソース開発者に有利な機会を提供し、MITライセンスで著作権が保護される
6件のコメント
クローリング対策によさそうですね。
どのように使えばクローリングを防げるのか、もう少し詳しく説明していただけますか?
URL が単に
posts/1,posts/2,posts/3になっていると、クローラーが 1,2,3,4,5... を入れて回すのですが、URL が
posts/L12Qsd,posts/dei24Aのような形式だとそれができないので、そういうことだと思いますねあ! ご回答ありがとうございます。
hashids と何が違うのか気になって調べてみたところ、https://hashids.org にアクセスすると https://sqids.org/ に飛ばされるんですね。名前を変えたようです。
https://sqids.org/faq#hashids
Hacker Newsの意見
連番IDを使う企業からビジネスインサイトを得られる可能性
ワンタイムパスコードへの言及に対する疑問
128ビット整数やバイト配列をフォーマットできないことへの失望
Rubyアプリケーションでは高基数へ変換する方法を使っている
卑語フィルタリングは設計上の負債になりうる
nanoidの使用と安全な文字辞書の利用を好む
ランダム生成された文字列の利用に関する議論
"Get Started" セクションで40言語へのリンクを提供していることへの混乱
ブロックリストをどう調整・発展させるのかという質問
このスレッドでは多くの人が、ID/数字からインサイトを隠す良い方法だと言及している