> ## Documentation Index
> Fetch the complete documentation index at: https://docs.diversion.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# ソフトロック

> 誰もブロックせずに、他の誰かがファイルを編集していることを確認できる

**ソフトロック** は、他の誰かが現在そのファイルを編集していることを示す Diversion のシグナルです。これはインジケーターであってバリアではありません。作業を始める前にファイルの編集権を取得する必要はなく、誰かがあなたの作業を止めることもできません。

ソフトロックはすべてのプランのすべてのリポジトリでデフォルトで有効になっており、構成することは何もありません。編集を実際にブロックする必要がある場合は [ハードロック](/ja/hard-locks) を参照してください。

<Note>
  Perforce の排他チェックアウトのように、解除されるまでファイルを保持するモデルから来た方は、両モデルの比較について [Perforce から来た方へ](/ja/coming_from_perforce#ソフトロック-vs-ハードロック) を参照してください。
</Note>

## ソフトロックが表示される場所

インジケーターは、リポジトリ内の他の場所で変更されたファイル — 別のワークスペースにある未コミットの編集、または別のブランチ上のコミット — をフラグします。

**デスクトップおよび Web アプリ** では、ツリービュー内のファイルの横にバッジが表示されます。

<img src="https://mintcdn.com/diversion-2/7VCFp76ua6EqZEPF/images/soft-locks/soft-lock-indicator-tree-view.png?fit=max&auto=format&n=7VCFp76ua6EqZEPF&q=85&s=d511f515fa2a49f3ec4a5d8cb95cc1a6" alt="ツリービュー内のファイル横に表示されたソフトロックインジケーター" style={{width: '300px', borderRadius: '1.0rem', border: '.2rem solid #555', boxShadow: '0 0 1rem #888'}} width="373" height="52" data-path="images/soft-locks/soft-lock-indicator-tree-view.png" />

バッジをクリックすると、何が変更されたか、誰が変更したか、どこで変更されたかを確認できます。

<img src="https://mintcdn.com/diversion-2/7VCFp76ua6EqZEPF/images/soft-locks/changed-in-other-refs.png?fit=max&auto=format&n=7VCFp76ua6EqZEPF&q=85&s=3ba18b57cbed72fa5ffa31936b5e093b" alt="ファイルが別の ref で、誰によって、いつ、どのブランチで変更されたかを表示するパネル" style={{width: '500px', borderRadius: '1.0rem', border: '.2rem solid #555', boxShadow: '0 0 1rem #888'}} width="669" height="222" data-path="images/soft-locks/changed-in-other-refs.png" />

**Unreal Engine** では、他の誰かが編集中のアセットを開くと、代わりに確認プロンプトが表示されます。そのまま確認して作業を続けるか、[プロンプトを無効化](/ja/unreal/unreal-engine-plugin#ソフトロック警告を無効にする) することができます。

一度に大量のファイルにバッジが表示される場合、通常の原因は 1 つのワークスペースが多数の未コミットの変更を保持していることです。[マージ競合の警告](/ja/basic/working-in-parallel#マージ競合の警告) を参照してください。

## 2 人が同じファイルを編集するとどうなるか

ソフトロックは誰もブロックしないため、2 人が同じファイルを同時に編集でき、Diversion は差分を後から調整します。両者が同じブランチにいる場合の流れは次のとおりです:

<Steps>
  <Step title="ユーザー A が編集を開始する">
    ユーザー A が `Level.umap` を変更します。何も予約されず、ファイルは全員にとって書き込み可能なままです。
  </Step>

  <Step title="ユーザー B にソフトロックが表示される">
    そのファイルには、ブランチ上の他の全員に対して警告アイコンが表示され、クリックするとユーザー A が編集中であることが分かります。
  </Step>

  <Step title="ユーザー B もそのファイルを編集する">
    何もブロックしません。待つべきチェックアウトも、解除を追いかける相手もいません。
  </Step>

  <Step title="ユーザー B が先にコミットする">
    ユーザー B のバージョンがブランチ上の最新になります。
  </Step>

  <Step title="ユーザー A に競合が届く">
    Auto-Update が有効（デフォルト）の場合、そのコミットはユーザー A のワークスペースに流れ込みます。ユーザー A は同じファイルに未コミットの変更を持っているため、Diversion はそれを上書きしません。ユーザー A のローカルバージョンを `Level.dv-conflict.umap` として元のファイルと並べて保存し、ユーザー B のコミット済みバージョンを元のパスに配置します。これは [同期競合](/ja/concepts/conflicts#同期競合) です。
  </Step>

  <Step title="ユーザー A が解決する">
    ユーザー A は 2 つのバージョンを比較して残す方を決め、`.dv-conflict` ファイルを削除します。詳細な手順は [同期競合の解決](/ja/concepts/conflicts#同期競合の解決) を参照してください。
  </Step>
</Steps>

両ユーザーが **別々のブランチ** にいる場合は、誰かがマージするまで何も起こりません。競合は代わりにマージ競合ウィンドウに現れ、そこで受信バージョン、現在のバージョン、または両方の組み合わせを選択します。[マージ競合](/ja/basic/working-in-parallel#マージ競合) を参照してください。

**いずれの場合も、どちらのバージョンも失われません。** 勝たなかった方のバージョンも保持されます — 同じブランチ上では `.dv-conflict` バックアップとして、マージ後は別ブランチの履歴に残ります。Diversion が採用しているトレードオフは、事前にブロックする代わりに、差分を事後に解消することです。

## ソフトロックとバイナリファイル

テキストファイルは行単位でマージできるため、そこでの競合は通常わずかな手直しで済みます。`.umap`、`.uasset`、`.fbx` などのバイナリアセットはマージできません。どちらか 1 つのバージョンが勝ち、もう一方の作業はやり直しが必要になります。例外は Blueprint で、[Unreal プラグイン](/ja/unreal/ue-plugin-merge-conflicts) を使うとマージできます。

そのため、ソフトロックインジケーターはまさにそうしたファイルで最も価値があります。事後に解決するものではなく、作業を始める前にチームメイトに声をかけるためのきっかけとして扱ってください。

チームにとってそれが十分な信頼性でない場合、[ハードロック](/ja/hard-locks) は 2 つ目のコミットを直接ブロックし、拡張子で一致するファイルを自動的にロックできます。ハードロックは **Studio** および **Enterprise** プランで利用可能です。
