(57)【特許請求の範囲】
【請求項１】
業務の工程および前記業務に属するアクティビティを、要素であるオブジェクトとして有するガントチャートを表示するガントチャート差分表示装置であって、
前記オブジェクトを示す識別子であるオブジェクトＩＤと、前記オブジェクトが属する前記工程の識別子である親行ＩＤと、を対応付けて記憶しているガントチャートデータを複数備える記憶部と、
前記複数のガントチャートデータを比較して、前記オブジェクトＩＤおよび前記親行ＩＤが一致しない前記オブジェクトを検出し、
前記検出結果に基づいて、前記オブジェクトの変更種別および／または変更数量を示すタイルマークを前記工程に関連付けて、比較元の前記ガントチャートデータを示す第一のガントチャートおよび比較先の前記ガントチャートデータを示す第二のガントチャートに表示し、
前記第一のガントチャートおよび前記第二のガントチャートのそれぞれに表示される、前記オブジェクトＩＤが等しい前記工程を結んで、前記工程の対応関係を示す行関連線を表示し、
前記第一のガントチャートに表示されている前記工程の変更種別が削除である場合は、前記第一のガントチャートをスクロールさせ、
前記第一のガントチャートおよび／または前記第二のガントチャートに表示されている前記工程の変更種別が移動である場合は、当該工程を表示している前記第一のガントチャートおよび／または前記第二のガントチャートをスクロールさせ、
前記第二のガントチャートに表示されている前記工程の変更種別が追加である場合は、前記第二のガントチャートをスクロールさせる、制御をする制御部と、を有し、
前記制御部は、さらに、
前記業務が行われる期間全体または所定の期間における、前記比較元の前記ガントチャートデータを示す第一のサブ画面および前記比較先の前記ガントチャートデータを示す第二のサブ画面を表示し、
前記第一のガントチャートおよび前記第一のサブ画面の縦軸および横軸の表示位置を揃え、
前記第二のガントチャートおよび前記第二のサブ画面の縦軸および横軸の表示位置を揃える制御を行う、
ことを特徴とする、ガントチャート差分表示装置。
【請求項２】
前記制御部は、さらに、
前記業務に属する工程および当該工程の変更種別を、全ての工程の中における当該工程の相対的な位置がわかるように表示する行マップに前記タイルマークを表示する、
ことを特徴とする、請求項１に記載のガントチャート差分表示装置。
【請求項３】
前記ガントチャートデータは、さらに、
前記オブジェクトの名称と、前記工程を表示するか否かを示す開閉状態と、前記アクティビティの開始日と、前記アクティビティの終了日と、前記アクティビティにおける業務量のうち終了している業務量の比率である進捗率と、を前記オブジェクトの属性として記憶しており、
前記制御部は、さらに、
前記オブジェクトの属性の変更を検出し、
前記検出されたオブジェクトの属性の変更内容を、前記第一のガントチャート、前記第二のガントチャート、前記第一のサブ画面および前記第二のサブ画面に表示する、
ことを特徴とする、請求項１に記載のガントチャート差分表示装置。
【請求項４】
前記ガントチャートデータは、さらに、
前記親行ＩＤが等しい工程である兄弟行同士における相互の関係を示す行内順番を、前記オブジェクトの属性として記憶しており、
前記制御部は、さらに、
前記行内順番における、最小変換手順の追加および削除を検出し、
前記オブジェクトの属性の変更を検出していない場合は、前記オブジェクトの属性の変更を検出し、
前記検出結果を、前記第一のガントチャート、前記第二のガントチャート、前記第一のサブ画面および前記第二のサブ画面に表示する、
ことを特徴とする、請求項１ないし請求項３のいずれか１項に記載のガントチャート差分表示装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ガントチャート差分表示装置に関する。
【背景技術】
【０００２】
業務の工程管理において、業務の進捗状況を視覚的に理解しやすくするために、業務を構成する複数のアクティビティを時系列で表示する手法が一般に用いられている。このように表示された工程は、「ガントチャート」と呼ばれ、通常は、横軸を時間軸とする平面に、アクティビティを示す線分又は長方形のバーを行毎に配置し、線分やバーに進捗状況を示す目印を付す、又は関連のあるアクティビティ同士を線で結ぶ等の工夫がなされる。
また、業務は実行計画どおりに進まないことがあり、実行計画は必要に応じて変更される。
【０００３】
特許文献１には、複数のタスクが遂行されるべきプロジェクトについて、タスク（アクティビティ）の実行計画変更による影響をプロジェクトの管理者が効率的に把握できるよう支援する技術が開示されている。
特許文献２には、ユーザによる特段の操作なしでも関連するアクティビティの全体を画面上に表示する技術が開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１０−２２４８８９号公報（段落０００４〜０００６）
【特許文献２】特開２００９−２２３６００号公報（段落０００５）
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１には、ガントチャートにおける変更前後の工数の差分を表示するが、工数以外の差分および変更前後の関連性を表示することは開示されていない。また、特許文献２には、アクティビティの全体と詳細とを同時に表示する技術およびガントチャートにおける変更前後の差分を表示する技術については開示がない。
【０００６】
そこで、本発明は、前記した問題を解決するために、ガントチャートにおける変更前後の差分および関連性を表示するガントチャート差分表示装置を提供することを課題とする。
【課題を解決するための手段】
【０００７】
前記課題を解決するため、本発明によるガントチャート差分表示装置は、業務の工程および前記業務に属するアクティビティを、要素であるオブジェクトとして有するガントチャートを表示するガントチャート差分表示装置であって、前記オブジェクトを示す識別子と、前記オブジェクトが属する前記工程の識別子である親行ＩＤと、を対応付けて記憶しているガントチャートデータを複数備える記憶部と、前記複数のガントチャートデータを比較して、前記識別子および前記親行ＩＤが一致しない前記オブジェクトを検出し、前記検出結果に基づいて、前記オブジェクトの変更種別および／または変更数量を示すタイルマークを前記工程に関連付けて比較元の前記ガントチャートデータを示す第一のガントチャートおよび比較先の前記ガントチャートデータを示す第二のガントチャートに表示し、前記第一のガントチャートおよび前記第二のガントチャートのそれぞれに表示される、前記識別子が等しい前記工程を結んで、前記工程の対応関係を示す行関連線を表示し、前記第一のガントチャートに表示されている前記工程の変更種別が削除である場合は、前記第一のガントチャートをスクロールさせ、前記第一のガントチャートおよび／または前記第二のガントチャートに表示されている前記工程の変更種別が移動である場合は、当該工程を表示している前記第一のガントチャートおよび／または前記第二のガントチャートをスクロールさせ、前記第二ガントチャートに表示されている前記工程の変更種別が追加である場合は、前記第二のガントチャートをスクロールさせる、制御をする制御部と、を有することを特徴とする。
【発明の効果】
【０００８】
本発明によれば、ガントチャートにおける変更前後の差分および関連性を表示するガントチャート差分表示装置を提供することができる。
【図面の簡単な説明】
【０００９】
【図１】本実施形態に係るガントチャート差分表示装置のハードウェア構成図である。
【図２】本実施形態に係るガントチャート表示画面の一例を示す図である。
【図３】タイルマークを説明する図である。
【図４】行関連線を説明する図である。
【図５】旧サブ画面および新サブ画面を説明する図である。
【図６】同時スクロールを説明する図である。
【図７】行マップを説明する図である。
【図８】ガントチャートデータを説明する図である。
【図９】ガントチャートデータのうち、行に関するデータ（行データ）の一例である。
【図１０】ガントチャートデータのうち、アクティビティに関するデータ（アクティビティデータ）の一例である。
【図１１】差分データを説明する図である。
【図１２】差分データのうち、行に関するデータ（行差分データ）の一例である。
【図１３】差分データのうち、行に関するデータ（行差分データ）の一例である。
【図１４】差分データのうち、行に関するデータ（行差分データ）の一例である。
【図１５】差分データのうち、行に関するデータ（行差分データ）の一例である。
【図１６】差分データのうち、アクティビィに関するデータ（アクティビティ差分データ）の一例である。
【図１７】差分データのうち、アクティビィに関するデータ（アクティビティ差分データ）の一例である。
【図１８】差分データのうち、アクティビィに関するデータ（アクティビティ差分データ）の一例である。
【図１９】差分検出処理のフローチャートである。
【図２０】階層構造差分検出処理のフローチャートである。
【図２１】兄弟移動検出処理のフローチャートである。
【図２２】属性更新検出処理のフローチャートである。
【図２３】ガントチャート表示処理のフローチャートである。
【図２４】同時スクロール処理のフローチャートである。
【発明を実施するための形態】
【００１０】
以降、本発明を実施するための形態（「本実施形態」という）を、図などを参照しながら詳細に説明する。また、本実施形態を説明するための全図において、同一部には原則として同一の符号を付し、その繰り返しの説明は省略する。
【００１１】
＜＜ハードウェア構成＞＞
図１は、本実施形態に係るガントチャート差分表示装置のハードウェア構成図である。
ガントチャート差分表示装置１００は、相互にバスで接続された、中央制御装置（制御部）１１０、入力装置（入力部）１２０、出力装置（出力部）１３０、主記憶装置（記憶部）１４０、および補助記憶装置（記憶部）１５０を有する。
【００１２】
中央制御装置１１０は、プログラムである差分検出部１１１（階層構造差分検出部１１１ａ、最小変換手順検出部１１１ｂ、属性変更検出部１１１ｃ）、表示処理部１１２（行マップ生成部１１２ａ、タイルマーク生成部１１２ｂ、行関連線生成部１１２ｃ、強調データ生成部１１２ｄ）、操作制御部１１３（同時スクロール制御部１１３ａ、画面連動制御部１１３ｂ）およびカスタマイズ部１１４（表示属性カスタマイズ部１１４ａ、強調表示カスタマイズ部１１４ｂ）を実行して、ガントチャート差分表示装置１００を制御する（詳細後記）。
【００１３】
入力装置１２０は、マウス、キーボード、タッチパネル等であり、ガントチャート差分表示装置１００の操作者からの指示を受け付ける。
出力装置１３０は、ディスプレイ、プリンタ等であり、ガントチャート差分表示装置１００の操作画面を表示する装置である。
主記憶装置１４０は、ＲＡＭ（Random Access Memory）、ＲＯＭ（Read Only Memory）等であり、中央制御装置１１０が実行するプログラムを格納したり、一時的なデータ（差分データ１４１、強調データ１４２）を格納したりする。
補助記憶装置１５０は、ＨＤＤ(Hard Disk Drive)等であり、旧ガントチャートデータ１５１および新ガントチャートデータ１５２を格納している（詳細後記）。なお、旧ガントチャートデータ１５１および新ガントチャートデータ１５２を総称して「ガントチャートデータ」と呼ぶ。
【００１４】
以降、「○○部は」と主体を記した場合は、中央制御装置１１０が必要に応じ補助記憶装置１５０から各プログラムを読み出した上で主記憶装置１４０にロードし、各機能（後記）を実行するものとする。各プログラムは、予め補助記憶装置１５０に記憶されていてもよいし、他の記憶媒体または通信媒体を介して、必要なときにガントチャート差分表示装置１００に取り込まれてもよい。
【００１５】
（ガントチャート表示画面）
図２は、本実施形態に係るガントチャート表示画面の一例を示す図である。
ガントチャート表示画面２０００は、旧メイン画面２１００、新メイン画面２２００、旧サブ画面２３００、新サブ画面２４００および行マップ２５００を有する。
【００１６】
旧メイン画面２１００は、後記する旧ガントチャートデータ１５１を表示したものである。旧メイン画面２１００においては、１つの工程（アイテム）が１行で表示されている。また、工程（行）は階層構造を有し、下位の階層を非表示（行を折り畳む）としたり、下位の階層を表示（行を展開する）したりすることができる。
【００１７】
行番号欄２１０１には、行番号が表示されている。行番号は、ガントチャートを新規作成した際、行ごとに便宜的に割り振られたものである。この行番号は、行を追加・削除した場合でも、新規作成時に割り振られた行番号を保持するものとする。
また、行番号欄２１０１には、タイルマークが表示されている（詳細後記）。
【００１８】
工程名欄２１０２には、工程の名称が表示されている。工程の名称は、ユーザが任意に指定したものであり、適宜変更可能である。
日付欄２１０３には、日付が表示されている。ガントチャートは、横軸を時間軸とするため、換言すれば、日付は横軸の目盛である。なお、日付には「時刻」を含めてもよい。
描画欄２１０４には、アクティビティ２１０５、注釈２１０６、チェックポイント２１０７、マイルストーン２１０８、イナズマ線２１０９、関連線２１１０、差分情報２１１１および強調枠２１１２が表示されている。
【００１９】
アクティビティ２１０５は、業務を構成する要素である。
注釈２１０６は、補足的な説明である。
チェックポイント２１０７は、工程の進捗状況の確認を行う日（進捗確認日）である。
マイルストーン２１０８は、工程管理を行うにあたり、目印となる時点を示す記号である。
イナズマ線２１０９は、各アクティビティの進捗率を示す進捗点を結んだ線である。進捗率とは、アクティビティの業務量のうち、進捗確認日時点で終了している業務量の比率（百分率）である。
関連線２１１０は、各アクティビティ間の関連性を示す線である。
なお、アクティビティ２１０５〜関連線２１１０および工程（行）を総称して「オブジェクト」と呼ぶ。オブジェクトとは、ガントチャートの要素である。
差分情報２１１１は、オブジェクトの変更前後の差分（詳細後記）に関する情報である。差分情報２１１１は、ユーザがマウス操作により、オブジェクトにマウスオーバーまたはクリックすると表示される。そして、マウスポインタがオブジェクトから離れると、差分情報２１１１は消える（非表示となる）。
強調枠２１１２は、アクティビティを強調表示する枠である。強調枠２１１２は、後記するタイルマークと同じ色で表示される。
【００２０】
新メイン画面２２００は、後記する新ガントチャートデータ１５２を表示したものである。新メイン画面２２００の構成は、旧メイン画面２１００と同様である。
【００２１】
そして、旧メイン画面２１００と新メイン画面２２００との間には、行関連線２１１３が表示される。この行関連線２１１３は、旧メイン画面２１００において表示されている行と新メイン画面２２００において表示されている行との対応関係を示す線である（詳細後記）。
【００２２】
旧サブ画面２３００は、横軸をプロジェクトの全体の期間として、旧メイン画面２１００に表示されている内容の一部を表示したものである（詳細後記）。
新サブ画面２４００は、横軸をプロジェクトの全体の期間として、新メイン画面２２００に表示されている内容の一部を表示したものである（詳細後記）。
【００２３】
行マップ２５００は、プロジェクトの全体の工程を簡略的に表示したものである。行マップ２５００には、旧マップレール２５１０および新マップレール２５２０が表示されている。旧マップレール２５１０は、旧メイン画面２１００に表示されるべき全ての工程を簡略的に表示したものである。新マップレール２５２０は、新メイン画面２２００に表示されるべき全ての工程を簡略的に表示したものである
なお、旧メイン画面２１００、旧サブ画面２３００および旧マップレール２５１０は、比較元のガントチャートデータを示すものであり、総称して「第一のガントチャート」と呼ぶ。また、新メイン画面２２００、新サブ画面２４００、新マップレール２５２０は、比較先のガントチャートデータを示すものであり、総称して「第二のガントチャート」と呼ぶ。
【００２４】
（タイルマーク）
図３は、タイルマークを説明する図である。
タイルマークは、オブジェクトの変更種別および／または変更数量を簡略的に示すものである。本実施形態において、変更種別は、「更新」、「移動」、「削除」および「追加」の４種類が存在し、それぞれ異なる色で表示される。
【００２５】
「更新」は、オブジェクトの属性（詳細後記）が変更されることを示し、黄色で表示される。図３においては、黄色を、右上から左下の斜線で示している。
「移動」は、オブジェクトの位置（詳細後記）が変更されることを示し、赤色で表示される。図３においては、赤色を、左上から右下の斜線で示している。
「削除」は、オブジェクトが削除されることを示し、灰色で表示される。図３においては、灰色を、縦線で示している。
「追加」は、オブジェクトが付け足されることを示し、緑色で表示される。図３においては、緑色を、横線で示している。
【００２６】
行の変更種別は、行番号欄２１０１の色により示される。例えば、行番号欄２１０１が黄色の場合、行が更新された（属性が変更された）ことを示している。
行に含まれる、行以外のオブジェクトの変更種別および変更数量は、行番号の右側に隙間を設けて表示される矩形により示される。矩形の色が変更種別を示し、矩形の数が変更数量を示している。
また、折り畳み行（当該行の配下に属する、非表示となっている工程）において、変更があった場合は、工程名欄２１０２の右下に三角形が表示される。
【００２７】
図３に示す例では、タイルマークにより以下のことがわかる。
（１）行番号が「１７」である行は、工程の名称などの属性が更新された行である。
（２）行番号が「１７」である行は、移動されたオブジェクトを２つ、更新されたオブジェクトを２つ、削除されたオブジェクトを１つ、追加されたオブジェクトを１つ、含む。
（３）行番号が「１７」である行の配下に属する行であって、折り畳まれて非表示となっている行が、変更されている。
【００２８】
なお、タイルマークは、ユーザが着目したい変更種別のみを表示したり、色を任意に指定したり、カスタマイズすることができる。また、タイルマークは、変更種別または変更数量のいずれかのみを表示してもよいし、両方を表示してもよい。
【００２９】
（行関連線）
図４は、行関連線を説明する図である。
行関連線２１１３は、新メイン画面２２００に表示されている、ある行の左端を始点とし、旧メイン画面２１００に表示されている、当該行に対応する行の右端を終点とする線である。行関連線２１１３の終点は、ユーザの目に留まりやすいように「●」で示されているが、この形状に限るものではない。また、行関連線２１１３の色は、前記したタイルマークと同様に、変更種別を示す。なお、行関連線２１１３は、変更種別が「更新」および「移動」の場合に表示される。
ここで、「ある行に対応する行」とは、後記する行データ（図８参照）のＩＤが等しい行データをいう。つまり、行関連線２１１３は、新メイン画面２２００および旧メイン画面２１００にそれぞれ表示されている、ＩＤが等しい行を結ぶものである。
【００３０】
行関連線２１１３は、行が追加・削除・移動されると、後記する同時スクロールにより、適宜伸縮・交差する。また、行関連線２１１３は、旧メイン画面２１００または新メイン画面２２００のどちらか一方を上下にスクロールさせると、後記する同時スクロールにより、適宜伸縮する。また、ユーザがマウス操作により、行関連線２１１３（または終点）をクリックすると、後記するスクロール位置合わせが行われ、対応する行が横方向に並び、行関連線２１１３は、横方向に水平な直線となる。
【００３１】
（旧サブ画面および新サブ画面）
図２および図５を参照して、旧サブ画面２３００および新サブ画面２４００を説明する。
旧サブ画面２３００および新サブ画面２４００は、ある工程（行）に着目したとき、当該工程がプロジェクトの全体の期間内において、どの位置にあるか等を把握するものである。長期にわたるプロジェクトの場合、プロジェクトの開始日から終了日まで、１つの画面で表示しようとすると、縮小して表示しなければならず、詳細を把握することが困難になってしまう。そこで、図２に示すように、詳細は旧メイン画面２１００および新メイン画面２２００に表示し、期間の全体は旧サブ画面２３００および新サブ画面２４００に表示することで、期間の全体を把握しつつ、詳細を確認することが可能となる。なお、旧サブ画面２３００および新サブ画面２４００に表示される期間は、ユーザが任意に指定することも可能である。
【００３２】
また、旧サブ画面２３００および新サブ画面２４００は、それぞれ、旧メイン画面２１００および新メイン画面２２００に連動している。
例えば、図２に示す旧メイン画面２１００において表示されている行番号が「１７」である行を、ユーザがマウス操作等により選択すると、旧サブ画面２３００がスクロールし、図５（ａ）に示すように、行番号が「１７」である行が旧サブ画面２３００に表示される。また、図５（ａ）に示す旧サブ画面２３００に表示されているアクティビティ２１０５ａを、ユーザがマウス操作等により選択すると、旧メイン画面２１００がスクロールし、図５（ｂ）に示すように、当該選択されたアクティビティ２１０５ａが旧メイン画面２１００に表示される。
また、旧メイン画面２１００に表示されている範囲を示す旧サブ画面移動枠２３１０を、ユーザがマウス操作等により選択して移動すると、連動して旧メイン画面２１００がスクロールする。このような連動処理によって、旧メイン画面２１００および旧サブ画面２３００の表示位置（縦軸・横軸）が揃うことになる。また、この連動処理は、ガントチャート差分表示装置１００の画面連動制御部１１３ｂにより行われる。
【００３３】
なお、同様に、新メイン画面２２００は、新サブ画面２４００および新サブ画面移動枠２４１０に連動している。
【００３４】
（同時スクロール）
「同時スクロール」とは、新旧のガントチャートを比較しやすいように、旧メイン画面２１００および新メイン画面２２００のどちらか一方の画面または両方の画面をスクロールさせるものである。なお、旧メイン画面２１００または新メイン画面２２００の一方のみが独立してスクロールすることを「単独スクロール」という。
【００３５】
前記したように、旧メイン画面２１００は旧サブ画面２３００および旧サブ画面移動枠２３１０に連動し、新メイン画面２２００は新サブ画面２４００および新サブ画面移動枠２４１０に連動している。さらに、旧メイン画面２１００は後記する旧マップ移動枠２５１１（図７）にも連動し、新メイン画面２２００は後記する新マップ移動枠２５２１（図７）にも連動している。
旧メイン画面２１００および新メイン画面２２００のスクロールは、下記に示す「スクロール操作」により行われる。これらのスクロール操作は、ユーザがマウスを操作することにより行われる。
（１）スクロールバーをクリックまたはドラッグする。
（２）マウスホイルを回転させる。
（３）旧サブ画面移動枠２３１０、新サブ画面移動枠２４１０、旧マップ移動枠２５１１および新マップ移動枠２５２１をドラッグさせる。
【００３６】
図６は、同時スクロールを説明する図である。図６では、旧メイン画面２１００および新メイン画面２２００を、行番号で簡略的に示している。また、行番号を囲む外枠（太線）は、旧メイン画面２１００および新メイン画面２２００において先頭に表示される行を示している。
【００３７】
図６においては、図３と同様に斜線・縦線・横線によって、更新・移動・削除・追加を示している。また、変更種別が「更新」である行を「更新行」と、「移動」である行を「移動行」と、「削除」である行を「削除行」と、「追加」である行を「追加行」と呼び、更新・移動・削除・追加のいずれでもない行を「通常行」と呼ぶ。
なお、「追加行」は、旧メイン画面２１００には表示されないが、新メイン画面２２００には表示される。「削除行」は、旧メイン画面２１００には表示されるが、新メイン画面２２００には表示されない。「更新行」および「移動行」は、旧メイン画面２１００および新メイン画面２２００に表示される。
【００３８】
初期表示は、図６（ａ）に示すように、行番号が「０」である行を先頭にして、旧メイン画面２１００および新メイン画面２２００が表示される。
【００３９】
次に、ユーザがスクロール操作を行うと、図６（ｂ）に示すように、旧メイン画面２１００には、行番号が「０」である行の下の行（行番号空欄）が先頭に表示される。一方、新メイン画面２２００には、行番号が「０」である行の下の行（行番号「１」）が先頭に表示される。
これは、図６（ａ）において、旧メイン画面２１００および新メイン画面２２００の先頭に表示されている行が通常行であるため、同時スクロールによって、旧メイン画面２１００および旧サブ画面２３００が下方向に１行スクロールされたためである。なお、旧メイン画面２１００および新メイン画面２２００の先頭に表示されている行が更新行であっても、通常行である場合と同様に、旧メイン画面２１００および旧サブ画面２３００が下方向に１行スクロールされる。
【００４０】
さらに、ユーザがスクロール操作を行うと、図６（ｃ）に示すように、旧メイン画面２１００には、行番号が空欄である行の下の行（行番号「１」）が先頭に表示される。一方、新メイン画面２２００はスクロールせずに、行番号が「１」である行が先頭に表示されたままである。
これは、図６（ｂ）において、旧メイン画面２１００の先頭に表示されている行が削除行であるため、同時スクロールによって、旧メイン画面２１００のみが下方向に１行スクロールされたためである。
【００４１】
さらに、ユーザがスクロール操作を行うと、図６（ｄ）に示すように、旧メイン画面２１００には、行番号が「１」である行の下の行（行番号「２」）が先頭に表示される。一方、新メイン画面２２００には、行番号が「１」である行の下の行（行番号「５」）が先頭に表示される。
これは、図６（ａ）から（ｂ）のスクロールと同様である。
【００４２】
さらに、ユーザがスクロール操作を行うと、図６（ｅ）に示すように、旧メイン画面２１００はスクロールせずに、行番号が「２」である行が先頭に表示されたままとなる。一方、新メイン画面２２００には、行番号が「５」である行の下の行（行番号空欄）が先頭に表示される。
これは、図６（ｄ）において、新メイン画面２２００の先頭に表示されている行が移動行であるため、同時スクロールによって、移動行を先頭に表示している新メイン画面２２００のみが下方向に１行スクロールされたためである。なお、移動行が旧メイン画面２１００に表示されていた場合は、旧メイン画面２１００のみが下方向に１行スクロールされる。
【００４３】
さらに、ユーザがスクロール操作を行うと、図６（ｆ）に示すように、旧メイン画面２１００はスクロールせずに、行番号が「２」である行が先頭に表示されたままとなる。一方、新メイン画面２２００には、行番号が空欄である行の下の行（行番号「２」）が先頭に表示される。
これは、図６（ｅ）において、新メイン画面２２００の先頭に表示されている行が追加行であるため、同時スクロールによって、新メイン画面２２００のみが下方向に１行スクロールされたためである。
【００４４】
また、図６（ｄ）において、行番号が「２」である行に着目すると、旧メイン画面２１００および新メイン画面２２００において、横方向に隣り合わせで表示されていない状態となっている。換言すれば、同じ行番号である行が、ズレて表示されている状態である。この場合、ユーザがマウス操作等により行関連線２１１３をクリックすると、当該クリックされた行関連線２１１３が横方向に水平な直線となるように、新メイン画面２２００がスクロールする。すなわち、同じ行番号である行が、横方向に隣り合わせで表示されるようになる。換言すれば、旧メイン画面２１００および新メイン画面２２００のズレが解消される。そして、図６（ｆ）に示す状態になる。このように、旧メイン画面２１００および新メイン画面２２００のズレを解消させることを、「スクロール位置合わせ」という。
【００４５】
また、同時スクロールは、縦方向（上下方向のスクロール）だけではなく、横方向（左右方向のスクロール）でも可能である。例えば、ユーザがスクロール操作により、旧メイン画面２１００を横方向へスクロールさせると、新メイン画面２２００も横方向にスクロールする。そして、旧メイン画面２１００に表示されている日付と、新メイン画面２２００に表示されている日付とが同じになると、スクロールは停止する。
なお、ユーザがスクロール操作により、新メイン画面２２００を横方向へスクロールさせた場合も、同様に、旧メイン画面２１００も横方向にスクロールする。
【００４６】
（行マップ）
図７は、行マップを説明する図である。
工程の数が多いプロジェクトの場合、行数が多くなり、旧メイン画面２１００および新メイン画面２２００において、全ての工程を表示できないことがある。そこで、行の変更状況を簡略的に示す行サムネイル２５３０を、タイルマークの行番号欄２１０１と同様の色（図３）で示し、変更種別を示すことで、全体の変更状況を把握することが可能となる。
【００４７】
また、行の移動が生じた際、移動元と移動先が離れていると、旧メイン画面２１００および新メイン画面２２００では、行関連線２１１３を途切れさせずに表示することができないことがある。そこで、旧マップレール２５１０と新マップレール２５２０との間にも行関連線２１１３を表示することで、行同士の対応関係を把握することが可能となる。
【００４８】
旧マップレール２５１０には、旧マップ移動枠２５１１が表示されている。また、新マップレール２５２０には、新マップ移動枠２５２１が表示されている。この旧マップ移動枠２５１１および新マップ移動枠２５２１は、それぞれ、旧メイン画面２１００および新メイン画面２２００において表示される工程の範囲（行の範囲）を示すものである。
【００４９】
また、旧マップ移動枠２５１１および新マップ移動枠２５２１は、それぞれ、旧メイン画面２１００および新メイン画面２２００に連動している。
例えば、ユーザがマウス操作等により、旧マップ移動枠２５１１を上下に動かすと、旧メイン画面２１００が上下にスクロールし、旧マップ移動枠２５１１により囲まれている範囲の工程（行）が、旧メイン画面２１００に表示される。逆に、旧メイン画面２１００をユーザがマウス操作等により上下にスクロールさせると、旧マップ移動枠２５１１が当該スクロールに併せて上下に動く。なお、新メイン画面２２００および新マップ移動枠２５２１も、同様に連動している。
【００５０】
＜＜ガントチャートデータ＞＞
図８は、ガントチャートデータを説明する図である。ガントチャートデータは、図８に示すように、階層構造を有する。
【００５１】
ガントチャートデータは、オブジェクトデータ（アクティビティ２１０５〜関連線２１１０および工程（行）のデータ）を含んで構成される。なお、図８中において、「△△群」と記した場合は、「△△」の集合を示すものとする。また、各オブジェクトデータは、オブジェクトを一意に特定する識別子であるＩＤを属性に有する。
【００５２】
行データは、工程（行）に関するデータである。行データは、属性として、ＩＤ、名称、親行ＩＤ、行内順番および開閉状態を有する。
名称とは、工程名欄２１０２に表示される、工程の名称である。
親行ＩＤとは、１つ上の階層に属する行（親行）のＩＤである。
行内順番とは、同一の親行の配下（直下）に属する行（兄弟行）同士内における相互の関係であり、数値が小さいほど上段に表示される。換言すれば、行内順番は、兄弟行同士における表示順序である。
開閉状態とは、行を表示（行を展開・開く）するか、行を非表示（行を折り畳む・閉じる）とするか、を示す情報である。
【００５３】
アクティビティデータは、アクティビティ２１０５（矩形）、チェックポイント２１０７（三角形）およびマイルストーン２１０８（円形）に関するデータである。アクティビティデータは、属性として、ＩＤ、名称、親行ＩＤ、開始日、終了日および進捗率を有する。
名称とは、アクティビティ２１０５の名称である。
親行ＩＤとは、アクティビティ２１０５が表示される行のＩＤである。
開始日とは、アクティビティ２１０５が、日付欄２１０３のどの位置から開始するか、換言すれば、どの位置から表示されるかを示す情報である。
終了日とは、アクティビティ２１０５が、日付欄２１０３のどの位置で終了するか、換言すれば、どの位置まで表示されるかを示す情報である。
進捗率とは、アクティビティ２１０５の業務量のうち、進捗確認日時点で終了している業務量の比率（百分率）である。進捗率は、日付（横軸の位置）で示すこともできる。
【００５４】
注釈データは、注釈２１０６に関するデータである。注釈データは、属性として、ＩＤ、親行ＩＤ、行内位置および日付を有する。
親行ＩＤとは、注釈２１０６が表示される行のＩＤである。
行内位置とは、注釈２１０６が表示される行における、縦方向の位置を示す情報である。
日付とは、注釈２１０６が、日付欄２１０３のどの位置に表示されるか、換言すれば、横軸の位置を示す情報である。
【００５５】
チェックポイントデータは、イナズマ線２１０９に関する情報である。チェックポイントデータは、属性として、ＩＤおよび日付を有する。
日付とは、イナズマ線２１０９が、日付欄２１０３のどの位置を基準とするか、換言すれば、イナズマ線２１０９の基準とする横軸の値を示す情報である。
【００５６】
進捗点データは、イナズマ線２１０９を構成する進捗点に関する情報である。進捗データは、属性として、アクティビティＩＤおよび進捗率を有する。
アクティビティＩＤは、進捗状況を示す対象であるアクティビティのＩＤである。
進捗率は、進捗状況を示す対象であるアクティビティの業務量のうち、進捗確認日時点で終了している業務量の比率（百分率）である。なお、進捗率は、日付（横軸の位置）により示すこともできる。
なお、チェックポイントデータおよび進捗点データにより、イナズマ線２１０９が表示される。イナズマ線２１０９は、チェックポイントデータの属性「日付」の縦方向に垂直な直線を基準として、進捗点を結んだ線である。
【００５７】
関連線データは、関連線２１１０に関する情報である。関連線データは、属性として、ＩＤ、開始アクティビティＩＤ、終了アクティビティＩＤ、接続位置および方向を有する。
開始アクティビティＩＤは、関連線２１１０の始点となるアクティビティのＩＤである。
終了アクティビティＩＤは、関連線２１１０の終点となるアクティビティのＩＤである。
接続位置は、関連線２１１０がどのようにつながっているかを示すものである。関連線２１１０は、アクティビティの開始日である左端（ｈｅａｄ）、終了日である右端（ｔａｉｌ）および進捗点（Ｐｒｏｇｒｅｓｓ）のうちのいずれか２つを始点および終点とする。接続位置は、これらのうち、いずれを始点および終点とするのかを示すものである。
方向は、関連線２１１０の向きを示すものである。関連線２１１０は、図２に示すように、１または複数の連続する線分により示される。関連線２１１０に向きがある場合は、線分の始点および／または終点を矢印とすることで、向き（一方向または双方向）を示している。また、関連線２１１０に向きがない場合は、線分の始点および終点を矢印としない（無方向）。
【００５８】
なお、各オブジェクトデータは、上記以外の属性を有してもよい。例えば、旧メイン画面２１００および新メイン画面２２００に表示（描画）する際の位置やサイズを、属性に有してもよい。また、ユーザが着目したい観点を属性として任意に定義（カスタマイズ）してもよい。
【００５９】
＜ガントチャートデータ（行データ）＞
ここで、図９および図１０を参照して、ガントチャートデータの一例を説明する。図９は、ガントチャートデータのうち、行に関するデータ（行データ）の一例である。
【００６０】
図９（ａ）に示すように、旧ガントチャートデータ１５１（行データ）は、階層構造を有している。図中の円で囲まれた数字が「行」オブジェクトのＩＤを簡略的に示している。なお、円で囲まれた「１」の記載は、ＩＤが「ｉｔｅｍ１」であることを示している。また、図中の四角で囲まれた数字が「アクティビティ」オブジェクトのＩＤを簡略的に示している。なお、四角で囲まれた「１」の記載は、ＩＤが「ｂａｒ１」であることを示している（以下、同様）。
【００６１】
そして、図９（ｂ）は、図９（ａ）をテーブル形式で示したものである。旧ガントチャートデータ１５１（行データ）は、図９（ｂ）に示すような属性（各欄の値）を有している。なお、図中の「属性１」および「属性２」は、ユーザがカスタマイズしたものである。
【００６２】
図９（ｃ）（ｄ）は、新ガントチャートデータ１５２（行データ）の一例である。新ガントチャートデータ１５２（行データ）も、旧ガントチャートデータ１５１（行データ）と同様である。
【００６３】
＜ガントチャートデータ（アクティビティデータ）＞
図１０は、ガントチャートデータのうち、アクティビティに関するデータ（アクティビティデータ）の一例である。図１０（ａ）は、旧ガントチャートデータ１５１（アクティビティデータ）をテーブル形式で示したものである。旧ガントチャートデータ１５１（アクティビティデータ）は、図１０（ａ）に示すような属性（各欄の値）を有している。なお、図中の「属性１」は、ユーザがカスタマイズしたものである。
【００６４】
図１０（ｂ）は、新ガントチャートデータ１５２（アクティビティデータ）の一例である。新ガントチャートデータ１５２（アクティビティデータ）も、旧ガントチャートデータ１５１（アクティビティデータ）と同様である。
【００６５】
＜＜差分データの構造＞＞
図１１は、差分データを説明する図である。差分データ１４１は、ガントチャート差分表示装置１００の差分検出部１１１が行う、差分検出処理（詳細後記）によって出力される、旧ガントチャートデータ１５１と新ガントチャートデータ１５２との差分（ガントチャートデータの変更内容）に関するデータである。差分データ１４１は、図１１に示すように、階層構造を有する。
【００６６】
差分データ１４１は、行差分データ、アクティビティ差分データ、注釈差分データ、関連線差分データを含んで構成される。なお、図１１中において、「△△群」と記した場合は、「△△」の集合を示すものとする。
【００６７】
行差分データは、行データの差分に関するデータである。
アクティビティ差分データは、アクティビティデータの差分に関するデータである。
注釈差分データは、注釈データの差分に関するデータである。
関連線差分データは、関連線データの差分に関するデータである。
これらの各差分データおよび差分データ１４１は、属性として、ＩＤ、変更種別、変更属性、旧データおよび新データを有する。
【００６８】
ＩＤは、差分データを一意に特定する識別子である。
変更種別は、差分データが、どの変更種別に該当するかを示すものである。
変更属性は、差分データの対象であるガントチャートデータ（オブジェクトデータ）の属性のうち、どの属性が変更されたかを示すものである。
旧データは、差分データの対象であるガントチャートデータ（オブジェクトデータ）の、変更前のデータである。旧データは、旧データそのもの（旧データの値）でもよいし、旧データの格納場所（ポインタ）でもよい。
新データは、差分データの対象であるガントチャートデータ（オブジェクトデータ）の、変更後のデータである。新データは、新データそのもの（新データの値）でもよいし、新データの格納場所（ポインタ）でもよい。
なお、行差分データは、さらに、当該行の配下（直下）に属するアクティビティおよび注釈であって変更されたもの（変更アクティビティおよび変更注釈）のＩＤを属性に有する。
【００６９】
差分データは、差分情報２１１１に表示される。差分情報２１１１には、変更種別・数量、更新前の値、更新後の値、その他補足用の説明文が表示される。
【００７０】
＜行差分データ（階層構造差分検出処理）＞
ここで、図９および図１２〜図１８を参照して、差分データ１４１の状態が遷移していく一例を説明する。
図１２は、差分データのうち、行に関するデータ（行差分データ）の一例である。図１２は、ガントチャート差分表示装置１００の階層構造差分検出部１１１ａが、後記する階層構造差分検出処理によって、図９に示す旧ガントチャートデータ１５１および新ガントチャートデータ１５２を比較した結果である。
【００７１】
図９において、（ｂ）に示す旧ガントチャートデータ１５１にはＩＤが「ｉｔｅｍ３」であるレコードが存在するが、（ｄ）に示す新ガントチャートデータ１５２には存在しない。そのため、図１２に示す差分データ１４１のＩＤが「ｉｔｅｍ３」であるレコードの変更種別に「削除」が設定される。
【００７２】
また、図９において、（ｂ）に示す旧ガントチャートデータ１５１および（ｄ）に示す新ガントチャートデータ１５２には、ＩＤが「ｉｔｅｍ４」であるレコードが存在する。しかし、「親行ＩＤ」が「ｉｔｅｍ３」から「ｉｔｅｍ２」に更新されている。そのため、図１２に示す差分データ１４１のＩＤが「ｉｔｅｍ４」であるレコードの変更種別に「移動」が設定される。
【００７３】
また、図９において、（ｂ）に示す旧ガントチャートデータ１５１にはＩＤが「ｉｔｅｍ５」であるレコードが存在しないが、（ｄ）に示す新ガントチャートデータ１５２には存在する。そのため、図１２に示す差分データ１４１のＩＤが「ｉｔｅｍ５」であるレコードの変更種別に「追加」が設定される。
【００７４】
なお、図９において、ＩＤが「ｉｔｅｍ１」および「ｉｔｅｍ２」であるレコードは、（ｂ）に示す旧ガントチャートデータ１５１および（ｄ）に示す新ガントチャートデータ１５２に存在する。さらに、これらの２レコードは、「親行ＩＤ」が更新されていない。そのため、図１２に示す差分データ１４１のＩＤが「ｉｔｅｍ１」および「ｉｔｅｍ２」であるレコードの変更種別には、何も設定されない（空欄である）。
【００７５】
＜行差分データ（兄弟移動検出処理）＞
図１３は、差分データのうち、行に関するデータ（行差分データ）の一例である。図１３（ａ）は、ガントチャート差分表示装置１００の最小変換手順検出部１１１ｂが、後記する兄弟移動検出処理によって、図９に示す旧ガントチャートデータ１５１および新ガントチャートデータ１５２を比較した結果である。
【００７６】
ここで、旧ガントチャートデータ１５１は、図１３（ｂ）に示すような階層構造を有しているとする。ＩＤが「ｉｔｅｍ１」である行オブジェクト配下に、ＩＤが「ｉｔｅｍＡ」、「ｉｔｅｍ２」、「ｉｔｅｍＢ」、「ｉｔｅｍＣ」である行オブジェクトが存在している。換言すれば、「ｉｔｅｍＡ」、「ｉｔｅｍ２」、「ｉｔｅｍＢ」、「ｉｔｅｍＣ」である行オブジェクトは、「ｉｔｅｍ１」を親とする兄弟行である。そして、図１３（ｃ）は、図１３（ｂ）の行内順番をテーブル形式で示したものである。
また、図１３（ｅ）および（ｆ）に示す新ガントチャートデータ１５２も、旧ガントチャートデータ１５１と同様である。
【００７７】
そして、図１３（ｂ）、（ｃ）、（ｅ）、（ｆ）に示すデータから、公知である文書差分アルゴリズムによって最小変換手順の追加・削除を検出すると、図１３（ｄ）および（ｇ）に示す結果となる。図１３（ｄ）は、旧ガントチャートデータ１５１に対する結果であり、図１３（ｇ）は、新ガントチャートデータ１５２に対する結果である。図１３（ｄ）において、ＩＤが「ｉｔｅｍ２」であるレコードは、変更種別に「削除」が検出されている。また、図１３（ｇ）において、ＩＤが「ｉｔｅｍ２」であるレコードは、変更種別に「追加」が検出されている。このように、「追加」および「削除」を同時に検出した行データは、差分データ１４１の変更種別に「移動」が設定される。このような処理によって、図１３（ａ）においては、ＩＤが「ｉｔｅｍ２」であるレコードの変更種別に「移動」が設定されている。
【００７８】
ここで、文書差分アルゴリズムには、例えば、「MYERSアルゴリズム」がある。（http://citeseer.ist.psu.edu/viewdoc/download;jsessionid=D4893C682F66B2A3BA9110B991F42906?doi=10.1.1.4.6927&rep=rep1&type=pdf）
【００７９】
＜行差分データ（属性更新検出処理）＞
図１４は、差分データのうち、行に関するデータ（行差分データ）の一例である。
図１４は、ガントチャート差分表示装置１００の属性変更検出部１１１ｃが、後記する属性更新検出処理によって、図９に示す旧ガントチャートデータ１５１および新ガントチャートデータ１５２を比較した結果である。
【００８０】
図９（ｂ）および（ｄ）において、ＩＤが「ｉｔｅｍ１」であるレコードに着目すると、属性１が「Ａ」から「ＦＦＦ」に更新されている。また、属性２は「１」から「８８」に更新されている。そして、図１３（ａ）に示す差分データ１４１において、ＩＤが「ｉｔｅｍ１」であるレコードの変更種別は空欄である。そのため、図１４に示す差分データ１４１のＩＤが「ｉｔｅｍ１」であるレコードの変更種別に「更新」が設定され、変更属性に「属性１，２」が設定される。
【００８１】
また、図９（ｂ）および（ｄ）において、ＩＤが「ｉｔｅｍ２」であるレコードに着目すると、名称が「工程１．１」から「新名称」に更新されている。また、開閉状態が「−」から「開」に更新されている。しかし、図１３（ａ）に示す差分データ１４１において、ＩＤが「ｉｔｅｍ２」であるレコードの変更種別は「移動」である。そのため、図１４に示す差分データ１４１のＩＤが「ｉｔｅｍ２」であるレコードの変更種別は「移動」のままであり、変更属性に「名称、開閉状態」が設定される。
なお、ＩＤが「ｉｔｅｍ４」であるレコードも、同様である。
【００８２】
＜行差分データ（アクティビティと注釈の差分の追記）＞
図１５は、差分データのうち、行に関するデータ（行差分データ）の一例である。図１５は、ガントチャート差分表示装置１００の差分検出部１１１が、後記するアクティビティの差分検出および注釈の差分検出によって検出した差分を、図１４に示す差分データ１４１（行差分データ）に追記したものである。
【００８３】
例えば、図９（ａ）および（ｃ）において、ＩＤが「ｂａｒ２」であるアクティビティは、ＩＤが「ｉｔｅｍ２」である行から「ｉｔｅｍ５」である行へ移動している。そこで、図１５（ｃ）に示す差分データ１４１（行差分データ）において、ＩＤが「ｉｔｅｍ２」および「ｉｔｅｍ５」であるレコードの「変更アクティビティ」に、「ｂａｒ２」を追記する。
【００８４】
このように、アクティビティおよび／または注釈が属する行が変更した場合、換言すると、親行ＩＤが変更した場合、変更前後の行の「変更アクティビティ」および／または「変更注釈」に、当該アクティビティおよび／または注釈のＩＤを格納する。
【００８５】
＜アクティビィ差分データ（階層構造差分検出処理）＞
ここで、図１６を参照して、差分データ１４１の一例を説明する。図１６は、差分データのうち、アクティビィに関するデータ（アクティビティ差分データ）の一例である。
図１６は、ガントチャート差分表示装置１００の階層構造差分検出部１１１ａが、後記する階層構造差分検出処理によって、図１０に示す旧ガントチャートデータ１５１および新ガントチャートデータ１５２を比較した結果である。この処理は、図１２において説明した行差分データ（階層構造差分検出処理）と同様である。
【００８６】
＜アクティビィ差分データ（属性更新検出処理）＞
図１７は、差分データ１４１のうち、アクティビィに関するデータ（アクティビティ差分データ）の一例である。
図１７は、ガントチャート差分表示装置１００の属性変更検出部１１１ｃが、後記する属性更新検出処理によって、図１０に示す旧ガントチャートデータ１５１および新ガントチャートデータ１５２を比較した結果である。この処理は、図１４において説明した行差分データ（属性更新検出処理）と同様である。
【００８７】
＜アクティビィ差分データ（行内移動の検出）＞
図１８は、差分データのうち、アクティビィに関するデータ（アクティビティ差分データ）の一例である。
図１８は、ガントチャート差分表示装置１００の差分検出部１１１が、行内移動を検出した結果である。ここで、行内移動とは、同じ行内において、横軸の位置が更新された状態をいう。同じ行とは、親行ＩＤが同じことを意味する。
また、横軸の位置は、オブジェクト毎の属性により決定する。例えば、アクティビティデータの横軸の位置は、属性「開始日」および「終了日」により決定する。注釈データの横軸の位置は、属性「行内位置」および「日付」により決定する。チェックポイントデータの横軸の位置は、属性「日付」により決定する。進捗点データの横軸の位置は、属性「進捗率」（横軸の位置である「日付」でもよい）により決定する。関連線データの横軸の位置は、属性「接続位置」によって決定する。
【００８８】
図１７において、ＩＤが「ｂａｒ１」であるレコードに着目すると、変更種別が「更新」であり、変更属性が「開始日，終了日」となっている。前記のように、アクティビティデータの横軸の位置は、属性「開始日」および「終了日」により決定するので、ＩＤが「ｂａｒ１」であるアクティビティは、行内移動されたことを示している。そこで、図１８に示すように、変更種別が「更新」から「移動」に上書きされる。
図１８において、ＩＤが「ｂａｒ２」であるレコードも変更種別が「移動」であるが、当該「移動」は図１６において説明した階層構造差分検出処理で設定されたものであり、別の行へ移動した（親行ＩＤが更新された）ことを示している。
【００８９】
＜＜差分検出処理＞＞
次に、ガントチャート差分表示装置１００の差分検出部１１１が行う、差分検出処理について説明する。差分検出処理は、旧ガントチャートデータ１５１および新ガントチャートデータ１５２を比較し、両者の差分を検出する処理である。差分検出処理は、「階層構造の差分の検出」、「兄弟の移動の検出」、「属性更新の検出」の３つのステップで実現される。
【００９０】
ガントチャートデータは、図８に示すように、各種のオブジェクトデータを有し、オブジェクトデータ毎に異なる属性を有する。そこで、差分検出処理は、オブジェクトデータ毎に適した処理を行い、差分を検出する。
図１９は、差分検出処理のフローチャートである。
【００９１】
ステップＳ１００において、差分検出部１１１は、データを入力する。具体的には、差分検出部１１１は、旧ガントチャートデータ１５１および新ガントチャートデータ１５２を入力する。
【００９２】
ステップＳ２００において、差分検出部１１１は、差分を検出する。この差分検出は、オブジェクトデータ毎に適した処理が行われる。ステップＳ２００においては、行の差分検出（ステップＳ２１０ａ）、アクティビティの差分検出（ステップＳ２１０ｂ）、注釈の差分検出（ステップＳ２１０ｃ）および関連線の差分検出（ステップＳ２１０ｄ）が行われる。
【００９３】
行の差分検出（ステップＳ２１０ａ）においては、階層構造差分検出処理（ステップＳ２１１ａ）、兄弟移動検出処理（ステップＳ２１２ａ）、属性更新検出処理（ステップＳ２１３ａ）およびアクティビティと注釈の差分の追記（ステップＳ２１５ａ）が行われる。なお、アクティビティと注釈の差分の追記（ステップＳ２１５ａ）は、アクティビティの差分検出（ステップＳ２１０ｂ）および注釈の差分検出（ステップＳ２１０ｃ）の後に行われる。
【００９４】
アクティビティの差分検出（ステップＳ２１０ｂ）においては、階層構造差分検出処理（ステップＳ２１１ｂ）、属性更新検出処理（ステップＳ２１３ｂ）および行内移動の検出（ステップＳ２１４ｂ）が行われる。なお、行内移動の検出（ステップＳ２１４ｂ）では、図１８において説明した処理が行われる。
【００９５】
注釈の差分検出（ステップＳ２１０ｃ）においては、階層構造差分検出処理（ステップＳ２１１ｃ）、属性更新検出処理（ステップＳ２１３ｃ）および行内移動の検出（ステップＳ２１４ｃ）が行われる。注釈の差分検出（ステップＳ２１０ｃ）は、アクティビティの差分検出（ステップＳ２１０ｂ）と同様である。
【００９６】
関連線の差分検出（ステップＳ２１０ｄ）においては、属性更新検出処理（ステップＳ２１３ｄ）が行われる。属性更新検出処理(ステップＳ２１３ｄ）は、属性更新検出処理（ステップＳ２１３ａ）と同様である。
【００９７】
なお、ガントチャートデータのうち、チェックポイントデータおよび進捗点に関するデータについては、差分検出の対象外である。
上記により、差分データ１４１が出力され、処理が終了する。
【００９８】
＜階層構造差分検出処理＞
次に、階層構造差分検出処理（図１９のステップＳ２１１、ステップＳ２１１ａ〜ｃ）について説明する。図２０は、階層構造差分検出処理のフローチャートである。
なお、ステップＳ２１１１ａ〜Ｓ２１１２ａおよびステップＳ２１１１ｂ〜Ｓ２１１２ｂは、同時並行的に実行されてもよいし、一方が終了した後、他方が開始されてもよい。
【００９９】
ステップＳ２１１１ａにおいて、階層構造差分検出部１１１ａは、旧ガントチャートデータ１５１を読み込む。
ステップＳ２１１２ａにおいて、階層構造差分検出部１１１ａは、オブジェクト毎に旧ＨａｓｈＭａｐを生成する。ここで、ＨａｓｈＭａｐとは、読み込んだガントチャートデータの内容を比較しやすいように正規化したデータであり、例えば、図９（ｂ）（ｄ）および図１０（ａ）（ｄ）がその例である。
【０１００】
ステップＳ２１１１ｂにおいて、階層構造差分検出部１１１ａは、新ガントチャートデータ１５２を読み込む。
ステップＳ２１１２ａにおいて、階層構造差分検出部１１１ａは、オブジェクト毎に新ＨａｓｈＭａｐを生成する。
【０１０１】
ステップＳ２１１３において、階層構造差分検出部１１１ａは、新ＨａｓｈＭａｐおよび旧ＨａｓｈＭａｐをマージして、差分データを生成する。
【０１０２】
ステップＳ２１１４において、階層構造差分検出部１１１ａは、新旧のオブジェクトデータおよび親行ＩＤを比較する。当該比較処理は、全てのオブジェクトデータについて完了するまで繰り返す。
ステップＳ２１１５において、階層構造差分検出部１１１ａは、比較結果を判定する。
【０１０３】
比較対象のオブジェクトデータが旧ＨａｓｈＭａｐのみに存在する場合、ステップＳ２１１６に進む。そして、階層構造差分検出部１１１ａは、差分データ１４１の変更種別に「削除」を設定する。
比較対象のオブジェクトデータが新旧ＨａｓｈＭａｐ両方に存在し、かつ、親行ＩＤが異なる（違う親である）場合、ステップＳ２１１７に進む。そして、階層構造差分検出部１１１ａは、差分データ１４１の変更種別に「移動」を設定する。
【０１０４】
比較対象のオブジェクトデータが新ＨａｓｈＭａｐのみに存在する場合、ステップＳ２１１８に進む。そして、階層構造差分検出部１１１ａは、差分データ１４１の変更種別に「追加」を設定する。
なお、比較対象のオブジェクトデータが新旧ＨａｓｈＭａｐ両方に存在し、かつ、親行ＩＤが同じである場合、階層構造差分検出部１１１ａは、差分データ１４１の変更種別に何も設定しない（フローチャートとしては図示せず）。
【０１０５】
比較および変更種別の設定（ステップＳ２１１４〜Ｓ２１１８）が、全てのオブジェクトデータについて完了すると、処理はメインルーチンへ戻る。
【０１０６】
＜兄弟移動検出処理＞
次に、兄弟移動検出処理（図１９のステップＳ２１２、ステップＳ２１２ａ）について説明する。図２１は、兄弟移動検出処理のフローチャートである。
【０１０７】
ステップＳ２１２１において、最小変換手順検出部１１１ｂは、子を持つ行に対して、配下の行の移動を検出する。当該処理は、全ての行データについて完了するまで繰り返す。
【０１０８】
ステップＳ２１２２において、最小変換手順検出部１１１ｂは、公知である文書差分アルゴリズムによって最小変換手順の追加・削除を検出する。
【０１０９】
ステップＳ２１２３において、最小変換手順検出部１１１ｂは、ステップＳ２１２２の検出結果において、「追加」および「削除」の両方を同時に検出した行の変更種別に「移動」を設定する。
【０１１０】
最小変換手順の追加・削除の検出および変更種別の設定（ステップＳ２１２２〜Ｓ２１２３）が、全ての行データについて完了すると、処理はメインルーチンへ戻る。
【０１１１】
＜属性更新検出処理＞
次に、属性更新検出処理（図１９のステップＳ２１３、ステップＳ２１３ａ〜ｄ）について説明する。図２２は、属性更新検出処理のフローチャートである。
【０１１２】
ステップＳ２１３１において、属性変更検出部１１１ｃは、新旧オブジェクトデータを比較し、属性の更新を検出する。当該処理は、全てのオブジェクトデータについて完了するまで繰り返す。
【０１１３】
ステップＳ２１３２において、属性変更検出部１１１ｃは、オブジェクトデータが有する属性のうち少なくとも１つが一致しない場合、変更種別に「更新」を設定する。
【０１１４】
検出および変更種別の設定（ステップＳ２１３１〜Ｓ２１３２）が、全てのオブジェクトデータについて完了すると、処理はメインルーチンへ戻る。
【０１１５】
＜アクティビティと注釈の差分の追記＞
次に、アクティビティと注釈の差分の追記（図１９のステップＳ２１５ａ）について説明する。
【０１１６】
まず、ガントチャート差分表示装置１００の差分検出部１１１は、差分データ１４１（行差分データ）のレコードに格納されている旧データおよび新データを参照する。
次に、差分検出部１１１は、旧データおよび／または新データに格納されている、当該レコードの配下に属するアクティビティおよび／または注釈のＩＤを取得する。
そして、差分検出部１１１は、当該取得したアクティビティおよび／または注釈のＩＤをキーとして、図１５（ａ）および（ｂ）に示す差分データ１４１（アクティビティ差分データ・注釈差分データ）を検索し、キーが一致するレコードを取得する。
そして、差分検出部１１１は、取得したレコードに格納されている変更種別が、「更新」、「移動」、「削除」、「追加」のいずれかである場合、当該レコードに格納されているＩＤ（アクティビティまたは注釈のＩＤ）を、差分データ１４１（行差分データ）の「変更アクティビティ」および／または「変更注釈」へ格納する。
【０１１７】
これらの処理を、差分データ１４１（行差分データ）の全てのレコードについて行うと、アクティビティと注釈の差分の追記が終了する。
【０１１８】
＜＜ガントチャート表示処理＞＞
次に、ガントチャート差分表示装置１００の表示処理部１１２が行う、ガントチャート表示処理について説明する。ガントチャート表示処理は、図２において示したような画面を出力装置１３０に表示する処理である。
図２３は、ガントチャート表示処理のフローチャートである。
【０１１９】
ステップＳ３１１において、表示処理部１１２は、旧ガントチャートデータ１５１を読み込む。
ステップＳ３１１において、表示処理部１１２は、旧ガントチャート画面を描画する。ここで、旧ガントチャート画面とは、旧メイン画面２１００および旧サブ画面２３００をいう。
【０１２０】
ステップＳ３１３において、表示処理部１１２は、差分データ１４１を読み込む。
【０１２１】
ステップＳ３１４において、表示処理部１１２は、新ガントチャートデータ１５２を読み込む。
ステップＳ３１５において、表示処理部１１２は、新ガントチャート画面を描画する。ここで、新ガントチャート画面とは、新メイン画面２２００および新サブ画面２４００をいう。
なお、ステップＳ３１１〜Ｓ３１２、ステップＳ３１３およびステップＳ３１４〜Ｓ３１５は、同時並行的に実行されてもよいし、任意の順に直列的に実行されてもよい。図２３において、フローが枝分かれして複数の流れになっている他の箇所についても同様である。
【０１２２】
ステップＳ３２１において、表示処理部１１２は、差分データ１４１から、オブジェクトの変更種別を取得する。
ステップＳ３２２において、表示処理部１１２は、旧ガントチャートデータ１５１および新ガントチャートデータ１５２から、描画するオブジェクトの位置およびサイズを取得する。
ステップＳ３２３において、強調データ生成部１１２ｄは、強調枠２１１２を描画する。強調枠２１１２は、タイルマークと同じ色で表示されるが、ユーザがカスタマイズすることも可能である。この場合、強調表示カスタマイズ部１１４ｂは、ユーザが設定した内容を、補助記憶装置１５０に記憶する。そして、ステップＳ３２３において強調枠２１１２を描画する際、強調データ生成部１１２ｄは、補助記憶装置１５０に記憶された設定に基づいて描画を行う。
また、強調データ生成部１１２ｄは、強調データ１４２を生成する。強調データ１４２は、強調表示されているオブジェクトに関するデータである。
【０１２３】
ステップＳ３３１において、表示処理部１１２は、行の変更種別および開閉状態を取得する。
ステップＳ３３２において、表示処理部１１２は、描画する行の位置およびサイズを取得する。
【０１２４】
ステップＳ３３３において、タイルマーク生成部１１２ｂは、行の配下に属するオブジェクトの変更をカウントする。
ここで、アクティビティと注釈の差分の追記（図１９のステップＳ２１５ａ、図１５）において説明したように、差分データ１４１（行データ）には、アクティビティのＩＤと注釈のＩＤが、変更前後の行のレコードに格納されている。
そこで、タイルマーク生成部１１２ｂは、旧メイン画面２１００を描画する際は、旧ガントチャートデータ１５１に存在しないアクティビティおよび注釈をカウントしない。同様に、タイルマーク生成部１１２ｂは、新メイン画面２２００を描画する際は、新ガントチャートデータ１５２に存在しないアクティビティおよび注釈をカウントしない。
このようにすることで、アクティビティおよび注釈が二重にカウントされることが回避され、正しい変更種別および／または変更数量をタイルマークに示すことができる。
【０１２５】
ステップＳ３３４において、タイルマーク生成部１１２ｂは、タイルマークを描画する。タイルマークは、ユーザがカスタマイズすることも可能である。この場合、表示属性カスタマイズ部１１４ａは、ユーザが設定した内容を、補助記憶装置１５０に記憶する。そして、ステップＳ３３４においてタイルマークを描画する際、タイルマーク生成部１１２ｂは、補助記憶装置１５０に記憶された設定に基づいて描画を行う。
【０１２６】
ステップＳ３３５において、行関連線生成部１１２ｃは、行関連線２１１３を描画する。
【０１２７】
ステップＳ３３６において、行マップ生成部１１２ａは、新旧行をカウントし、行マップデータを生成する。新旧行のカウントとは、新旧のガントチャートデータ（１５１，１５２）の行データにおいて、更新行・移動行・削除行・追加行がそれぞれいくつあるかをカウントすることである。そして、新旧行のカウント結果および他のオブジェクトデータ（新旧）に基づいて、行マップ２５００を描画するための行マップデータを生成する。
ステップＳ３３７において、行マップ生成部１１２ａは、行マップ２５００を描画する。
【０１２８】
＜＜同時スクロール処理＞＞
次に、ガントチャート差分表示装置１００の同時スクロール制御部１１３ａが行う、同時スクロール処理について説明する。同時スクロール処理は、図６において説明した同時スクロールを制御する処理である。
図２４は、同時スクロール処理のフローチャートである。
【０１２９】
ステップＳ４０１において、同時スクロール制御部１１３ａは、ユーザがマウス等を操作したことを検知し、操作種類を判定する。操作種類には、「行関連線のクリック」および「スクロール」がある。「行関連線のクリック」は、行関連線２１１３をクリックすることをいう。「スクロール」は、新メイン画面２２００または旧メイン画面２１００を縦方向または横方向にずらすことをいう。
操作種類が「行関連線のクリック」である場合、ステップＳ４１１に進む。
操作種類が「スクロール」である場合、ステップＳ４２１に進む。
【０１３０】
ステップＳ４１１において、同時スクロール制御部１１３ａは、新メイン画面２２００および旧メイン画面２１００を、同じ行までスクロールする。「同じ行までスクロールする」とは、図６において説明した「スクロール位置合わせ」をすることをいう。
そして、ステップＳ４５１に進む。
【０１３１】
ステップＳ４２１において、同時スクロール制御部１１３ａは、スクロール方向を判定する。
スクロール方向が「横」である場合、ステップＳ４３１に進む。
スクロール方向が「縦」である場合、ステップＳ４４１に進む。
【０１３２】
ステップＳ４３１において、同時スクロール制御部１１３ａは、新メイン画面２２００および旧メイン画面２１００を、同じ日付までスクロールする。
そして、ステップＳ４５１に進む。
【０１３３】
ステップＳ４４１において、同時スクロール制御部１１３ａは、旧メイン画面２１００および新メイン画面２２００のそれぞれ先頭に表示されている行の状態を判定する。行の状態とは、「削除行」、「移動行」および「追加行」のいずれかであるかを示すものである。
行の状態が「削除行」である場合、すなわち、旧メイン画面２１００の先頭に表示されている行が削除行である場合、ステップＳ４４２に進む。
行の状態が「移動行」である場合、すなわち、旧メイン画面２１００および／または新メイン画面２２００の先頭に表示されている行が移動行である場合、ステップＳ４４３に進む。
行の状態が「追加行」である場合、すなわち、新メイン画面２２００の先頭に表示されている行が追加行である場合、ステップＳ４４４に進む。
【０１３４】
ステップＳ４４２において、同時スクロール制御部１１３ａは、旧メイン画面２１００のみをスクロールする。これは、図６（ｂ）から（ｃ）の処理に対応する。
そして、ステップＳ４５１に進む。
【０１３５】
ステップＳ４４３において、同時スクロール制御部１１３ａは、移動行を先頭に表示している画面（旧メイン画面２１００および／または新メイン画面２２００）をスクロールする。これは、図６（ｄ）から（ｅ）の処理に対応する。
そして、ステップＳ４５１に進む。
【０１３６】
ステップＳ４４４において、同時スクロール制御部１１３ａは、新メイン画面２２００のみをスクロールする。これは、図６（ｅ）から（ｆ）の処理に対応する。
そして、ステップＳ４５１に進む。
【０１３７】
なお、ステップＳ４４１において、行の状態が「削除行」、「移動行」および「追加行」のうちいずれでもない場合は、旧メイン画面２１００および新メイン画面２２００の両方をスクロールする。これは、図６（ａ）から（ｂ）および図６（ｃ）から（ｄ）の処理に対応する。
その後、ステップＳ４５１に進む（フローチャートとしては図示せず）。
【０１３８】
ステップＳ４５１において、同時スクロール制御部１１３ａは、画面（旧メイン画面２１００および新メイン画面２２００）を再描画する。
そして、処理を終了する。
【０１３９】
＜＜まとめ＞＞
本実施形態により、以下の効果を奏する。すなわち、ガントチャートにおける変更前後の差分および関連性を表示するので、ガントチャートを作成する者（計画作成者）は、変更箇所を認識することが容易となる。また、計画作成者が複数存在し、ガントチャートデータが競合した場合、当該ガントチャートデータの差分を表示するので、競合を解消することが容易となる。
また、業務を担当する者（担当者）は、自己が担当する業務における変更箇所を認識することが容易となる。また、プロジェクトの管理者（管理者）は、プロジェクトの実行計画の変更や実績（進捗率など）の変更を認識することが容易となる。
【０１４０】
＜＜その他＞＞
なお、前記した実施形態は、本発明を実施するための好適なものであるが、その実施形式はこれらに限定されるものではなく。本発明の要旨を逸脱しない範囲内において種々変更することが可能である。
【符号の説明】
【０１４１】
１００      ガントチャート差分表示装置
１１１      差分検出部
１１２      表示処理部
１１３      操作制御部
１１４      カスタマイズ部
１２０      入力装置
１３０      出力装置
１４０      主記憶装置
１５０      補助記憶装置
【図１】
0005767571.tif 000002
【図２】
0005767571.tif 000003
【図３】
0005767571.tif 000004
【図４】
0005767571.tif 000005
【図５】
0005767571.tif 000006
【図６】
0005767571.tif 000007
【図７】
0005767571.tif 000008
【図８】
0005767571.tif 000009
【図９】
0005767571.tif 000010
【図１０】
0005767571.tif 000011
【図１１】
0005767571.tif 000012
【図１２】
0005767571.tif 000013
【図１３】
0005767571.tif 000014
【図１４】
0005767571.tif 000015
【図１５】
0005767571.tif 000016
【図１６】
0005767571.tif 000017
【図１７】
0005767571.tif 000018
【図１８】
0005767571.tif 000019
【図１９】
0005767571.tif 000020
【図２０】
0005767571.tif 000021
【図２１】
0005767571.tif 000022
【図２２】
0005767571.tif 000023
【図２３】
0005767571.tif 000024
【図２４】
0005767571.tif 000025