2012年12月22日土曜日

kobo の同期のアルゴリズムについて検証してみた.

昨日,ついに kobo の Androidアプリ が日本語に対応しました.早速 Nexus7 にインストールし,kobo touchと使い分けながら読書しています.

しかし,複数の端末で同期しながら読むとなると,気になってくるのが同期のアルゴリズム.きちんと把握して使っていないと,同期したせいでしおりの位置がぐちゃぐちゃなんてことになる可能性があります.

そこで,そのアルゴリズムを解明するために,様々なパターンを想定して検証を行なって行きたいと思います.


初期状態
Nexus7 と kobo touch はそれぞれ同期済みで,同期した後は一冊も書籍を開いておらずwifiは切断した状態.

手順
・Nexus7で本Aを開いてしおりの位置を変更して閉じる.(この位置をPとする)
・kobo touchで本Aを開いてしおりの位置を変更して閉じる.(この位置をQとする)
・Nexus7をwifiに接続し,同期してからwifiを切断する.
・kobo touchをwifiに接続し,同期してからwifiを切断する.
・再びNexus7をwifiに接続し,同期してからwifiを切断する.
・Nexus7とkobo touchでそれぞれで本Aを開く.

結果,Nexus7のしおりの位置はP,kobo touch のしおりの位置はQでした.

さて,この状態からさらに検証を続けてみましょう.(wifiは両方オフ,しおりの位置はPとQ)

・Nexus7で本Aを閉じてから,kobo touchで本Aを閉じる.
・Nexus7をwifiに接続して,本Aを再び開く.

結果,Nexus7のしおりの位置はPのままでした.

さらに続けます.(Nexus7はwifiオン,kobo touchはwifiオフ,しおりはPとQ)

・Nexus7で本Aを閉じる.
・kobo touchをwifiに接続して,本Aを開く.

すると,”新しいしおりがあります”のメッセージが表示されました.


そして,”はい”を選ぶとしおりの位置がPになりました

さらに,さらに続けます.(両方wifiオン,しおりは両方P)

・kobo touchでしおりの位置をQに戻して,本を閉じる.
・Nexus7で同期してから,本Aを開く.

結果,確認メッセージが表示されることなく,しおりの位置はQに変わっていました

さらに(ry(両方wifiオン,しおりは両方Q)

・Nexus7で,本Aを閉じる.
・Nexus7のwifiを切断してから,本Aを開き,しおりをPにして,本Aを閉じる.
・Nexus7をwifiに接続して,同期してから,本Aを開く.

すると,しおりの位置はPのままでした.



さて,色々と検証してみましたが,ここからいくつかの結論を出すことができると思われます.

1.本を閉じた時
A.wifiに接続されていれば,サーバ側のしおり情報に反映される.
B.wifiに接続されていなければ,サーバ側のしおり情報には(当然)反映されない.また,その後wifiに接続して同期したとしても,変更されたしおり情報がサーバ側に反映されることはない.


2.同期した時,
A.サーバ側に自分以外の端末による新しいしおり情報があれば,端末側に反映される.
B.端末側のしおり情報がサーバ側に反映されることはない.(上のBと同じ)


3.本を開いた時,
A.wifiに接続されていれば,サーバ側のしおり情報を確認し,自分以外の端末による新しいしおり情報があれば,確認メッセージが表示される.
B.wifiに接続されていなければ,(当然だが)端末側のしおりに従って,本を開く.


自分以外の端末による新しいしおり情報という部分がなんとも胡散臭いですねw

完全に憶測に過ぎませんが,恐らくサーバ側には端末ごとにいつ同期したかという情報があると思われます.そして,前回の自分の同期よりも後に,自分以外の端末による同期が行われていた場合,その情報が自分以外の端末による新しいしおり情報として残るのではないか.というのが僕の考えです.

楽天側がアルゴリズムを明確に説明してくれれば,わざわざ調べる必要もないのですが,まあ楽天じゃ期待は薄いですね.

使っていくうちに,他にわかってきたことがあれば,追記で更新していきたいと思います.






0 件のコメント:

コメントを投稿