15 ポイント 投稿者 GN⁺ 2023-10-05 | 2件のコメント | WhatsAppで共有
  • Conflict-free Replicated Data Types(CRDT)についてのインタラクティブな入門記事
    • 別のコンピュータ(ピア)に保存され、ネットワークリクエストや他のピアへの確認なしに即座に更新できるデータ構造の一種
  • CRDTは、Google DocsやFigmaのような高度なコラボレーションアプリを、中央サーバーによる同期要件なしに構築するのに非常に適している
  • CRDTには、状態ベースと操作ベースの2種類がある
    • 状態ベースCRDTはすべての状態をピア間で送信し、新しい状態はそれらすべての状態をマージすることで得られる
    • 操作ベースCRDTはユーザーが行った操作だけを送信し、それを新しい状態の計算に利用できる
  • この記事は状態ベースCRDTに焦点を当て、プリミティブなCRDTを構築する方法、より複雑なデータ構造へと組み合わせる方法、そして共同作業向けのピクセルアートエディタを構築する方法を説明している
  • Last Write Wins Register(LWW Register)という概念を紹介しており、これは単一の値を保持し、タイムスタンプを使って現在の値を最後に書き込まれた値で上書きする単純な種類のCRDTである
  • また、Last Write Wins Map(LWW Map)という、より複雑な種類のCRDTの概念も紹介しており、これは複数の値を保持する
  • LWW RegisterとLWW Mapがどのように動作するかを理解するのに役立つインタラクティブなプレイグラウンドが含まれている
  • 次の記事では、この文章で説明した概念を使って共同作業向けのピクセルアートエディタを構築することに焦点を当てる予定

2件のコメント

 
cosine20 2023-10-06

かなり面白い内容ですね。Googleドキュメントのようなリアルタイム共同編集が可能なアプリがどう実装されているのか気になっていたのですが……

 
GN⁺ 2023-10-05
Hacker Newsのコメント
  • 開発者向けの Conflict-free Replicated Data Types(CRDTs)について、実際のコード例と明快な説明を含む優れた入門記事として高く評価されている
  • CRDTs はプロダクト開発で使われており、扱いが難しいこともあるが、ゼロレイテンシーや結果整合性といった利点を提供する
  • CRDTs は無効化ロジックのない分散キャッシュを可能にし、キャッシュ管理を簡素化して性能を向上させる
  • CRDTs はシステム負荷を減らし、エッジコンピューティングを可能にするために、古い書き込み操作の削除を可能にする
  • しかし、CRDTs の利用には、ロールベース認可の難しさ、加算的なデータモデル変更の必要性、デバッグの問題などの課題がある
  • Liveblocks のようなサービスは CRDTs の利用を簡素化しようとしているが、個人開発者にとっては費用がかさむ可能性がある
  • CRDTs は、TTRPG キャンペーン管理ツール、自動同期データベース、協調ノートブックツールなど、さまざまなアプリケーションで使われてきた
  • CRDTs はデータ管理に非常に有用で興味深いと見なされているが、ユーザー中心のアプリケーションにとっての重要性については議論の余地がある
  • 一部では、CRDTs の主な利点はリアルタイムコラボレーションだと主張しており、それはすでに Google Docs のような中央集権的なソリューションによって解決されているとする
  • 別の一部は、CRDTs がマルチデバイス対応やオフラインアクセスといった利点を提供するとしつつも、こうした機能も中央集権的なソリューションで利用可能だと指摘している
  • データモデルの更新が容易ではなく、他のピアがデータを変更できるため、CRDTs におけるデータの永続性やユーザーコントロールについての懸念もある
  • こうした議論にもかかわらず、CRDTs への関心は続いており、この分野での研究開発も継続している