0
0

はじめに

素人推測してみただけの内容ですが、

投稿を扱うサービスには、参考にしていただける部分があるかも。

Twitterの設計にどうこう言いたいのではなく、「変更可能な文字列IDを扱う」場合の1事例と思っていただければ。

検索の対象は「ツイート当時のID」

X(Twitter)には「高度な検索」という機能があります。

文言やユーザーIDなどから検索できる機能です。
通常の検索窓からも使用できます。

高度な検索
スクリーンショット 2024-07-07 18.19.26.png

この機能を使用し、過去のツイートを検索してみましたが・・・

スクリーンショット 2024-07-07 18.24.32.png

検索結果がありません。IDは正確です。

ふと思い当たり、昔のIDで検索すると・・・

スクリーンショット 2024-07-07 18.24.45.png

表示されました!

「ツイート当時のIDで検索」する必要があるんですね。

なお、表示結果には「現在のID」が表示されています。


ここからわかるのは、以下です。

  • 「ツイート」は「文字列ID」と紐づいて保存されている
  • 「昔のID」と「今のID」を紐づける何かがある

「昔のID」と「今のID」を紐づける方法の詳細はわかりませんが、
例えば、next_idを記録しておくのは一つかもしれません。

ただ、芋づる式にidを追う必要があり、ユーザー体験だけでなく処理効率も悪いです。

現在のIDでも検索できる仕組み

「昔のIDを覚えてないといけない」仕組みは、ユーザー体験としてマイナスだと思います。

  • 文字列IDの他に、内部的に数字IDが存在
  • 文字列IDを数字IDにマッピングする

という仕組みにすると改善できそうです。

具体的には

  • (擬似的に)文字列のIDを扱う
  • 文字列IDのUPDATEに対応

上記の機能を持ちながら、下記の機能が追加されます。

  • 現在のIDでの全履歴検索
  • 古いIDでの全履歴検索

(テーブル名へのツッコミはご容赦を)

おわりに

改めてにはなりますが、本記事の内容はあくまで推測です。

Twitterの設計にどうこう言いたいのではなく、「変更可能な文字列IDを扱う」場合の1事例として考察してみました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0