協調編集
iwa-cms では、複数のユーザーが同時に同じコンテンツを編集できます。
機能概要
- リアルタイム同期: 編集内容は即座に他のユーザーに反映
- 自動保存: 変更は約 2 秒後に自動保存
- 競合解決: CRDT 技術により、同時編集でも内容が失われない
- カーソル共有: 他のユーザーの編集位置が表示される
協調編集の有効化
協調編集は、既存のコンテンツを編集する際に自動的に有効になります。
確認方法
編集画面で「自動保存」と表示されていれば、協調編集モードです。
同期される項目
| 項目 | 同期タイミング | 説明 |
|---|---|---|
| 本文 | リアルタイム | 入力と同時に他ユーザーに反映 |
| タイトル | リアルタイム | 入力と同時に他ユーザーに反映 |
| カテゴリ | リアルタイム | 選択と同時に他ユーザーに反映 |
| 公開状態 | 操作完了後 | API 成功後に他ユーザーに通知 |
接続状態
画面に表示されるインジケーターで接続状態を確認できます。
| 状態 | 色 | 説明 |
|---|---|---|
| 同期済み | 🟢 緑 | 正常に接続・同期完了 |
| 同期中 | 🟡 黄 | データを同期中 |
| 切断 | 🔴 赤 | 接続が切れている |
他のユーザーの編集
カーソル位置
他のユーザーがどこを編集しているか、色付きのカーソルで表示されます。
ユーザー識別
各ユーザーは異なる色で識別されます。協調編集中は、誰が編集しているかが視覚的に分かります。
自動保存の仕組み
- ユーザーが編集
- 変更が Y.js(CRDT)で同期
- 2 秒間変更がなければ自動保存
- サーバーに保存完了
保存タイミング
連続して入力している間は保存されず、入力が止まってから約 2 秒後に保存されます。これにより、頻繁な保存による負荷を防いでいます。
公開状態の同期
公開/非公開の変更は、他のフィールドとは異なる方法で同期されます。
- ユーザー A が「公開」をクリック
- API でサーバーに送信
- サーバーで権限チェック(Publisher 以上)
- DB 更新完了
- ユーザー A の画面が更新
- 他のユーザーにリアルタイム通知
- 全員の画面で公開状態が更新
権限
公開/非公開の変更には Publisher 以上の権限が必要です。
オフライン時の動作
ネットワークが切断された場合:
- 編集は継続可能: ローカルで編集を続けられます
- 自動再接続: ネットワーク復旧時に自動で再接続
- 変更の同期: 再接続後、ローカルの変更が自動的に同期
競合解決
オフライン中に複数ユーザーが同じ箇所を編集した場合も、CRDT 技術により自動的にマージされます。
注意事項
保存ボタンについて
協調編集モードでは自動保存されるため、通常の「保存」ボタンは主にバックアップ用途です。
ブラウザを閉じる前
自動保存は 2 秒の遅延があるため、編集直後にブラウザを閉じると、最後の変更が保存されない可能性があります。
推奨
編集完了後、「自動保存」表示を確認してからページを離れてください。
必要な権限
| 権限 | 協調編集での操作 |
|---|---|
| Admin | すべて可能 |
| Publisher | 編集 + 公開/非公開 |
| Write | 編集のみ |
| Read | 閲覧のみ(編集不可) |