**タイトル**  
*協働編集について教えられた嘘 – パート 2:なぜ私たちは Yjs を使わないのか*

---

- **背景**  
  - 多くのチームは、リアルタイム共同作業が可能なのは Yjs や ShareDB のような専門ライブラリだけだと主張します。  
  - 実際には、多くのプロジェクトでは CRDT、OT、あるいはカスタム同期機構など、よりシンプルなソリューションを採用し、特定の要件に合わせています。

- **Yjs が見落とされやすい理由**  
  1. **セットアップの複雑さ**  
     - WebSocket サーバーまたは互換性のあるトランスポート層が必要です。  
     - 永続化設定や衝突解決の構成は非自明で、手間がかかります。  
  2. **パフォーマンスへの懸念**  
     - 大規模ドキュメントでは帯域幅オーバーヘッドが急速に増大します。  
     - 高頻度更新を低レイテンシ環境で処理するクライアントは苦戦しやすいです。  
  3. **特定ユースケースへの機能制限**  
     - Yjs はテキストと JSON に優れていますが、リッチメディアやバイナリブロブのサポートは標準装備では少ないです。  
     - カスタム拡張が必要になり、保守負担が増します。  
  4. **ツールエコシステム**  
     - Quill や ProseMirror など人気エディタとの統合は充実していますが、多くのチームは独自 UI を採用しており、Yjs の組み込みが強引に感じられることがあります。  
  5. **運用オーバーヘッド**  
     - プレゼンス・アウェアネス層を監視し、サーバーの拡張戦略を別途設計する必要があります。

- **検討すべき代替案**  
  - JSON 向けに特化した CRDT ライブラリ(例:Automerge)。  
  - 軽量アダプタ付き OT フレームワーク。  
  - Firebase や Socket.io のような既存リアルタイムプラットフォーム上で構築されたカスタム同期プロトコル。

- **結論**  
  - Yjs は強力ですが、万能解ではありません。  
  - 適切なツールは、ドキュメントサイズ・更新頻度・データ型・運用制約に応じて選定する必要があります。

2026/03/13 10:38

**タイトル** *協働編集について教えられた嘘 – パート 2:なぜ私たちは Yjs を使わないのか* --- - **背景** - 多くのチームは、リアルタイム共同作業が可能なのは Yjs や ShareDB のような専門ライブラリだけだと主張します。 - 実際には、多くのプロジェクトでは CRDT、OT、あるいはカスタム同期機構など、よりシンプルなソリューションを採用し、特定の要件に合わせています。 - **Yjs が見落とされやすい理由** 1. **セットアップの複雑さ** - WebSocket サーバーまたは互換性のあるトランスポート層が必要です。 - 永続化設定や衝突解決の構成は非自明で、手間がかかります。 2. **パフォーマンスへの懸念** - 大規模ドキュメントでは帯域幅オーバーヘッドが急速に増大します。 - 高頻度更新を低レイテンシ環境で処理するクライアントは苦戦しやすいです。 3. **特定ユースケースへの機能制限** - Yjs はテキストと JSON に優れていますが、リッチメディアやバイナリブロブのサポートは標準装備では少ないです。 - カスタム拡張が必要になり、保守負担が増します。 4. **ツールエコシステム** - Quill や ProseMirror など人気エディタとの統合は充実していますが、多くのチームは独自 UI を採用しており、Yjs の組み込みが強引に感じられることがあります。 5. **運用オーバーヘッド** - プレゼンス・アウェアネス層を監視し、サーバーの拡張戦略を別途設計する必要があります。 - **検討すべき代替案** - JSON 向けに特化した CRDT ライブラリ(例:Automerge)。 - 軽量アダプタ付き OT フレームワーク。 - Firebase や Socket.io のような既存リアルタイムプラットフォーム上で構築されたカスタム同期プロトコル。 - **結論** - Yjs は強力ですが、万能解ではありません。 - 適切なツールは、ドキュメントサイズ・更新頻度・データ型・運用制約に応じて選定する必要があります。

RSS: https://news.ycombinator.com/rss

要約

Japanese Translation:

