【Show HN】任意のテキストファイルをリアルタイムでマルチプレイヤー同期!「Opbox」が登場
Show HN: Opbox – CRDT based sync for text files on disk
Show HN: Opbox – CRDT based sync for text files on disk
こんにちは!s2.devの共同創業者です。最近「Opbox」というオープンソースのデーモンを開発しました。これは、ディレクトリ内のテキストファイル(コードやMarkdownなど)を、リアルタイムで共同編集可能なマルチプレイヤーワークスペースに変換するツールです。開発のきっかけは、ファイルシステムレベル(つまり、エディタに依存しない方法)でリアルタイム同期が可能かどうかという知的好奇心でした。仕組みはシンプルです:- OpboxのワークスペースはGitリポジトリに近いイメージで、既存のGitリポジトリと併用し、コミットの合間にライブで変更を共有できます。- Opboxデーモン(ob start)を起動すると、ディレクトリ内のファイルイベント(書き込み、削除、新規作成)を監視し、それぞれのファイルをCRDT(Yrs)のドキュメント操作に変換します。- これらのCRDTドキュメントは、ワークスペース内のローカルSQLite DB(Turso)で管理されます。- 操作ログは共有ジャーナル(S2)に保存され、全参加者間で同期されます。- Opboxはジャーナルから他の参加者の操作を読み取り、DB経由でローカルファイルを更新します。実際にObsidianのグラフをリアルタイムで共有してみたところ、驚くほど快適に動作しました。好みのエディタを使いながら、ライブ共同編集を行いたい場合に最適です。特に、自動保存を頻繁に行うエディタと組み合わせると最高の体験が得られます。また、双方向同期の正確性を保証するため、turmoilライブラリを使った決定論的なシミュレーションテスト環境(リポジトリ内のopbox-sim)も構築しています。ぜひ試してみてください!
これめちゃくちゃかっこいいな!ペアプロとか複数のマシンで作業する時にかなり便利そう。正直なところ、こういうツールがgitの代わりになればいいのにって思うけど、たぶん専用のエディタをビルドする必要があるんだろうね。この方向性だと:https://www.inkandswitch.com/upwelling/ (https://www.inkandswitch.com/upwelling/) みたいな感じかな。あと、同じマシン上で複数のプロセス(codexとかnvim)に使えるかなって考えたんだけど、よく考えたらそのユースケースは不要だったわ(勘違いしてた)。