昨日、ワークアウトがサーバに転送できなかったので、今朝、再度、転送を試みたところ、「ワークアウトデータをNike+に送信できませんでした。サーバがデータを検証できませんでした」と表示され、データの転送ができませんでした。



iPod内のデータが壊れてしまったのかもしれません。しかし、iPod nano本体では表示できているので、データそのものが壊れているわけではなさそうです。データを取り出してなんとか修復できないか試すことにしました。

まず、データの在処ですが、これは、Macの場合、iPodをディスクとしてマウントすると

/Volumes/<iPodの名前>/iPod_Control/Device/Trainer/Workouts/Empeds/<レシーバのID>/synched

に入っていることが分かりました。iPod_Control以下はFinderでは表示されないので、ターミナルでの操作が必要です。ここにワークアウトごとにデータがXML形式で入っています。



この中の「2009-09-14 16;54;33.xml」が昨日のワークアウトのデータです。このファイルの中を覗いてみると、見た目にはデータは壊れているように見えません。このデータをlatestというディレクトリに移動させ、再度、iTunesで同期させると、データの送信が始まりましたが、同じエラーになりました。データの最後にXMLの署名が入っていたので、エラーメッセージの内容からすると、この署名の検証に失敗している可能があります。署名のデータが壊れているのかもしれません。こうなると修正はほぼ不可能です。



ためにしに、玄関で足踏みして(笑)新しいデータを作って同期させたところ、このデータは問題なく転送できました。昨日のデータだけが壊れてしまったようです。試しに、署名の部分を削除して、latestに入れて、再度、転送したのですが同じエラーになりました。当たり前のことではありますが、署名は必須のようです。



ここであきらめかけ、せっかくだから先日まで使っていた第二世代のiPod nanoに記録されているワークアウトのデータのバックアップを取っておこうと思い、同じ場所から、一番新しいデータを取り出しました。このファイルの中を覗いてみるとこれには署名が入っていません。データの形式のバージョンは、第2世代が2、第5世代が8となっていました。どのバージョンから署名が入ったのか分かりませんが、データの改ざんを防ぐために署名を入れるようにしたものと思います。



それならば、と、転送できなかったデータをバージョン2の形式に変換してみようと思い立ち、バージョン2のファイルをテンプレートにして、ワークアウトのデータを作ってみました。これを、第二世代のiPod nanoに入れて同期させると、無事に同期が完了。Nike+のサイトをアクセスすると無事にデータが転送されていました。





ところで、このXML形式のデータでは、ワークアウトの距離が小数点以下第四位まで記録されています。タイムも1000分の1秒 (ミリ秒) まで記録されています。また、1kmごと、1マイルごと、ボタンを押して距離とペースを確認したタイミングごとに距離とペースが記録されています。10秒ごとに距離とスピードも記録されていました。Nike+ではこれらのデータを使ってペースのグラフを描いているのでしょう。

当たり前のことではありますが、ここに書かれている方法は、公式にサポートされている方法ではありませんので、確実に転送できることが保証されているわけではありませんし、最悪、データが失われる可能性があります。試す場合には自己責任でお願いします。