著者は、Yjs や同様の CRDT ライブラリがライブコラボレーティブエディタには不適切であると主張しています。なぜなら、それらは各キー入力時にドキュメント全体を再生成せざるを得ず、パフォーマンス低下、プラグインの失敗、不安定なノード ID、および奇妙な Undo/Selection 動作を引き起こすからです。これらの問題は、Yjs がバージョンベースのリベース機能を欠いていること、DOM の重い再構築、複雑な調整ロジックが原因であり、60 fps を達成するのが難しいという点に起因します。さらに、Yjs はスキーマ不一致(静かなるデータ損失)や煩雑な権限管理(XML 更新を予測する必要)が苦手で、可用性を過大評価している(多くの機能がメディア、権限、耐久性に外部サービスに依存している)、テムストーンのガーベジコレクションが大量のメモリを消費し、収束によって一時的な発散が隠蔽されるためデバッグが難しいという課題があります。

対照的に、著者は ProseMirror をベースとした最小限の解決策(約 40 行)を提案しています。この方法では

prosemirror-collab
を使用して楽観的更新、オフライン編集、細粒度プロヴァナンス、および真のマスターレストポロジーなしでの P2P コーディネーションを実現します。こうすることで Yjs の落とし穴を回避し、より良いパフォーマンス、簡単なデバッグ、そして予測可能なエディタ挙動を提供します。

開発者がこの ProseMirror 手法を採用すれば、コラボレーティブツールは脆弱性が減少し、保守コストも低く抑えられます。そうでない場合、Yjs はスケーラビリティと開発者の摩擦に直面し続け、ライブコラボレーティブエディタの広範な採用を妨げる可能性があります

本文

第 2部 – なぜ Yjs(および同様の CRDT)が現在ライブコラボレーションテキストエディタには不向きなのか

第 1部では、特に Yjs など最も人気のある共同編集ライブラリが、直接的な編集競合を解決する際に文書を黙って破損してしまうと論じました。これはオフライン利用に不適切であり、ユーザーはそのような競合を回避できないためです。
本部では、この同じ問題がライブコラボレーション編集にも不向きであることを示します。


1. Yjs を用いて実運用エディタを構築した際に直面した課題

課題発生の仕方
キー入力ごとに「削除+再作成」各共同変更が文書全体を削除し、再構築するため DOM の大規模な差分(NodeViews、デコレーション、位置マッピング)が発生します。Undo やカーソル位置、選択処理も不安定になります。
レイテンシとパフォーマンス60 fps を目標にするとフレームあたり <16 ms 必要です。Yjs の「全置換」戦略はキー入力ごとに完全再調整を強いるため、予算内に収めるのが難しくなります。一方 ProseMirror のトランザクションモデル(リベース、インクリメンタル DOM 更新)は遥かに効率的です。
CRDT パイプラインの複雑さProseMirror のトランザクションと Yjs XML アップデート間で変換するオーバーヘッドが増えます。ターミネーション(tombstone)のガベージコレクションはメモリを消費し、データ損失のリスクもあります。
スキーマ強制中央権威がないため、スキーマ不一致が黙って伝播し、新しいスキーマにアップグレードしたり受信した際にデータ破損につながります。
アクセス許可の扱いCRDT では更新を適用する前にその最終的な効果を予測する必要があります。これはトランザクションを直接検査する方がはるかに簡便です。
可用性とネットワークプロトコルYjs は「サーバー停止時でも利用可能」とよく宣伝されますが、実際にはほとんどのエディタがメディアストレージや権限チェック、耐久性など外部サービスに依存しています。CRDT は単なるネットワーク層として機能し、不要な複雑さを増します。

2. 「シンプル」な代替 – ProseMirror‑collab

  • 単一権威 – 文書インスタンスが真理の源です。
  • トランザクションワークフロー – クライアントはステップと
    lastSeenVersion
    を送信します。
    • バージョン不一致の場合、クライアントは最近の変更を取得しローカルでリベースして再送信します。
    • この追加往復は典型的な負荷では無視できる程度です。サーバー側に同じロジックを置く「コミットヘルパー」も可能です。
  • P2P 対応だがマスターレスではない – 任意の機械が権威として機能できます。ターミネーションの複雑な GC は不要です。
  • 実装コスト – 約 40 行コード(React スキャフォールディング込みで約 291 行)。

このアプローチは楽観的更新、細粒度の起源追跡、および堅牢なオフライン処理を提供しつつ、実装を軽量に保ちます。


