原型版から仮想アカウント対応に拡張しました。
中央サーバーに頼らず、ユーザー同士が局所的な情報だけで関係性を調整していく仕組みの研究です。
P2P環境で仮想アカウント(ユーザー)が「Rank(安定性・信頼度)」と「Value(現在の状態・興味)」を持ち、
必要最小限の通信だけで自己組織化を目指すアルゴリズムです。
本アルゴリズムは、既存の中央集権的な推薦システムを置き換えるものではありません。
ただし、補助的なレイヤーとして興味を持っていただけるかもしれません。
特に大規模ソーシャルサービスにおける多様性の向上や、将来的な分散型アーキテクチャでの利用などを模索しています。
ソースコードはGPLv3です。興味がある方は自由に改良・実験してください。
現在のアカウント連携はOAuthやOpenID Connectなど、中央集権的なサーバーを前提としたものが主流です。しかしP2P環境では、通信路が確立した後の「アカウント間の関係性維持」や「状態の協調」が大きな課題となります。
本研究では、通信インフラそのものではなく、その上で動作する自己組織化レイヤーを提案します。
特徴は以下の通りです:
| 技術 | 主な役割 |
|---|---|
| NAT Traversal / WebRTC | 通信路を確立する |
| OAuth / OpenID | 認証・ID連携を行う |
| CRDT / Consensusアルゴリズム | データの一貫性を保つ |
| 本提案(DSSRC 仮想アカウント版) | 通信確立後のアカウント関係性・役割分担・状態遷移を 自己安定化させる |
想定用途例:
P2P型分散SNS: サーバーを介さない、ユーザー間の自律的な信頼関係構築。
分散型オンラインゲームの同期: プレイヤー間での高速かつ公平な役割・状態の伝播。
ノード自身の状態(Valueなど)は移動させず、Rankだけを交換します。これは大量のデータを移動させる代わりにインデックスだけを並べ替える発想に近く、局所的な通信だけで全体の順序を自己組織化することを目的としています。
乖離が閾値を超えたノード間で、動的に「Hello(再同期)」や「Swap(調整)」が発生している様子です。
... --- GUI Mode Started (100 nodes) --- ThreadNo.#000086 says Hello to ThreadNo.#000021! (Val Diff: 0.8904) ThreadNo.#000032 says Hello to ThreadNo.#000038! (Val Diff: 0.9461) ThreadNo.#000034 says Hello to ThreadNo.#000006! (Val Diff: 0.9279) ThreadNo.#000041 says Hello to ThreadNo.#000064! (Val Diff: 0.8987) ThreadNo.#000077 says Hello to ThreadNo.#000034! (Val Diff: 0.8535) ThreadNo.#000095 says Hello to ThreadNo.#000010! (Val Diff: 0.8821) ThreadNo.#000048 says Hello to ThreadNo.#000052! (Val Diff: 0.9521) ThreadNo.#000026 says Hello to ThreadNo.#000044! (Val Diff: 0.9143) --- System Paused --- ...
本実験により、仮想アカウント同士が中央制御なしでRankを介して自己組織化し、乖離の大きい相手と選択的にコミュニケーションを取る様子を確認しました。今後は実WebRTC環境での分散実験や、Rankの動的計算式の高度化を予定しています。

