製品アップデート

CRDTベースの協調編集がライブコーディング面接で選ばれる理由

ClarityHire Team(Editorial)5 min read

リアルタイム協調編集の2つのアプローチ

複数のユーザーが同時に同じファイルを編集する場合、エディタはデータを失わず、奇妙なちらつきも起こさずに変更をマージする必要があります。主に2つのアプローチがあります:

  • Operational Transform(OT)。 各編集は操作として送信され、中央サーバーが受信した操作を変換して正しい順序で適用します。Google Docsで採用されています。
  • Conflict-free Replicated Data Types(CRDT)。 各編集は十分なメタデータ(通常は一意のIDと論理クロック)を含んでおり、到着順序に関係なくクライアント同士が同じ状態に収束します。Figma、Linear、ほとんどの最新のコラボレーションツールで採用されています。

ライブコーディング面接の場合、CRDTが優れています。

面接ではなぜCRDTが勝つのか

面接はホテルのWi-Fi、モバイルホットスポット、厳しいプロキシ設定の企業ネットワークで行われます。3つの問題が発生します:

  1. 一時的な接続切断。 入力中に4秒のネットワーク遅延が起こる。
  2. 非対称のレイテンシ。 候補者のキーストロークがサーバーに届くのに80ms、面接官のが400msかかる。
  3. 再接続による混乱。 両者がオンラインに戻る際に状態が乖離する。

OTベースのエディタはサーバーがすべての操作を仲介する必要があります。ネットワークに障害が発生すると編集がキューイングされ、再接続時にちらつき、文字の欠落、最悪の場合はサイレント状態損失が起こることがあります。候補者は動揺し、面接官は候補者のせいにしてしまいます。

CRDTはこれら3つのシナリオすべてを静かに処理します。すべてのクライアントはローカル編集をすぐに適用でき、マージは再接続時にユーザーに見える影響なく発生します。エディタはオフラインファーストのように感じられます。これは、編集レイヤーの上に整合性チェックも実行している場合、人々が考える以上に重要です。

Yjs + Monacoが標準になった理由

Yjsはテキスト編集で最も実績のあるCRDTライブラリです。y-monacoを通じてMonaco(VS Codeを支える言語エディタ)と清潔にペアリングされます。この組み合わせにより以下が実現されます:

  • VS Codeの完全なエディタ体験(IntelliSense、マルチカーソル、すべてのキーバインディング)
  • 悪質なネットワーク環境で動作するリアルタイム協調編集
  • 複数カーソル、選択範囲の共有、ユーザープレゼンス
  • 大規模環境で検証済み

ClarityHireはまさにこれらの理由からMonaco + Yjsで構築されています。候補者のコード編集は良好な接続環境で50ms以下で面接官に到達し、サーバー仲介型エディタを破壊するようなネットワーク遅延から無傷で生き残ります。これはペアプログラミングラウンドと従来のライブコーディング面接の両方において同等に重要です。ちらつきはすべて候補者の問題として解釈されてしまうからです。

実際の意味

ライブコーディングプラットフォームを評価する際は、試用時に悪いネットワーク環境をシミュレートしてください。DevToolsで3Gに絞り、5秒間接続を切ってみてください。CRDTベースのツールは目に見えない形で復旧します。その他のツールはそうではありません。

YjsCRDTMonacoエディタ協調編集

関連記事