3. 本当にマスターレス P2P が必要なケース

完全に分散型トポロジー(中央権威なし)を要するアプリケーション(例:純粋な P2P チャットアプリ)では、Yjs のような CRDT も適切かもしれません。それ以外の場合は追加の複雑さとパフォーマンスコストがメリットを上回ります。


4. ライブラリ作者へのメッセージ

ライブラリは ユーザー体験(切断時の許容性、スムーズな UI (60 fps)、予測可能なデータ変化) を中心に設計すべきです。アルゴリズム的基盤よりもこれらの制約から出発することで、結果としてシンプルで堅牢なテクノロジースタックが生まれます。


*付録:詳細コードスニペット、ベンチマーク結果、およびさらなる議論はリクエストに応じてご提供します。

同じ日のほかのニュース

一覧に戻る →

2026/03/17 5:59

MistralがLeanstralをリリース --- (※「Leanstral」はそのまま固有名詞として扱います。)

## Japanese Translation: --- ## Summary Leanstral は **Lean 4 専用に設計された最初のオープンソースコードエージェント** であり、Apache 2.0 ライセンスの下でリリースされ、重みファイルをダウンロードできるほか、一時的な無料 API エンドポイント(`labs-leanstral-2603`)と公開された技術レポートがあります。 このモデルは **証明工学タスクに最適化された非常にスパースな 6 B‑パラメータアーキテクチャ** を採用し、Lean を完璧な検証器として活用した並列推論を実現しています。モデルは **lean‑lsp‑mcp データセット** 上で訓練されており、Mistral Vibe 経由で任意の Model‑Composed Pipelines(MCP)をサポートします。 **FLTEval** で評価すると—FLT プロジェクトにおける形式的証明の完了と新概念の定義をベンチマークし、単独の数学問題ではなく実際のタスクを測定する—Leanstral‑120B‑A6B は **pass@2 スコア 26.3 と pass@4 スコア 29.3** を達成し、GLM5‑744B‑A40B(≈16–20)や Kimi‑K2.5‑1T‑32B よりも優れた性能を示しています。Claude 系列モデルと比較すると、Leanstral は **$36 で pass@2 スコア 26.3** を達成し、Sonnet の $549(スコア 23.7)に対して同等の性能です。また **pass@16 スコア 31.9 が $531** で得られ、Sonnet の $8,031.9 と比較しても大幅に低価格です。Claude Opus 4.6 モデルは依然として最高品質ですが、$1,650 という価格は Leanstral の同等スコア時の費用の約 90 倍以上になります。 実際のケーススタディでは、その実用性が示されています: * Lean 4.29.0‑rc6 の破壊的変更を診断し、`def` と `abbrev` 間の定義等価性問題を特定して正しい修正案を提示し、ユーザーに説明しました。 * Princeton の CS 441 コースから Rocq 定義を Lean に変換し、カスタム記法を扱い、証明が提供されていないプロパティも自動で証明しました。 Leanstral は **Mistral Vibe** に統合されており、ユーザーは `/leanstall` エンドポイントを呼び出してゼロセットアップのコーディングと証明を行えます。一時的な API エンドポイント(`labs-leanstral-2603`)はフィードバックと観測データ収集のために利用可能です。ユーザーはモデル重みをダウンロードし、Leanstral をローカルで実行したり、Mistral Vibe にサインアップして完全なドキュメントへアクセスすることもできます。 この軽量かつコスト効果の高いツールは、開発者や研究者が形式的検証ワークフローを加速させるために活用でき、コミュニティへの貢献と学術界および産業界での広範な採用を促進します。

2026/03/17 3:12

Meta、jemallocへの再挑戦を強化

## Japanese Translation: ``` ## Summary Meta は、Linux カーネルや Meta のインフラストラクチャ内のコンパイラなど重要なコンポーネントを動かす高性能メモリアロケータである jemalloc に注力することを決定しました。この移行は長期的なメリットに基づいており、保守コストの削減、コードベースの近代化、および進捗を遅らせていた技術的負債の排除が目的です。今回の取り組みの一環として、オリジナルのオープンソース jemalloc リポジトリはアーカイブから外されました。 主な改善領域は以下の通りです: - **技術的負債削減** – 効率と信頼性を向上させるためにクリーンアップとリファクタリングを実施。 - **Huge‑Page Allocator (HPA)** – CPU の効率化を図るためにトランスペアレントヒュージページ(THP)の使用を改善。 - **メモリ効率** – パッキング、キャッシュ、およびパージング機構の最適化。 - **AArch64 最適化** – ARM64 プラットフォームでのアウト・オブ・ザ・ボックス性能を確保。 Meta はオープンソースコミュニティに貢献を呼びかけ、jemalloc の将来ロードマップを共に形作ることによって、Meta 自身のソフトウェアユーザーとこのアロケータに依存する広範なエコシステム双方に利益をもたらすよう促しています。 ```

