koba::blog

小林聡: プログラマです

mixiアプリ「ユーザーID新方式」移行対応

mixiアプリのユーザーIDの指定方法が変わるということで、登録していたアプリを修正しました。

対象のアプリはこちら。

ユーザーID新方式とは何か

今までは、アプリからユーザを指定する場合、mixiで一般的に使われている数字連番のIDを使っていました。新方式では今までの数字のIDと脈絡のない英数字13桁のIDが使われるようになります。

なぜこんな修正をするのかは想像するしかないですが、数字連番だと総当たりでユーザを捜しやすいので、それを避けるためではないかと思います。mixiのサイト全体でこの変更が行われるのかどうかは分かりません。とりあえずmixiアプリは変わるとのことです。

どんな影響があるのか

新方式への移行後は、APIでは新方式のIDしか知ることができなくなるため、ユーザーIDを保存しておいて利用するようなアプリの場合、ユーザが特定できなくなります。

ユーザーIDを保存しないアプリの場合は、アプリ内では新方式で統一されるため、特に影響はないです。

しかし、一般的にはユーザーIDを保存することが多いでしょう。さすがに影響が大きいので、mixiでは「移行期間」*1を設けて、その間、現行のIDを使いながら新方式IDも取得できるよう、ID変換APIを一時的に提供しています。*2

「にゃんこすいーぱー」ではどう対応したか

「にゃんこすいーぱー」では、ハイスコアを保存する際にユーザーIDも保存していました。なので、保存していたユーザーIDを変換する必要があります。

自前のサーバにデータを保存するアプリの場合、ID変換APIを使って対応表を作り、保存していたデータを書き換えればいいのですが、本アプリでは、mixiアプリAPIが提供するデータストアを使っていました。この領域はアプリユーザごとにあり、ユーザがアプリを起動したときしか更新できません(IDが分かれば参照は可能)。なので、ID変換APIを使うことはあきらめました。*3

「にゃんこすいーぱー」のハイスコアは、以下の2つを別々に保存しています。

  1. アプリユーザ自身のハイスコア
  2. アプリ全体のハイスコア

1にもユーザーIDを保存していますが、ユーザーIDは別の方法でも分かるので、本来は冗長なデータです。この部分は「別の方法」(データストアを指定するときに使うユーザーID)を使用するように変更しました。

2については変換をあきらめました。2のハイスコアは本当の意味での「全体のハイスコア」ではなく、マイミク同士が知り得る範囲のハイスコア(最初は自身のハイスコアからスタート)を交換することで、徐々に広まっていく方式をとっていました。ですので、今回もう一度徐々に広がっていくことに期待することにします。

この方式の利点は、移行期間のフェーズに関わらず使用できることです。すでにプログラムは入れ替えましたが、アプリは今まで通り動作しています。新方式に切り替えた瞬間に、いったん「全体のハイスコア」がクリアされますが、徐々に再構築されていくはずです。

新方式への切り替えは来週末の予定。上手く切り替わってくれるといいのですが。

追記 (2011-10-29)

22:00に新方式に切り替えました。うまく動作しているようです。

アプリで取得できるユーザのURLや、ユーザごとのアイコンのURLに含まれていたユーザーIDも新方式のIDになっているようです。mixiのサイト全体でIDを切り替えるのかな。

*1:2011年6月29日〜10月31日

*2:と思ったら、11月以降もID変換APIは使えるようになったようですね。総当たり攻撃はこれからも使えることになるので、何のための変更か分からなくなったぞ。

*3:移行期間中に徐々に変更すればいいのですが、すべては救えないし。