# 競合コピー

> 複数端末で同時に編集が進んだ場合でも、双方の編集内容を失わせない仕組みについて解説します。

Source: https://loomworld.ai/ja/docs/conflict-copies

## 競合が発生するシチュエーション

データ競合の原因は1つしかありません。同一のプロジェクトが2箇所以上で独立して更新されたことです。代表的な例として、オフライン状態で執筆を継続した場合や、2台の端末で同期を挟まずに交互に執筆した場合が挙げられます。再接続時、未送信のローカル編集データとより新しいクラウド版の双方が同時に存在することになりますが、Loomworldが勝手に推測してどちらかを破棄することはありません。

定期的な同期照合が入力中のカーソルの下で勝手に文章を改ざんすることはありません。照合はアプリ復帰時や画面がフォーカスを取り戻したタイミングで実行されるため、競合は常にユーザーが目視で確認できる瞬間に明示的に提示されます。

## システムの処理方針：双方のバージョンを保持

- 現在開いているプロジェクトを最新のクラウド版へと更新します。解決時にはクラウドから再度最新データを取得し、通信に失敗した場合にのみ競合発生時のキャッシュコピーを使用します。
- 未送信のローカルドラフトは、クラウド連携を持たない独立した「競合コピー」プロジェクトとして安全に別名保存されます（独立したローカルプロジェクトとして扱われます）。

どちらの作業内容も決して上書き破棄されません。その代わり、原稿のマージ（統合）作業を作家自身の手で行っていただく設計となっています。主観的な判断を要する創作文章を、システムが機械的に自動統合することはいたしません。

## 競合内容をマージして統合する手順

- **通知ダイアログを安易に閉じない**「Use cloud version」（クラウド版を使用）を選択すると上記の安全な分離処理が実行されます。「Not now」（後で）を選択した場合はそのプロジェクトにのみ適用され、別の競合プロジェクトを開いた際には再度確認ダイアログが表示されます。

- **ロビーで競合コピーを探す**ロビー（プロジェクト一覧）に、クラウド連携アイコンがなく、作成元を示す識別名が付いたプロジェクトが追加されています。これは通常のプロジェクトですので、開いて編集したりエクスポートすることができます。

- **2つのプロジェクトを並べて見比べる**競合コピーにのみ存在する段落をコピーし、メインプロジェクトの適切な位置へ貼り付けます。新しく追加した章やシーンなどの構造的な変更については、一括上書きではなく行ごとに差分を確認しながら統合することをお勧めします。

- **完了後にコピーを整理する**統合が完了したら、競合コピーはゴミ箱へ移動するかレコードを削除して整理します。デスクトップ版では単なる1つのローカルプロジェクトであり、レコードを整理しても他のデータに影響はありません。

## 実際の競合発生事例

飛行機の中で3つの章を書き進め、ネットに繋がないままノートPCを閉じたとします。翌日、職場のデスクトップPCで同じプロジェクトを開くと、クラウド上にはまだ搭乗前の古いバージョンが保存されており、飛行機内で書いた3章はアップロードされていません。ここで飛行機のノートPCが再びネットに接続されると、双方で編集が進んでいるため本格的な競合が発生します。

このとき画面上にはクラウド側が新しい旨のアラートが表示されます。確定すると、開いているプロジェクトはクラウドの状態へ同期され、機内で執筆した3つの章はロビーに「競合コピー」として安全に退避されます。あとは職場のPCでそのコピーを開き、シーンごとに文章をメインプロジェクトへ戻していきます（プロジェクト全体を粗暴に置き換えないでください。職場のPCで進めたここ数日分の作業が消えてしまいます）。

## 競合を未然に防ぐ執筆習慣

- 作業していた端末を閉じる前に、トップバーの表示が「Synced」（同期済み）になるのを確認する。
- 同じ時間帯は1台のメイン端末に絞って執筆し、他の端末は閲覧・確認用として使用する。
- 長時間の執筆セッションを終えた後は、プロジェクトパックを1回エクスポートしておく（第3の安全なバックアップ）。

## 制限事項とトラブルシューティング

競合コピーは通常のプロジェクトとして扱われます。勝手にロールバックしたり自動マージされたりすることはなく、メインプロジェクトの更新に合わせて変更されることもありません。どちらが新しいか判断に迷った場合は、トップバーのタイムスタンプ、各章の文字数、最近の編集履歴を照合してください。判断がつかず両方を一時保存しておきたい場合は、切り貼りを行う前に双方のプロジェクトパックをエクスポートしてください。

同期の順序とハートビートの詳細については、[クラウド版とローカルキャッシュ](https://loomworld.ai/ja/docs/sync-model) を参照してください。
