Readme
共同SQL編集とは?
共同SQL編集では、複数人がそれぞれのブラウザーから、同時にクエリを作成したりレビューしたりできます。画面を共有したり、クエリをチャットに貼り付けたりせずに、同僚とクエリを作成したり、マイグレーションを一緒にレビューしたり、SQLを教えたりするのに便利です。
全員の表示内容を同じに保つため、変更はテキスト全体ではなく小さな編集内容として送信され、適用順序は1台のサーバーが決定します。同時に行われた編集は互いに調整されるため、どちらの変更も反映されます。
ツールの説明
このツールは、構文ハイライト機能を備えた共有SQLエディターです。ツールを開いてリンクを共有すると、同じルームにいる全員が同じクエリをリアルタイムで編集し、互いのカーソルを確認できます。また、ワンクリックで全員分のSQLを検証、整形、または最小化できます。
検証では、node-sql-parserを使ってSQLを解析します。整形では、文字列やコメントに手を加えず、主要な句(SELECT、FROM、WHERE、JOINなど)をそれぞれ別の行に配置します。最小化では、クエリを1行にまとめます。新しいテキストで置き換わるのは変更された行だけなので、その間に他の人が入力した内容はそのまま残ります。
機能
- リアルタイム編集 - 全員の変更がすぐに反映され、同時に入力された変更も統合されます
- カーソルと選択範囲 - 各自の位置を、名前の横に表示される色で確認できます
- 検証 - SQLを解析できるか確認し、解析できない場合はパーサーのメッセージを表示します
- 整形と最小化 - クエリを句ごとに整形するか、1行にまとめ、ルーム内の全員に反映します
- コピーとダウンロード - クエリを .sql ファイルとして保存できます
仕組み
ページを開くと、同期サーバー上にルームが作成され、そのリンクがアドレスバーに表示されます。リンクを開いた全員が同じルームに参加し、同じドキュメントを確認できます。
変更は、テキスト全体ではなく、どこにどの文字が挿入または削除されたかを示す小さな説明としてサーバーに送信されます。サーバーは全員の変更を1つの順序に並べ、古いバージョンをもとに行われた変更を先に届いた変更の後ろに移動してから、結果を全員に送信します。自分の入力はすぐに表示され、他の人の変更はその内容と統合されるため、2人が同時に編集しても入力内容が失われることはありません。
ドキュメントは、ルームが開いている間だけサーバーのメモリに保持されます。ページを再読み込みすると、その時点のテキストが残ったルームに再参加できます。全員が退出すると、ルームとテキストは削除されます。
制限事項
- 1つのルームに参加できる人数は最大20人、文字数は最大100,000文字です。
- ルームが閉じた後は何も保存されません。最後の参加者が退出する前にテキストをダウンロードしてください。
- ドキュメント全体を何度も連続して貼り付けるなど、非常に高速または大規模な変更は拒否され、エディターにルーム内のテキストが再読み込みされます。
- ルームのリンクを別の共同編集エディターで開くと(たとえば、SQLルームをJavaScriptエディターで開いた場合)、「ルームが見つかりません」と表示されます。ルームごとに使用できる言語が決まっています。
- 検証で確認するのは構文のみです。クエリがデータベースに対して実行されることはありません。