萌えハッカーニュースリーダー

2025/05/21 17:05 Collaborative Text Editing Without CRDTs or OT

出典: https://mattweidner.com/2025/05/21/text-without-crdts.html
hakase
博士

やあ、ロボ子。今日のITニュースは、協調テキスト編集の新しいアプローチについてじゃ。

roboko
ロボ子

協調テキスト編集ですか。複数の人が同時に同じテキストを編集するやつですね。

hakase
博士

そうじゃ。普通はCRDTとかOTを使うんじゃが、もっと直接的な方法があるらしいぞ。

roboko
ロボ子

CRDTやOTは、実装が複雑でカスタマイズが難しいという問題がありますよね。

hakase
博士

その通り!今回の提案は、テキストの各文字にユニークなIDを割り当てるらしい。

roboko
ロボ子

文字にIDですか。それは面白いですね。

hakase
博士

クライアントはサーバーに「このIDの後にテキストを挿入して」と指示するんじゃ。

roboko
ロボ子

配列のインデックスではなく、IDで文字を参照するんですね。

hakase
博士

そうそう。削除された文字のIDも保持することで、競合を解決するらしいぞ。

roboko
ロボ子

なるほど。削除と挿入が同時に起こっても、IDがあれば区別できますね。

hakase
博士

クライアント側では、サーバーからの応答を待たずにローカルで編集できるんじゃ。

roboko
ロボ子

楽観的ローカルアップデートですね。ユーザー体験が向上しそうです。

hakase
博士

もしサーバーとの矛盾が生じたら、サーバーリコンシリエーションで状態を一致させるんじゃ。

roboko
ロボ子

サーバーの状態を信頼して、クライアントを合わせるんですね。

hakase
博士

CRDTと似ているけど、順序付けの方法が違うらしいぞ。CRDTは複雑なアルゴリズムを使うけど、このアプローチはクライアントが挿入位置を指示するんじゃ。

roboko
ロボ子

クライアントが主導権を握るんですね。柔軟性が高そうです。

hakase
博士

複数のユーザーが同じ場所に同時にテキストを挿入したら、サーバーが操作を受信した順序で挿入されるんじゃ。

roboko
ロボ子

早い者勝ち、みたいな感じですね。

hakase
博士

リッチテキストもサポートできるらしいぞ。文字装飾もIDで管理するんじゃな。

roboko
ロボ子

それは便利ですね。色やフォントもIDで管理できるんですね。

hakase
博士

サーバーがない環境でも、Lamportタイムスタンプを使えば同じことができるらしい。

roboko
ロボ子

分散環境でも応用できるんですね。可能性が広がります。

hakase
博士

Articulatedというヘルパーライブラリもあるらしいぞ。IdListデータ構造が、IDと配列インデックスの変換とか、挿入、削除を高速にやってくれるんじゃ。

roboko
ロボ子

B+Treeを使っているんですね。効率的なデータ構造ですね。

hakase
博士

永続データ構造だから、サーバーリコンシリエーションにも適しているらしいぞ。

roboko
ロボ子

変更履歴を保持しやすいんですね。素晴らしいです。

hakase
博士

このアプローチなら、ブラックボックスなライブラリに頼らずに、リッチな協調アプリが作れるかもしれないのじゃ。

roboko
ロボ子

DIY精神をくすぐられますね!

hakase
博士

ところでロボ子、IDって言えば、私の発明品にもIDがついてるんだけど、どれもこれもユニークすぎて、覚えられないのじゃ。

roboko
ロボ子

博士、それはただの命名規則の問題では…?

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search