未分類

もう一つのTwitpocalypse:ダイレクトメッセージIDのオーバーフロー

2009年6月12日にステータスIDが符号付き32bitの最大値を超え、一部のアプリケーションで不具合が出るという現象が起こりました。Twitpocalypseと呼ばれています。
TwitterのY2K問題「Twitpocalypse」が実際に起こってしまった件:CloseBox and OpenPod:ITmedia オルタナティブ・ブログ

特に事前に騒がれてはいなかったのですが今日TwitterのダイレクトメッセージのIDが符号付き32bitの最大値(=2147483647、約21億)を超えました。もう一つのTwitpocalypseですね。
DirectMessageJSONImpl getInt() bug – Twitter4J | Google Groups
ダイレクトメッセージのIDのオーバーフロー – Twitter Development Talk – ja | Google Groups
yet another twitterpocalypse – direct message id exceeded 32bit signed integer – Twitter Development Talk | Google Groups

一部のTwitterアプリケーションではダイレクトメッセージの送受信周りに不具合が出ている可能性があります。

Twitter4Jにも影響があり、古いバージョンでは NumberFormatException が発生、バージョン2.1.9ではダイレクトメッセージのIDが-1として取得されてしまいます。
緊急で直して本日バージョン2.1.10をリリースしました。
Twitter4J 2.1.10 をリリース – ダイレクトメッセージIDのオーバーフロー問題に対応 – Twitter4J J | Google Groups
もちろんライブラリを差し替えれば済むという話ではなく、アプリケーション内部で32bitで扱っていたり、データベースのスキーマが32bitになっていたりしたら併せて修正する必要があります。

ダイレクトメッセージのIDは現在のところシーケンシャルに割り振られているようなので、Twitterのサービスが始まって以来実に21億ものダイレクトメッセージが送られたことになります。ツイートに比べてダイレクトメッセ−ジの数はそんなに多くはないと思っていたのですが、結構多いものですね。
そういえば私も最近はちょっとした要件であれば @ で、人に見られないように個別に用件を伝えるときもメールではなくダイレクトメッセージを好んで使っている気がします。
場面によってはメールやIMよりも好まれるコミュニケーションインフラになっていると言えますね。

Twitter4JのメーリングリストではユーザーIDも64bitで扱うべきだという議論が定期的に沸き起ります。
Twitter4J – changing the type of userid from int to long is necessary?
Twitterのアカウントが21億を超える日はいつ来るのでしょうか?単純計算では20年以上先なのですが案外早く来るかもしれませんね。
→ 2013年中に32bitであふれるそうです。 Moving to 64-bit Twitter User IDs

関連記事:
Moving to 64-bit Twitter User IDs | Twitter Developers
Twitter botが作りたい。 – nigredoな日々 ~ arcanum.jpの出張所 ~