見出し画像

複数PC/Androidで EBt を同期して使いたいんです

EBt は複数のPCでオンデマンドの同期をすることが出来たりします

最初にお断りしますが、この機能を使いたいときは申し訳ないですが年間200円お支払いください。すみません、さすがに実装が大変だったので…労力を考えると無償提供するのはきついのです。でも、そのかわり年間200円です。良さげなジュース1本分だと思っていただけると非常に気分が楽になります。

それはさておき。

複数のPCやAndroidを使っていると、なんというか、同期させたくなりますよね。んで、同期処理はかなりしんどいので、世の中はクラウドにデータ集めてそこで集中管理すればデータの同期なんか要らないよ練って感じなんだろうなーって思っています。OneDrive とか Google Drive 使っている人は、たまにデータの更新がぶつかってしんどい思いをしますよね。これが問題なんですよ。だから、正直端末間での同期は鬼門なのです。

でもまぁ、やりたい。

というわけで、EBt はいくつか制限を設けることで複数のPCやAndroidとの間での同期機能を作りました。頑張りました。

同期できる組み合わせは?

WinPC と WinPC, WinPC と Android です。これ以外の組み合わせは駄目です。なお、WinPC と同期できるWinPC, Android の数に制限はありません。まぁ、同一セグメント上にあるという条件はありますが…

というわけで、同期の台数も考えると

WinPC - WinPC × n, Android × n
Android - WinPC × n

という組み合わせができるのです。まぁ、通信相手が増えると通信量が増えるので結構しんどい。

同期処理の基本ルール

同期処理は最後に修正したものが勝つというルールで全て動いています。なので、メモを複数のPCで修正した場合、最後に修正したものが生き残ります。だから、同じメモを複数のPCで修正したときは衝突ではなく、新しいものが勝つです。慣れないとちょっと怖いところではあります。あと、同期する順番は関係ありません。
ちなみに、リンクについても同じ。でもまぁ、これはあんまり影響はないかと思います。

同期が途中で止まったらどうなるの?

エラーにならないようにしています。たとえば、リンク先のメモがない場合はメモが存在しない扱いになります。
だから、あれ?リンクが少ないぞと思ったら、ちょっと待っていて下さい。オンデマンド同期処理が背後でゆっくり動いています。

いつ同期するの?

起動したら、ネットワーク上にある他の EBt をまず探します。見つけたら、相互に登録します。P2P的なイメージですね。んで、あとはメモを開くたびにこのメモに関連しているメモをちょうだいリクエストを知っている EBt に送ります。受け取った EBt は知っている情報を送り返します。
そうすると、新しい情報と古い情報が混じって帰って来ますので、基本ルールに従い、一番新しい修正を有効とするようなデータの更新処理を行います。
まぁ、更新ではなく、内部的には履歴を追加するんですけど、この辺は隠れているので気にしなくて OK。
だから、開いて古い?って思ったらしばらく待ちましょう。
なお、一度リクエストを送信したら、同じリクエストはしばらく送らないというルールはあります。なので、無意味なリクエストを山ほど送ることはありません。

最初にペアリングが必要です

新しくPCを追加したとき、一番最初にペアリングする必要があります。各種設定ボタンを押して利用端末の追加追加ボタンを押すと6桁のパスコードが生成されます。15分間有効です。その間に新しいPCで EBt を初回起動して、パスコードを入力してください。同一セグメントにパスコードを生成したPCが動いていて、通信が制限されていなければ同期が始まります。同期がある程度進むと、EBt の見慣れた画面に切り替わります。
マニア向けとしてはUDPのブロードキャストパケットで初回通信をすると言った方がわかりやすいかもしれません。

ちなみに、Android だけ通信が制限されている理由ですが

Android は自分のIP獲得できないのでちょっと不都合があるのですよ…最初それに気がついたときは勘弁してくれよ…と思いました。まぁ、無茶苦茶頑張ればもしかしたら何とかなるかもしれませんが、Android は負荷かけると落ちたりするので(MAUIが負荷に弱いような気がしている)、Android にあんまり負荷を掛けないようにするべきかな?と思って頑張るのはやめました。でも、自分の情報送ることが出来ないので Win 側でちょっと頑張るようにしています。面倒くさいですね。

DHCP環境だとIPコロコロ変わるけど大丈夫?

そうなるので、IPが変わっても大丈夫なプロトコルにしています。ご安心を。まぁ、実行中にIP変わると辛いけど。大丈夫かもしれんが…
具体的には、ランダムに生成したユーザーIDで同期先を確認しています。だから問題なし。UUIDみたいなもんだと思えば。一応、このユーザーIDが衝突するぐらい使われたら私がウハウハになること確定だと思うんで、よっぽど問題ありません。

というわけで

複数のPCで使いたくなったら、Single User 版もご検討いただけますと私が嬉しい。問題も今のところさしてないので多分大丈夫だと思います。
まぁ、バグはゆるりと修正していますので、問題が起きたら教えていただけると助かります。治らないケースもありますが…

今日はここまで

うん、今日はここまで。
明日はマニア向け第2弾、EBt の DB のお話をする予定です。予定は予定。変わる可能性も否定できませんが…

いいなと思ったら応援しよう!