CRDTベースの協調編集がライブコーディング面接で選ばれる理由
リアルタイム協調編集の2つのアプローチ
複数のユーザーが同時に同じファイルを編集する場合、エディタはデータを失わず、奇妙なちらつきも起こさずに変更をマージする必要があります。主に2つのアプローチがあります:
- Operational Transform(OT)。 各編集は操作として送信され、中央サーバーが受信した操作を変換して正しい順序で適用します。Google Docsで採用されています。
- Conflict-free Replicated Data Types(CRDT)。 各編集は十分なメタデータ(通常は一意のIDと論理クロック)を含んでおり、到着順序に関係なくクライアント同士が同じ状態に収束します。Figma、Linear、ほとんどの最新のコラボレーションツールで採用されています。
ライブコーディング面接の場合、CRDTが優れています。
面接ではなぜCRDTが勝つのか
面接はホテルのWi-Fi、モバイルホットスポット、厳しいプロキシ設定の企業ネットワークで行われます。3つの問題が発生します:
- 一時的な接続切断。 入力中に4秒のネットワーク遅延が起こる。
- 非対称のレイテンシ。 候補者のキーストロークがサーバーに届くのに80ms、面接官のが400msかかる。
- 再接続による混乱。 両者がオンラインに戻る際に状態が乖離する。
OTベースのエディタはサーバーがすべての操作を仲介する必要があります。ネットワークに障害が発生すると編集がキューイングされ、再接続時にちらつき、文字の欠落、最悪の場合はサイレント状態損失が起こることがあります。候補者は動揺し、面接官は候補者のせいにしてしまいます。
CRDTはこれら3つのシナリオすべてを静かに処理します。すべてのクライアントはローカル編集をすぐに適用でき、マージは再接続時にユーザーに見える影響なく発生します。エディタはオフラインファーストのように感じられます。これは、編集レイヤーの上に整合性チェックも実行している場合、人々が考える以上に重要です。
Yjs + Monacoが標準になった理由
Yjsはテキスト編集で最も実績のあるCRDTライブラリです。y-monacoを通じてMonaco(VS Codeを支える言語エディタ)と清潔にペアリングされます。この組み合わせにより以下が実現されます:
- VS Codeの完全なエディタ体験(IntelliSense、マルチカーソル、すべてのキーバインディング)
- 悪質なネットワーク環境で動作するリアルタイム協調編集
- 複数カーソル、選択範囲の共有、ユーザープレゼンス
- 大規模環境で検証済み
ClarityHireはまさにこれらの理由からMonaco + Yjsで構築されています。候補者のコード編集は良好な接続環境で50ms以下で面接官に到達し、サーバー仲介型エディタを破壊するようなネットワーク遅延から無傷で生き残ります。これはペアプログラミングラウンドと従来のライブコーディング面接の両方において同等に重要です。ちらつきはすべて候補者の問題として解釈されてしまうからです。
実際の意味
ライブコーディングプラットフォームを評価する際は、試用時に悪いネットワーク環境をシミュレートしてください。DevToolsで3Gに絞り、5秒間接続を切ってみてください。CRDTベースのツールは目に見えない形で復旧します。その他のツールはそうではありません。