JA:Change rollback

From OpenStreetMap Wiki
Jump to navigation Jump to search

変更の巻き戻しとは破壊行為の対応策のひとつで、〈間違い編集〉を旧版のデータに戻します(不正行為ではないが処理ツールは同じ)。これをリバートするとも呼びます。

削除の取り消し

削除限定の特例については Undoing deletions を参照。

ノードやウェイが少数の場合は編集機能で

JOSM

JOSM には〈取り消し〉機能があり、旧版に巻き戻す対象の指定ができますが、プログラムにデータをダウンロードした時点までしかさかのぼれません。

JOSM のプラグインとして Undelete plugin があり、削除されたリレーション、ウェイ、ノードの削除取り消し(訳注:復元)ができます。これは手動で削除されたウェイ manually undelete node を元に戻します。

変更をアップロード済みの場合、別のプラグイン Reverter plugin によって変更セットの巻き戻しができます。ただし細心の注意を払う必要があり - リバートの間違いにより他のマッパーの作業を台無しにしてしまう可能性があります(かつその結果の巻き戻しをさらに困難にするからです)。自信がないなら連絡手段で応援を頼んでください(チャットルームIRC、「ヘルプ」ページもしくはメーリングリスト。)

リバートスクリプトで変更セットごと巻き戻す

変更セットとは特定のユーザーが固有の時間に実行した一連の変更のことです。問題のある変更一式を識別して処理するのに役立ちます(ノードの大幅な移動や破壊行為)。リバートスクリプト revert script は巻き戻す対象を特定するために変更セットを使います。ところが変更セットの巻き戻しは自動処理できないようにしてあります。データベースから除去された変更巻き戻しの痕跡も自動では消えません。その代わり、まるで誰か人間が巻き戻された変更セットを目視で検討した上で、変更済みの項目を手動で旧版の状態に復元したときと同じ成果をもたらすのが、リバートスクリプトの働きです。

Revert scripts には全件の変更セットを取り消しできるものの、処理の細部まで理解した人のみ実行するべきです。現実問題としてほとんどの人は誰かに依頼するか、もしくはスクリプトの執筆者に特定の分野に関してスクリプトを代行で走らせるように頼むべきです。なぜなら安全策がないスクリプトだからです。結果として破壊するかもしれないのだから、きちんと確信があるかどうか吟味してください。問題だと感じる編集が絶対に悪意もしくは偶発的に実行されたと言い切れない限り、これを実行してはいけません。少しでも自信がないなら、まず先にメーリングリストで話し合い、それから実施するべきです。

クリーン/ダーティーなリバート

クリーンなリバートとは、変更セット内のすべてのオブジェクトが特定期間に変更されていない場合を指します。その場合、巻き戻し(リバート)による副作用はありません。ダーティーなリバートとはリバート対象に特定期間に変更されたデータを1件でもふくむ場合のことです。

現状では、リバートスクリプトはダーティーなオブジェクトを既定でリバートしません(とは言ってもスクリプト内で変更可能)。詳細は2008年時点の変更セットとリバート案#リバート(英語版)ならびに Revert scripts をご参照ください。 JOSM reverterプラグインは対話的にダーティーなリバートを処理できますが、効果的ではあるものの時間が多くかかる場合があります。

他のマッパーが問題発生後に編集を加えたデータは内在的にリバートが困難であり、それぞれのマッパーの変更点を細かく分析しなければなりません。意図したのは壊れたデータの「修正」だった(例=OSM 上で架空の道路と実存する道路を結ぼうとした)のか、実存する新規の地物を追加して OSM が取りこぼさないようにしたのでしょうか?

関連項目