【そうさへんかん、オーティー】
操作変換(OT) とは?
最終更新:
💡 同時編集でずれた操作の位置を合わせる
共同編集で同時に届く挿入・削除などの操作を、ほかの操作の影響に合わせて変換する考え方です。文字位置のずれを補正する例と、実装上の条件を説明します。
📌 このページのポイント
- OTはOperational Transformation。ほかの編集の影響に合わせて操作を変換する
- 削除対象より手前に文字が挿入されると、元の削除位置をずらす必要がある
- 同じ位置への挿入なども含め、変換規則と操作の順序・履歴を扱う設計が必要
2人で同じ文書を書いても大丈夫なのは、なぜ?
共同編集にはいくつかの仕組みがあるけれど、OTはその1つだよ。Operational Transformationの略で、日本語では操作変換というんだ。誰かの編集で文書が変わったとき、ほかの人の編集操作をその影響に合わせて変換するよ。
文字の位置が変わるって、どんな場面?
最初の文書がABCだとして、AさんはBの前にXを挿入し、BさんはCを削除するとしよう。どちらも最初のABCを見て操作したんだ。Aさんの操作を先に反映するとAXBCになるので、Cの位置は1文字ぶん後ろにずれるよ。
そのまま元の位置を削除すると?
0から数えた元の削除位置2を、AXBCにそのまま適用するとBを消してAXCになってしまうね。そこで削除位置を3に変換すると、狙っていたCを消してAXBになるんだ。これは挿入と削除の位置を説明するための単純な例だよ。
Bさんの削除が先なら、結果は違うの?
この例では先にCを消してABにし、その後Bの前にXを挿入すると、同じAXBになるよ。ただし同じ位置に2人が文字を挿入する場合などは、どちらを先に並べるかの規則も必要なんだ。位置をずらすだけで、あらゆる編集を解決できるわけではないよ。
実際のアプリでは、何を使うの?
CRDTとは、どっちが優れているの?
まとめ:ざっくりこれだけ覚えればOK!
「操作変換(OT)」って出てきたら「同時編集でずれた操作を合わせる仕組み」と思えばだいたいOK!
📖 おまけ:英語の意味
「OT (Operational Transformation)」 = 操作変換
💬 "Operational"は「操作(挿入・削除)」の意。ユーザーAの操作がユーザーBの操作と競合したとき、互いの操作を変換して整合性を保つんだよ。