2026/03/17 2:17

小さなWebは、あなたが考えているよりもずっと大きいものです。

## 日本語訳: **概要** 本文は、**「小さなウェブ」― 通常のブラウザとサーバーでアクセスできる非営利・個人向けサイトが依然として膨大かつ活発だが、1 ページだけでまとめるにはあまりにも大きい」という事実を説明しています。** - **背景**:Gemini プロトコルは世界中に約 6,000 のカプセル(capsule)という独自のエコシステムを持ち、そのフォーラムには主に IT 専門家で構成される約 100 名が参加し、商業的利用は推奨していません。 - **手法**:著者は Kagi が公開する更新フィードを配信しているサイトのリストを使用しました。このリストは昨年の約 6,000 件から今日では約 32,000 件に増加し、多くはプライベートブログや企業がホストするサイト(例:Blogger)です。 - **フィルタリングプロセス** 1. 各フィードをダウンロードし、タイムスタンプと有効な XML があることを確認した結果、約 25,000 サイトに絞られました。 2. 月間更新が 1 回未満のサイトを除外すると、約 9,000 のアクティブサイトが残ります。 - **結果**:3 月 15 日時点でこれら 9,000 サイトは 1,251 件の更新(主に新しいコンテンツ追加)を生成し、過去の日付とほぼ同程度です。毎日の更新量を見ると、単一ページの集約は非実用的であり、小さなウェブはその規模と活発さからそのような表示には不向きです。 - **結論**:サイズが大きいにも関わらず、小さなウェブは成長を続け、主流プラットフォームに対する広告なしの代替手段として機能します。 - **行動喚起**:著者は読者に対し、このページへの参照 URL を含む Webmention を送信してもらい、継続的な関与を促しています。

**タイトル** *協働編集について教えられた嘘 – パート 2:なぜ私たちは Yjs を使わないのか* --- - **背景** - 多くのチームは、リアルタイム共同作業が可能なのは Yjs や ShareDB のような専門ライブラリだけだと主張します。 - 実際には、多くのプロジェクトでは CRDT、OT、あるいはカスタム同期機構など、よりシンプルなソリューションを採用し、特定の要件に合わせています。 - **Yjs が見落とされやすい理由** 1. **セットアップの複雑さ** - WebSocket サーバーまたは互換性のあるトランスポート層が必要です。 - 永続化設定や衝突解決の構成は非自明で、手間がかかります。 2. **パフォーマンスへの懸念** - 大規模ドキュメントでは帯域幅オーバーヘッドが急速に増大します。 - 高頻度更新を低レイテンシ環境で処理するクライアントは苦戦しやすいです。 3. **特定ユースケースへの機能制限** - Yjs はテキストと JSON に優れていますが、リッチメディアやバイナリブロブのサポートは標準装備では少ないです。 - カスタム拡張が必要になり、保守負担が増します。 4. **ツールエコシステム** - Quill や ProseMirror など人気エディタとの統合は充実していますが、多くのチームは独自 UI を採用しており、Yjs の組み込みが強引に感じられることがあります。 5. **運用オーバーヘッド** - プレゼンス・アウェアネス層を監視し、サーバーの拡張戦略を別途設計する必要があります。 - **検討すべき代替案** - JSON 向けに特化した CRDT ライブラリ(例:Automerge)。 - 軽量アダプタ付き OT フレームワーク。 - Firebase や Socket.io のような既存リアルタイムプラットフォーム上で構築されたカスタム同期プロトコル。 - **結論** - Yjs は強力ですが、万能解ではありません。 - 適切なツールは、ドキュメントサイズ・更新頻度・データ型・運用制約に応じて選定する必要があります。 | そっか~ニュース