wiki:Ja:Help/Concepts/Conflict

Conflict

JOSMは OSMオブジェクト のコピーを、ローカルの操作端末上で管理しています。それらのデータは ファイルから メモリ上に展開することもできますし、 OSMサーバからダウンロードして使う ことも可能です。あなたがマップへオブジェクトを修正したり追加したりする際、あなたの編集はこのコピーに対して行われることとなります。コピーされたデータに含まれるオブジェクトはまだサーバ側にも保存されていますので、あなた以外のマッパーがサーバからデータをダウンロードして、それらのデータをアップロードすることも可能です。

これはつまり、あなたは現在編集している対象のオブジェクトを "専有している" わけではない、ということを指します。あなたは常に他のマッパーたちとデータを "共有している" 状態にあります。あなたがサーバへデータをアップロードする際、もしあなたより先に、他の誰かがあなたと同じデータを編集してアップロードしたとしたら、サーバ上のデータには不整合が発生します。ほとんどの場合、JOSMはそれらの不整合をバックグラウンドで自動的に処理しますが、中には2つの バージョン の差異を自動的に解決できない場合が発生します。その場合、編集データの 競合 が発生します。

競合 とは、2つのバージョンのオブジェクトの差異をJOSMが自動的に解決できないことを指します。

データ編集レイヤーはそれぞれが独立した 競合リストダイアログ をもち、未解決の競合を管理しています。このダイアログから、競合の解決ダイアログ (en) を起動させることが可能です。

競合の解決 を行うことによって、2つのバージョンの間にあるそれぞれの差異について、どちらが正しいのかを決定することが可能です。この工程は マージ(結合)と呼ばれることがあります。

データダウンロード/データ更新時の競合発生

OSMサーバから手元のJOSMの作業レイヤーへオブジェクトをダウンロードする際、サーバから転送されてくるオブジェクトとあなたのJOSM上にあるオブジェクトが "衝突" する可能性があります。大抵の場合はJOSMが自動的に衝突した内容を処理しますが、状況によってはそれができないことがあります。 例えばこのような状況です:

  1. あなたは id番号 1のノードデータをサーバからダウンロードしました。そのノードには nameタグに "わたしのなまえ" が当てられています。
  2. あなたはそのノードの nameを "もしかしてこのなまえ?" に変更しました。同時に、あなた以外のマッパーもそのノード情報をダウンロードし、nameを "ほんとうはこのなまえ" に変更してからアップロードしました。
  3. あなたはアップロード前に、メニューから ファイル -> source:trunk/resources/images/updatedata.svg データの更新 を選択しました。サーバから新しい情報がもう一度読み込まれ、サーバ上に存在する name タグの "ほんとうはこのなまえ" という情報が、あなたのJOSMに送付されます。そして、サーバから送られてきた"ほんとうはこのなまえ"という情報と、あなたがJOSMで編集した"もしかしてこのなまえ?"という情報は、どちらが正しいのか判断がつかない状態になります。

JOSMではこの問題を自動的に解決することができないため、結果として 競合 が発生します。JOSMでは、多くの場合、以下のメッセージが表示されます:

アップロード時の競合発生

あなたが編集を行った後、OSMサーバにデータをアップロードする際にも、あなたの編集と他のマッパーの編集の間で "衝突"が発生する可能性があります。例えばもし、既にサーバ上で削除されているオブジェクトをあなたがもう一度削除した場合は、JOSMはその削除命令を黙ってスキップし、エラー表示も行いません。しかしほとんどの場合において、JOSMで自動的に処理を行うことができません。 その例を以下に示します

  1. あなたは id番号 1のノードデータをサーバからダウンロードしました。そのノードには nameタグに "わたしのなまえ" が当てられています。
  2. あなた以外のマッパーもそのノード情報をダウンロードし、nameを "ほんとうはこのなまえ" に変更してからアップロードしました。
  3. あなたはそのノードの nameを "もしかしてこのなまえ?" に変更し、アップロードしました。
  4. サーバ上で、あなたのアップロードした内容と、他のマッパーがアップロードした内容が衝突します

JOSMではこの問題を自動的に解決することができないため、結果として 競合 が発生します。JOSMでは、多くの場合、以下のメッセージが表示されます:

データマージ時の競合

JOSMの機能として、あるレイヤーに存在しているデータを、別のレイヤーに存在するデータへマージすることが可能です。繰り返しますが、この動作によって、1つのオブジェクトにおける編集バージョン情報の "衝突"が引き起こされます。

もしJOSMが自動的に処理を実行できない場合は 競合が発生します。

競合の解決

各データレイヤーは、まだ解決されていない競合の一覧をそれぞれ独立して管理しています。 競合の一覧ダイアログを参照することで、それぞれのレイヤーの競合を確認することができます。 ダイアログで表示されるそれぞれの 競合 の一覧では、競合の解決ダイアログ (en)を起動させ、競合を解決することができます(また、する必要があります)。

競合の解決はとても重要です。例えば、未解決の競合が残っている場合はOSMサーバへのデータアップロードは行うことができません。

技術的バックグラウンド

オブジェクトになんらかの変更を与えた場合、変更セット毎に、サーバはオブジェクトのバージョン番号を1つ増加させます。(ウェイ1222 の履歴表示などから確認することができます) JOSMは、サーバからオブジェクトをダウンロードした際のバージョン番号を記録していて、データのアップロード時にその番号を再報告します。もしサーバ側のオブジェクトのほうがバージョン番号が高かった場合(つまり誰か他のマッパーによって編集が行われていた場合)は、編集したデータのアップロードは拒否されます。この状況になった場合、JOSMは競合を生成します。競合の解決ダイアログで "あなたのバージョン" と表示されている側が、古いバージョンの情報であり、あなたが編集した内容が適用されています。"相手のバージョン"と表示されている側が、サーバから自動的にダウンロードされた最新版のオブジェクトになります。

参考情報


ヘルプに戻る

Last modified 12 months ago Last modified on 2020-03-10T18:40:27+01:00