メインコンテンツへスキップ
X 内の各オブジェクト(Tweet、Direct Message、User、List など)には、それぞれ固有の ID が割り当てられています。 プラットフォーム初期には、これらの ID は十分に小さい数値だったため、連番で生成していました。成長に伴い、ID は 32 ビットから 64 ビットへ移行しました。現在、X の ID は連番ではなく時刻に基づく、一意の 64 ビット符号なし整数です。ID はタイムスタンプ、ワーカーナンバー、シーケンス番号で構成されます。X は、これらの ID を安定的に生成するために「Snowflake」と呼ばれる内部サービスを開発しました(詳細は X のブログをご覧ください)。 64 ビットのような大きな数値は、64 ビット未満で整数を表現するプログラミング言語で問題を引き起こす可能性があります。たとえば JavaScript では、整数は 53 ビットに制限されています。これに対する回避策として、当初の X API(v1/1.1)の設計では、ID 値は整数と文字列の 2 つの形式で返されていました。
{"id": 10765432100123456789, "id_str": "10765432100123456789"}
ブラウザの JavaScript コンソールで (10765432100123456789).toString() を実行すると、結果は "10765432100123458000" になります。64ビット整数はこの変換により精度が失われます(これは「munging」(データの破壊的変更)と呼ばれることがあります)。 X API のバージョン 1.1 までは、精度の低下を避けるため、常に数値の文字列表現を使用してください。 より新しいバージョンの API では、大きな整数値はデフォルトで文字列として表現されます。