X API のすべてのオブジェクト — 投稿、ユーザー、リスト、DM、スペース — には固有の ID があります。これらの ID がどのように機能するかを理解することで、信頼性の高い連携を構築できます。
ID 形式
X ID は、「Snowflake」と呼ばれるシステムで生成される 64 ビット符号なし整数 です。各 ID は以下をエンコードします:
タイムスタンプ — オブジェクトが作成された時刻
ワーカー番号 — ID を生成したサーバー
シーケンス番号 — そのミリ秒内の順序
つまり、ID はおおよそ時間順になっています: 高い ID は一般的に新しいオブジェクトを表します。
ID は単一のオブジェクトタイプ内だけでなく、X 全体でグローバルに一意です。
文字列 vs 整数表現
コードでは常に文字列 ID を使用してください。 一部のプログラミング言語 (JavaScript など) では、64 ビット整数を正確に表現できません。
JavaScript では整数は 53 ビットに制限されます。これにより、大きな ID で精度の損失が発生します:
// これは精度を失います!
const id = 10765432100123456789 ;
console . log ( id . toString ()); // "10765432100123458000" — 間違っています!
// 代わりに文字列を使用
const id = "10765432100123456789" ;
console . log ( id ); // "10765432100123456789" — 正しい!
API バージョン
バージョン ID 形式 X API v2 ID はデフォルトで文字列として返されます X API v1.1 id (整数) と id_str (文字列) の両方を返します — 常に id_str を使用してください
ID の取り扱い
ID の保存
ID は文字列または 64 ビット整数としてデータベースに保存します:
データベース 推奨タイプ PostgreSQL BIGINT または TEXTMySQL BIGINT UNSIGNED または VARCHAR(20)MongoDB String SQLite TEXT (SQLite の整数は最大 63 ビット)
ID の比較
時系列順に ID を比較する場合:
# Python - 64 ビット整数で安全
if int (id1) > int (id2):
print ( "id1 is newer" )
# JavaScript - 文字列として比較 (同じ長さの ID では辞書順で動作)
# または BigInt を使用
if (BigInt(id1) > BigInt(id2)) {
console.log( "id1 is newer" );
}
一般的な ID の種類
オブジェクト ID の例 備考 Post (Tweet) 1234567890123456789Tweet ID とも呼ばれます User 2244994945古いアカウントは短い ID を持ちます List 1234567890Space 1YqGodQbNXDxv英数字、Snowflake 形式ではない DM Event 1234567890123456789
関連リソース
Data Dictionary 各オブジェクトタイプの ID フィールドを確認します。