メインコンテンツへスキップ
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 では、大きな整数値はデフォルトで文字列として表現されます。
I