(57)【要約】【課題】共同編集支援システムのマージ処理における衝突判定範囲等を、編集状況に応じてダイナミックに調整することにより、マージ処理での衝突の発生確率を減少させる。【解決手段】共同編集支援サーバ１０のファイルマージ部１４は、共同編集支援クライアント２０の要求によってファイルのマージを行う度に、自動マージ処理で使用した衝突判定範囲とマージ結果の成功・失敗等の履歴や、手動マージ処理による衝突の解決方法等をマージ履歴格納部１５に格納する。衝突判定範囲設定部１６は、マージ履歴格納部１５に格納されたマージ履歴に基づいて適切な衝突判定範囲を設定する。次のマージ処理の要求があると、ファイルマージ部１４は、衝突判定範囲設定部１６で設定された衝突判定範囲に従って自動マージ処理の可能性を判定し、可能であれば自動マージ処理を実行する。【選択図】図１
2010204946.tif 000002
【特許請求の範囲】
【請求項１】
編集対象のファイルを保存し、編集要求に応じて該編集対象のファイルを予め設定された衝突判定範囲の領域に区分してマージすることによって編集するサーバと、前記サーバに対して前記編集要求を行う複数のクライアントとを有する共同編集支援システムであって、
前記サーバは、
前記衝突判定範囲毎に、前記クライアントから与えられる前記編集要求に応じて前記編集対象のファイルを予め決められたルールに従ってマージできるか否かを判定し、マージできる場合にはマージ結果を該クライアントに出力し、マージできないときにはその旨を該クライアントに出力するファイルマージ手段と、
前記ファイルマージ手段における判定結果および前記クライアントから与えられた応答を記録するマージ履歴格納手段と、
前記マージ履歴格納手段に記録された情報に基づいて前記衝突判定範囲を設定する衝突判定範囲設定手段と、
を備えることを特徴とする共同編集支援システム。
【請求項２】
前記マージ履歴格納手段は、前記設定された衝突判定範囲の領域に区分してマージされたマージ結果と共に、前記クライアントから前記応答として与えられた該マージ結果に意味的な矛盾が有るか否かの情報を記録することを特徴とする請求項１に記載の共同編集支援システム。
【請求項３】
前記衝突判定範囲設定手段は、前記マージ結果に意味的な矛盾が有る旨の情報が前記マージ履歴格納手段に記録されているときに、前記衝突判定範囲を拡大することを特徴とする請求項２に記載の共同編集支援システム。
【請求項４】
前記衝突判定範囲設定手段は、前記マージ結果に意味的な矛盾が有る旨の情報が前記マージ履歴格納手段に記録されていないときに、前記衝突判定範囲を縮小することを特徴とする請求項３に記載の共同編集支援システム。
【請求項５】
前記クライアントは、ユーザが行う編集作業の区切りを検知して前記サーバに対して前記編集要求を行うための編集区切り検知手段を有することを特徴とする請求項１乃至４のいずれか１項に記載の共同編集支援システム。
【請求項６】
前記編集区切り検知手段は、ユーザによる操作が一定時間停止したときに、前記編集作業の区切りとして検出することを特徴とする請求項５に記載の共同編集支援システム。
【請求項７】
前記サーバと前記複数のクライアントは、通信網を介して接続されることを特徴とする請求項１乃至６のいずれか１項に記載の共同編集支援システム。
【請求項８】
編集対象のファイルを保存し、編集要求に応じて該編集対象のファイルを予め設定された衝突判定範囲の領域に区分してマージすることによって編集するサーバと、前記サーバに対して前記編集要求を行う複数のクライアントとを有する共同編集支援システムにおける共同編集支援方法であって、
前記サーバは、
前記衝突判定範囲毎に、前記クライアントから与えられる前記編集要求に応じて前記編集対象のファイルを予め決められたルールに従ってマージできるか否かを判定し、マージできる場合にはマージ結果を該クライアントに出力し、マージできないときにはその旨を該クライアントに出力するファイルマージ処理と、
前記ファイルマージ処理における判定結果および前記クライアントから与えられた応答を記録するマージ履歴格納処理と、
前記マージ履歴格納処理で記録された情報に基づいて前記衝突判定範囲を設定する衝突判定範囲設定処理と、
を実行することを特徴とする共同編集支援方法。
【請求項９】
前記クライアントは、ユーザが行う編集作業の区切りを検知して前記サーバに対して前記編集要求を行うための編集区切り検知処理を実行することを特徴とする請求項８に記載の共同編集支援方法。
【請求項１０】
コンピュータを、編集対象のファイルを保存し、編集要求に応じて該編集対象のファイルを予め設定された衝突判定範囲の領域に区分してマージすることによって編集するサーバ、および、前記サーバに対して前記編集要求を行う複数のクライアントとして動作させるための共同編集支援プログラムであって、
前記サーバ側のコンピュータに、
前記衝突判定範囲毎に、前記クライアントから与えられる前記編集要求に応じて前記編集対象のファイルを予め決められたルールに従ってマージできるか否かを判定し、マージできる場合にはマージ結果を該クライアントに出力し、マージできないときにはその旨を該クライアントに出力するファイルマージ処理と、
前記ファイルマージ処理における判定結果および前記クライアントから与えられた応答を記録するマージ履歴格納処理と、
前記マージ履歴格納処理で記録された情報に基づいて前記衝突判定範囲を設定する衝突判定範囲設定処理と、
を実行させることを特徴とする共同編集支援プログラム。
【請求項１１】
前記クライアント側のコンピュータに、ユーザが行う編集作業の区切りを検知して前記サーバに対して前記編集要求を行うための編集区切り検知処理を実行させることを特徴とする請求項１０に記載の共同編集支援プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、例えばサーバ等に格納されたファイルを複数人で同時に編集するための共同編集支援システム、共同編集支援方法および共同編集支援プログラムに関する。
【背景技術】
【０００２】
文書やコンピュータプログラム（以下、単にプログラムという）等を作成する知識生産においては、電子的なファイルを複数の人によって共同編集することが行われている。共同編集が同時に行われると、一方が修正した項目を他方が削除するなど、矛盾する編集が行われてしまう場合がある。例えば、文書の構造に制約がある場合には、意味不明の文書になってしまったり、プログラムのように構文が規定されている場合には、実行不能になってしまったりする等の問題が生ずる。このような問題を回避するために、例えば下記特許文献１〜６に記載されるような各種の共同編集支援システムが提案されている。
【０００３】
例えば、特許文献１には、共同編集の対象となるファイルを格納するサーバ装置と、このファイルを編集するための複数の端末装置が、通信網を介して接続されたドキュメント作成システムが記載されている。
【０００４】
このドキュメント作成システムでは、端末装置がサーバ装置に格納されたファイルを取得し、ユーザに表示する。ユーザは、端末装置のドキュメント編集手段を使用して表示されたファイルを編集し、編集されたファイルをサーバ装置へ送る。
【０００５】
サーバ装置は、端末装置から送られてきたファイルと、サーバ装置に格納されているファイルを比較する。そして、該当するファイルが他のユーザによって編集されていないことが確認できれば、そのファイルを端末装置から送られてきたファイルで更新する。
【０００６】
該当するファイルが他のユーザによって編集されている場合には、その編集内容が自動マージの範囲内であるか否かを判定する。例えば、テキストファイルの場合、異なる行の編集であれば自動マージの範囲内であるとして、サーバ装置は、ファイルを決められたルールに従って１つに統合するマージ処理を実行する。更に、サーバ装置は、マージしたファイルを格納すると共に、端末装置に送り返す。これにより、ユーザは、編集内容を確認することができる。
【０００７】
一方、編集内容が自動マージの範囲外である場合、例えばテキストファイルの同じ行が同時に編集されている場合、サーバ装置は、編集が衝突していると判断して、衝突した新旧２つのファイルを端末装置に送り返す。ユーザは衝突の内容を吟味して、衝突を解消したファイルを、サーバ装置へ送り直す。これにより、サーバ装置には、衝突が解消されたファイルが格納される。このように、ドキュメント作成システムによって、共同編集の対象となるファイルをサーバ装置に格納しつつ、複数の端末装置から同時に編集することができる。
【０００８】
なお、特許文献２には、複数のコンピュータシステムに複製される共有ファイルの内容を一致させるための複製ファイル管理システムが記載されている。特許文献３には、ドキュメントページ上のドキュメントオブジェクト間の衝突を解消する方法が記載されている。特許文献４には、クライアントコンピュータに文書をダウンロードした後でも、その文書の利用履歴をトラッキングできるようにする文書利用履歴管理システムが記載されている。また、特許文献５には、対訳文の編集作業を効率的に行うための対訳文アライメントエディタシステムが記載されている。更に、特許文献６には、同期マネージャによるコンフリクト解決方法が記載されている。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開２００８−１６５２９９号公報
【特許文献２】特開２０００−２５０７９９号公報
【特許文献３】特開２００４−０４６８５８号公報
【特許文献４】特開２００５−２６７４７９号公報
【特許文献５】特開２００５−２４８９１２号公報
【特許文献６】特表２００８−５３７２５４号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
前記特許文献１のドキュメント作成システムや特許文献２〜６に記載された技術では、共同編集を効率的に行うために、マージ処理等をできるだけ自動で行い、ユーザによる衝突解消等の手間を省くようにしている。しかし、すべての処理を、ユーザの介在なしに自動で行うことは不可能である。例えば、意味を理解する必要があったり、他のユーザと調整する必要があったりする衝突は、ユーザ自身が解消する必要がある。即ち、自動マージには、次のような問題点がある。
【００１１】
第１の問題点は、マージ処理における衝突判定の範囲（この範囲を、粒度と呼ぶこともある）に関するものである。
衝突判定の範囲が広すぎると、本来自動でマージできるものをユーザが解消することになり、余分の手間が掛かる。逆に、衝突判定の範囲が狭すぎると、衝突と見なさずに自動マージを行い、ファイルに矛盾が生じてしまう。例えば、テキストファイルをマージする際に、行単位で衝突判定を行うことができるが、１行が長い場合には、１行の内部で衝突判定の範囲を定める必要がある。また、プログラム等では、複数行に亘って１つの機能が記述される場合があり、その場合は衝突判定の範囲を複数行にする必要がある。このように、ファイルの形式だけでは、衝突判定の範囲を定めることができず、ファイルの内容に応じて衝突判定の範囲が時間と共に変化するという問題がある。
【００１２】
第２の問題点は、マージ処理のタイミングに関するものである。
マージ処理を行うタイミングが遅すぎると、他のユーザによる編集が割り込む確率が高くなり、衝突の発生率が大きくなって自動マージの可能性が低下する。逆に、マージ処理を行うタイミングが早すぎると、中途半端な編集でマージを試みることで衝突が発生したり、自動マージの結果に不整合が生じたりするおそれが大きくなる。このように、マージするタイミングをユーザのみに任せていると、自動マージの可能性が低下するという問題がある。
【００１３】
本発明は上記課題に鑑みてなされたものであり、共同編集支援システムのマージ処理における衝突判定の範囲やタイミングを、編集状況に応じてダイナミックに調整することにより、マージ処理での衝突の発生を減少させることを目的とする。
【課題を解決するための手段】
【００１４】
上記目的を達成するために、本発明の第１の観点に係る共同編集支援システムは、編集対象のファイルを保存し、編集要求に応じて該編集対象のファイルを予め設定された衝突判定範囲の領域に区分してマージすることによって編集するサーバと、前記サーバに対して前記編集要求を行う複数のクライアントとを有する共同編集支援システムであって、前記サーバは、前記衝突判定範囲毎に、前記クライアントから与えられる前記編集要求に応じて前記編集対象のファイルを予め決められたルールに従ってマージできるか否かを判定し、マージできる場合にはマージ結果を該クライアントに出力し、マージできないときにはその旨を該クライアントに出力するファイルマージ手段と、前記ファイルマージ手段における判定結果および前記クライアントから与えられた応答を記録するマージ履歴格納手段と、前記マージ履歴格納手段に記録された情報に基づいて前記衝突判定範囲を設定する衝突判定範囲設定手段と、を備えることを特徴とする。
【００１５】
本発明の第２の観点に係る共同編集支援方法は、編集対象のファイルを保存し、編集要求に応じて該編集対象のファイルを予め設定された衝突判定範囲の領域に区分してマージすることによって編集するサーバと、前記サーバに対して前記編集要求を行う複数のクライアントとを有する共同編集支援システムにおける共同編集支援方法であって、前記サーバは、前記衝突判定範囲毎に、前記クライアントから与えられる前記編集要求に応じて前記編集対象のファイルを予め決められたルールに従ってマージできるか否かを判定し、マージできる場合にはマージ結果を該クライアントに出力し、マージできないときにはその旨を該クライアントに出力するファイルマージ処理と、前記ファイルマージ処理における判定結果および前記クライアントから与えられた応答を記録するマージ履歴格納処理と、前記マージ履歴格納処理で記録された情報に基づいて前記衝突判定範囲を設定する衝突判定範囲設定処理と、を実行することを特徴とする。
【００１６】
本発明の第３の観点に係る共同編集支援プログラムは、コンピュータを、編集対象のファイルを保存し、編集要求に応じて該編集対象のファイルを予め設定された衝突判定範囲の領域に区分してマージすることによって編集するサーバ、および、前記サーバに対して前記編集要求を行う複数のクライアントとして動作させるための共同編集支援プログラムであって、前記サーバ側のコンピュータに、前記衝突判定範囲毎に、前記クライアントから与えられる前記編集要求に応じて前記編集対象のファイルを予め決められたルールに従ってマージできるか否かを判定し、マージできる場合にはマージ結果を該クライアントに出力し、マージできないときにはその旨を該クライアントに出力するファイルマージ処理と、前記ファイルマージ処理における判定結果および前記クライアントから与えられた応答を記録するマージ履歴格納処理と、前記マージ履歴格納処理で記録された情報に基づいて前記衝突判定範囲を設定する衝突判定範囲設定処理と、を実行させることを特徴とする。
【発明の効果】
【００１７】
本発明によれば、共同編集支援システムのマージ処理における衝突判定の範囲を、編集状況に応じてダイナミックに調整するように構成しているので、マージ処理での衝突の発生を減少させることができる。
【図面の簡単な説明】
【００１８】
【図１】本発明の第１の実施形態を示す共同編集支援システムの構成図である。
【図２】図１の共同編集支援システムの動作を示すフローチャートである。
【図３】図１における自動マージ処理の一例を示す説明図である。
【図４】本発明の第２の実施形態を示す共同編集支援システムの構成図である。
【発明を実施するための形態】
【００１９】
以下、本発明の実施の形態について図面を参照して詳細に説明する。
（第１の実施形態）
図１に示すように、第１の実施形態の共同編集支援システムは、共同編集の対象となるファイルを格納する共同編集支援サーバ１０と、この共同編集支援サーバ１０に格納されたファイルを編集するための複数の共同編集支援クライアント２０とが、ＬＡＮ(Local Area Network)やインターネット等の通信網１を介して接続された構成となっている。
【００２０】
共同編集支援サーバ１０や共同編集支援クライアント２０は、いずれも、ＣＰＵ(Central Processing Unit)、ＲＯＭ(Read Only Memory)、ＲＡＭ(Random Access Memory)、ＨＤＤ(Hard Disk Drive)、ネットワーク・インタフェース回路、ディスプレイ、キーボード等を備えた一般的なコンピュータで構成され、それぞれ格納されたプログラムに従ってサーバやクライアントとしての機能を果たすようになっている。
【００２１】
共同編集支援サーバ１０は、図１に示すように、機能的には、通信制御部１１、ファイル取得部１２、ファイル格納部１３、ファイルマージ部１４、マージ履歴格納部１５、および衝突判定範囲設定部１６を有している。
通信制御部１１は、通信網１を介して共同編集支援クライアント２０との間でファイル等のデータ転送を行うものである。
【００２２】
ファイル取得部１２は、共同編集支援クライアント２０から送られてきた新規ファイルを受信してファイル格納部１３に格納したり、共同編集支援クライアント２０から与えられる取得コマンドに従って、ファイル格納部１３から該当する編集対象のファイルを読み出して通信制御部１１に出力するものである。取得コマンドは、ファイル格納部１３に格納されたファイルを特定するためのファイル名等のファイル識別子を含み、ファイルのリビジョン（バージョンとも呼ばれる）識別子を指定することができる。なお、リビジョン識別子は、ファイルの更新毎のカウンタや更新時刻などの、ファイルの更新を特定するための情報である。
【００２３】
ファイル取得部１２は、取得コマンドによってリビジョン識別子が指定されたときには、指定されたリビジョン識別子を有するファイルをファイル格納部１３から読み出し、リビジョン識別子が指定されていないときには、最新のリビジョン識別子を有するファイルを読み出すようになっている。
【００２４】
ファイル格納部１３は、共同編集の対象となるファイルを格納しておくもので、最新リビジョンのファイルのみならず、過去のリビジョンのファイルも読み出し可能な状態で格納するように構成されている。
【００２５】
ファイルマージ部１４は、共同編集支援クライアント２０から送られてくる同期コマンドに従って、ファイル格納部１３に格納されているファイルのマージ処理を行い、その結果を共同編集支援クライアント２０に出力するものである。なお、同期コマンドには、ファイル格納部１３に格納されているマージ処理の対象となるファイルを特定するためのファイル識別子およびリビジョン識別子と、共同編集支援クライアント２０で編集された編集後のファイルが含まれている。ファイルマージ部１４は、必要に応じて衝突判定範囲設定部１６で設定される衝突判定範囲を参照してマージ処理を行い、そのマージ処理の記録をマージ履歴格納部１５に格納するようになっている。このファイルマージ部１４が行うマージ処理は、３つのケースＡ〜Ｃに分けられるが、これについては後述する。
【００２６】
マージ履歴格納部１５は、予め定められた所定のルールに従って行った自動マージの成功または失敗の記録と共に、自動マージが成功せずにユーザの指定に従って行った手動マージによる具体的な処理内容（例えば、衝突を解消するために変更した衝突判定範囲等）の履歴を格納するものである。
【００２７】
衝突判定範囲設定部１６は、ファイルマージ部１４からファイルの衝突判定範囲の問い合わせを受けたときに、そのファイルに関するマージ履歴をマージ履歴格納部１５から取得し、そのマージ履歴に基づいて衝突判定範囲を設定してファイルマージ部１４に与えるものである。例えば、衝突判定範囲設定部１６は、すべてのマージ履歴または過去何回かのマージ履歴において自動マージが成功したときの衝突判定範囲を抽出し、その時点での衝突判定範囲として設定し、ファイルマージ部１４に与える。
【００２８】
或いは、衝突判定範囲設定部１６は、一定期間内に、ある衝突判定範囲に基づいて行った自動マージがすべて成功している場合、設定する衝突判定範囲を１段階狭めるようにすることができる。逆に、過去何回かのマージ履歴において自動マージの成功例がない場合、衝突判定範囲設定部１６は、設定する衝突判定範囲を１段階広げるようにすることもできる。なお、該当するファイルに関するマージ履歴が存在しない場合、衝突判定範囲設定部１６は、ファイル全体または予め定められた衝突判定範囲を設定して、ファイルマージ部１４に与えることになる。
【００２９】
衝突判定範囲としては、ファイル形式がＸＭＬ(eXtensible Markup Language)やプログラム等のようにツリー構造となっている場合には、そのツリー構造の親子関係を用いることができる。また、ファイルが、テキストのように非構造文書の場合には、ユーザによって衝突解消が及んでいる何行目から何行目までというように、具体的な範囲を指定することもできる。
【００３０】
共同編集支援クライアント２０は、図１に示すように、機能的には、通信制御部２１、ファイル表示部２２、ファイル編集部２３、およびファイル同期部２４を有している。
【００３１】
通信制御部２１は、共同編集支援サーバ１０側の通信制御部１１に対応するもので、通信網１を介してこの共同編集支援サーバ１０との間でファイル等のデータ転送を行うものである。
【００３２】
ファイル表示部２２は、ユーザが編集を行っている編集中のファイルを表示するものである。即ち、ファイル表示部２２は、新規作成中のファイルを表示すると共に、ユーザの要求に従い、共同編集支援サーバ１０に対してファイルの取得コマンドを送信して受信したファイルを表示したり、同期コマンドに従って共同編集支援サーバ１０から送信されてきたファイルのマージ処理の結果を表示したりするものである。
【００３３】
ファイル編集部２３は、ファイル表示部２２に表示されたファイルに対して、ユーザが編集作業を行うための入力処理手段である。即ち、ファイル編集部２３は、ユーザによるファイルの編集を受け取ってファイル同期部２４に対してファイルの同期（即ち、共同編集支援サーバ１０側に格納されているファイルの内容を、共同編集支援クライアント２０側で編集したファイルの内容に一致させること）を要求したり、ユーザが衝突を解消した手動マージの結果を受け取り、その手動マージ結果をファイル同期部２４に出力する機能を有している。
【００３４】
ファイル同期部２４は、ファイル編集部２３から与えられるファイルの同期要求に応じて、共同編集支援サーバ１０に同期コマンドを送信すると共に、この共同編集支援サーバ１０から受信したファイルのマージ処理の結果をファイル表示部２２に出力するものである。また、ファイル同期部２４は、ファイル編集部２３から与えられる手動マージ結果を受け取って、共同編集支援サーバ１０に送信する機能を有している。
【００３５】
ここで、共同編集支援サーバ１０のファイルマージ部１４が行う３つのマージ処理について説明する。
ケースＡは、１つの共同編集支援クライアント２０がファイルを編集している間に、他の共同編集支援クライアント２０による同じファイルの編集が行われなかった場合である。即ち、同期コマンドで指定されたリビジョン識別子が、ファイル格納部１３に格納されている最新のファイルのリビジョン識別子と一致する場合である。この場合、マージ処理は、ファイル格納部１３に格納されているファイルを、共同編集支援クライアント２０から送られてきた同期コマンドに含まれる編集後のファイルで上書きすることによって実行される。マージ処理の完了後、新しいリビジョン識別子が共同編集支援クライアント２０に送信される。
【００３６】
ケースＢは、ケースＡには該当しないが、複数の編集をユーザの関与なしに所定のルールに従ってマージすることができる場合である。即ち、ファイルマージ部１４は、衝突判定範囲設定部１６に当該ファイルの衝突判定範囲を問い合わせ、その衝突判定範囲に従ってファイルを衝突判定範囲の領域単位に区切ったときに、各区切り毎に編集が重ならない場合である。このケースＢの場合、衝突判定範囲の領域毎に、複数の共同編集支援クライアント２０による編集結果を適用し、それらを結合したファイルをファイル格納部１３に格納することで、マージ処理が実行される。マージ処理後のファイルと新しいリビジョン識別子が各共同編集支援クライアント２０に送信される。
【００３７】
共同編集支援クライアント２０側で、ユーザがマージ後のファイルに意味的な矛盾や不具合を発見した場合は、ファイル編集部２３からファイル同期部２４を介してファイルマージ部１４にマージ処理の失敗が通知され、自動マージ処理の失敗の記録がマージ履歴格納部１５に格納される。この場合、ユーザが手動でマージ処理を行い、その結果をファイルマージ部１４に送信することにより、ユーザの手動マージ結果をファイル格納部１３のファイルに反映させることができる。
【００３８】
ユーザがマージ後のファイルに不都合を発見しなければ、ファイル編集部２３からファイル同期部２４を介してファイルマージ部１４にマージ処理の成功が通知され、自動マージ処理の成功の記録がマージ履歴格納部１５に格納される。
【００３９】
ケースＣは、ケースＡ，Ｂに該当しない場合である。即ち、ファイルマージ部１４で複数の編集をマージする際に、衝突判定範囲における編集が重複した（即ち、衝突した）ために、自動マージ処理ができない場合である。この場合、ファイルマージ部１４は、ユーザによる手動マージの要求を、共同編集支援クライアント２０側のファイル同期部２４に送信する。手動マージの要求は、マージ前の複数のファイルをそのまま提示したり、衝突していない部分には自動マージを実施して衝突した部分のみを提示したり、自動マージした部分と衝突した部分とを混在させて提示したりすることができる。いずれにしても、このケースＣの場合は、ユーザによる手動マージが必要となる。
【００４０】
次に、図２のフローチャートを参照して、図１の共同編集支援システムによる共同編集処理の動作を説明する。
共同編集支援クライアント２０のファイル表示部２２は、ユーザの要求に応じて共同編集支援サーバ１０に取得コマンドを送信する。取得コマンドに応じて、共同編集支援サーバ１０側のファイル取得部１２によってファイル格納部１３に格納されているファイルとリビジョン識別子が読み出され、通信網１を介して共同編集支援クライアント２０側に送信される。これにより、共同編集支援クライアント２０のファイル表示部２２に、編集対象のファイルが表示される（ステップＳ１）。
【００４１】
ユーザは、ファイル編集部２３の編集機能を利用して、編集対象のファイルの編集作業を行う（ステップＳ２）。ユーザが編集作業の区切りを入力すると、ファイル同期部２４は、編集後のファイルと取得したリビジョン識別子を共同編集支援サーバ１０のファイルマージ部１４に送る。
【００４２】
ファイルマージ部１４は、ファイル格納部１３に格納されているファイルのリビジョン識別子と、共同編集支援サーバ１０から送られてきたファイルのリビジョン識別子を比較し、複数の共同編集支援クライアント２０によって１つのファイルに対して同時に編集が行われたか否かを調べる（ステップＳ３）。
【００４３】
リビジョン識別子が一致していなければ、同時に編集が行われていないことが分かり（ステップＳ３；ＮＯ）、ファイルマージ部１４は、送られてきたファイルをファイル格納部１３のファイルに上書きすることによって格納する（ステップＳ４）。なお、この処理は、前述したケースＡのマージ処理に該当する。
【００４４】
一方、リビジョン識別子が一致していれば、同時に編集が行われていたことが分かり（ステップＳ３；ＹＥＳ）、ファイルマージ部１４は、衝突判定範囲設定部１６に対して衝突判定範囲の設定を要求する。衝突判定範囲設定部１６は、マージ履歴格納部１５に格納されている過去の自動マージの成功例や失敗例と手動マージの結果に基づいて、衝突判定範囲を設定する（ステップＳ５）。
【００４５】
ファイルマージ部１４は、衝突判定範囲設定部１６によって設定された衝突判定範囲に従って、ファイル格納部１３に格納されているファイルと共同編集支援クライアント２０から送られてきたファイルの編集とのマージ処理の可能性を判定する（ステップＳ６）。
【００４６】
設定された衝突判定範囲で重複した編集がなければ自動マージが可能と判定し（ステップＳ６；ＹＥＳ）、予め定められたルールに従って自動マージ処理を実行する（ステップＳ７）。なお、この処理は、前述したケースＢのマージ処理に該当する。
【００４７】
自動マージ処理が行われた結果のファイルは、共同編集支援クライアント２０に送られ、そのファイル表示部２２によってユーザに表示される。ユーザは、ファイル表示部２２に表示されたファイルの内容を確認することにより、自動マージが成功したか否かを判定する（ステップＳ８）。ユーザの判定結果は、ファイル編集部２３からファイル同期部２４を介して、共同編集支援サーバ１０のファイルマージ部１４に伝えられる。
【００４８】
ユーザが自動マージが成功したと判断した場合（ステップＳ８；ＹＥＳ）、ファイルマージ部１４は、マージ履歴格納部１５に自動マージの成功の記録を格納する（ステップＳ９）。また、ユーザが自動マージが失敗したと判断した場合（ステップＳ８；ＮＯ）、ファイルマージ部１４は、マージ履歴格納部１５に自動マージの失敗の記録を格納する（ステップＳ１０）。
【００４９】
ステップＳ６における自動マージの可能性の判定で、設定された衝突判定範囲で重複した編集がある場合、ファイルマージ部１４は、自動マージが不可能と判定し（ステップＳ６；ＮＯ）、共同編集支援クライアント２０に手動マージ処理を依頼する旨の情報を送信する。このとき、必要に応じて自動マージ可能な一部分だけをマージしたファイルを付加して送信するようにしても良い。
【００５０】
これにより、共同編集支援クライアント２０のファイル表示部２２に、ユーザに対する手動マージ処理の依頼が表示される。ファイル編集部２３は、ユーザによる手動マージの結果を受け取り、ファイル同期部２４を介してファイルマージ部１４に伝える。なお、この処理は、前述したケースＣのマージ処理に該当する。
【００５１】
ファイルマージ部１４は、共同編集支援クライアント２０から送られてきた手動マージの結果に従い、ファイル格納部１３に格納されているファイルを更新する（ステップＳ１１）と共に、マージ履歴格納部１５に手動マージの結果を記録する（ステップＳ１２）。
以上の処理は、ファイルの編集単位に繰り返して実行される。
【００５２】
次に、図３を参照しつつ、図１における自動マージ処理の具体例を説明する。
ファイルのマージは、Subversion（商標）等のリビジョン管理システムを用いて実現することができる。リビジョン管理システムは、編集毎の変化をすべて記録することができ、任意の時点でのファイルを、リビジョン番号等を指定することによって取り出すことができる。ファイル形式は、例えばＸＭＬ等を使用することができる。
【００５３】
図３（ａ）に示すように、ファイル格納部１３に格納されている初期状態のＸＭＬファイルが、<aaa><bbb><ccc>123</ccc><ddd>456</ddd></bbb><e><f>789</f></e></aaa>であるとする。ここで、例えば<aaa>，</aaa>は、階層構造を示すための１対のタグで、開始タグ<aaa>と終了タグ</aaa>で要素を挟むことによって、１つのファイルを階層的に表現するようになっている。
【００５４】
初期状態のＸＭＬファイルに対して、第１の共同編集支援クライアント２０は、図３（ｂ）に示すように、<aaa><bbb><ccc>234</ccc><ddd>456</ddd></bbb><e><f>789</f></e></aaa>のような編集を行い、第２の共同編集支援クライアント２０は、図３（ｃ）に示すように、<aaa><bbb><ccc>123</ccc><ddd>567</ddd></bbb><e><f>789</f></e></aaa>のような編集を行ったとする。
このＸＭＬにおいて、cccとdddの要素に意味的な矛盾はないとすると、自動マージ処理で期待されるマージ結果は、図３（ｄ）に示すように、<aaa><bbb><ccc>234</ccc><ddd>567</ddd></bbb><e><f>789</f></e></aaa>である。
【００５５】
ここで、マージの衝突判定範囲をＸＭＬの階層で考えるとすると、衝突判定の階層が１の場合は、bbbとeの要素が衝突範囲の単位となり、衝突判定の階層が２の場合は、cccとdddとfの要素が衝突範囲の単位となる。従って、衝突判定の階層が２の場合は、cccとdddの要素に意味的な矛盾はないとしているので、第１と第２の共同編集支援クライアント２０の編集は、自動マージによって期待する効果を得ることができる。
【００５６】
仮に、cccとdddの要素に意味的な矛盾がある場合は、自動マージによる結果は、ユーザによって失敗と判定される。そして、失敗した旨の情報と共に手動で行われた正しいマージ結果が、ユーザから与えられることになる。このような判定結果は、マージ履歴としてマージ履歴格納部１５に格納に保存される。失敗が何回か連続すれば、衝突判定範囲設定部１６によって衝突判定の範囲に問題があると判断され、衝突判定範囲の階層を２から１に拡大するような変更が行われる。
【００５７】
これとは逆に、衝突判定の階層が１に設定されている場合、第１と第２の共同編集支援クライアント２０の編集は常に衝突と判定され、手動マージの対象となる。ユーザから２つの編集を手動でマージした結果が送られてくると、そのマージ結果から衝突判定の階層を２にして自動マージが可能であるか否かが判定できる。何回かの手動マージの結果から、自動マージで問題ないことが確認できれば、衝突判定の階層を２に変更し、衝突判定範囲を狭めることができる。これにより、自動マージを行うことができる範囲が拡大する。
【００５８】
Subversion（商標）は、テキストファイルを行単位で扱うものであるが、ＸＭＬは、テキストファイルとして扱えるものの行という概念が存在しない。そこで、リビジョン管理システムとしてSubversion（商標）を用い、ＸＭＬを編集の対象とする場合、ＸＭＬに行の概念を導入して衝突判定の範囲として扱うようにする必要がある。例えば、衝突判定の階層が１の場合、“<aaa>○<bbb><ccc>123</ccc><ddd>456</ddd></bbb><e><f>789</f></e>○</aaa>○”のように、○の位置に改行コードを挿入することにより、Subversion（商標）のマージ機能を利用することができる。
【００５９】
以上詳細に説明したように、第１の実施形態の共同編集支援システムは、自動マージの成功や失敗の記録と共に、ユーザによる手動マージの結果を格納するマージ履歴格納部１５と、このマージ履歴格納部１５を参照して新たな衝突判定範囲を設定してファイルマージ部１４に与える衝突判定範囲設定部１６を有している。これにより、編集状況に応じてマージ処理における衝突判定範囲をダイナミックに調整することが可能になり、マージ処理での衝突の発生を減少させることができるという効果がある。
【００６０】
（第２の実施形態）
図４に示すように、第２の実施形態の共同編集支援システムは、第１の実施形態における共同編集支援クライアント２０に代えて、若干機能が追加された共同編集支援クライアント２０Ａを設けたものである。なお、この図４において、図１中の要素と共通の要素には共通の符号を付加し、その説明を省略する。
【００６１】
共同編集支援クライアント２０Ａは、図４に示すように、機能的には、通信制御部２１、ファイル表示部２２、ファイル編集部２３、およびファイル同期部２４に加えて、編集区切り検知部２５を追加したものである。
【００６２】
編集区切り検知部２５は、ユーザがファイル編集部２３にファイルの編集の指示を与える状況を詳細に監視し、記録するものである。具体的には編集区切り検知部２５は、ファイル編集に対するキーボード操作やマウス操作を監視し、その内容を記録するようになっている。更に、編集区切り検知部２５は、キーボード操作やマウス操作の記録から編集区切りを検知し、一定のまとまった操作が終了した時点で編集の切れ目と判断し、ユーザにファイルの同期を促したり、ファイル同期部２４に対して強制的に同期処理を行わせる機能を有している。
【００６３】
ユーザの編集作業の区切りを検知する方法の１つとして、ユーザによる操作が一定時間停止し、キーボードやマウスからの入力が一定時間なくなったときを、編集区切りとして検知することができる。但し、編集区切りに対応する無操作時間は、ユーザによる個人差があるので、固定値に設定するのではなく、最初は小さく設定しておき、操作の切れ目に周期性が表れた場合の無操作時間を使用するようにしても良い。
【００６４】
編集区切り検知部２５の追加により、ファイル編集部２３には、編集状況を編集区切り検知部２５に出力したり、編集区切り検知部２５からファイルの同期処理を促す情報を入力したりする機能が必要になる。また、ファイル同期部２４には、この編集区切り検知部２５からの同期処理の要求を受け入れる機能が必要になるが、その他の機能は第１の実施形態で説明したとおりである。
【００６５】
この第２の実施形態の共同編集支援システムの全体の動作は、第１の実施形態の共同編集支援システムに、前述したとおりの編集区切り検知部２５の機能に基づく動作が追加されたものである。
【００６６】
以上のように、第２の実施形態の共同編集支援システムは、ユーザの編集操作を監視して編集の区切りを検知し、ユーザに同期処理を促したり強制的に同期処理を実施したりする編集区切り検知部２５を備えている。これにより、第１の実施形態の共同編集支援システムにおける効果に加えて、マージ処理のタイミングを編集状況に応じてダイナミックに調整することが可能になり、マージ処理での衝突の発生を減少させることができる。
【００６７】
なお、本発明は、上記実施形態に限定されるものではなく、下記のような種々の変形が可能である。
（ａ）  文書やプログラムの共同編集だけでなく、通信網を介した議論や合意形成の支援にも適用可能である。
（ｂ）  共同編集の対象となるファイル形式はＸＭＬに限定されない。また、リビジョン管理システムは、Subversion（商標）に限定されず、ＣＶＳ(Concurrent Version System)や、その他の任意のリビジョン管理システムを使用することができる。
（ｃ）  共同編集支援サーバ１０と複数の共同編集支援クライアント２０等が通信網１を介して接続されているが、通信網１を介さずに、共同編集支援サーバ１０に複数の共同編集支援クライアント２０等を直接接続するように構成しても良い。
【符号の説明】
【００６８】
１    通信網
１０    共同編集支援サーバ
１１，２１    通信制御部
１２    ファイル取得部
１３    ファイル格納部
１４    ファイルマージ部
１５    マージ履歴格納部
１６    衝突判定範囲設定部
２０，２０Ａ    共同編集支援クライアント
２２    ファイル表示部
２３    ファイル編集部
２４    ファイル同期部
２５    編集区切り検知部
【図１】
2010204946.tif 000003
【図２】
2010204946.tif 000004
【図３】
2010204946.tif 000005
【図４】
2010204946.tif 000006