(57)【要約】【課題】より柔軟な編集処理を行うことができる。【解決手段】コンピュータに実行させる旅程編集処理プログラムは、旅程計画について、ユーザアカウントに対応する複数の編集処理を受け付ける。旅程編集処理プログラムは、受け付けた前記複数の編集処理のうち、同じユーザアカウントに対応する編集処理を取り消すことを指示する指示部品を、各ユーザアカウントについて表示し、表示された前記指示部品のうち、指定された指示部品に対応するユーザアカウントに対応する編集処理を取り消す処理を実行する。【選択図】図２
2018018462.tif 000002
【特許請求の範囲】
【請求項１】
旅程計画について、ユーザアカウントに対応する複数の編集処理を受け付け、
受け付けた前記複数の編集処理のうち、同じユーザアカウントに対応する編集処理を取り消すことを指示する指示部品を、各ユーザアカウントについて表示し、
表示された前記指示部品のうち、指定された指示部品に対応するユーザアカウントに対応する編集処理を取り消す処理を実行する、
処理をコンピュータに実行させることを特徴とする旅程編集処理プログラム。
【請求項２】
前記指示部品は、同じユーザアカウントに対応する複数の編集処理を取り消すことを指示し、前記取り消す処理は、前記同じユーザアカウントに対応する複数の編集処理を取り消す処理である、ことを特徴とする請求項１に記載の旅程編集処理プログラム。
【請求項３】
前記取り消す処理は、前記取り消す処理を実施する際、編集処理の関連付けを記憶した記憶部を参照し、前記指定された指示部品に対応するユーザアカウントに対応する編集処理に含まれる第１の編集処理と関連付いて記憶された他のユーザアカウントに対応する編集処理に含まれる第２の編集処理を検出すると、前記第２の編集処理を取り消す処理を含む、ことを特徴とする請求項１に記載の旅程編集処理プログラム。
【請求項４】
前記複数の編集処理の後の編集処理であって、前記旅程計画に対する前記第１のユーザアカウントに対応する第１の編集処理が検出された場合、前記複数の処理に含まれる前記第１のユーザアカウントに対応する編集処理のうち最後の編集処理がなされた時刻と前記第１の編集処理がなされた時刻との間の経過時間を特定し、
特定した前記経過時間が閾値以内である場合は、前記第１のユーザアカウントに対応する編集処理と前記第１の編集処理とを取り消すことを指示する他の指示部品を表示させる、ことを特徴とする請求項１に記載の旅程編集処理プログラム。
【請求項５】
特定した前記経過時間が前記閾値を超える場合は、前記第１のユーザアカウントに対応する編集処理と前記第１の編集処理とのうち前記第１の編集処理のみを取り消すことを指定する他の指示部品を表示させる、ことを特徴とする請求項４に記載の旅程編集処理プログラム。
【請求項６】
前記複数の編集処理のうち、削除に関する編集処理が含まれる場合は、前記複数の編集処理のうち前記削除に関する編集処理のみを取り消すことを指定する他の指示部品を表示させる、ことを特徴とする請求項１に記載の旅程編集処理プログラム。
【請求項７】
旅程計画について、ユーザアカウントに対応する複数の編集処理を受け付けるとともに、前記複数の編集処理のうち関連する編集処理を対応づけて記憶部に記憶させ、
特定のユーザアカウントに対応する１又は複数の編集処理の取り消し指示に応じて前記１又は複数の編集処理を取り消す際に、前記１又は複数の編集処理に関連づけられた他のユーザアカウントに対応する編集処理が前記記憶部に記憶されたことを検出すると、前記前記１又は複数の編集処理に加えて前記他のユーザアカウントに対応する編集処理を取り消す、
処理をコンピュータに実行させることを特徴とする旅程編集処理プログラム。
【請求項８】
旅程計画について、ユーザアカウントに対応する複数の編集処理を受け付け、
受け付けた前記複数の編集処理のうち、同じユーザアカウントに対応する編集処理を取り消すことを指示する指示部品を、各ユーザアカウントについて表示し、
表示された前記指示部品のうち、指定された指示部品に対応するユーザアカウントに対応する編集処理を取り消す処理を実行する、
処理をコンピュータが実行することを特徴とする旅程編集処理方法。
【請求項９】
旅程計画について、ユーザアカウントに対応する複数の編集処理を受け付け、
受け付けた前記複数の編集処理のうち、同じユーザアカウントに対応する編集処理を取り消すことを指示する指示部品を、各ユーザアカウントについて表示し、
表示された前記指示部品のうち、指定された指示部品に対応するユーザアカウントに対応する編集処理を取り消す処理を実行する、
処理を実行する機能を有する制御部を備えることを特徴とする旅程編集処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、旅程の編集処理に関する。
【背景技術】
【０００２】
旅行プランを複数ユーザで共有しながら編集することができるプログラムなどが知られている。編集処理が進んだ旅行プランについて、ある過去の時点までの旅行プランまで編集処理を遡りたい場合、ある過去の時点までのユーザが行った編集処理をクリアできると便利である。
【０００３】
クライアントで更新したデータについて、同一アカウントもしくは管理者などの権限を保持する場合に限り、更新履歴を用いてバックアップを管理するバックアップシステムが知られている（例えば、特許文献１を参照）。
【０００４】
並列処理によりスレッドを実行する複数のコアモデル間で、定期的に復元ポイントを設定し、設定した復元ポイントにおけるコアモデルの状態を再現するシミュレーション方法が知られている（例えば、特許文献２を参照）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１２−２２５９７号公報
【特許文献２】特開２００８−２１０１０７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
編集処理が進んだ旅行プランについて、ある過去の時点までの旅行プランまで編集処理を遡りたい場合、ある過去の時点までの全ユーザが行った編集処理もクリアされてしまう。
【０００７】
１つの側面において、本発明は、より柔軟な編集処理を実現することを目的とする。
【課題を解決するための手段】
【０００８】
コンピュータに実行させる旅程編集処理プログラムは、旅程計画について、ユーザアカウントに対応する複数の編集処理を受け付ける。旅程編集処理プログラムは、受け付けた前記複数の編集処理のうち、同じユーザアカウントに対応する編集処理を取り消すことを指示する指示部品を、各ユーザアカウントについて表示し、表示された前記指示部品のうち、指定された指示部品に対応するユーザアカウントに対応する編集処理を取り消す処理を実行する。
【発明の効果】
【０００９】
より柔軟な編集処理を行うことができる。
【図面の簡単な説明】
【００１０】
【図１】本実施形態に係る旅程編集画面の例を説明する図である。
【図２】本実施形態に係る情報処理装置の構成の例を説明する図である。
【図３】ロールバックグループの生成例（その１）を説明する図である。
【図４】ロールバックグループの生成例（その２）を説明する図である。
【図５】ロールバックグループの生成例（その３）を説明する図である。
【図６】ロールバックグループの生成例（その３）に対応するテーブル処理の例を説明する図である。
【図７】ロールバックグループの生成例（その４）を説明する図である。
【図８】ロールバックグループの生成例（その５）を説明する図である。
【図９】ロールバックグループの生成例（その５）で生成されるテーブルの例を説明する図である。
【図１０】ロールバックグループを使用して依存関係を持つ編集処理をクリアする処理の例を説明する図である。
【図１１】情報処理装置のハードウェア構成の例を示す図である。
【図１２】ロールバックグループを生成する処理の例を説明するフローチャートである。
【図１３Ａ】ロールバック処理の例を説明するフローチャートである。
【図１３Ｂ】ロールバック処理の例を説明するフローチャートである。
【発明を実施するための形態】
【００１１】
以下、図面を参照しながら、実施形態を詳細に説明する。
図１は、本実施形態に係る旅程編集画面の例を説明する図である。旅程編集画面１００は、例えば、スマートフォン（携帯端末）やコンピュータのモニタに表示される画面の一例である。旅程編集画面１００は、編集が許可された複数のユーザに編集可能に提供される。又、旅程編集画面１００は、編集が許可された複数のユーザに共有される。これらの旅程編集処理は、情報処理装置で管理される。
【００１２】
旅程編集画面１００は、タイトル１１０、ルート１２０、編集履歴１３０を含む。タイトル１１０は、編集中の旅程のタイトル名を示す情報である。ルート１２０は、編集中の旅程のスポットを示す情報である。スポットは、例えば、特定の施設や観光地の名前、位置情報などである。図１の例においてルート１２０は、「Spot A」、「Spot B」、「Spot C」、「Spot D」を順番に回るルートである。旅程編集画面１００は、各スポット情報を削除するため、各スポットに対応するdeleteボタン１２１ａ〜１２１ｄを含む。deleteボタン１２１ａ〜１２１ｄなどの何れかが押下されると、対応するスポット情報が編集中の旅程から削除される。なお、押下されたdeleteボタンに対応するスポット情報が編集中の旅程から削除されると、同じ旅程を編集中の他のユーザの旅程編集画面１００からもdeleteボタンに対応するスポット情報が削除される。
【００１３】
旅程編集画面１００は、スポット情報を追加するため、add spotボタン１２２ａ〜１２１ｃを含む。図１の例では、add spotボタン１２２ａを押下すると、Spot AとSpot Bの間に新たなスポットを旅程に追加することができる。図１の例では、add spotボタン１２２ｂを押下すると、Spot BとSpot Cの間に新たなスポットを旅程に追加することができる。図１の例では、add spotボタン１２２ｃを押下すると、Spot CとSpot Dの間に新たなスポットを旅程に追加することができる。なお、編集中の旅程に新たなスポットが追加されると、同じ旅程を編集中の他のユーザの旅程編集画面１００からも新たなスポット情報が追加される。なお、図１においてルート１２０に含まれるスポットの数やdeleteボタン１２１の数、add spot１２２のボタンの数などは、一例であり、数を限定するものではない。
【００１４】
図１のルート１２０は、「Spot A」、「Spot B」、「Spot C」、「Spot D」を順番に回るルートであるものの、各ユーザは、これらのスポットの順番を並べ替え（ソート）することができる。
【００１５】
編集履歴１３０は、編集中の旅程の過去の編集処理の履歴情報である。図１の例において編集履歴１３０は、RbkGrp（ロールバックグループ）１〜RbkGrp３を含む。RbkGrp１は、例えば、ある時間帯にユーザＡが行った編集処理の履歴情報である。図１のRbkGrp１は、RbkGrp１に対応して「この処理を取り消す」と記載された取り消しボタン１３１ａ（取り消し指示部品）を備える。取り消しボタン１３１ａが押下されると、RbkGrp１に対応する編集処理を取り消す処理が実行される。RbkGrp２は、例えば、ある時間帯にユーザＢが行った編集処理の履歴情報である。図１のRbkGrp２は、RbkGrp２に対応して「この処理を取り消す」と記載された取り消しボタン１３１ｂを備える。取り消しボタン１３１ｂが押下されると、RbkGrp２に対応する編集処理を取り消す処理が実行される。RbkGrp３は、例えば、ある時間帯にユーザＣが行った編集処理の履歴情報である。図１のRbkGrp３は、RbkGrp３に対応して「この処理を取り消す」と記載された取り消しボタン１３１ｃを備える。取り消しボタン１３１ｃが押下されると、RbkGrp３に対応する編集処理を取り消す処理が実行される。ここで、ロールバックグループに含まれる編集処理は、スポットの追加、削除、並び替えの何れかの処理である。
【００１６】
このように、各ロールバックグループは、ある時間帯の編集処理をユーザ毎に対応づけて記憶している履歴情報である。そのため本実施形態のようにロールバックグループを指定して編集処理を取り消す場合、ロールバックグループに対応するユーザの編集処理を取り消すことができ、且つ、他のユーザの旅程の編集処理を残すことができる。
【００１７】
図２は、本実施形態に係る情報処理装置の構成の例を説明する図である。情報処理装置２００は、本実施形態に係る旅程編集処理プログラムを実行及び管理をする装置である。情報処理装置２００は、編集処理管理部２０１、ロールバックグループ管理部２０２、ロールバック処理部２０３、記憶部２１０を備える。
【００１８】
編集処理管理部２０１は、旅程編集処理プログラムを使用している各ユーザの編集処理を管理する。ロールバックグループ管理部２０２は、各ユーザの編集処理に基づいて、ロールバックグループを生成する。ロールバックグループを生成する具体的な処理は、図３、図４、図５、図７を用いて後述する。ロールバック処理部２０３は、取り消しボタンが押下された場合に対応するロールバックグループに対応する編集処理を取り消す処理を実行する。
【００１９】
記憶部２１０は、Eventテーブル２２１、SnapShotテーブル２２２、Action Dependencyテーブル２２３の各種テーブルを記憶し、且つ、一時記憶領域２３０を備える。編集処理管理部２０１は、何れかの編集処理が指示されると、編集処理の履歴情報をEventテーブル２２１に登録する。Eventテーブル２２１は、identifier(ID）、Actor、Action、Target Table、Target Column、Value、Relationの項目を備える。Eventテーブル２２１のIDは、編集処理毎に登録される履歴情報の識別番号である。Eventテーブル２２１のActorは、編集処理を実行したユーザを識別する情報である。Eventテーブル２２１のTarget Tableは、SnapShotテーブル２２２を指定する際に用いられる項目である。Eventテーブル２２１のTarget Columnは、SnapShotテーブル２２２内の書き込み対象となるカラム番号を指定する際に用いられる項目である。Eventテーブル２２１のValueは、編集処理において並べ替え（ソート）が実行された際の並べ替え情報を記憶する項目である。Eventテーブル２２１のRelationは、編集処理がどのロールバックグループに属しているかを示す情報である。
【００２０】
上述したように、編集処理管理部２０１は、何れかの編集処理が指示されると、編集処理の履歴情報をEventテーブル２２１に登録する。併せて、何れかの編集処理が指示されると、ロールバックグループ管理部２０２は、編集処理に係る情報を一時記憶領域２３０に一時的に記憶（バッファ）する。ロールバックグループ管理部２０２は、あるユーザの編集処理に係る情報を一時記憶領域２３０に記憶してから所定の時間内の同一のユーザの編集処理を１つのロールバックグループとして生成する。ロールバックグループ管理部２０２は、所定の時間内の同一のユーザの編集処理をロールバックグループとし、ロールバックグループに係る情報をSnapShotテーブル２２２に登録する。
【００２１】
SnapShotテーブル２２２は、ロールバックグループを管理するテーブルである。SnapShotテーブル２２２は、ID、Col１〜Col３の項目を含む。SnapShotテーブル２２２のIDは、ロールバックグループを識別する識別番号である。Col１〜Col３は、ロールバックグループ内の編集処理内容を示す情報である。SnapShotテーブル２２２のCol１〜３は、一例であり、ロールバックグループに含まれる処理の数を限定するものではない。
【００２２】
Action Dependencyテーブル２２３は、各編集処理の依存関係を管理するテーブルであり、予め設定される。Action Dependencyテーブル２２３は、ID、Action、Depended byの項目を備える。Action Dependencyテーブル２２３のIDは、依存関係の組み合わせを識別する識別番号である。Action Dependencyテーブル２２３のActionは、依存関係の元となる編集処理内容を示す情報を含む。Action Dependencyテーブル２２３のDepended byの項目は、Actionの項目に依存する編集処理内容を示す情報を含む。
【００２３】
図２のAction Dependencyテーブル２２３において、Actionの項目にAddが登録されており、Addに対応するDepended byの項目にはSortが登録されている。１つのスポット情報のSort処理を実行するためには、同一のスポット情報が先に追加（Add）されていなければならない。そのため、図２のAction Dependencyテーブル２２３では、AddとSortの依存関係を表す情報が登録されている。
【００２４】
図３は、ロールバックグループの生成例（その１）を説明する図である。図３では、旅行プランＡＢＣに対して、ユーザＡ、ユーザＢ、ユーザＣが旅程を編集する場合に生成されるロールバックグループの例を説明する。
【００２５】
ユーザＢは、旅行プランＡＢＣに対してスポットを１箇所追加する編集処理をし、その後所定の時間内にもう１箇所のスポットを追加する編集処理をする。すると、編集処理管理部２０１は、Eventテーブル２２１における旅行プランＡＢＣに対して、編集処理毎に編集処理内容を登録する。併せて、ロールバックグループ管理部２０２は、スポットを２箇所追加する編集処理をSnapShotテーブル２２２に登録することで、ロールバックグループ３０１を生成する。
【００２６】
ユーザＢの編集処理後に、ユーザＡは、旅行プランＡＢＣに対してスポットを１箇所追加する編集処理をし、その後所定の時間内に旅行プランＡＢＣに登録されているスポットの並び順をソートする編集処理をする。すると、編集処理管理部２０１は、Eventテーブル２２１における旅行プランＡＢＣに対して、編集処理毎に編集処理内容を登録する。併せて、ロールバックグループ管理部２０２は、スポットを追加する編集処理及びソートする編集処理をSnapShotテーブル２２２に登録することで、ロールバックグループ３０２を生成する。
【００２７】
その後、ユーザＣは、旅行プランＡＢＣに対してスポットを削除する編集処理をする。すると、編集処理管理部２０１は、Eventテーブル２２１における旅行プランＡＢＣに対して、削除処理を示す情報を登録する。併せて、ロールバックグループ管理部２０２は、スポットを削除する編集処理をSnapShotテーブル２２２に登録することで、ロールバックグループ３０３を生成する。ここで、編集処理が削除処理である場合、ロールバックグループ管理部２０２は、削除の編集処理単独に対応するロールバックグループを生成するものとする。
【００２８】
ユーザＣは、旅行プランＡＢＣに対してスポットをソートする編集処理をする。すると、編集処理管理部２０１は、Eventテーブル２２１における旅行プランＡＢＣに対して、編集処理毎に編集処理内容を登録する。併せて、ロールバックグループ管理部２０２は、スポットをソートする編集処理をSnapShotテーブル２２２に登録することで、ロールバックグループ３０４を生成する。
【００２９】
ここで、ロールバック処理部２０３が、ロールバックグループ３０１を使用してロールバックを実行した場合、ユーザＢの編集処理（スポットを２箇所追加）がクリアされる。言い換えると、ロールバック処理部２０３は、ロールバックグループ３０１に対応して登録された編集処理が実行される前の状態に旅行プランを戻す。なお、ユーザＢが実行した編集処理に対応したロールバックグループ３０１を使用したロールバックでは、ユーザＡ及びユーザＣの編集処理はクリアされない。ロールバック処理部２０３が、ロールバックグループ３０２を使用してロールバックを実行した場合、ユーザＡの編集処理（追加とソート）がクリアされる。言い換えると、ロールバック処理部２０３は、ロールバックグループ３０２に対応して登録された編集処理が実行される前の状態に旅行プランを戻す。なお、ユーザＡが実行した編集処理に対応したロールバックグループ３０２を使用したロールバックでは、ユーザＡが実行した編集処理以降に実行されたユーザＣの編集処理はクリアされない。ロールバック処理部２０３が、ロールバックグループ３０３を使用してロールバックを実行した場合、ユーザＣの編集処理（削除）がクリアされる。言い換えると、ロールバック処理部２０３は、ロールバックグループ３０３に対応して登録された編集処理が実行される前の状態に旅行プランを戻す。ロールバック処理部２０３が、ロールバックグループ３０４を使用してロールバックを実行した場合、ユーザＣの編集処理（ソート）がクリアされる。言い換えると、ロールバック処理部２０３は、ロールバックグループ３０４に対応して登録された編集処理が実行される前の状態に旅行プランを戻す。
【００３０】
このように、各ロールバックグループは、ある時間帯の編集処理をユーザ毎に対応づけて記憶している履歴情報である。そのため本実施形態のようにロールバックグループを指定して編集処理を取り消す場合、ロールバックグループに対応するユーザの編集処理を取り消すことができ、且つ、他のユーザの旅程の編集処理を残すことができる。
【００３１】
図４は、ロールバックグループの生成例（その２）を説明する図である。図４では、旅行プランＡＢＣに対して、ユーザＡ、ユーザＢが旅程を編集する場合に生成されるロールバックグループの例を説明する。
【００３２】
ユーザＡは、旅行プランＡＢＣに対してスポットを１箇所追加する編集処理をし、その後所定の時間内にもう１箇所のスポットを追加する編集処理をする。すると、編集処理管理部２０１は、Eventテーブル２２１における旅行プランＡＢＣに対して、編集処理毎に編集処理内容を登録する。併せて、ロールバックグループ管理部２０２は、スポットを２箇所追加する編集処理をSnapShotテーブル２２２に登録することで、ロールバックグループ３１１を生成する。
【００３３】
ユーザＡの編集処理後に、ユーザＢは、旅行プランＡＢＣに登録されているスポットの並び順をソートする編集処理をする。すると、編集処理管理部２０１は、Eventテーブル２２１における旅行プランＡＢＣに対して、編集処理毎に編集処理内容を登録する。併せて、ロールバックグループ管理部２０２は、スポットをソートする編集処理をSnapShotテーブル２２２に登録することで、ロールバックグループ３１２を生成する。
【００３４】
一定時間経過後、ユーザＡは、旅行プランＡＢＣに対してスポットを１箇所追加する編集処理をし、その後所定の時間内に旅行プランＡＢＣに登録されているスポットの並び順をソートする編集処理をする。すると、編集処理管理部２０１は、Eventテーブル２２１における旅行プランＡＢＣに対して、編集処理毎に編集処理内容を登録する。併せて、ロールバックグループ管理部２０２は、スポットを追加する編集処理及びソートする編集処理をSnapShotテーブル２２２に登録することで、ロールバックグループ３１３を生成する。
【００３５】
ここで、ロールバック処理部２０３が、ロールバックグループ３１１を使用してロールバックを実行した場合、ユーザＡの編集処理（スポットを２箇所追加＋スポット１箇所追加とソート）がクリアされる。言い換えると、ロールバック処理部２０３は、ロールバックグループ３１１に対応して登録された編集処理が実行される前の状態に旅行プランを戻す。なお、ユーザＡが実行した編集処理に対応したロールバックグループ３１１を使用したロールバックでは、ユーザＢの編集処理はクリアされない。ロールバック処理部２０３が、ロールバックグループ３１２を使用してロールバックを実行した場合、ユーザＢの編集処理（ソート）がクリアされる。言い換えると、ロールバック処理部２０３は、ロールバックグループ３１２に対応して登録された編集処理が実行される前の状態に旅行プランを戻す。なお、ユーザＢが実行した編集処理に対応したロールバックグループ３１２を使用したロールバックでは、ユーザＡが実行した編集処理はクリアされない。ロールバック処理部２０３が、ロールバックグループ３１３を使用してロールバックを実行した場合、ユーザＡの編集処理（追加とソート）がクリアされる。言い換えると、ロールバック処理部２０３は、ロールバックグループ３１３に対応して登録された編集処理が実行される前の状態に旅行プランを戻す。
【００３６】
図５は、ロールバックグループの生成例（その３）を説明する図である。図５では、旅行プランＡＢＣに対して、ユーザＡ、ユーザＢが旅程を編集する場合に生成されるロールバックグループの例を説明する。
【００３７】
ユーザＡは、旅行プランＡＢＣに対してスポットを１箇所追加する編集処理をし、その後所定の時間内に旅行プランＡＢＣに登録されているスポットの並び順をソートする編集処理をする。ここで、ユーザＡが旅行プランＡＢＣに登録されているスポットの並び順をソートする編集処理と同一の処理を、ユーザＢも同じタイミングで実行したと仮定する。
【００３８】
すると、編集処理管理部２０１は、Eventテーブル２２１における旅行プランＡＢＣに対して、編集処理毎に編集処理内容を登録する。ロールバックグループ管理部２０２は、先にユーザＡによるスポットを追加する編集処理をSnapShotテーブル２２２に登録することで、ロールバックグループ３２１を生成する。ロールバックグループ管理部２０２は、ユーザＡとユーザＢによるスポットの並び順をソートする編集処理をSnapShotテーブル２２２に登録することで、ロールバックグループ３２２を生成する。
【００３９】
ここで、ロールバック処理部２０３が、ロールバックグループ３２１を使用してロールバックを実行した場合、ユーザＡの編集処理（追加とソート）がクリアされる。言い換えると、ロールバック処理部２０３は、ロールバックグループ３２１に対応して登録された編集処理が実行される前の状態に旅行プランを戻す。なお、ユーザＡが実行した編集処理に対応したロールバックグループ３２１を使用したロールバックでは、ユーザＢの編集処理はクリアされない。ロールバック処理部２０３が、ロールバックグループ３２２を使用してロールバックを実行した場合、ユーザＡとユーザＢの編集処理（ソート）がクリアされる。言い換えると、ロールバック処理部２０３は、ロールバックグループ３２２に対応して登録された編集処理が実行される前の状態に旅行プランを戻す。
【００４０】
図６は、ロールバックグループの生成例（その３）に対応するテーブル処理の例を説明する図である。ロールバックグループの生成例（その３）において、編集処理管理部２０１は、編集処理毎に編集処理内容を記憶部２１０に書き込み、Eventテーブル２２１aを生成する。Eventテーブル２２１aの１行目は、ユーザＡのスポットを追加する編集処理を表す。そのため、Actorの項目の１行目に、ユーザＡを表す「Ａ」を登録する。Actionの項目の１行目に、追加処理を表す「Add」を登録する。Eventテーブル２２１aの２行目は、ユーザＢのスポットの並び順をソートする編集処理を表す。そのため、Actorの項目の２行目に、ユーザＢを表す「Ｂ」を登録する。Actionの項目の２行目に、ソート処理を表す「Sort」を登録する。Valueの項目の２行目に、旅程における３番目に登録されているスポットと４番目に移動させるソート処理を示す「3to4」を登録する。Eventテーブル２２１aの３行目は、ユーザＡのスポットの並び順をソートする編集処理を表す。そのため、Actorの項目の３行目に、ユーザＡを表す「Ａ」を登録する。Actionの項目の３行目に、ソート処理を表す「Sort」を登録する。Valueの項目の３行目に、旅程における３番目に登録されているスポットと４番目に移動させるソート処理を示す「3to4」を登録する。
【００４１】
ロールバックグループの生成例（その３）において、ロールバックグループ管理部２０２は、ロールバックグループ３２１とロールバックグループ３２２を生成する。ロールバックグループ管理部２０２は、ロールバックグループ３２１に係る情報を、Snapshotテーブル２２２ａ（１行目）に登録する。ロールバックグループ管理部２０２は、ロールバックグループ３２２に係る情報を、Snapshotテーブル２２２ａ（２行目）に登録する。
【００４２】
ロールバックグループ管理部２０２は、ロールバックグループ３２１に対応するEventテーブル２２１aの１行目に、ロールバックグループ３２１に係る情報を登録する。具体的には、ロールバックグループ３２１に係る情報をEventテーブル２２１aの１行目に登録する。Target Tableの項目の１行目に、ユーザＡのスポットを追加する編集処理を含むロールバックグループ情報が登録されているテーブル名（SnapShotテーブル名）を登録する。Target Columnの項目の１行目に、SnapShotテーブル内のカラム番号を登録する。そして、Relationの項目の１行目に、Eventテーブル２２１aの１行目がSnapShotテーブルのＩＤ＃１と関係していることを示す情報を登録する。
【００４３】
ロールバックグループ管理部２０２は、ロールバックグループ３２２に対応するEventテーブル２２１aの２行目と３行目に、ロールバックグループ３２２に係る情報を登録する。ロールバックグループ３２２に係る情報をEventテーブル２２１aの２行目と３行目に登録する。Target Tableの項目の２行目と３行目に、ソート処理の編集処理を含むロールバックグループ情報が登録されているテーブル名（SnapShotテーブル名）を登録する。Target Columnの項目の２行目と３行目に、SnapShotテーブル内のカラム番号を登録する。そして、Relationの項目の２行目と３行目に、Eventテーブル２２１aの２行目がSnapShotテーブルのＩＤ＃２と関係していることを示す情報を登録する。
【００４４】
図７は、ロールバックグループの生成例（その４）を説明する図である。図７では、旅行プランＡＢＣに対して、ユーザＡ、ユーザＢが旅程を編集する場合に生成されるロールバックグループの例を説明する。
【００４５】
ユーザＡは、旅行プランＡＢＣに対してスポットＡを追加する編集処理をし、その後所定の時間内にスポットＣを追加する編集処理をする。又、ユーザＡがスポットＡとスポットＣを追加する編集処理の間に、ユーザＢは、スポットＢを追加する編集処理をすると仮定する。
【００４６】
編集処理管理部２０１は、Eventテーブル２２１における旅行プランＡＢＣに対して、ユーザＡとユーザＢの編集処理毎に編集処理内容を登録する。ロールバックグループ管理部２０２は、ユーザＡによるスポットＡとスポットＣを追加する編集処理をSnapShotテーブル２２２に登録することで、ロールバックグループ３３１を生成する。ロールバックグループ管理部２０２は、ユーザＢによるスポットＢを追加する編集処理をSnapShotテーブル２２２に登録することで、ロールバックグループ３３２を生成する。
【００４７】
ここで、ロールバック処理部２０３が、ロールバックグループ３３１を使用してロールバックを実行した場合、ユーザＡの編集処理（スポットＡとスポットＣの追加）がクリアされる。言い換えると、ロールバック処理部２０３は、ロールバックグループ３３１に対応して登録された編集処理が実行される前の状態に旅行プランを戻す。なお、ユーザＡが実行した編集処理に対応したロールバックグループ３３１を使用したロールバックでは、ユーザＢの編集処理はクリアされない。ロールバック処理部２０３が、ロールバックグループ３３２を使用してロールバックを実行した場合、ユーザＢの編集処理（スポットＢの追加）がクリアされる。言い換えると、ロールバック処理部２０３は、ロールバックグループ３３２に対応して登録された編集処理が実行される前の状態に旅行プランを戻す。なお、ユーザＢが実行した編集処理に対応したロールバックグループ３３２を使用したロールバックでは、ユーザＡの編集処理はクリアされない。
【００４８】
図８は、ロールバックグループの生成例（その５）を説明する図である。図８では、旅行プランＡＢＣに対して、ユーザＡ、ユーザＢ、ユーザＣが旅程を編集する場合に生成されるロールバックグループの例を説明する。
【００４９】
図８の例において、ユーザＡは、旅行プランＡＢＣに対してスポットＡを追加する編集処理をし、その後所定の時間内にスポットＣを追加する編集処理をし、更に、スポットＢの並び順をソートする編集処理を実行する。ユーザＡがスポットＡとスポットＣを追加する編集処理の間に、ユーザＢは、スポットＢを追加する編集処理をする。その後、ユーザＣは、スポットＢを削除する編集処理を実行する。
【００５０】
編集処理管理部２０１は、Eventテーブル２２１における旅行プランＡＢＣに対して、ユーザＡ、ユーザＢ、ユーザＣの編集処理毎に編集処理内容を登録する。ロールバックグループ管理部２０２は、スポットＡとスポットＣを追加する編集処理とスポットＢの並び順をソートする編集処理をSnapShotテーブル２２２に登録することで、ロールバックグループ３４１を生成する。ロールバックグループ管理部２０２は、スポットＢを追加するユーザＢの編集処理をSnapShotテーブル２２２に登録することで、ロールバックグループ３４２を生成する。ロールバックグループ管理部２０２は、スポットＢを削除するユーザＣの編集処理をSnapShotテーブル２２２に登録することで、ロールバックグループ３４３を生成する。
【００５１】
ここで、ロールバック処理部２０３が、ロールバックグループ３４１を使用してロールバックを実行した場合、ユーザＡの編集処理（スポットＡとスポットＣの追加処理とスポットＢのソート処理）がクリアされる。言い換えると、ロールバック処理部２０３は、ロールバックグループ３４１に対応して登録された編集処理が実行される前の状態に旅行プランを戻す。なお、ユーザＡが実行した編集処理に対応したロールバックグループ３４１を使用したロールバックでは、ユーザＢ及びユーザＣの編集処理はクリアされない。ロールバック処理部２０３が、ロールバックグループ３４３を使用してロールバックを実行した場合、ユーザＣの編集処理（スポットＢの削除処理）がクリアされる。言い換えると、ロールバック処理部２０３は、ロールバックグループ３４３に対応して登録された編集処理が実行される前の状態に旅行プランを戻す。
【００５２】
ロールバック処理部２０３が、ロールバックグループ３４２を使用してロールバックを実行した場合、ユーザＢの編集処理（スポットＢの追加処理）がクリアされる。言い換えると、ロールバック処理部２０３は、ロールバックグループ３４２に対応して登録された編集処理が実行される前の状態に旅行プランを戻す。ここで、スポットＢの追加処理がクリアされた場合、ユーザＡのスポットＢのソート処理と、ユーザＣのスポットＢの削除処理などが実行できなくなる。このように、他の処理と依存関係のある処理をロールバックする場合、他のユーザに影響を与える場合もある。そのため、ロールバック処理部２０３が、ロールバックグループ３４２を使用してロールバックを実行した場合、ユーザＢの編集処理（スポットＢの追加処理）がクリアされると同時に、ユーザＡのスポットＢのソート処理と、ユーザＣのスポットＢの削除処理もクリアされる。
【００５３】
図９は、ロールバックグループの生成例（その５）で生成されるテーブルの例を説明する図である。Eventテーブル２２１ｂは、ロールバックグループの生成例（その５）における各編集処理に基づいて生成される。更に、SnapShotテーブル２２２ｂは、ロールバックグループの生成例（その５）で生成される各ロールバックグループを含む。Action Dependencyテーブル２２３ｂは、各編集処理の依存関係を管理するテーブルである。
【００５４】
Eventテーブル２２１ｂの１行目は、ユーザＡのスポットＡの追加処理に対応し、ロールバックグループ３４１（SnapShotテーブル２２２ｂの２行目）と関連付けられている。Eventテーブル２２１ｂの２行目は、ユーザＢのスポットＢの追加処理に対応し、ロールバックグループ３４２（SnapShotテーブル２２２ｂの１行目）と関連付けられている。Eventテーブル２２１ｂの３行目は、ユーザＡのスポットＣの追加処理に対応し、ロールバックグループ３４１（SnapShotテーブル２２２ｂの２行目）と関連付けられている。Eventテーブル２２１ｂの４行目は、ユーザＡによるスポットＢのソート処理に対応し、ロールバックグループ３４１（SnapShotテーブル２２２ｂの２行目）と関連付けられている。Eventテーブル２２１ｂの５行目は、ユーザＣのスポットＢの削除処理に対応し、ロールバックグループ３４３（SnapShotテーブル２２２ｂの３行目）と関連付けられている。
【００５５】
図１０は、ロールバックグループを使用して依存関係を持つ編集処理をクリアする処理の例を説明する図である。図１０は、ロールバックグループの生成例（その５）で生成されるロールバックグループ３４２を使用してユーザＢによるスポットＢの追加処理をクリアする処理を順に説明する。
【００５６】
（１）ロールバック処理部２０３は、ユーザの指示操作に基づいて、ロールバックグループ３４２を用いたロールバック処理の実行を開始する。
【００５７】
（２）ロールバック処理部２０３は、SnapShotテーブル２２２ｂからロールバックグループ３４２に対応する情報（IDが３の行）を取得する。
【００５８】
（３）ロールバック処理部２０３は、Eventテーブル２２１ｂからロールバックグループ３４２に含まれる編集処理内容を取得する。具体的には、（２）においてロールバックグループ３４２に対応するSnapShotテーブル２２２ｂ内のＩＤが３であることから、ロールバック処理部２０３は、Eventテーブル２２１ｂのRelationの項目内でIDが３である行（IDが５の行）を抽出する。その結果、ロールバック処理部２０３は、ロールバックグループ３４２に含まれる編集処理は、追加（Add）処理であることを特定する。
【００５９】
（４）次に、ロールバック処理部２０３は、ロールバックグループ３４２よりも後のロールバックグループであり、且つ、ロールバックグループ３４２に登録されているカラムと同じカラムにデータが登録されているロールバックグループをSnapShotテーブル２２２ｂから特定する。ここでは、SnapShotテーブル２２２ｂからIDが４と５に対応するロールバックグループ３４１とロールバックグループ３４３を特定する。
【００６０】
（５）ロールバック処理部２０３は、Eventテーブル２２１ｂからロールバックグループ３４１とロールバックグループ３４３に含まれる編集処理内容を取得する。具体的には、ロールバックグループ３４１に対応するSnapShotテーブル２２２ｂ内のＩＤが４であることから、ロールバック処理部２０３は、Eventテーブル２２１ｂのRelationの項目内でIDが４である行（IDが７の行）を抽出する。又、ロールバックグループ３４３に対応するSnapShotテーブル２２２ｂ内のＩＤが５であることから、ロールバック処理部２０３は、Eventテーブル２２１ｂのRelationの項目内でIDが５である行（IDが８の行）を抽出する。その結果、ロールバック処理部２０３は、ロールバックグループ３４１とロールバックグループ３４３に含まれる編集処理は、ソートと削除処理であることを特定する。
【００６１】
（６）ロールバック処理部２０３は、（３）で特定した編集処理と（５）で特定した編集処理に依存関係があるか否かを、Action Dependencyテーブル２２３ｂに基づいて判定する。（５）で特定したソートと削除処理は、（３）で特定した追加処理に依存している編集処理である。
【００６２】
（７）ロールバック処理部２０３は、（３）で特定した編集処理と（５）で特定した編集処理に依存関係があるため、まず、（５）で特定した編集処理をクリア（取り消し）し、更に、（３）で特定した編集処理をクリアする。
【００６３】
このように、他の処理と依存関係のある処理をロールバックする場合、他のユーザに影響を与える場合もある。そのため、ロールバック処理部２０３が、ロールバックグループ３４２を使用してロールバックを実行した場合、ユーザＢの編集処理（スポットＢの追加処理）がクリアされると同時に、ユーザＡのスポットＢのソート処理と、ユーザＣのスポットＢの削除処理もクリアされる。
【００６４】
図１１は、情報処理装置のハードウェア構成の例を示す図である。情報処理装置２００は、プロセッサ１１、メモリ１２、バス１５、外部記憶装置１６、ネットワーク接続装置１９を備える。さらにオプションとして、情報処理装置２００は、入力装置１３、出力装置１４、媒体駆動装置１７を備えても良い。情報処理装置２００は、例えば、コンピュータなどで実現されることがある。
【００６５】
プロセッサ１１は、Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ（ＣＰＵ）を含む任意の処理経路とすることができる。プロセッサ１１は、情報処理装置２００において、編集処理管理部２０１、ロールバックグループ管理部２０２、ロールバック処理部２０３として動作する。なお、プロセッサ１１は、例えば、外部記憶装置１６に記憶されたプログラムを実行することができる。メモリ１２は、記憶部２１０として動作し、Eventテーブル２２１、SnapShotテーブル２２２、Action Dependencyテーブル２２３を記憶する。さらに、メモリ１２は、プロセッサ１１の動作により得られたデータや、プロセッサ１１の処理に用いられるデータも、適宜、記憶する。ネットワーク接続装置１９は、他の装置との通信に使用される。
【００６６】
入力装置１３は、例えば、ボタン、キーボード、マウス等として実現され、出力装置１４は、ディスプレイなどとして実現される。バス１５は、プロセッサ１１、メモリ１２、入力装置１３、出力装置１４、外部記憶装置１６、媒体駆動装置１７、ネットワーク接続装置１９の間を相互にデータの受け渡しが行えるように接続する。外部記憶装置１６は、プログラムやデータなどを格納し、格納している情報を、適宜、プロセッサ１１などに提供する。媒体駆動装置１７は、メモリ１２や外部記憶装置１６のデータを可搬記憶媒体１８に出力することができ、また、可搬記憶媒体１８からプログラムやデータ等を読み出すことができる。ここで、可搬記憶媒体１８は、フロッピイディスク、Ｍａｇｎｅｔ−Ｏｐｔｉｃａｌ（ＭＯ）ディスク、Ｃｏｍｐａｃｔ  Ｄｉｓｋ  Ｒｅｃｏｒｄａｂｌｅ（ＣＤ−Ｒ）やＤｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ  Ｒｅｃｏｒｄａｂｌｅ（ＤＶＤ−Ｒ）を含む、持ち運びが可能な任意の記憶媒体とすることができる。
【００６７】
図１２は、ロールバックグループを生成する処理の例を説明するフローチャートである。編集処理管理部２０１は、ユーザの編集操作を受け付ける（ステップＳ１０１）。編集処理管理部２０１は、ユーザの編集処理内容を、Eventテーブル２２１に書き込み、更に、一時記憶領域２３０にも書き込む（ステップＳ１０２）。編集処理管理部２０１は、一時記憶領域２３０にユーザの編集処理内容を書き込んでから所定の時間（例えば、５００ミリ秒）内に他の編集処理内容の書き込みがあるか否かを判定する（ステップＳ１０３）。
【００６８】
一時記憶領域２３０にユーザの編集処理内容を書き込んでから所定の時間内に他の編集処理内容の書き込みがある場合（ステップＳ１０３でＹＥＳ）、編集処理管理部２０１は、処理をステップＳ１０１から繰り返す。一時記憶領域２３０にユーザの編集処理内容を書き込んでから所定の時間内に他の編集処理内容の書き込みがない場合（ステップＳ１０３でＮＯ）、ロールバックグループ管理部２０２は、ユーザの編集処理内容がSnapShotテーブル２２２に最後に書き込んだロールバックグループと同じ内容であるか否かを判定する（ステップＳ１０４）。ユーザの編集処理内容がSnapShotテーブル２２２に最後に書き込んだロールバックグループと同じ内容である場合（ステップＳ１０４でＹＥＳ）、ロールバックグループ管理部２０２は、Eventテーブル２２１のRelationに、SnapShotテーブル２２２の対応したロールバックグループを示す情報を登録する（ステップＳ１０５）。ユーザの編集処理内容がSnapShotテーブル２２２に最後に書き込んだロールバックグループと同じ内容でない場合（ステップＳ１０４でＮＯ）、ロールバックグループ管理部２０２は、編集内容をSnapshotテーブル２２２に登録する（ステップＳ１０６）。ステップＳ１０５又はステップＳ１０６の処理が終了すると、情報処理装置は、ロールバックグループを生成する処理を終了する。
【００６９】
図１３Ａと図１３Ｂは、ロールバック処理の例を説明するフローチャートである。ロールバック処理部２０３は、ユーザ操作による削除指示を受信する（ステップＳ２０１）。ロールバック処理部２０３は、削除指示がなされたロールバックグループの情報を、SnapShotテーブル２２２より取得する（ステップＳ２０２）。ロールバック処理部２０３は、取得したロールバックグループの情報から、ロールバックグループに含まれる編集処理を特定する（ステップＳ２０３）。ロールバック処理部２０３は、削除指示がなされたロールバックよりも後のロールバックグループであり、且つ、削除指示がなされたロールバックグループがデータを保持するカラムと同じカラムに値を持っているロールバックグループを特定する（ステップＳ２０４）。ロールバック処理部２０３は、該当するロールバックグループが存在するか否かを判定する（ステップＳ２０５）。
【００７０】
該当するロールバックグループが存在する場合（ステップＳ２０５でＹＥＳ）、該当するロールバックグループの情報を、SnapShotテーブル２２２より取得する（ステップＳ２０６）。ロールバック処理部２０３は、取得したロールバックグループの情報から、ロールバックグループに含まれる編集処理を特定する（ステップＳ２０７）。ロールバック処理部２０３は、特定した編集処理が、削除指示のあったロールバックグループに含まれる編集処理と依存関係があるか否かを判定する（ステップＳ２０８）。依存関係がある編集処理がある場合（ステップＳ２０８でＹＥＳ）、ロールバック処理部２０３は、該当する編集処理を取り消す処理を実行する（ステップＳ２０９）。ステップＳ２０９の後、又は、依存関係がある編集処理がない場合（ステップＳ２０８でＮＯ）、ロールバック処理部２０３は、ロールバック処理部２０３は、削除指示のあったロールバックグループに含まれる編集処理の取り消し処理を実行する（ステップＳ２１０）。ステップＳ２１０の処理が終了すると、ロールバック処理部２０３は、ロールバックに係る処理を終了する。
【符号の説明】
【００７１】
２００  情報処理装置
２０１  編集処理管理部
２０２  ロールバックグループ管理部
２０３  ロールバック処理部
２１０  記憶部
２２１  Eventテーブル
２２２  SnapShotテーブル
２２３  Action Dependencyテーブル
２３０  一時記憶領域
【図１】
2018018462.tif 000003
【図２】
2018018462.tif 000004
【図３】
2018018462.tif 000005
【図４】
2018018462.tif 000006
【図５】
2018018462.tif 000007
【図６】
2018018462.tif 000008
【図７】
2018018462.tif 000009
【図８】
2018018462.tif 000010
【図９】
2018018462.tif 000011
【図１０】
2018018462.tif 000012
【図１１】
2018018462.tif 000013
【図１２】
2018018462.tif 000014
【図１３Ａ】
2018018462.tif 000015
【図１３Ｂ】
2018018462.tif 000016