効率的な共同テキスト編集:CRDT実装

2025-08-20

この記事では、YjsやAutomergeのような一般的なライブラリで使用されているアプローチと同様の、CRDTに基づく共同テキスト編集アルゴリズムについて説明します。各文字には一意の識別子(サイトIDとクロック)が割り当てられ、ツリーベースのインデックスとカウンターを使用して文字がソートされます。削除は、文字の識別子を削除済みセット(墓石)に追加することで行われます。連続した挿入の結合、連続したブロックの保存、削除済みセットに対する範囲ベースの表現などの最適化により、効率が向上します。これにより、大量のテキストの貼り付けや同時編集も効率的に処理できます。

開発