TwitterのつぶやきIDが64bitになったので

2010年11月5日にTwitterのIDが64bit化するって話しは知ってたんですよ。
あー、32bitじゃ足らないのか、Twitterすげーなー。Twitter関連のサービスやってる人大変だなーとか、そんな「対岸のボヤ」くらいの認識だったんですけどね。

で、一昨日、久しぶりに自分の「つぶやきログ」見てみたんですよ。なんとなく。
そしたら、更新が11月4日でとまってんの。イヤ、実際はそれ以降もビミョーに更新されてるつぶやきもあって、たぶん64bit値を浮動小数点にしてたまたま整数部がユニークになった場合に更新されてるっぽいんです。

ああ、そうか。TwitterIDの64bit化は降り掛かる火の粉だったんだなって気付きました。

ぶっちゃけ「つぶやきログ」なんてどうでもいいサービスなんですが、発生した問題は解決しないと気持ち悪いんで、なんとかリカバリしてやろうと頑張ったわけです。今日。

PHPには64bit整数を扱える型がないんです。doubleは64bitだけど浮動小数点。浮動小数点の値を整数に変換すると若干ズレることがあるんで使えない。

さて、どうすりゃいいんだろ、と思ったらIDを文字列で扱えるようにAPIが改修されてるんですね。そりゃそうか。

「id_str」ってのがそれで、「in_reply_to_user_id_str」が、返信元のTweetIDです。

ってことで、PHPの中は文字列で扱って、MySQL上はbigint型でUNSIGNEDにしてるんでダイジョーブ。

今回参考にさせていただいたのはコチラです。

Twitterのstatus IDを保存しているサービスが直ちに確認すべき2つのポイント([Mi]みたいなもの)