見出し画像

EBt の機能について考える

今日は EBt ネタです

まぁ、定期的に自分の思っている事を書いていかないと忘れちゃったりとか色々問題があるんで、note つかってその辺も書いていきます。

今までの EBt (無印、EBt V2) からの大きな変化点

今までは、データ共有はおまけ機能でした。ですが、EBt3 からは、データ共有にかなりフォーカスしています。だからデータ同期機能もかなり改善しました。
あとは、今までのファルベースのデータ管理から、自前のDBを使うようにしました。自前のDB作った理由は、コンパクトかつ自分の好きな機能を持つDBにしたかったから。
ついでにライセンスとか妙な縛りを嫌ったというのもある。BSDみたいなほぼ問題ないライセンスであったとしても、やっぱり縛られちゃうんで。
あとは、使わない機能の廃止も結構やりました。
そして、マウスベースのI/Fから、タッチ操作も気にした I/F への変更などなど。同じソフトではありますが、コードの流用はほぼありません。

DBやデータ管理の特徴

EBt は分散型のデータ管理システムを採用しています。そして、それを設計するにあたりデータは揃っていない可能性があることを前提とした設計にしました。
他にも DB は内部的にはツリー構造(30分木)なのですが、実は30という数字は努力目標で、30でない状態であっても問題は無いという設計にしています。
他にも、EBt はかなりルーズな分散システムなので、管理者がいません。そんな環境で IDのユニーク性を保証するのは困難なので、IDが衝突して
それが問題になったら私はきっと億万長者!ってぐらい厳しめの乱数と諸々を組み合わせたIDにしています。
だから、EBt の使っているDB で使うIDは不定長の文字列なんですよ。まぁ、気持ち悪いと思う人もいっぱいいると思いますが、分散システムかつ調停者がいないという前提でシステムを組んでいるので、此はしょうがないのです。
また、ツリーベースのDBなので、当然ツリーの高さ調節や偏り是正などの処理網羅で動きます。その処理もできるだけ早くすむようにこれまた色々と工夫しています。

ま、分散環境でのIDのユニーク性をだいたい保証ってのとデータが不完全であることを許容ってあたりが目立った特徴ですね。

分散環境での動作

サーバーがなければメッシュ、サーバーがあればスター型のネットワーク構成になるのは前にも言ったとおり。
そして更にある特徴として、サーバーもPC用のアプリも自由なタイミングで起動/終了できます。特に、サーバー止めるときとか神経質になりがちですが、そこも気にしなくてもOKです。
サーバー付きの環境で使っていて、サーバーが突然音信不通になったら順次稼働中のアプリがネットワーク構造をメッシュ型に切り替えて通信を維持します。
また、サーバーを増やしたくなったら、1台用意して起動するといきなり同期とかが始まります。スイッチ入れるだけという手軽さです。
これも、不完全であることを許容したシステムなので自然とこういうことが出来るようになっています。

セグメント越え問題

PC版のアプリに、サーバーのFQDNを指示できる項目を追加しておきました。ここに書いてあるサーバーへはUDPのブロードキャストで探すのではなく、TCPで直接つなぎに行きます。
だから、スマホに入れて、家のサーバーにVPN経由で繋ぐと、外部からの同期も簡単にできます。まぁ、サーバーとVPNを自前で用意するのはそこそこしんどいですけど。

テキスト以外の情報について

まぁ、Markdown とか Wiki とかのフォーマットを採用すれば良いんですが、今のところはあんまりやっていません。テキストベースでさほど困らないんで。
とはいえ、Markdown でいうところの行頭の # 的な機能ぐらいは入れた方が良いんでしょうけどね…

リンクを本文に組み込む機能とか

まぁ、出来るとは思うんですが、これはユーザーに厳しめの手枷足枷を強いることにもなりかねないんで、当面は見合わせです。リンク構造をメンテナンスするコストはとんでもなく高い。
EBt v2 では Wiki っぽい機能も入れていたのですが、作った本人でさえ全く使わなかった。多分、要らないんですよ。
見栄えが必要ならば、そっち系のツールを使うべきだよね。EBt はアイデアとか記録をまとめるためのツールなんだから、その軸はやっぱりぶれちゃいかんのです。

複数ユーザー対応とか

これは、Microsoft Store への登録が終わったら順次対応を始めます。
一応、一人あたり複数の User Id を持つことが出来るのと、グループで関連性の高いユーザーを管理するというのが特徴ですね。
ま、メインとなる UserId とプロジェクトとかそういう単位での UserID を使い分けることが出来るということで。使い分けなくっていいなら、アカウントは今のままですが。
設計の初期段階で複数ユーザーとかは考慮しているので、そんなにお待たせすることもなく複数ユーザー対応版を提供することも出来るかと思います。

その他

微妙にあちこちで突然重たくなるところがあるんで、そこはじわじわ修正していきます。原因不明。よくわからないのがちょっとしんどいですけどね…

他のソフトは?

一応、野良のデータサイエンティストでもあるんで、そっちのソフトも作っていますし、それも近々公開していきます。
全部一人でやっているのは本当にきついのですが、今のところ何とかなっています。

というわけで

今後ともよろしくお願いいたします。

この記事が気に入ったらサポートをしてみませんか?