- Reflectは、Figma、Notion、Google SheetsのようなマルチプレイヤーWebアプリケーションを構築するための新しいフレームワークです。
- これは、クライアント側同期フレームワークであるReplicacheの発展版であり、マルチプレイヤーアプリの開発をより簡単にするためにフルマネージドのサーバーを追加しています。
- Reflectは今回、初めて一般公開されました。
- このフレームワークは、共同編集における競合解決の問題を扱い、すべてのユーザーが同じ内容を見られるようにし、競合が自然に解決されるようにします。
- CRDTs(Conflict-Free Replicated Data Types)のようなWebエコシステムで人気のあるツールとは異なり、Reflectはビデオゲーム業界で広く使われているTransactional Conflict Resolution技術を使用します。
- Reflectの独自の利点と違いは、この同期エンジンの中核的な選択から生まれています。
- Reflectは、mutatorsと呼ばれるJavaScript関数を使って変更を実装し、mutatorが呼び出されるmutation recordを生成します。
- Mutationはローカルで適用された後にサーバーへストリーミングされ、サーバーは到着時間に従ってmutationを線形化し、次の正規の状態を生成します。
- Reflectは、動きの速いアプリケーションを処理でき、以前のものの確認を待っている間にもmutationを追加できます。
- このフレームワークには、巻き戻し、フォーク、ブランチ作成が可能な高速データストアと、流入するmutationに追随できる高速なサーバー側ストレージが必要です。
- Reflectのアプローチは高い汎用性があり、算術演算、リスト操作、高水準の不変条件の強制など、さまざまな処理に適しています。
- Reflectのサーバーは権威的であり、mutationの結果を自ら再計算し、その結果をすべてのクライアントが確認できます。
- このサーバー権限により、きめ細かな認証や、サーバー上での他のコード実行が可能になります。
- Reflectはさらに、スキーマ検証やマイグレーションといった利点も提供します。
- Reflectの同期戦略であるTransactional Conflict Resolutionは、シンプルで柔軟かつ強力であり、マルチプレイヤーアプリケーションを構築するうえで優れた選択肢です.
1件のコメント
Hacker Newsの意見