ガントチャート差分表示装置
【課題】ガントチャートにおける変更前後の差分および関連性を表示するガントチャート差分表示装置を提供する。
【解決手段】本発明によるガントチャート差分表示装置100は、オブジェクトを示す識別子と、前記オブジェクトが属する工程の識別子である親行IDと、を対応付けて記憶しているガントチャートデータ151、152を備える記憶部150と、前記識別子および前記親行IDが一致しない前記オブジェクトを検出し、前記オブジェクトの変更種別および/または変更数量を示すタイルマークを前記工程に関連付けて第一のガントチャートおよび第二のガントチャートに表示し、前記工程の対応関係を示す行関連線を表示し、前記工程の変更種別に基づいて、前記第一のガントチャートおよび/または前記第二のガントチャートのスクロールを制御する、ことを特徴とする。
【解決手段】本発明によるガントチャート差分表示装置100は、オブジェクトを示す識別子と、前記オブジェクトが属する工程の識別子である親行IDと、を対応付けて記憶しているガントチャートデータ151、152を備える記憶部150と、前記識別子および前記親行IDが一致しない前記オブジェクトを検出し、前記オブジェクトの変更種別および/または変更数量を示すタイルマークを前記工程に関連付けて第一のガントチャートおよび第二のガントチャートに表示し、前記工程の対応関係を示す行関連線を表示し、前記工程の変更種別に基づいて、前記第一のガントチャートおよび/または前記第二のガントチャートのスクロールを制御する、ことを特徴とする。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ガントチャート差分表示装置に関する。
【背景技術】
【0002】
業務の工程管理において、業務の進捗状況を視覚的に理解しやすくするために、業務を構成する複数のアクティビティを時系列で表示する手法が一般に用いられている。このように表示された工程は、「ガントチャート」と呼ばれ、通常は、横軸を時間軸とする平面に、アクティビティを示す線分又は長方形のバーを行毎に配置し、線分やバーに進捗状況を示す目印を付す、又は関連のあるアクティビティ同士を線で結ぶ等の工夫がなされる。
また、業務は実行計画どおりに進まないことがあり、実行計画は必要に応じて変更される。
【0003】
特許文献1には、複数のタスクが遂行されるべきプロジェクトについて、タスク(アクティビティ)の実行計画変更による影響をプロジェクトの管理者が効率的に把握できるよう支援する技術が開示されている。
特許文献2には、ユーザによる特段の操作なしでも関連するアクティビティの全体を画面上に表示する技術が開示されている。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2010−224889号公報(段落0004〜0006)
【特許文献2】特開2009−223600号公報(段落0005)
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、特許文献1には、ガントチャートにおける変更前後の工数の差分を表示するが、工数以外の差分および変更前後の関連性を表示することは開示されていない。また、特許文献2には、アクティビティの全体と詳細とを同時に表示する技術およびガントチャートにおける変更前後の差分を表示する技術については開示がない。
【0006】
そこで、本発明は、前記した問題を解決するために、ガントチャートにおける変更前後の差分および関連性を表示するガントチャート差分表示装置を提供することを課題とする。
【課題を解決するための手段】
【0007】
前記課題を解決するため、本発明によるガントチャート差分表示装置は、業務の工程および前記業務に属するアクティビティを、要素であるオブジェクトとして有するガントチャートを表示するガントチャート差分表示装置であって、前記オブジェクトを示す識別子と、前記オブジェクトが属する前記工程の識別子である親行IDと、を対応付けて記憶しているガントチャートデータを複数備える記憶部と、前記複数のガントチャートデータを比較して、前記識別子および前記親行IDが一致しない前記オブジェクトを検出し、前記検出結果に基づいて、前記オブジェクトの変更種別および/または変更数量を示すタイルマークを前記工程に関連付けて比較元の前記ガントチャートデータを示す第一のガントチャートおよび比較先の前記ガントチャートデータを示す第二のガントチャートに表示し、前記第一のガントチャートおよび前記第二のガントチャートのそれぞれに表示される、前記識別子が等しい前記工程を結んで、前記工程の対応関係を示す行関連線を表示し、前記第一のガントチャートに表示されている前記工程の変更種別が削除である場合は、前記第一のガントチャートをスクロールさせ、前記第一のガントチャートおよび/または前記第二のガントチャートに表示されている前記工程の変更種別が移動である場合は、当該工程を表示している前記第一のガントチャートおよび/または前記第二のガントチャートをスクロールさせ、前記第二ガントチャートに表示されている前記工程の変更種別が追加である場合は、前記第二のガントチャートをスクロールさせる、制御をする制御部と、を有することを特徴とする。
【発明の効果】
【0008】
本発明によれば、ガントチャートにおける変更前後の差分および関連性を表示するガントチャート差分表示装置を提供することができる。
【図面の簡単な説明】
【0009】
【図1】本実施形態に係るガントチャート差分表示装置のハードウェア構成図である。
【図2】本実施形態に係るガントチャート表示画面の一例を示す図である。
【図3】タイルマークを説明する図である。
【図4】行関連線を説明する図である。
【図5】旧サブ画面および新サブ画面を説明する図である。
【図6】同時スクロールを説明する図である。
【図7】行マップを説明する図である。
【図8】ガントチャートデータを説明する図である。
【図9】ガントチャートデータのうち、行に関するデータ(行データ)の一例である。
【図10】ガントチャートデータのうち、アクティビティに関するデータ(アクティビティデータ)の一例である。
【図11】差分データを説明する図である。
【図12】差分データのうち、行に関するデータ(行差分データ)の一例である。
【図13】差分データのうち、行に関するデータ(行差分データ)の一例である。
【図14】差分データのうち、行に関するデータ(行差分データ)の一例である。
【図15】差分データのうち、行に関するデータ(行差分データ)の一例である。
【図16】差分データのうち、アクティビィに関するデータ(アクティビティ差分データ)の一例である。
【図17】差分データのうち、アクティビィに関するデータ(アクティビティ差分データ)の一例である。
【図18】差分データのうち、アクティビィに関するデータ(アクティビティ差分データ)の一例である。
【図19】差分検出処理のフローチャートである。
【図20】階層構造差分検出処理のフローチャートである。
【図21】兄弟移動検出処理のフローチャートである。
【図22】属性更新検出処理のフローチャートである。
【図23】ガントチャート表示処理のフローチャートである。
【図24】同時スクロール処理のフローチャートである。
【発明を実施するための形態】
【0010】
以降、本発明を実施するための形態(「本実施形態」という)を、図などを参照しながら詳細に説明する。また、本実施形態を説明するための全図において、同一部には原則として同一の符号を付し、その繰り返しの説明は省略する。
【0011】
<<ハードウェア構成>>
図1は、本実施形態に係るガントチャート差分表示装置のハードウェア構成図である。
ガントチャート差分表示装置100は、相互にバスで接続された、中央制御装置(制御部)110、入力装置(入力部)120、出力装置(出力部)130、主記憶装置(記憶部)140、および補助記憶装置(記憶部)150を有する。
【0012】
中央制御装置110は、プログラムである差分検出部111(階層構造差分検出部111a、最小変換手順検出部111b、属性変更検出部111c)、表示処理部112(行マップ生成部112a、タイルマーク生成部112b、行関連線生成部112c、強調データ生成部112d)、操作制御部113(同時スクロール制御部113a、画面連動制御部113b)およびカスタマイズ部114(表示属性カスタマイズ部114a、強調表示カスタマイズ部114b)を実行して、ガントチャート差分表示装置100を制御する(詳細後記)。
【0013】
入力装置120は、マウス、キーボード、タッチパネル等であり、ガントチャート差分表示装置100の操作者からの指示を受け付ける。
出力装置130は、ディスプレイ、プリンタ等であり、ガントチャート差分表示装置100の操作画面を表示する装置である。
主記憶装置140は、RAM(Random Access Memory)、ROM(Read Only Memory)等であり、中央制御装置110が実行するプログラムを格納したり、一時的なデータ(差分データ141、強調データ142)を格納したりする。
補助記憶装置150は、HDD(Hard Disk Drive)等であり、旧ガントチャートデータ151および新ガントチャートデータ152を格納している(詳細後記)。なお、旧ガントチャートデータ151および新ガントチャートデータ152を総称して「ガントチャートデータ」と呼ぶ。
【0014】
以降、「○○部は」と主体を記した場合は、中央制御装置110が必要に応じ補助記憶装置150から各プログラムを読み出した上で主記憶装置140にロードし、各機能(後記)を実行するものとする。各プログラムは、予め補助記憶装置150に記憶されていてもよいし、他の記憶媒体または通信媒体を介して、必要なときにガントチャート差分表示装置100に取り込まれてもよい。
【0015】
(ガントチャート表示画面)
図2は、本実施形態に係るガントチャート表示画面の一例を示す図である。
ガントチャート表示画面2000は、旧メイン画面2100、新メイン画面2200、旧サブ画面2300、新サブ画面2400および行マップ2500を有する。
【0016】
旧メイン画面2100は、後記する旧ガントチャートデータ151を表示したものである。旧メイン画面2100においては、1つの工程(アイテム)が1行で表示されている。また、工程(行)は階層構造を有し、下位の階層を非表示(行を折り畳む)としたり、下位の階層を表示(行を展開する)したりすることができる。
【0017】
行番号欄2101には、行番号が表示されている。行番号は、ガントチャートを新規作成した際、行ごとに便宜的に割り振られたものである。この行番号は、行を追加・削除した場合でも、新規作成時に割り振られた行番号を保持するものとする。
また、行番号欄2101には、タイルマークが表示されている(詳細後記)。
【0018】
工程名欄2102には、工程の名称が表示されている。工程の名称は、ユーザが任意に指定したものであり、適宜変更可能である。
日付欄2103には、日付が表示されている。ガントチャートは、横軸を時間軸とするため、換言すれば、日付は横軸の目盛である。なお、日付には「時刻」を含めてもよい。
描画欄2104には、アクティビティ2105、注釈2106、チェックポイント2107、マイルストーン2108、イナズマ線2109、関連線2110、差分情報2111および強調枠2112が表示されている。
【0019】
アクティビティ2105は、業務を構成する要素である。
注釈2106は、補足的な説明である。
チェックポイント2107は、工程の進捗状況の確認を行う日(進捗確認日)である。
マイルストーン2108は、工程管理を行うにあたり、目印となる時点を示す記号である。
イナズマ線2109は、各アクティビティの進捗率を示す進捗点を結んだ線である。進捗率とは、アクティビティの業務量のうち、進捗確認日時点で終了している業務量の比率(百分率)である。
関連線2110は、各アクティビティ間の関連性を示す線である。
なお、アクティビティ2105〜関連線2110および工程(行)を総称して「オブジェクト」と呼ぶ。オブジェクトとは、ガントチャートの要素である。
差分情報2111は、オブジェクトの変更前後の差分(詳細後記)に関する情報である。差分情報2111は、ユーザがマウス操作により、オブジェクトにマウスオーバーまたはクリックすると表示される。そして、マウスポインタがオブジェクトから離れると、差分情報2111は消える(非表示となる)。
強調枠2112は、アクティビティを強調表示する枠である。強調枠2112は、後記するタイルマークと同じ色で表示される。
【0020】
新メイン画面2200は、後記する新ガントチャートデータ152を表示したものである。新メイン画面2200の構成は、旧メイン画面2100と同様である。
【0021】
そして、旧メイン画面2100と新メイン画面2200との間には、行関連線2113が表示される。この行関連線2113は、旧メイン画面2100において表示されている行と新メイン画面2200において表示されている行との対応関係を示す線である(詳細後記)。
【0022】
旧サブ画面2300は、横軸をプロジェクトの全体の期間として、旧メイン画面2100に表示されている内容の一部を表示したものである(詳細後記)。
新サブ画面2400は、横軸をプロジェクトの全体の期間として、新メイン画面2200に表示されている内容の一部を表示したものである(詳細後記)。
【0023】
行マップ2500は、プロジェクトの全体の工程を簡略的に表示したものである。行マップ2500には、旧マップレール2510および新マップレール2520が表示されている。旧マップレール2510は、旧メイン画面2100に表示されるべき全ての工程を簡略的に表示したものである。新マップレール2520は、新メイン画面2200に表示されるべき全ての工程を簡略的に表示したものである
なお、旧メイン画面2100、旧サブ画面2300および旧マップレール2510は、比較元のガントチャートデータを示すものであり、総称して「第一のガントチャート」と呼ぶ。また、新メイン画面2200、新サブ画面2400、新マップレール2520は、比較先のガントチャートデータを示すものであり、総称して「第二のガントチャート」と呼ぶ。
【0024】
(タイルマーク)
図3は、タイルマークを説明する図である。
タイルマークは、オブジェクトの変更種別および/または変更数量を簡略的に示すものである。本実施形態において、変更種別は、「更新」、「移動」、「削除」および「追加」の4種類が存在し、それぞれ異なる色で表示される。
【0025】
「更新」は、オブジェクトの属性(詳細後記)が変更されることを示し、黄色で表示される。図3においては、黄色を、右上から左下の斜線で示している。
「移動」は、オブジェクトの位置(詳細後記)が変更されることを示し、赤色で表示される。図3においては、赤色を、左上から右下の斜線で示している。
「削除」は、オブジェクトが削除されることを示し、灰色で表示される。図3においては、灰色を、縦線で示している。
「追加」は、オブジェクトが付け足されることを示し、緑色で表示される。図3においては、緑色を、横線で示している。
【0026】
行の変更種別は、行番号欄2101の色により示される。例えば、行番号欄2101が黄色の場合、行が更新された(属性が変更された)ことを示している。
行に含まれる、行以外のオブジェクトの変更種別および変更数量は、行番号の右側に隙間を設けて表示される矩形により示される。矩形の色が変更種別を示し、矩形の数が変更数量を示している。
また、折り畳み行(当該行の配下に属する、非表示となっている工程)において、変更があった場合は、工程名欄2102の右下に三角形が表示される。
【0027】
図3に示す例では、タイルマークにより以下のことがわかる。
(1)行番号が「17」である行は、工程の名称などの属性が更新された行である。
(2)行番号が「17」である行は、移動されたオブジェクトを2つ、更新されたオブジェクトを2つ、削除されたオブジェクトを1つ、追加されたオブジェクトを1つ、含む。
(3)行番号が「17」である行の配下に属する行であって、折り畳まれて非表示となっている行が、変更されている。
【0028】
なお、タイルマークは、ユーザが着目したい変更種別のみを表示したり、色を任意に指定したり、カスタマイズすることができる。また、タイルマークは、変更種別または変更数量のいずれかのみを表示してもよいし、両方を表示してもよい。
【0029】
(行関連線)
図4は、行関連線を説明する図である。
行関連線2113は、新メイン画面2200に表示されている、ある行の左端を始点とし、旧メイン画面2100に表示されている、当該行に対応する行の右端を終点とする線である。行関連線2113の終点は、ユーザの目に留まりやすいように「●」で示されているが、この形状に限るものではない。また、行関連線2113の色は、前記したタイルマークと同様に、変更種別を示す。なお、行関連線2113は、変更種別が「更新」および「移動」の場合に表示される。
ここで、「ある行に対応する行」とは、後記する行データ(図8参照)のIDが等しい行データをいう。つまり、行関連線2113は、新メイン画面2200および旧メイン画面2100にそれぞれ表示されている、IDが等しい行を結ぶものである。
【0030】
行関連線2113は、行が追加・削除・移動されると、後記する同時スクロールにより、適宜伸縮・交差する。また、行関連線2113は、旧メイン画面2100または新メイン画面2200のどちらか一方を上下にスクロールさせると、後記する同時スクロールにより、適宜伸縮する。また、ユーザがマウス操作により、行関連線2113(または終点)をクリックすると、後記するスクロール位置合わせが行われ、対応する行が横方向に並び、行関連線2113は、横方向に水平な直線となる。
【0031】
(旧サブ画面および新サブ画面)
図2および図5を参照して、旧サブ画面2300および新サブ画面2400を説明する。
旧サブ画面2300および新サブ画面2400は、ある工程(行)に着目したとき、当該工程がプロジェクトの全体の期間内において、どの位置にあるか等を把握するものである。長期にわたるプロジェクトの場合、プロジェクトの開始日から終了日まで、1つの画面で表示しようとすると、縮小して表示しなければならず、詳細を把握することが困難になってしまう。そこで、図2に示すように、詳細は旧メイン画面2100および新メイン画面2200に表示し、期間の全体は旧サブ画面2300および新サブ画面2400に表示することで、期間の全体を把握しつつ、詳細を確認することが可能となる。なお、旧サブ画面2300および新サブ画面2400に表示される期間は、ユーザが任意に指定することも可能である。
【0032】
また、旧サブ画面2300および新サブ画面2400は、それぞれ、旧メイン画面2100および新メイン画面2200に連動している。
例えば、図2に示す旧メイン画面2100において表示されている行番号が「17」である行を、ユーザがマウス操作等により選択すると、旧サブ画面2300がスクロールし、図5(a)に示すように、行番号が「17」である行が旧サブ画面2300に表示される。また、図5(a)に示す旧サブ画面2300に表示されているアクティビティ2105aを、ユーザがマウス操作等により選択すると、旧メイン画面2100がスクロールし、図5(b)に示すように、当該選択されたアクティビティ2105aが旧メイン画面2100に表示される。
また、旧メイン画面2100に表示されている範囲を示す旧サブ画面移動枠2310を、ユーザがマウス操作等により選択して移動すると、連動して旧メイン画面2100がスクロールする。このような連動処理によって、旧メイン画面2100および旧サブ画面2300の表示位置(縦軸・横軸)が揃うことになる。また、この連動処理は、ガントチャート差分表示装置100の画面連動制御部113bにより行われる。
【0033】
なお、同様に、新メイン画面2200は、新サブ画面2400および新サブ画面移動枠2410に連動している。
【0034】
(同時スクロール)
「同時スクロール」とは、新旧のガントチャートを比較しやすいように、旧メイン画面2100および新メイン画面2200のどちらか一方の画面または両方の画面をスクロールさせるものである。なお、旧メイン画面2100または新メイン画面2200の一方のみが独立してスクロールすることを「単独スクロール」という。
【0035】
前記したように、旧メイン画面2100は旧サブ画面2300および旧サブ画面移動枠2310に連動し、新メイン画面2200は新サブ画面2400および新サブ画面移動枠2410に連動している。さらに、旧メイン画面2100は後記する旧マップ移動枠2511(図7)にも連動し、新メイン画面2200は後記する新マップ移動枠2521(図7)にも連動している。
旧メイン画面2100および新メイン画面2200のスクロールは、下記に示す「スクロール操作」により行われる。これらのスクロール操作は、ユーザがマウスを操作することにより行われる。
(1)スクロールバーをクリックまたはドラッグする。
(2)マウスホイルを回転させる。
(3)旧サブ画面移動枠2310、新サブ画面移動枠2410、旧マップ移動枠2511および新マップ移動枠2521をドラッグさせる。
【0036】
図6は、同時スクロールを説明する図である。図6では、旧メイン画面2100および新メイン画面2200を、行番号で簡略的に示している。また、行番号を囲む外枠(太線)は、旧メイン画面2100および新メイン画面2200において先頭に表示される行を示している。
【0037】
図6においては、図3と同様に斜線・縦線・横線によって、更新・移動・削除・追加を示している。また、変更種別が「更新」である行を「更新行」と、「移動」である行を「移動行」と、「削除」である行を「削除行」と、「追加」である行を「追加行」と呼び、更新・移動・削除・追加のいずれでもない行を「通常行」と呼ぶ。
なお、「追加行」は、旧メイン画面2100には表示されないが、新メイン画面2200には表示される。「削除行」は、旧メイン画面2100には表示されるが、新メイン画面2200には表示されない。「更新行」および「移動行」は、旧メイン画面2100および新メイン画面2200に表示される。
【0038】
初期表示は、図6(a)に示すように、行番号が「0」である行を先頭にして、旧メイン画面2100および新メイン画面2200が表示される。
【0039】
次に、ユーザがスクロール操作を行うと、図6(b)に示すように、旧メイン画面2100には、行番号が「0」である行の下の行(行番号空欄)が先頭に表示される。一方、新メイン画面2200には、行番号が「0」である行の下の行(行番号「1」)が先頭に表示される。
これは、図6(a)において、旧メイン画面2100および新メイン画面2200の先頭に表示されている行が通常行であるため、同時スクロールによって、旧メイン画面2100および旧サブ画面2300が下方向に1行スクロールされたためである。なお、旧メイン画面2100および新メイン画面2200の先頭に表示されている行が更新行であっても、通常行である場合と同様に、旧メイン画面2100および旧サブ画面2300が下方向に1行スクロールされる。
【0040】
さらに、ユーザがスクロール操作を行うと、図6(c)に示すように、旧メイン画面2100には、行番号が空欄である行の下の行(行番号「1」)が先頭に表示される。一方、新メイン画面2200はスクロールせずに、行番号が「1」である行が先頭に表示されたままである。
これは、図6(b)において、旧メイン画面2100の先頭に表示されている行が削除行であるため、同時スクロールによって、旧メイン画面2100のみが下方向に1行スクロールされたためである。
【0041】
さらに、ユーザがスクロール操作を行うと、図6(d)に示すように、旧メイン画面2100には、行番号が「1」である行の下の行(行番号「2」)が先頭に表示される。一方、新メイン画面2200には、行番号が「1」である行の下の行(行番号「5」)が先頭に表示される。
これは、図6(a)から(b)のスクロールと同様である。
【0042】
さらに、ユーザがスクロール操作を行うと、図6(e)に示すように、旧メイン画面2100はスクロールせずに、行番号が「2」である行が先頭に表示されたままとなる。一方、新メイン画面2200には、行番号が「5」である行の下の行(行番号空欄)が先頭に表示される。
これは、図6(d)において、新メイン画面2200の先頭に表示されている行が移動行であるため、同時スクロールによって、移動行を先頭に表示している新メイン画面2200のみが下方向に1行スクロールされたためである。なお、移動行が旧メイン画面2100に表示されていた場合は、旧メイン画面2100のみが下方向に1行スクロールされる。
【0043】
さらに、ユーザがスクロール操作を行うと、図6(f)に示すように、旧メイン画面2100はスクロールせずに、行番号が「2」である行が先頭に表示されたままとなる。一方、新メイン画面2200には、行番号が空欄である行の下の行(行番号「2」)が先頭に表示される。
これは、図6(e)において、新メイン画面2200の先頭に表示されている行が追加行であるため、同時スクロールによって、新メイン画面2200のみが下方向に1行スクロールされたためである。
【0044】
また、図6(d)において、行番号が「2」である行に着目すると、旧メイン画面2100および新メイン画面2200において、横方向に隣り合わせで表示されていない状態となっている。換言すれば、同じ行番号である行が、ズレて表示されている状態である。この場合、ユーザがマウス操作等により行関連線2113をクリックすると、当該クリックされた行関連線2113が横方向に水平な直線となるように、新メイン画面2200がスクロールする。すなわち、同じ行番号である行が、横方向に隣り合わせで表示されるようになる。換言すれば、旧メイン画面2100および新メイン画面2200のズレが解消される。そして、図6(f)に示す状態になる。このように、旧メイン画面2100および新メイン画面2200のズレを解消させることを、「スクロール位置合わせ」という。
【0045】
また、同時スクロールは、縦方向(上下方向のスクロール)だけではなく、横方向(左右方向のスクロール)でも可能である。例えば、ユーザがスクロール操作により、旧メイン画面2100を横方向へスクロールさせると、新メイン画面2200も横方向にスクロールする。そして、旧メイン画面2100に表示されている日付と、新メイン画面2200に表示されている日付とが同じになると、スクロールは停止する。
なお、ユーザがスクロール操作により、新メイン画面2200を横方向へスクロールさせた場合も、同様に、旧メイン画面2100も横方向にスクロールする。
【0046】
(行マップ)
図7は、行マップを説明する図である。
工程の数が多いプロジェクトの場合、行数が多くなり、旧メイン画面2100および新メイン画面2200において、全ての工程を表示できないことがある。そこで、行の変更状況を簡略的に示す行サムネイル2530を、タイルマークの行番号欄2101と同様の色(図3)で示し、変更種別を示すことで、全体の変更状況を把握することが可能となる。
【0047】
また、行の移動が生じた際、移動元と移動先が離れていると、旧メイン画面2100および新メイン画面2200では、行関連線2113を途切れさせずに表示することができないことがある。そこで、旧マップレール2510と新マップレール2520との間にも行関連線2113を表示することで、行同士の対応関係を把握することが可能となる。
【0048】
旧マップレール2510には、旧マップ移動枠2511が表示されている。また、新マップレール2520には、新マップ移動枠2521が表示されている。この旧マップ移動枠2511および新マップ移動枠2521は、それぞれ、旧メイン画面2100および新メイン画面2200において表示される工程の範囲(行の範囲)を示すものである。
【0049】
また、旧マップ移動枠2511および新マップ移動枠2521は、それぞれ、旧メイン画面2100および新メイン画面2200に連動している。
例えば、ユーザがマウス操作等により、旧マップ移動枠2511を上下に動かすと、旧メイン画面2100が上下にスクロールし、旧マップ移動枠2511により囲まれている範囲の工程(行)が、旧メイン画面2100に表示される。逆に、旧メイン画面2100をユーザがマウス操作等により上下にスクロールさせると、旧マップ移動枠2511が当該スクロールに併せて上下に動く。なお、新メイン画面2200および新マップ移動枠2521も、同様に連動している。
【0050】
<<ガントチャートデータ>>
図8は、ガントチャートデータを説明する図である。ガントチャートデータは、図8に示すように、階層構造を有する。
【0051】
ガントチャートデータは、オブジェクトデータ(アクティビティ2105〜関連線2110および工程(行)のデータ)を含んで構成される。なお、図8中において、「△△群」と記した場合は、「△△」の集合を示すものとする。また、各オブジェクトデータは、オブジェクトを一意に特定する識別子であるIDを属性に有する。
【0052】
行データは、工程(行)に関するデータである。行データは、属性として、ID、名称、親行ID、行内順番および開閉状態を有する。
名称とは、工程名欄2102に表示される、工程の名称である。
親行IDとは、1つ上の階層に属する行(親行)のIDである。
行内順番とは、同一の親行の配下(直下)に属する行(兄弟行)同士内における相互の関係であり、数値が小さいほど上段に表示される。換言すれば、行内順番は、兄弟行同士における表示順序である。
開閉状態とは、行を表示(行を展開・開く)するか、行を非表示(行を折り畳む・閉じる)とするか、を示す情報である。
【0053】
アクティビティデータは、アクティビティ2105(矩形)、チェックポイント2107(三角形)およびマイルストーン2108(円形)に関するデータである。アクティビティデータは、属性として、ID、名称、親行ID、開始日、終了日および進捗率を有する。
名称とは、アクティビティ2105の名称である。
親行IDとは、アクティビティ2105が表示される行のIDである。
開始日とは、アクティビティ2105が、日付欄2103のどの位置から開始するか、換言すれば、どの位置から表示されるかを示す情報である。
終了日とは、アクティビティ2105が、日付欄2103のどの位置で終了するか、換言すれば、どの位置まで表示されるかを示す情報である。
進捗率とは、アクティビティ2105の業務量のうち、進捗確認日時点で終了している業務量の比率(百分率)である。進捗率は、日付(横軸の位置)で示すこともできる。
【0054】
注釈データは、注釈2106に関するデータである。注釈データは、属性として、ID、親行ID、行内位置および日付を有する。
親行IDとは、注釈2106が表示される行のIDである。
行内位置とは、注釈2106が表示される行における、縦方向の位置を示す情報である。
日付とは、注釈2106が、日付欄2103のどの位置に表示されるか、換言すれば、横軸の位置を示す情報である。
【0055】
チェックポイントデータは、イナズマ線2109に関する情報である。チェックポイントデータは、属性として、IDおよび日付を有する。
日付とは、イナズマ線2109が、日付欄2103のどの位置を基準とするか、換言すれば、イナズマ線2109の基準とする横軸の値を示す情報である。
【0056】
進捗点データは、イナズマ線2109を構成する進捗点に関する情報である。進捗データは、属性として、アクティビティIDおよび進捗率を有する。
アクティビティIDは、進捗状況を示す対象であるアクティビティのIDである。
進捗率は、進捗状況を示す対象であるアクティビティの業務量のうち、進捗確認日時点で終了している業務量の比率(百分率)である。なお、進捗率は、日付(横軸の位置)により示すこともできる。
なお、チェックポイントデータおよび進捗点データにより、イナズマ線2109が表示される。イナズマ線2109は、チェックポイントデータの属性「日付」の縦方向に垂直な直線を基準として、進捗点を結んだ線である。
【0057】
関連線データは、関連線2110に関する情報である。関連線データは、属性として、ID、開始アクティビティID、終了アクティビティID、接続位置および方向を有する。
開始アクティビティIDは、関連線2110の始点となるアクティビティのIDである。
終了アクティビティIDは、関連線2110の終点となるアクティビティのIDである。
接続位置は、関連線2110がどのようにつながっているかを示すものである。関連線2110は、アクティビティの開始日である左端(head)、終了日である右端(tail)および進捗点(Progress)のうちのいずれか2つを始点および終点とする。接続位置は、これらのうち、いずれを始点および終点とするのかを示すものである。
方向は、関連線2110の向きを示すものである。関連線2110は、図2に示すように、1または複数の連続する線分により示される。関連線2110に向きがある場合は、線分の始点および/または終点を矢印とすることで、向き(一方向または双方向)を示している。また、関連線2110に向きがない場合は、線分の始点および終点を矢印としない(無方向)。
【0058】
なお、各オブジェクトデータは、上記以外の属性を有してもよい。例えば、旧メイン画面2100および新メイン画面2200に表示(描画)する際の位置やサイズを、属性に有してもよい。また、ユーザが着目したい観点を属性として任意に定義(カスタマイズ)してもよい。
【0059】
<ガントチャートデータ(行データ)>
ここで、図9および図10を参照して、ガントチャートデータの一例を説明する。図9は、ガントチャートデータのうち、行に関するデータ(行データ)の一例である。
【0060】
図9(a)に示すように、旧ガントチャートデータ151(行データ)は、階層構造を有している。図中の円で囲まれた数字が「行」オブジェクトのIDを簡略的に示している。なお、円で囲まれた「1」の記載は、IDが「item1」であることを示している。また、図中の四角で囲まれた数字が「アクティビティ」オブジェクトのIDを簡略的に示している。なお、四角で囲まれた「1」の記載は、IDが「bar1」であることを示している(以下、同様)。
【0061】
そして、図9(b)は、図9(a)をテーブル形式で示したものである。旧ガントチャートデータ151(行データ)は、図9(b)に示すような属性(各欄の値)を有している。なお、図中の「属性1」および「属性2」は、ユーザがカスタマイズしたものである。
【0062】
図9(c)(d)は、新ガントチャートデータ152(行データ)の一例である。新ガントチャートデータ152(行データ)も、旧ガントチャートデータ151(行データ)と同様である。
【0063】
<ガントチャートデータ(アクティビティデータ)>
図10は、ガントチャートデータのうち、アクティビティに関するデータ(アクティビティデータ)の一例である。図10(a)は、旧ガントチャートデータ151(アクティビティデータ)をテーブル形式で示したものである。旧ガントチャートデータ151(アクティビティデータ)は、図10(a)に示すような属性(各欄の値)を有している。なお、図中の「属性1」は、ユーザがカスタマイズしたものである。
【0064】
図10(b)は、新ガントチャートデータ152(アクティビティデータ)の一例である。新ガントチャートデータ152(アクティビティデータ)も、旧ガントチャートデータ151(アクティビティデータ)と同様である。
【0065】
<<差分データの構造>>
図11は、差分データを説明する図である。差分データ141は、ガントチャート差分表示装置100の差分検出部111が行う、差分検出処理(詳細後記)によって出力される、旧ガントチャートデータ151と新ガントチャートデータ152との差分(ガントチャートデータの変更内容)に関するデータである。差分データ141は、図11に示すように、階層構造を有する。
【0066】
差分データ141は、行差分データ、アクティビティ差分データ、注釈差分データ、関連線差分データを含んで構成される。なお、図11中において、「△△群」と記した場合は、「△△」の集合を示すものとする。
【0067】
行差分データは、行データの差分に関するデータである。
アクティビティ差分データは、アクティビティデータの差分に関するデータである。
注釈差分データは、注釈データの差分に関するデータである。
関連線差分データは、関連線データの差分に関するデータである。
これらの各差分データおよび差分データ141は、属性として、ID、変更種別、変更属性、旧データおよび新データを有する。
【0068】
IDは、差分データを一意に特定する識別子である。
変更種別は、差分データが、どの変更種別に該当するかを示すものである。
変更属性は、差分データの対象であるガントチャートデータ(オブジェクトデータ)の属性のうち、どの属性が変更されたかを示すものである。
旧データは、差分データの対象であるガントチャートデータ(オブジェクトデータ)の、変更前のデータである。旧データは、旧データそのもの(旧データの値)でもよいし、旧データの格納場所(ポインタ)でもよい。
新データは、差分データの対象であるガントチャートデータ(オブジェクトデータ)の、変更後のデータである。新データは、新データそのもの(新データの値)でもよいし、新データの格納場所(ポインタ)でもよい。
なお、行差分データは、さらに、当該行の配下(直下)に属するアクティビティおよび注釈であって変更されたもの(変更アクティビティおよび変更注釈)のIDを属性に有する。
【0069】
差分データは、差分情報2111に表示される。差分情報2111には、変更種別・数量、更新前の値、更新後の値、その他補足用の説明文が表示される。
【0070】
<行差分データ(階層構造差分検出処理)>
ここで、図9および図12〜図18を参照して、差分データ141の状態が遷移していく一例を説明する。
図12は、差分データのうち、行に関するデータ(行差分データ)の一例である。図12は、ガントチャート差分表示装置100の階層構造差分検出部111aが、後記する階層構造差分検出処理によって、図9に示す旧ガントチャートデータ151および新ガントチャートデータ152を比較した結果である。
【0071】
図9において、(b)に示す旧ガントチャートデータ151にはIDが「item3」であるレコードが存在するが、(d)に示す新ガントチャートデータ152には存在しない。そのため、図12に示す差分データ141のIDが「item3」であるレコードの変更種別に「削除」が設定される。
【0072】
また、図9において、(b)に示す旧ガントチャートデータ151および(d)に示す新ガントチャートデータ152には、IDが「item4」であるレコードが存在する。しかし、「親行ID」が「item3」から「item2」に更新されている。そのため、図12に示す差分データ141のIDが「item4」であるレコードの変更種別に「移動」が設定される。
【0073】
また、図9において、(b)に示す旧ガントチャートデータ151にはIDが「item5」であるレコードが存在しないが、(d)に示す新ガントチャートデータ152には存在する。そのため、図12に示す差分データ141のIDが「item5」であるレコードの変更種別に「追加」が設定される。
【0074】
なお、図9において、IDが「item1」および「item2」であるレコードは、(b)に示す旧ガントチャートデータ151および(d)に示す新ガントチャートデータ152に存在する。さらに、これらの2レコードは、「親行ID」が更新されていない。そのため、図12に示す差分データ141のIDが「item1」および「item2」であるレコードの変更種別には、何も設定されない(空欄である)。
【0075】
<行差分データ(兄弟移動検出処理)>
図13は、差分データのうち、行に関するデータ(行差分データ)の一例である。図13(a)は、ガントチャート差分表示装置100の最小変換手順検出部111bが、後記する兄弟移動検出処理によって、図9に示す旧ガントチャートデータ151および新ガントチャートデータ152を比較した結果である。
【0076】
ここで、旧ガントチャートデータ151は、図13(b)に示すような階層構造を有しているとする。IDが「item1」である行オブジェクト配下に、IDが「itemA」、「item2」、「itemB」、「itemC」である行オブジェクトが存在している。換言すれば、「itemA」、「item2」、「itemB」、「itemC」である行オブジェクトは、「item1」を親とする兄弟行である。そして、図13(c)は、図13(b)の行内順番をテーブル形式で示したものである。
また、図13(e)および(f)に示す新ガントチャートデータ152も、旧ガントチャートデータ151と同様である。
【0077】
そして、図13(b)、(c)、(e)、(f)に示すデータから、公知である文書差分アルゴリズムによって最小変換手順の追加・削除を検出すると、図13(d)および(g)に示す結果となる。図13(d)は、旧ガントチャートデータ151に対する結果であり、図13(g)は、新ガントチャートデータ152に対する結果である。図13(d)において、IDが「item2」であるレコードは、変更種別に「削除」が検出されている。また、図13(g)において、IDが「item2」であるレコードは、変更種別に「追加」が検出されている。このように、「追加」および「削除」を同時に検出した行データは、差分データ141の変更種別に「移動」が設定される。このような処理によって、図13(a)においては、IDが「item2」であるレコードの変更種別に「移動」が設定されている。
【0078】
ここで、文書差分アルゴリズムには、例えば、「MYERSアルゴリズム」がある。(http://citeseer.ist.psu.edu/viewdoc/download;jsessionid=D4893C682F66B2A3BA9110B991F42906?doi=10.1.1.4.6927&rep=rep1&type=pdf)
【0079】
<行差分データ(属性更新検出処理)>
図14は、差分データのうち、行に関するデータ(行差分データ)の一例である。
図14は、ガントチャート差分表示装置100の属性変更検出部111cが、後記する属性更新検出処理によって、図9に示す旧ガントチャートデータ151および新ガントチャートデータ152を比較した結果である。
【0080】
図9(b)および(d)において、IDが「item1」であるレコードに着目すると、属性1が「A」から「FFF」に更新されている。また、属性2は「1」から「88」に更新されている。そして、図13(a)に示す差分データ141において、IDが「item1」であるレコードの変更種別は空欄である。そのため、図14に示す差分データ141のIDが「item1」であるレコードの変更種別に「更新」が設定され、変更属性に「属性1,2」が設定される。
【0081】
また、図9(b)および(d)において、IDが「item2」であるレコードに着目すると、名称が「工程1.1」から「新名称」に更新されている。また、開閉状態が「−」から「開」に更新されている。しかし、図13(a)に示す差分データ141において、IDが「item2」であるレコードの変更種別は「移動」である。そのため、図14に示す差分データ141のIDが「item2」であるレコードの変更種別は「移動」のままであり、変更属性に「名称、開閉状態」が設定される。
なお、IDが「item4」であるレコードも、同様である。
【0082】
<行差分データ(アクティビティと注釈の差分の追記)>
図15は、差分データのうち、行に関するデータ(行差分データ)の一例である。図15は、ガントチャート差分表示装置100の差分検出部111が、後記するアクティビティの差分検出および注釈の差分検出によって検出した差分を、図14に示す差分データ141(行差分データ)に追記したものである。
【0083】
例えば、図9(a)および(c)において、IDが「bar2」であるアクティビティは、IDが「item2」である行から「item5」である行へ移動している。そこで、図15(c)に示す差分データ141(行差分データ)において、IDが「item2」および「item5」であるレコードの「変更アクティビティ」に、「bar2」を追記する。
【0084】
このように、アクティビティおよび/または注釈が属する行が変更した場合、換言すると、親行IDが変更した場合、変更前後の行の「変更アクティビティ」および/または「変更注釈」に、当該アクティビティおよび/または注釈のIDを格納する。
【0085】
<アクティビィ差分データ(階層構造差分検出処理)>
ここで、図16を参照して、差分データ141の一例を説明する。図16は、差分データのうち、アクティビィに関するデータ(アクティビティ差分データ)の一例である。
図16は、ガントチャート差分表示装置100の階層構造差分検出部111aが、後記する階層構造差分検出処理によって、図10に示す旧ガントチャートデータ151および新ガントチャートデータ152を比較した結果である。この処理は、図12において説明した行差分データ(階層構造差分検出処理)と同様である。
【0086】
<アクティビィ差分データ(属性更新検出処理)>
図17は、差分データ141のうち、アクティビィに関するデータ(アクティビティ差分データ)の一例である。
図17は、ガントチャート差分表示装置100の属性変更検出部111cが、後記する属性更新検出処理によって、図10に示す旧ガントチャートデータ151および新ガントチャートデータ152を比較した結果である。この処理は、図14において説明した行差分データ(属性更新検出処理)と同様である。
【0087】
<アクティビィ差分データ(行内移動の検出)>
図18は、差分データのうち、アクティビィに関するデータ(アクティビティ差分データ)の一例である。
図18は、ガントチャート差分表示装置100の差分検出部111が、行内移動を検出した結果である。ここで、行内移動とは、同じ行内において、横軸の位置が更新された状態をいう。同じ行とは、親行IDが同じことを意味する。
また、横軸の位置は、オブジェクト毎の属性により決定する。例えば、アクティビティデータの横軸の位置は、属性「開始日」および「終了日」により決定する。注釈データの横軸の位置は、属性「行内位置」および「日付」により決定する。チェックポイントデータの横軸の位置は、属性「日付」により決定する。進捗点データの横軸の位置は、属性「進捗率」(横軸の位置である「日付」でもよい)により決定する。関連線データの横軸の位置は、属性「接続位置」によって決定する。
【0088】
図17において、IDが「bar1」であるレコードに着目すると、変更種別が「更新」であり、変更属性が「開始日,終了日」となっている。前記のように、アクティビティデータの横軸の位置は、属性「開始日」および「終了日」により決定するので、IDが「bar1」であるアクティビティは、行内移動されたことを示している。そこで、図18に示すように、変更種別が「更新」から「移動」に上書きされる。
図18において、IDが「bar2」であるレコードも変更種別が「移動」であるが、当該「移動」は図16において説明した階層構造差分検出処理で設定されたものであり、別の行へ移動した(親行IDが更新された)ことを示している。
【0089】
<<差分検出処理>>
次に、ガントチャート差分表示装置100の差分検出部111が行う、差分検出処理について説明する。差分検出処理は、旧ガントチャートデータ151および新ガントチャートデータ152を比較し、両者の差分を検出する処理である。差分検出処理は、「階層構造の差分の検出」、「兄弟の移動の検出」、「属性更新の検出」の3つのステップで実現される。
【0090】
ガントチャートデータは、図8に示すように、各種のオブジェクトデータを有し、オブジェクトデータ毎に異なる属性を有する。そこで、差分検出処理は、オブジェクトデータ毎に適した処理を行い、差分を検出する。
図19は、差分検出処理のフローチャートである。
【0091】
ステップS100において、差分検出部111は、データを入力する。具体的には、差分検出部111は、旧ガントチャートデータ151および新ガントチャートデータ152を入力する。
【0092】
ステップS200において、差分検出部111は、差分を検出する。この差分検出は、オブジェクトデータ毎に適した処理が行われる。ステップS200においては、行の差分検出(ステップS210a)、アクティビティの差分検出(ステップS210b)、注釈の差分検出(ステップS210c)および関連線の差分検出(ステップS210d)が行われる。
【0093】
行の差分検出(ステップS210a)においては、階層構造差分検出処理(ステップS211a)、兄弟移動検出処理(ステップS212a)、属性更新検出処理(ステップS213a)およびアクティビティと注釈の差分の追記(ステップS215a)が行われる。なお、アクティビティと注釈の差分の追記(ステップS215a)は、アクティビティの差分検出(ステップS210b)および注釈の差分検出(ステップS210c)の後に行われる。
【0094】
アクティビティの差分検出(ステップS210b)においては、階層構造差分検出処理(ステップS211b)、属性更新検出処理(ステップS213b)および行内移動の検出(ステップS214b)が行われる。なお、行内移動の検出(ステップS214b)では、図18において説明した処理が行われる。
【0095】
注釈の差分検出(ステップS210c)においては、階層構造差分検出処理(ステップS211c)、属性更新検出処理(ステップS213c)および行内移動の検出(ステップS214c)が行われる。注釈の差分検出(ステップS210c)は、アクティビティの差分検出(ステップS210b)と同様である。
【0096】
関連線の差分検出(ステップS210d)においては、属性更新検出処理(ステップS213d)が行われる。属性更新検出処理(ステップS213d)は、属性更新検出処理(ステップS213a)と同様である。
【0097】
なお、ガントチャートデータのうち、チェックポイントデータおよび進捗点に関するデータについては、差分検出の対象外である。
上記により、差分データ141が出力され、処理が終了する。
【0098】
<階層構造差分検出処理>
次に、階層構造差分検出処理(図19のステップS211、ステップS211a〜c)について説明する。図20は、階層構造差分検出処理のフローチャートである。
なお、ステップS2111a〜S2112aおよびステップS2111b〜S2112bは、同時並行的に実行されてもよいし、一方が終了した後、他方が開始されてもよい。
【0099】
ステップS2111aにおいて、階層構造差分検出部111aは、旧ガントチャートデータ151を読み込む。
ステップS2112aにおいて、階層構造差分検出部111aは、オブジェクト毎に旧HashMapを生成する。ここで、HashMapとは、読み込んだガントチャートデータの内容を比較しやすいように正規化したデータであり、例えば、図9(b)(d)および図10(a)(d)がその例である。
【0100】
ステップS2111bにおいて、階層構造差分検出部111aは、新ガントチャートデータ152を読み込む。
ステップS2112aにおいて、階層構造差分検出部111aは、オブジェクト毎に新HashMapを生成する。
【0101】
ステップS2113において、階層構造差分検出部111aは、新HashMapおよび旧HashMapをマージして、差分データを生成する。
【0102】
ステップS2114において、階層構造差分検出部111aは、新旧のオブジェクトデータおよび親行IDを比較する。当該比較処理は、全てのオブジェクトデータについて完了するまで繰り返す。
ステップS2115において、階層構造差分検出部111aは、比較結果を判定する。
【0103】
比較対象のオブジェクトデータが旧HashMapのみに存在する場合、ステップS2116に進む。そして、階層構造差分検出部111aは、差分データ141の変更種別に「削除」を設定する。
比較対象のオブジェクトデータが新旧HashMap両方に存在し、かつ、親行IDが異なる(違う親である)場合、ステップS2117に進む。そして、階層構造差分検出部111aは、差分データ141の変更種別に「移動」を設定する。
【0104】
比較対象のオブジェクトデータが新HashMapのみに存在する場合、ステップS2118に進む。そして、階層構造差分検出部111aは、差分データ141の変更種別に「追加」を設定する。
なお、比較対象のオブジェクトデータが新旧HashMap両方に存在し、かつ、親行IDが同じである場合、階層構造差分検出部111aは、差分データ141の変更種別に何も設定しない(フローチャートとしては図示せず)。
【0105】
比較および変更種別の設定(ステップS2114〜S2118)が、全てのオブジェクトデータについて完了すると、処理はメインルーチンへ戻る。
【0106】
<兄弟移動検出処理>
次に、兄弟移動検出処理(図19のステップS212、ステップS212a)について説明する。図21は、兄弟移動検出処理のフローチャートである。
【0107】
ステップS2121において、最小変換手順検出部111bは、子を持つ行に対して、配下の行の移動を検出する。当該処理は、全ての行データについて完了するまで繰り返す。
【0108】
ステップS2122において、最小変換手順検出部111bは、公知である文書差分アルゴリズムによって最小変換手順の追加・削除を検出する。
【0109】
ステップS2123において、最小変換手順検出部111bは、ステップS2122の検出結果において、「追加」および「削除」の両方を同時に検出した行の変更種別に「移動」を設定する。
【0110】
最小変換手順の追加・削除の検出および変更種別の設定(ステップS2122〜S2123)が、全ての行データについて完了すると、処理はメインルーチンへ戻る。
【0111】
<属性更新検出処理>
次に、属性更新検出処理(図19のステップS213、ステップS213a〜d)について説明する。図22は、属性更新検出処理のフローチャートである。
【0112】
ステップS2131において、属性変更検出部111cは、新旧オブジェクトデータを比較し、属性の更新を検出する。当該処理は、全てのオブジェクトデータについて完了するまで繰り返す。
【0113】
ステップS2132において、属性変更検出部111cは、オブジェクトデータが有する属性のうち少なくとも1つが一致しない場合、変更種別に「更新」を設定する。
【0114】
検出および変更種別の設定(ステップS2131〜S2132)が、全てのオブジェクトデータについて完了すると、処理はメインルーチンへ戻る。
【0115】
<アクティビティと注釈の差分の追記>
次に、アクティビティと注釈の差分の追記(図19のステップS215a)について説明する。
【0116】
まず、ガントチャート差分表示装置100の差分検出部111は、差分データ141(行差分データ)のレコードに格納されている旧データおよび新データを参照する。
次に、差分検出部111は、旧データおよび/または新データに格納されている、当該レコードの配下に属するアクティビティおよび/または注釈のIDを取得する。
そして、差分検出部111は、当該取得したアクティビティおよび/または注釈のIDをキーとして、図15(a)および(b)に示す差分データ141(アクティビティ差分データ・注釈差分データ)を検索し、キーが一致するレコードを取得する。
そして、差分検出部111は、取得したレコードに格納されている変更種別が、「更新」、「移動」、「削除」、「追加」のいずれかである場合、当該レコードに格納されているID(アクティビティまたは注釈のID)を、差分データ141(行差分データ)の「変更アクティビティ」および/または「変更注釈」へ格納する。
【0117】
これらの処理を、差分データ141(行差分データ)の全てのレコードについて行うと、アクティビティと注釈の差分の追記が終了する。
【0118】
<<ガントチャート表示処理>>
次に、ガントチャート差分表示装置100の表示処理部112が行う、ガントチャート表示処理について説明する。ガントチャート表示処理は、図2において示したような画面を出力装置130に表示する処理である。
図23は、ガントチャート表示処理のフローチャートである。
【0119】
ステップS311において、表示処理部112は、旧ガントチャートデータ151を読み込む。
ステップS311において、表示処理部112は、旧ガントチャート画面を描画する。ここで、旧ガントチャート画面とは、旧メイン画面2100および旧サブ画面2300をいう。
【0120】
ステップS313において、表示処理部112は、差分データ141を読み込む。
【0121】
ステップS314において、表示処理部112は、新ガントチャートデータ152を読み込む。
ステップS315において、表示処理部112は、新ガントチャート画面を描画する。ここで、新ガントチャート画面とは、新メイン画面2200および新サブ画面2400をいう。
なお、ステップS311〜S312、ステップS313およびステップS314〜S315は、同時並行的に実行されてもよいし、任意の順に直列的に実行されてもよい。図23において、フローが枝分かれして複数の流れになっている他の箇所についても同様である。
【0122】
ステップS321において、表示処理部112は、差分データ141から、オブジェクトの変更種別を取得する。
ステップS322において、表示処理部112は、旧ガントチャートデータ151および新ガントチャートデータ152から、描画するオブジェクトの位置およびサイズを取得する。
ステップS323において、強調データ生成部112dは、強調枠2112を描画する。強調枠2112は、タイルマークと同じ色で表示されるが、ユーザがカスタマイズすることも可能である。この場合、強調表示カスタマイズ部114bは、ユーザが設定した内容を、補助記憶装置150に記憶する。そして、ステップS323において強調枠2112を描画する際、強調データ生成部112dは、補助記憶装置150に記憶された設定に基づいて描画を行う。
また、強調データ生成部112dは、強調データ142を生成する。強調データ142は、強調表示されているオブジェクトに関するデータである。
【0123】
ステップS331において、表示処理部112は、行の変更種別および開閉状態を取得する。
ステップS332において、表示処理部112は、描画する行の位置およびサイズを取得する。
【0124】
ステップS333において、タイルマーク生成部112bは、行の配下に属するオブジェクトの変更をカウントする。
ここで、アクティビティと注釈の差分の追記(図19のステップS215a、図15)において説明したように、差分データ141(行データ)には、アクティビティのIDと注釈のIDが、変更前後の行のレコードに格納されている。
そこで、タイルマーク生成部112bは、旧メイン画面2100を描画する際は、旧ガントチャートデータ151に存在しないアクティビティおよび注釈をカウントしない。同様に、タイルマーク生成部112bは、新メイン画面2200を描画する際は、新ガントチャートデータ152に存在しないアクティビティおよび注釈をカウントしない。
このようにすることで、アクティビティおよび注釈が二重にカウントされることが回避され、正しい変更種別および/または変更数量をタイルマークに示すことができる。
【0125】
ステップS334において、タイルマーク生成部112bは、タイルマークを描画する。タイルマークは、ユーザがカスタマイズすることも可能である。この場合、表示属性カスタマイズ部114aは、ユーザが設定した内容を、補助記憶装置150に記憶する。そして、ステップS334においてタイルマークを描画する際、タイルマーク生成部112bは、補助記憶装置150に記憶された設定に基づいて描画を行う。
【0126】
ステップS335において、行関連線生成部112cは、行関連線2113を描画する。
【0127】
ステップS336において、行マップ生成部112aは、新旧行をカウントし、行マップデータを生成する。新旧行のカウントとは、新旧のガントチャートデータ(151,152)の行データにおいて、更新行・移動行・削除行・追加行がそれぞれいくつあるかをカウントすることである。そして、新旧行のカウント結果および他のオブジェクトデータ(新旧)に基づいて、行マップ2500を描画するための行マップデータを生成する。
ステップS337において、行マップ生成部112aは、行マップ2500を描画する。
【0128】
<<同時スクロール処理>>
次に、ガントチャート差分表示装置100の同時スクロール制御部113aが行う、同時スクロール処理について説明する。同時スクロール処理は、図6において説明した同時スクロールを制御する処理である。
図24は、同時スクロール処理のフローチャートである。
【0129】
ステップS401において、同時スクロール制御部113aは、ユーザがマウス等を操作したことを検知し、操作種類を判定する。操作種類には、「行関連線のクリック」および「スクロール」がある。「行関連線のクリック」は、行関連線2113をクリックすることをいう。「スクロール」は、新メイン画面2200または旧メイン画面2100を縦方向または横方向にずらすことをいう。
操作種類が「行関連線のクリック」である場合、ステップS411に進む。
操作種類が「スクロール」である場合、ステップS421に進む。
【0130】
ステップS411において、同時スクロール制御部113aは、新メイン画面2200および旧メイン画面2100を、同じ行までスクロールする。「同じ行までスクロールする」とは、図6において説明した「スクロール位置合わせ」をすることをいう。
そして、ステップS451に進む。
【0131】
ステップS421において、同時スクロール制御部113aは、スクロール方向を判定する。
スクロール方向が「横」である場合、ステップS431に進む。
スクロール方向が「縦」である場合、ステップS441に進む。
【0132】
ステップS431において、同時スクロール制御部113aは、新メイン画面2200および旧メイン画面2100を、同じ日付までスクロールする。
そして、ステップS451に進む。
【0133】
ステップS441において、同時スクロール制御部113aは、旧メイン画面2100および新メイン画面2200のそれぞれ先頭に表示されている行の状態を判定する。行の状態とは、「削除行」、「移動行」および「追加行」のいずれかであるかを示すものである。
行の状態が「削除行」である場合、すなわち、旧メイン画面2100の先頭に表示されている行が削除行である場合、ステップS442に進む。
行の状態が「移動行」である場合、すなわち、旧メイン画面2100および/または新メイン画面2200の先頭に表示されている行が移動行である場合、ステップS443に進む。
行の状態が「追加行」である場合、すなわち、新メイン画面2200の先頭に表示されている行が追加行である場合、ステップS444に進む。
【0134】
ステップS442において、同時スクロール制御部113aは、旧メイン画面2100のみをスクロールする。これは、図6(b)から(c)の処理に対応する。
そして、ステップS451に進む。
【0135】
ステップS443において、同時スクロール制御部113aは、移動行を先頭に表示している画面(旧メイン画面2100および/または新メイン画面2200)をスクロールする。これは、図6(d)から(e)の処理に対応する。
そして、ステップS451に進む。
【0136】
ステップS444において、同時スクロール制御部113aは、新メイン画面2200のみをスクロールする。これは、図6(e)から(f)の処理に対応する。
そして、ステップS451に進む。
【0137】
なお、ステップS441において、行の状態が「削除行」、「移動行」および「追加行」のうちいずれでもない場合は、旧メイン画面2100および新メイン画面2200の両方をスクロールする。これは、図6(a)から(b)および図6(c)から(d)の処理に対応する。
その後、ステップS451に進む(フローチャートとしては図示せず)。
【0138】
ステップS451において、同時スクロール制御部113aは、画面(旧メイン画面2100および新メイン画面2200)を再描画する。
そして、処理を終了する。
【0139】
<<まとめ>>
本実施形態により、以下の効果を奏する。すなわち、ガントチャートにおける変更前後の差分および関連性を表示するので、ガントチャートを作成する者(計画作成者)は、変更箇所を認識することが容易となる。また、計画作成者が複数存在し、ガントチャートデータが競合した場合、当該ガントチャートデータの差分を表示するので、競合を解消することが容易となる。
また、業務を担当する者(担当者)は、自己が担当する業務における変更箇所を認識することが容易となる。また、プロジェクトの管理者(管理者)は、プロジェクトの実行計画の変更や実績(進捗率など)の変更を認識することが容易となる。
【0140】
<<その他>>
なお、前記した実施形態は、本発明を実施するための好適なものであるが、その実施形式はこれらに限定されるものではなく。本発明の要旨を逸脱しない範囲内において種々変更することが可能である。
【符号の説明】
【0141】
100 ガントチャート差分表示装置
111 差分検出部
112 表示処理部
113 操作制御部
114 カスタマイズ部
120 入力装置
130 出力装置
140 主記憶装置
150 補助記憶装置
【技術分野】
【0001】
本発明は、ガントチャート差分表示装置に関する。
【背景技術】
【0002】
業務の工程管理において、業務の進捗状況を視覚的に理解しやすくするために、業務を構成する複数のアクティビティを時系列で表示する手法が一般に用いられている。このように表示された工程は、「ガントチャート」と呼ばれ、通常は、横軸を時間軸とする平面に、アクティビティを示す線分又は長方形のバーを行毎に配置し、線分やバーに進捗状況を示す目印を付す、又は関連のあるアクティビティ同士を線で結ぶ等の工夫がなされる。
また、業務は実行計画どおりに進まないことがあり、実行計画は必要に応じて変更される。
【0003】
特許文献1には、複数のタスクが遂行されるべきプロジェクトについて、タスク(アクティビティ)の実行計画変更による影響をプロジェクトの管理者が効率的に把握できるよう支援する技術が開示されている。
特許文献2には、ユーザによる特段の操作なしでも関連するアクティビティの全体を画面上に表示する技術が開示されている。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2010−224889号公報(段落0004〜0006)
【特許文献2】特開2009−223600号公報(段落0005)
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、特許文献1には、ガントチャートにおける変更前後の工数の差分を表示するが、工数以外の差分および変更前後の関連性を表示することは開示されていない。また、特許文献2には、アクティビティの全体と詳細とを同時に表示する技術およびガントチャートにおける変更前後の差分を表示する技術については開示がない。
【0006】
そこで、本発明は、前記した問題を解決するために、ガントチャートにおける変更前後の差分および関連性を表示するガントチャート差分表示装置を提供することを課題とする。
【課題を解決するための手段】
【0007】
前記課題を解決するため、本発明によるガントチャート差分表示装置は、業務の工程および前記業務に属するアクティビティを、要素であるオブジェクトとして有するガントチャートを表示するガントチャート差分表示装置であって、前記オブジェクトを示す識別子と、前記オブジェクトが属する前記工程の識別子である親行IDと、を対応付けて記憶しているガントチャートデータを複数備える記憶部と、前記複数のガントチャートデータを比較して、前記識別子および前記親行IDが一致しない前記オブジェクトを検出し、前記検出結果に基づいて、前記オブジェクトの変更種別および/または変更数量を示すタイルマークを前記工程に関連付けて比較元の前記ガントチャートデータを示す第一のガントチャートおよび比較先の前記ガントチャートデータを示す第二のガントチャートに表示し、前記第一のガントチャートおよび前記第二のガントチャートのそれぞれに表示される、前記識別子が等しい前記工程を結んで、前記工程の対応関係を示す行関連線を表示し、前記第一のガントチャートに表示されている前記工程の変更種別が削除である場合は、前記第一のガントチャートをスクロールさせ、前記第一のガントチャートおよび/または前記第二のガントチャートに表示されている前記工程の変更種別が移動である場合は、当該工程を表示している前記第一のガントチャートおよび/または前記第二のガントチャートをスクロールさせ、前記第二ガントチャートに表示されている前記工程の変更種別が追加である場合は、前記第二のガントチャートをスクロールさせる、制御をする制御部と、を有することを特徴とする。
【発明の効果】
【0008】
本発明によれば、ガントチャートにおける変更前後の差分および関連性を表示するガントチャート差分表示装置を提供することができる。
【図面の簡単な説明】
【0009】
【図1】本実施形態に係るガントチャート差分表示装置のハードウェア構成図である。
【図2】本実施形態に係るガントチャート表示画面の一例を示す図である。
【図3】タイルマークを説明する図である。
【図4】行関連線を説明する図である。
【図5】旧サブ画面および新サブ画面を説明する図である。
【図6】同時スクロールを説明する図である。
【図7】行マップを説明する図である。
【図8】ガントチャートデータを説明する図である。
【図9】ガントチャートデータのうち、行に関するデータ(行データ)の一例である。
【図10】ガントチャートデータのうち、アクティビティに関するデータ(アクティビティデータ)の一例である。
【図11】差分データを説明する図である。
【図12】差分データのうち、行に関するデータ(行差分データ)の一例である。
【図13】差分データのうち、行に関するデータ(行差分データ)の一例である。
【図14】差分データのうち、行に関するデータ(行差分データ)の一例である。
【図15】差分データのうち、行に関するデータ(行差分データ)の一例である。
【図16】差分データのうち、アクティビィに関するデータ(アクティビティ差分データ)の一例である。
【図17】差分データのうち、アクティビィに関するデータ(アクティビティ差分データ)の一例である。
【図18】差分データのうち、アクティビィに関するデータ(アクティビティ差分データ)の一例である。
【図19】差分検出処理のフローチャートである。
【図20】階層構造差分検出処理のフローチャートである。
【図21】兄弟移動検出処理のフローチャートである。
【図22】属性更新検出処理のフローチャートである。
【図23】ガントチャート表示処理のフローチャートである。
【図24】同時スクロール処理のフローチャートである。
【発明を実施するための形態】
【0010】
以降、本発明を実施するための形態(「本実施形態」という)を、図などを参照しながら詳細に説明する。また、本実施形態を説明するための全図において、同一部には原則として同一の符号を付し、その繰り返しの説明は省略する。
【0011】
<<ハードウェア構成>>
図1は、本実施形態に係るガントチャート差分表示装置のハードウェア構成図である。
ガントチャート差分表示装置100は、相互にバスで接続された、中央制御装置(制御部)110、入力装置(入力部)120、出力装置(出力部)130、主記憶装置(記憶部)140、および補助記憶装置(記憶部)150を有する。
【0012】
中央制御装置110は、プログラムである差分検出部111(階層構造差分検出部111a、最小変換手順検出部111b、属性変更検出部111c)、表示処理部112(行マップ生成部112a、タイルマーク生成部112b、行関連線生成部112c、強調データ生成部112d)、操作制御部113(同時スクロール制御部113a、画面連動制御部113b)およびカスタマイズ部114(表示属性カスタマイズ部114a、強調表示カスタマイズ部114b)を実行して、ガントチャート差分表示装置100を制御する(詳細後記)。
【0013】
入力装置120は、マウス、キーボード、タッチパネル等であり、ガントチャート差分表示装置100の操作者からの指示を受け付ける。
出力装置130は、ディスプレイ、プリンタ等であり、ガントチャート差分表示装置100の操作画面を表示する装置である。
主記憶装置140は、RAM(Random Access Memory)、ROM(Read Only Memory)等であり、中央制御装置110が実行するプログラムを格納したり、一時的なデータ(差分データ141、強調データ142)を格納したりする。
補助記憶装置150は、HDD(Hard Disk Drive)等であり、旧ガントチャートデータ151および新ガントチャートデータ152を格納している(詳細後記)。なお、旧ガントチャートデータ151および新ガントチャートデータ152を総称して「ガントチャートデータ」と呼ぶ。
【0014】
以降、「○○部は」と主体を記した場合は、中央制御装置110が必要に応じ補助記憶装置150から各プログラムを読み出した上で主記憶装置140にロードし、各機能(後記)を実行するものとする。各プログラムは、予め補助記憶装置150に記憶されていてもよいし、他の記憶媒体または通信媒体を介して、必要なときにガントチャート差分表示装置100に取り込まれてもよい。
【0015】
(ガントチャート表示画面)
図2は、本実施形態に係るガントチャート表示画面の一例を示す図である。
ガントチャート表示画面2000は、旧メイン画面2100、新メイン画面2200、旧サブ画面2300、新サブ画面2400および行マップ2500を有する。
【0016】
旧メイン画面2100は、後記する旧ガントチャートデータ151を表示したものである。旧メイン画面2100においては、1つの工程(アイテム)が1行で表示されている。また、工程(行)は階層構造を有し、下位の階層を非表示(行を折り畳む)としたり、下位の階層を表示(行を展開する)したりすることができる。
【0017】
行番号欄2101には、行番号が表示されている。行番号は、ガントチャートを新規作成した際、行ごとに便宜的に割り振られたものである。この行番号は、行を追加・削除した場合でも、新規作成時に割り振られた行番号を保持するものとする。
また、行番号欄2101には、タイルマークが表示されている(詳細後記)。
【0018】
工程名欄2102には、工程の名称が表示されている。工程の名称は、ユーザが任意に指定したものであり、適宜変更可能である。
日付欄2103には、日付が表示されている。ガントチャートは、横軸を時間軸とするため、換言すれば、日付は横軸の目盛である。なお、日付には「時刻」を含めてもよい。
描画欄2104には、アクティビティ2105、注釈2106、チェックポイント2107、マイルストーン2108、イナズマ線2109、関連線2110、差分情報2111および強調枠2112が表示されている。
【0019】
アクティビティ2105は、業務を構成する要素である。
注釈2106は、補足的な説明である。
チェックポイント2107は、工程の進捗状況の確認を行う日(進捗確認日)である。
マイルストーン2108は、工程管理を行うにあたり、目印となる時点を示す記号である。
イナズマ線2109は、各アクティビティの進捗率を示す進捗点を結んだ線である。進捗率とは、アクティビティの業務量のうち、進捗確認日時点で終了している業務量の比率(百分率)である。
関連線2110は、各アクティビティ間の関連性を示す線である。
なお、アクティビティ2105〜関連線2110および工程(行)を総称して「オブジェクト」と呼ぶ。オブジェクトとは、ガントチャートの要素である。
差分情報2111は、オブジェクトの変更前後の差分(詳細後記)に関する情報である。差分情報2111は、ユーザがマウス操作により、オブジェクトにマウスオーバーまたはクリックすると表示される。そして、マウスポインタがオブジェクトから離れると、差分情報2111は消える(非表示となる)。
強調枠2112は、アクティビティを強調表示する枠である。強調枠2112は、後記するタイルマークと同じ色で表示される。
【0020】
新メイン画面2200は、後記する新ガントチャートデータ152を表示したものである。新メイン画面2200の構成は、旧メイン画面2100と同様である。
【0021】
そして、旧メイン画面2100と新メイン画面2200との間には、行関連線2113が表示される。この行関連線2113は、旧メイン画面2100において表示されている行と新メイン画面2200において表示されている行との対応関係を示す線である(詳細後記)。
【0022】
旧サブ画面2300は、横軸をプロジェクトの全体の期間として、旧メイン画面2100に表示されている内容の一部を表示したものである(詳細後記)。
新サブ画面2400は、横軸をプロジェクトの全体の期間として、新メイン画面2200に表示されている内容の一部を表示したものである(詳細後記)。
【0023】
行マップ2500は、プロジェクトの全体の工程を簡略的に表示したものである。行マップ2500には、旧マップレール2510および新マップレール2520が表示されている。旧マップレール2510は、旧メイン画面2100に表示されるべき全ての工程を簡略的に表示したものである。新マップレール2520は、新メイン画面2200に表示されるべき全ての工程を簡略的に表示したものである
なお、旧メイン画面2100、旧サブ画面2300および旧マップレール2510は、比較元のガントチャートデータを示すものであり、総称して「第一のガントチャート」と呼ぶ。また、新メイン画面2200、新サブ画面2400、新マップレール2520は、比較先のガントチャートデータを示すものであり、総称して「第二のガントチャート」と呼ぶ。
【0024】
(タイルマーク)
図3は、タイルマークを説明する図である。
タイルマークは、オブジェクトの変更種別および/または変更数量を簡略的に示すものである。本実施形態において、変更種別は、「更新」、「移動」、「削除」および「追加」の4種類が存在し、それぞれ異なる色で表示される。
【0025】
「更新」は、オブジェクトの属性(詳細後記)が変更されることを示し、黄色で表示される。図3においては、黄色を、右上から左下の斜線で示している。
「移動」は、オブジェクトの位置(詳細後記)が変更されることを示し、赤色で表示される。図3においては、赤色を、左上から右下の斜線で示している。
「削除」は、オブジェクトが削除されることを示し、灰色で表示される。図3においては、灰色を、縦線で示している。
「追加」は、オブジェクトが付け足されることを示し、緑色で表示される。図3においては、緑色を、横線で示している。
【0026】
行の変更種別は、行番号欄2101の色により示される。例えば、行番号欄2101が黄色の場合、行が更新された(属性が変更された)ことを示している。
行に含まれる、行以外のオブジェクトの変更種別および変更数量は、行番号の右側に隙間を設けて表示される矩形により示される。矩形の色が変更種別を示し、矩形の数が変更数量を示している。
また、折り畳み行(当該行の配下に属する、非表示となっている工程)において、変更があった場合は、工程名欄2102の右下に三角形が表示される。
【0027】
図3に示す例では、タイルマークにより以下のことがわかる。
(1)行番号が「17」である行は、工程の名称などの属性が更新された行である。
(2)行番号が「17」である行は、移動されたオブジェクトを2つ、更新されたオブジェクトを2つ、削除されたオブジェクトを1つ、追加されたオブジェクトを1つ、含む。
(3)行番号が「17」である行の配下に属する行であって、折り畳まれて非表示となっている行が、変更されている。
【0028】
なお、タイルマークは、ユーザが着目したい変更種別のみを表示したり、色を任意に指定したり、カスタマイズすることができる。また、タイルマークは、変更種別または変更数量のいずれかのみを表示してもよいし、両方を表示してもよい。
【0029】
(行関連線)
図4は、行関連線を説明する図である。
行関連線2113は、新メイン画面2200に表示されている、ある行の左端を始点とし、旧メイン画面2100に表示されている、当該行に対応する行の右端を終点とする線である。行関連線2113の終点は、ユーザの目に留まりやすいように「●」で示されているが、この形状に限るものではない。また、行関連線2113の色は、前記したタイルマークと同様に、変更種別を示す。なお、行関連線2113は、変更種別が「更新」および「移動」の場合に表示される。
ここで、「ある行に対応する行」とは、後記する行データ(図8参照)のIDが等しい行データをいう。つまり、行関連線2113は、新メイン画面2200および旧メイン画面2100にそれぞれ表示されている、IDが等しい行を結ぶものである。
【0030】
行関連線2113は、行が追加・削除・移動されると、後記する同時スクロールにより、適宜伸縮・交差する。また、行関連線2113は、旧メイン画面2100または新メイン画面2200のどちらか一方を上下にスクロールさせると、後記する同時スクロールにより、適宜伸縮する。また、ユーザがマウス操作により、行関連線2113(または終点)をクリックすると、後記するスクロール位置合わせが行われ、対応する行が横方向に並び、行関連線2113は、横方向に水平な直線となる。
【0031】
(旧サブ画面および新サブ画面)
図2および図5を参照して、旧サブ画面2300および新サブ画面2400を説明する。
旧サブ画面2300および新サブ画面2400は、ある工程(行)に着目したとき、当該工程がプロジェクトの全体の期間内において、どの位置にあるか等を把握するものである。長期にわたるプロジェクトの場合、プロジェクトの開始日から終了日まで、1つの画面で表示しようとすると、縮小して表示しなければならず、詳細を把握することが困難になってしまう。そこで、図2に示すように、詳細は旧メイン画面2100および新メイン画面2200に表示し、期間の全体は旧サブ画面2300および新サブ画面2400に表示することで、期間の全体を把握しつつ、詳細を確認することが可能となる。なお、旧サブ画面2300および新サブ画面2400に表示される期間は、ユーザが任意に指定することも可能である。
【0032】
また、旧サブ画面2300および新サブ画面2400は、それぞれ、旧メイン画面2100および新メイン画面2200に連動している。
例えば、図2に示す旧メイン画面2100において表示されている行番号が「17」である行を、ユーザがマウス操作等により選択すると、旧サブ画面2300がスクロールし、図5(a)に示すように、行番号が「17」である行が旧サブ画面2300に表示される。また、図5(a)に示す旧サブ画面2300に表示されているアクティビティ2105aを、ユーザがマウス操作等により選択すると、旧メイン画面2100がスクロールし、図5(b)に示すように、当該選択されたアクティビティ2105aが旧メイン画面2100に表示される。
また、旧メイン画面2100に表示されている範囲を示す旧サブ画面移動枠2310を、ユーザがマウス操作等により選択して移動すると、連動して旧メイン画面2100がスクロールする。このような連動処理によって、旧メイン画面2100および旧サブ画面2300の表示位置(縦軸・横軸)が揃うことになる。また、この連動処理は、ガントチャート差分表示装置100の画面連動制御部113bにより行われる。
【0033】
なお、同様に、新メイン画面2200は、新サブ画面2400および新サブ画面移動枠2410に連動している。
【0034】
(同時スクロール)
「同時スクロール」とは、新旧のガントチャートを比較しやすいように、旧メイン画面2100および新メイン画面2200のどちらか一方の画面または両方の画面をスクロールさせるものである。なお、旧メイン画面2100または新メイン画面2200の一方のみが独立してスクロールすることを「単独スクロール」という。
【0035】
前記したように、旧メイン画面2100は旧サブ画面2300および旧サブ画面移動枠2310に連動し、新メイン画面2200は新サブ画面2400および新サブ画面移動枠2410に連動している。さらに、旧メイン画面2100は後記する旧マップ移動枠2511(図7)にも連動し、新メイン画面2200は後記する新マップ移動枠2521(図7)にも連動している。
旧メイン画面2100および新メイン画面2200のスクロールは、下記に示す「スクロール操作」により行われる。これらのスクロール操作は、ユーザがマウスを操作することにより行われる。
(1)スクロールバーをクリックまたはドラッグする。
(2)マウスホイルを回転させる。
(3)旧サブ画面移動枠2310、新サブ画面移動枠2410、旧マップ移動枠2511および新マップ移動枠2521をドラッグさせる。
【0036】
図6は、同時スクロールを説明する図である。図6では、旧メイン画面2100および新メイン画面2200を、行番号で簡略的に示している。また、行番号を囲む外枠(太線)は、旧メイン画面2100および新メイン画面2200において先頭に表示される行を示している。
【0037】
図6においては、図3と同様に斜線・縦線・横線によって、更新・移動・削除・追加を示している。また、変更種別が「更新」である行を「更新行」と、「移動」である行を「移動行」と、「削除」である行を「削除行」と、「追加」である行を「追加行」と呼び、更新・移動・削除・追加のいずれでもない行を「通常行」と呼ぶ。
なお、「追加行」は、旧メイン画面2100には表示されないが、新メイン画面2200には表示される。「削除行」は、旧メイン画面2100には表示されるが、新メイン画面2200には表示されない。「更新行」および「移動行」は、旧メイン画面2100および新メイン画面2200に表示される。
【0038】
初期表示は、図6(a)に示すように、行番号が「0」である行を先頭にして、旧メイン画面2100および新メイン画面2200が表示される。
【0039】
次に、ユーザがスクロール操作を行うと、図6(b)に示すように、旧メイン画面2100には、行番号が「0」である行の下の行(行番号空欄)が先頭に表示される。一方、新メイン画面2200には、行番号が「0」である行の下の行(行番号「1」)が先頭に表示される。
これは、図6(a)において、旧メイン画面2100および新メイン画面2200の先頭に表示されている行が通常行であるため、同時スクロールによって、旧メイン画面2100および旧サブ画面2300が下方向に1行スクロールされたためである。なお、旧メイン画面2100および新メイン画面2200の先頭に表示されている行が更新行であっても、通常行である場合と同様に、旧メイン画面2100および旧サブ画面2300が下方向に1行スクロールされる。
【0040】
さらに、ユーザがスクロール操作を行うと、図6(c)に示すように、旧メイン画面2100には、行番号が空欄である行の下の行(行番号「1」)が先頭に表示される。一方、新メイン画面2200はスクロールせずに、行番号が「1」である行が先頭に表示されたままである。
これは、図6(b)において、旧メイン画面2100の先頭に表示されている行が削除行であるため、同時スクロールによって、旧メイン画面2100のみが下方向に1行スクロールされたためである。
【0041】
さらに、ユーザがスクロール操作を行うと、図6(d)に示すように、旧メイン画面2100には、行番号が「1」である行の下の行(行番号「2」)が先頭に表示される。一方、新メイン画面2200には、行番号が「1」である行の下の行(行番号「5」)が先頭に表示される。
これは、図6(a)から(b)のスクロールと同様である。
【0042】
さらに、ユーザがスクロール操作を行うと、図6(e)に示すように、旧メイン画面2100はスクロールせずに、行番号が「2」である行が先頭に表示されたままとなる。一方、新メイン画面2200には、行番号が「5」である行の下の行(行番号空欄)が先頭に表示される。
これは、図6(d)において、新メイン画面2200の先頭に表示されている行が移動行であるため、同時スクロールによって、移動行を先頭に表示している新メイン画面2200のみが下方向に1行スクロールされたためである。なお、移動行が旧メイン画面2100に表示されていた場合は、旧メイン画面2100のみが下方向に1行スクロールされる。
【0043】
さらに、ユーザがスクロール操作を行うと、図6(f)に示すように、旧メイン画面2100はスクロールせずに、行番号が「2」である行が先頭に表示されたままとなる。一方、新メイン画面2200には、行番号が空欄である行の下の行(行番号「2」)が先頭に表示される。
これは、図6(e)において、新メイン画面2200の先頭に表示されている行が追加行であるため、同時スクロールによって、新メイン画面2200のみが下方向に1行スクロールされたためである。
【0044】
また、図6(d)において、行番号が「2」である行に着目すると、旧メイン画面2100および新メイン画面2200において、横方向に隣り合わせで表示されていない状態となっている。換言すれば、同じ行番号である行が、ズレて表示されている状態である。この場合、ユーザがマウス操作等により行関連線2113をクリックすると、当該クリックされた行関連線2113が横方向に水平な直線となるように、新メイン画面2200がスクロールする。すなわち、同じ行番号である行が、横方向に隣り合わせで表示されるようになる。換言すれば、旧メイン画面2100および新メイン画面2200のズレが解消される。そして、図6(f)に示す状態になる。このように、旧メイン画面2100および新メイン画面2200のズレを解消させることを、「スクロール位置合わせ」という。
【0045】
また、同時スクロールは、縦方向(上下方向のスクロール)だけではなく、横方向(左右方向のスクロール)でも可能である。例えば、ユーザがスクロール操作により、旧メイン画面2100を横方向へスクロールさせると、新メイン画面2200も横方向にスクロールする。そして、旧メイン画面2100に表示されている日付と、新メイン画面2200に表示されている日付とが同じになると、スクロールは停止する。
なお、ユーザがスクロール操作により、新メイン画面2200を横方向へスクロールさせた場合も、同様に、旧メイン画面2100も横方向にスクロールする。
【0046】
(行マップ)
図7は、行マップを説明する図である。
工程の数が多いプロジェクトの場合、行数が多くなり、旧メイン画面2100および新メイン画面2200において、全ての工程を表示できないことがある。そこで、行の変更状況を簡略的に示す行サムネイル2530を、タイルマークの行番号欄2101と同様の色(図3)で示し、変更種別を示すことで、全体の変更状況を把握することが可能となる。
【0047】
また、行の移動が生じた際、移動元と移動先が離れていると、旧メイン画面2100および新メイン画面2200では、行関連線2113を途切れさせずに表示することができないことがある。そこで、旧マップレール2510と新マップレール2520との間にも行関連線2113を表示することで、行同士の対応関係を把握することが可能となる。
【0048】
旧マップレール2510には、旧マップ移動枠2511が表示されている。また、新マップレール2520には、新マップ移動枠2521が表示されている。この旧マップ移動枠2511および新マップ移動枠2521は、それぞれ、旧メイン画面2100および新メイン画面2200において表示される工程の範囲(行の範囲)を示すものである。
【0049】
また、旧マップ移動枠2511および新マップ移動枠2521は、それぞれ、旧メイン画面2100および新メイン画面2200に連動している。
例えば、ユーザがマウス操作等により、旧マップ移動枠2511を上下に動かすと、旧メイン画面2100が上下にスクロールし、旧マップ移動枠2511により囲まれている範囲の工程(行)が、旧メイン画面2100に表示される。逆に、旧メイン画面2100をユーザがマウス操作等により上下にスクロールさせると、旧マップ移動枠2511が当該スクロールに併せて上下に動く。なお、新メイン画面2200および新マップ移動枠2521も、同様に連動している。
【0050】
<<ガントチャートデータ>>
図8は、ガントチャートデータを説明する図である。ガントチャートデータは、図8に示すように、階層構造を有する。
【0051】
ガントチャートデータは、オブジェクトデータ(アクティビティ2105〜関連線2110および工程(行)のデータ)を含んで構成される。なお、図8中において、「△△群」と記した場合は、「△△」の集合を示すものとする。また、各オブジェクトデータは、オブジェクトを一意に特定する識別子であるIDを属性に有する。
【0052】
行データは、工程(行)に関するデータである。行データは、属性として、ID、名称、親行ID、行内順番および開閉状態を有する。
名称とは、工程名欄2102に表示される、工程の名称である。
親行IDとは、1つ上の階層に属する行(親行)のIDである。
行内順番とは、同一の親行の配下(直下)に属する行(兄弟行)同士内における相互の関係であり、数値が小さいほど上段に表示される。換言すれば、行内順番は、兄弟行同士における表示順序である。
開閉状態とは、行を表示(行を展開・開く)するか、行を非表示(行を折り畳む・閉じる)とするか、を示す情報である。
【0053】
アクティビティデータは、アクティビティ2105(矩形)、チェックポイント2107(三角形)およびマイルストーン2108(円形)に関するデータである。アクティビティデータは、属性として、ID、名称、親行ID、開始日、終了日および進捗率を有する。
名称とは、アクティビティ2105の名称である。
親行IDとは、アクティビティ2105が表示される行のIDである。
開始日とは、アクティビティ2105が、日付欄2103のどの位置から開始するか、換言すれば、どの位置から表示されるかを示す情報である。
終了日とは、アクティビティ2105が、日付欄2103のどの位置で終了するか、換言すれば、どの位置まで表示されるかを示す情報である。
進捗率とは、アクティビティ2105の業務量のうち、進捗確認日時点で終了している業務量の比率(百分率)である。進捗率は、日付(横軸の位置)で示すこともできる。
【0054】
注釈データは、注釈2106に関するデータである。注釈データは、属性として、ID、親行ID、行内位置および日付を有する。
親行IDとは、注釈2106が表示される行のIDである。
行内位置とは、注釈2106が表示される行における、縦方向の位置を示す情報である。
日付とは、注釈2106が、日付欄2103のどの位置に表示されるか、換言すれば、横軸の位置を示す情報である。
【0055】
チェックポイントデータは、イナズマ線2109に関する情報である。チェックポイントデータは、属性として、IDおよび日付を有する。
日付とは、イナズマ線2109が、日付欄2103のどの位置を基準とするか、換言すれば、イナズマ線2109の基準とする横軸の値を示す情報である。
【0056】
進捗点データは、イナズマ線2109を構成する進捗点に関する情報である。進捗データは、属性として、アクティビティIDおよび進捗率を有する。
アクティビティIDは、進捗状況を示す対象であるアクティビティのIDである。
進捗率は、進捗状況を示す対象であるアクティビティの業務量のうち、進捗確認日時点で終了している業務量の比率(百分率)である。なお、進捗率は、日付(横軸の位置)により示すこともできる。
なお、チェックポイントデータおよび進捗点データにより、イナズマ線2109が表示される。イナズマ線2109は、チェックポイントデータの属性「日付」の縦方向に垂直な直線を基準として、進捗点を結んだ線である。
【0057】
関連線データは、関連線2110に関する情報である。関連線データは、属性として、ID、開始アクティビティID、終了アクティビティID、接続位置および方向を有する。
開始アクティビティIDは、関連線2110の始点となるアクティビティのIDである。
終了アクティビティIDは、関連線2110の終点となるアクティビティのIDである。
接続位置は、関連線2110がどのようにつながっているかを示すものである。関連線2110は、アクティビティの開始日である左端(head)、終了日である右端(tail)および進捗点(Progress)のうちのいずれか2つを始点および終点とする。接続位置は、これらのうち、いずれを始点および終点とするのかを示すものである。
方向は、関連線2110の向きを示すものである。関連線2110は、図2に示すように、1または複数の連続する線分により示される。関連線2110に向きがある場合は、線分の始点および/または終点を矢印とすることで、向き(一方向または双方向)を示している。また、関連線2110に向きがない場合は、線分の始点および終点を矢印としない(無方向)。
【0058】
なお、各オブジェクトデータは、上記以外の属性を有してもよい。例えば、旧メイン画面2100および新メイン画面2200に表示(描画)する際の位置やサイズを、属性に有してもよい。また、ユーザが着目したい観点を属性として任意に定義(カスタマイズ)してもよい。
【0059】
<ガントチャートデータ(行データ)>
ここで、図9および図10を参照して、ガントチャートデータの一例を説明する。図9は、ガントチャートデータのうち、行に関するデータ(行データ)の一例である。
【0060】
図9(a)に示すように、旧ガントチャートデータ151(行データ)は、階層構造を有している。図中の円で囲まれた数字が「行」オブジェクトのIDを簡略的に示している。なお、円で囲まれた「1」の記載は、IDが「item1」であることを示している。また、図中の四角で囲まれた数字が「アクティビティ」オブジェクトのIDを簡略的に示している。なお、四角で囲まれた「1」の記載は、IDが「bar1」であることを示している(以下、同様)。
【0061】
そして、図9(b)は、図9(a)をテーブル形式で示したものである。旧ガントチャートデータ151(行データ)は、図9(b)に示すような属性(各欄の値)を有している。なお、図中の「属性1」および「属性2」は、ユーザがカスタマイズしたものである。
【0062】
図9(c)(d)は、新ガントチャートデータ152(行データ)の一例である。新ガントチャートデータ152(行データ)も、旧ガントチャートデータ151(行データ)と同様である。
【0063】
<ガントチャートデータ(アクティビティデータ)>
図10は、ガントチャートデータのうち、アクティビティに関するデータ(アクティビティデータ)の一例である。図10(a)は、旧ガントチャートデータ151(アクティビティデータ)をテーブル形式で示したものである。旧ガントチャートデータ151(アクティビティデータ)は、図10(a)に示すような属性(各欄の値)を有している。なお、図中の「属性1」は、ユーザがカスタマイズしたものである。
【0064】
図10(b)は、新ガントチャートデータ152(アクティビティデータ)の一例である。新ガントチャートデータ152(アクティビティデータ)も、旧ガントチャートデータ151(アクティビティデータ)と同様である。
【0065】
<<差分データの構造>>
図11は、差分データを説明する図である。差分データ141は、ガントチャート差分表示装置100の差分検出部111が行う、差分検出処理(詳細後記)によって出力される、旧ガントチャートデータ151と新ガントチャートデータ152との差分(ガントチャートデータの変更内容)に関するデータである。差分データ141は、図11に示すように、階層構造を有する。
【0066】
差分データ141は、行差分データ、アクティビティ差分データ、注釈差分データ、関連線差分データを含んで構成される。なお、図11中において、「△△群」と記した場合は、「△△」の集合を示すものとする。
【0067】
行差分データは、行データの差分に関するデータである。
アクティビティ差分データは、アクティビティデータの差分に関するデータである。
注釈差分データは、注釈データの差分に関するデータである。
関連線差分データは、関連線データの差分に関するデータである。
これらの各差分データおよび差分データ141は、属性として、ID、変更種別、変更属性、旧データおよび新データを有する。
【0068】
IDは、差分データを一意に特定する識別子である。
変更種別は、差分データが、どの変更種別に該当するかを示すものである。
変更属性は、差分データの対象であるガントチャートデータ(オブジェクトデータ)の属性のうち、どの属性が変更されたかを示すものである。
旧データは、差分データの対象であるガントチャートデータ(オブジェクトデータ)の、変更前のデータである。旧データは、旧データそのもの(旧データの値)でもよいし、旧データの格納場所(ポインタ)でもよい。
新データは、差分データの対象であるガントチャートデータ(オブジェクトデータ)の、変更後のデータである。新データは、新データそのもの(新データの値)でもよいし、新データの格納場所(ポインタ)でもよい。
なお、行差分データは、さらに、当該行の配下(直下)に属するアクティビティおよび注釈であって変更されたもの(変更アクティビティおよび変更注釈)のIDを属性に有する。
【0069】
差分データは、差分情報2111に表示される。差分情報2111には、変更種別・数量、更新前の値、更新後の値、その他補足用の説明文が表示される。
【0070】
<行差分データ(階層構造差分検出処理)>
ここで、図9および図12〜図18を参照して、差分データ141の状態が遷移していく一例を説明する。
図12は、差分データのうち、行に関するデータ(行差分データ)の一例である。図12は、ガントチャート差分表示装置100の階層構造差分検出部111aが、後記する階層構造差分検出処理によって、図9に示す旧ガントチャートデータ151および新ガントチャートデータ152を比較した結果である。
【0071】
図9において、(b)に示す旧ガントチャートデータ151にはIDが「item3」であるレコードが存在するが、(d)に示す新ガントチャートデータ152には存在しない。そのため、図12に示す差分データ141のIDが「item3」であるレコードの変更種別に「削除」が設定される。
【0072】
また、図9において、(b)に示す旧ガントチャートデータ151および(d)に示す新ガントチャートデータ152には、IDが「item4」であるレコードが存在する。しかし、「親行ID」が「item3」から「item2」に更新されている。そのため、図12に示す差分データ141のIDが「item4」であるレコードの変更種別に「移動」が設定される。
【0073】
また、図9において、(b)に示す旧ガントチャートデータ151にはIDが「item5」であるレコードが存在しないが、(d)に示す新ガントチャートデータ152には存在する。そのため、図12に示す差分データ141のIDが「item5」であるレコードの変更種別に「追加」が設定される。
【0074】
なお、図9において、IDが「item1」および「item2」であるレコードは、(b)に示す旧ガントチャートデータ151および(d)に示す新ガントチャートデータ152に存在する。さらに、これらの2レコードは、「親行ID」が更新されていない。そのため、図12に示す差分データ141のIDが「item1」および「item2」であるレコードの変更種別には、何も設定されない(空欄である)。
【0075】
<行差分データ(兄弟移動検出処理)>
図13は、差分データのうち、行に関するデータ(行差分データ)の一例である。図13(a)は、ガントチャート差分表示装置100の最小変換手順検出部111bが、後記する兄弟移動検出処理によって、図9に示す旧ガントチャートデータ151および新ガントチャートデータ152を比較した結果である。
【0076】
ここで、旧ガントチャートデータ151は、図13(b)に示すような階層構造を有しているとする。IDが「item1」である行オブジェクト配下に、IDが「itemA」、「item2」、「itemB」、「itemC」である行オブジェクトが存在している。換言すれば、「itemA」、「item2」、「itemB」、「itemC」である行オブジェクトは、「item1」を親とする兄弟行である。そして、図13(c)は、図13(b)の行内順番をテーブル形式で示したものである。
また、図13(e)および(f)に示す新ガントチャートデータ152も、旧ガントチャートデータ151と同様である。
【0077】
そして、図13(b)、(c)、(e)、(f)に示すデータから、公知である文書差分アルゴリズムによって最小変換手順の追加・削除を検出すると、図13(d)および(g)に示す結果となる。図13(d)は、旧ガントチャートデータ151に対する結果であり、図13(g)は、新ガントチャートデータ152に対する結果である。図13(d)において、IDが「item2」であるレコードは、変更種別に「削除」が検出されている。また、図13(g)において、IDが「item2」であるレコードは、変更種別に「追加」が検出されている。このように、「追加」および「削除」を同時に検出した行データは、差分データ141の変更種別に「移動」が設定される。このような処理によって、図13(a)においては、IDが「item2」であるレコードの変更種別に「移動」が設定されている。
【0078】
ここで、文書差分アルゴリズムには、例えば、「MYERSアルゴリズム」がある。(http://citeseer.ist.psu.edu/viewdoc/download;jsessionid=D4893C682F66B2A3BA9110B991F42906?doi=10.1.1.4.6927&rep=rep1&type=pdf)
【0079】
<行差分データ(属性更新検出処理)>
図14は、差分データのうち、行に関するデータ(行差分データ)の一例である。
図14は、ガントチャート差分表示装置100の属性変更検出部111cが、後記する属性更新検出処理によって、図9に示す旧ガントチャートデータ151および新ガントチャートデータ152を比較した結果である。
【0080】
図9(b)および(d)において、IDが「item1」であるレコードに着目すると、属性1が「A」から「FFF」に更新されている。また、属性2は「1」から「88」に更新されている。そして、図13(a)に示す差分データ141において、IDが「item1」であるレコードの変更種別は空欄である。そのため、図14に示す差分データ141のIDが「item1」であるレコードの変更種別に「更新」が設定され、変更属性に「属性1,2」が設定される。
【0081】
また、図9(b)および(d)において、IDが「item2」であるレコードに着目すると、名称が「工程1.1」から「新名称」に更新されている。また、開閉状態が「−」から「開」に更新されている。しかし、図13(a)に示す差分データ141において、IDが「item2」であるレコードの変更種別は「移動」である。そのため、図14に示す差分データ141のIDが「item2」であるレコードの変更種別は「移動」のままであり、変更属性に「名称、開閉状態」が設定される。
なお、IDが「item4」であるレコードも、同様である。
【0082】
<行差分データ(アクティビティと注釈の差分の追記)>
図15は、差分データのうち、行に関するデータ(行差分データ)の一例である。図15は、ガントチャート差分表示装置100の差分検出部111が、後記するアクティビティの差分検出および注釈の差分検出によって検出した差分を、図14に示す差分データ141(行差分データ)に追記したものである。
【0083】
例えば、図9(a)および(c)において、IDが「bar2」であるアクティビティは、IDが「item2」である行から「item5」である行へ移動している。そこで、図15(c)に示す差分データ141(行差分データ)において、IDが「item2」および「item5」であるレコードの「変更アクティビティ」に、「bar2」を追記する。
【0084】
このように、アクティビティおよび/または注釈が属する行が変更した場合、換言すると、親行IDが変更した場合、変更前後の行の「変更アクティビティ」および/または「変更注釈」に、当該アクティビティおよび/または注釈のIDを格納する。
【0085】
<アクティビィ差分データ(階層構造差分検出処理)>
ここで、図16を参照して、差分データ141の一例を説明する。図16は、差分データのうち、アクティビィに関するデータ(アクティビティ差分データ)の一例である。
図16は、ガントチャート差分表示装置100の階層構造差分検出部111aが、後記する階層構造差分検出処理によって、図10に示す旧ガントチャートデータ151および新ガントチャートデータ152を比較した結果である。この処理は、図12において説明した行差分データ(階層構造差分検出処理)と同様である。
【0086】
<アクティビィ差分データ(属性更新検出処理)>
図17は、差分データ141のうち、アクティビィに関するデータ(アクティビティ差分データ)の一例である。
図17は、ガントチャート差分表示装置100の属性変更検出部111cが、後記する属性更新検出処理によって、図10に示す旧ガントチャートデータ151および新ガントチャートデータ152を比較した結果である。この処理は、図14において説明した行差分データ(属性更新検出処理)と同様である。
【0087】
<アクティビィ差分データ(行内移動の検出)>
図18は、差分データのうち、アクティビィに関するデータ(アクティビティ差分データ)の一例である。
図18は、ガントチャート差分表示装置100の差分検出部111が、行内移動を検出した結果である。ここで、行内移動とは、同じ行内において、横軸の位置が更新された状態をいう。同じ行とは、親行IDが同じことを意味する。
また、横軸の位置は、オブジェクト毎の属性により決定する。例えば、アクティビティデータの横軸の位置は、属性「開始日」および「終了日」により決定する。注釈データの横軸の位置は、属性「行内位置」および「日付」により決定する。チェックポイントデータの横軸の位置は、属性「日付」により決定する。進捗点データの横軸の位置は、属性「進捗率」(横軸の位置である「日付」でもよい)により決定する。関連線データの横軸の位置は、属性「接続位置」によって決定する。
【0088】
図17において、IDが「bar1」であるレコードに着目すると、変更種別が「更新」であり、変更属性が「開始日,終了日」となっている。前記のように、アクティビティデータの横軸の位置は、属性「開始日」および「終了日」により決定するので、IDが「bar1」であるアクティビティは、行内移動されたことを示している。そこで、図18に示すように、変更種別が「更新」から「移動」に上書きされる。
図18において、IDが「bar2」であるレコードも変更種別が「移動」であるが、当該「移動」は図16において説明した階層構造差分検出処理で設定されたものであり、別の行へ移動した(親行IDが更新された)ことを示している。
【0089】
<<差分検出処理>>
次に、ガントチャート差分表示装置100の差分検出部111が行う、差分検出処理について説明する。差分検出処理は、旧ガントチャートデータ151および新ガントチャートデータ152を比較し、両者の差分を検出する処理である。差分検出処理は、「階層構造の差分の検出」、「兄弟の移動の検出」、「属性更新の検出」の3つのステップで実現される。
【0090】
ガントチャートデータは、図8に示すように、各種のオブジェクトデータを有し、オブジェクトデータ毎に異なる属性を有する。そこで、差分検出処理は、オブジェクトデータ毎に適した処理を行い、差分を検出する。
図19は、差分検出処理のフローチャートである。
【0091】
ステップS100において、差分検出部111は、データを入力する。具体的には、差分検出部111は、旧ガントチャートデータ151および新ガントチャートデータ152を入力する。
【0092】
ステップS200において、差分検出部111は、差分を検出する。この差分検出は、オブジェクトデータ毎に適した処理が行われる。ステップS200においては、行の差分検出(ステップS210a)、アクティビティの差分検出(ステップS210b)、注釈の差分検出(ステップS210c)および関連線の差分検出(ステップS210d)が行われる。
【0093】
行の差分検出(ステップS210a)においては、階層構造差分検出処理(ステップS211a)、兄弟移動検出処理(ステップS212a)、属性更新検出処理(ステップS213a)およびアクティビティと注釈の差分の追記(ステップS215a)が行われる。なお、アクティビティと注釈の差分の追記(ステップS215a)は、アクティビティの差分検出(ステップS210b)および注釈の差分検出(ステップS210c)の後に行われる。
【0094】
アクティビティの差分検出(ステップS210b)においては、階層構造差分検出処理(ステップS211b)、属性更新検出処理(ステップS213b)および行内移動の検出(ステップS214b)が行われる。なお、行内移動の検出(ステップS214b)では、図18において説明した処理が行われる。
【0095】
注釈の差分検出(ステップS210c)においては、階層構造差分検出処理(ステップS211c)、属性更新検出処理(ステップS213c)および行内移動の検出(ステップS214c)が行われる。注釈の差分検出(ステップS210c)は、アクティビティの差分検出(ステップS210b)と同様である。
【0096】
関連線の差分検出(ステップS210d)においては、属性更新検出処理(ステップS213d)が行われる。属性更新検出処理(ステップS213d)は、属性更新検出処理(ステップS213a)と同様である。
【0097】
なお、ガントチャートデータのうち、チェックポイントデータおよび進捗点に関するデータについては、差分検出の対象外である。
上記により、差分データ141が出力され、処理が終了する。
【0098】
<階層構造差分検出処理>
次に、階層構造差分検出処理(図19のステップS211、ステップS211a〜c)について説明する。図20は、階層構造差分検出処理のフローチャートである。
なお、ステップS2111a〜S2112aおよびステップS2111b〜S2112bは、同時並行的に実行されてもよいし、一方が終了した後、他方が開始されてもよい。
【0099】
ステップS2111aにおいて、階層構造差分検出部111aは、旧ガントチャートデータ151を読み込む。
ステップS2112aにおいて、階層構造差分検出部111aは、オブジェクト毎に旧HashMapを生成する。ここで、HashMapとは、読み込んだガントチャートデータの内容を比較しやすいように正規化したデータであり、例えば、図9(b)(d)および図10(a)(d)がその例である。
【0100】
ステップS2111bにおいて、階層構造差分検出部111aは、新ガントチャートデータ152を読み込む。
ステップS2112aにおいて、階層構造差分検出部111aは、オブジェクト毎に新HashMapを生成する。
【0101】
ステップS2113において、階層構造差分検出部111aは、新HashMapおよび旧HashMapをマージして、差分データを生成する。
【0102】
ステップS2114において、階層構造差分検出部111aは、新旧のオブジェクトデータおよび親行IDを比較する。当該比較処理は、全てのオブジェクトデータについて完了するまで繰り返す。
ステップS2115において、階層構造差分検出部111aは、比較結果を判定する。
【0103】
比較対象のオブジェクトデータが旧HashMapのみに存在する場合、ステップS2116に進む。そして、階層構造差分検出部111aは、差分データ141の変更種別に「削除」を設定する。
比較対象のオブジェクトデータが新旧HashMap両方に存在し、かつ、親行IDが異なる(違う親である)場合、ステップS2117に進む。そして、階層構造差分検出部111aは、差分データ141の変更種別に「移動」を設定する。
【0104】
比較対象のオブジェクトデータが新HashMapのみに存在する場合、ステップS2118に進む。そして、階層構造差分検出部111aは、差分データ141の変更種別に「追加」を設定する。
なお、比較対象のオブジェクトデータが新旧HashMap両方に存在し、かつ、親行IDが同じである場合、階層構造差分検出部111aは、差分データ141の変更種別に何も設定しない(フローチャートとしては図示せず)。
【0105】
比較および変更種別の設定(ステップS2114〜S2118)が、全てのオブジェクトデータについて完了すると、処理はメインルーチンへ戻る。
【0106】
<兄弟移動検出処理>
次に、兄弟移動検出処理(図19のステップS212、ステップS212a)について説明する。図21は、兄弟移動検出処理のフローチャートである。
【0107】
ステップS2121において、最小変換手順検出部111bは、子を持つ行に対して、配下の行の移動を検出する。当該処理は、全ての行データについて完了するまで繰り返す。
【0108】
ステップS2122において、最小変換手順検出部111bは、公知である文書差分アルゴリズムによって最小変換手順の追加・削除を検出する。
【0109】
ステップS2123において、最小変換手順検出部111bは、ステップS2122の検出結果において、「追加」および「削除」の両方を同時に検出した行の変更種別に「移動」を設定する。
【0110】
最小変換手順の追加・削除の検出および変更種別の設定(ステップS2122〜S2123)が、全ての行データについて完了すると、処理はメインルーチンへ戻る。
【0111】
<属性更新検出処理>
次に、属性更新検出処理(図19のステップS213、ステップS213a〜d)について説明する。図22は、属性更新検出処理のフローチャートである。
【0112】
ステップS2131において、属性変更検出部111cは、新旧オブジェクトデータを比較し、属性の更新を検出する。当該処理は、全てのオブジェクトデータについて完了するまで繰り返す。
【0113】
ステップS2132において、属性変更検出部111cは、オブジェクトデータが有する属性のうち少なくとも1つが一致しない場合、変更種別に「更新」を設定する。
【0114】
検出および変更種別の設定(ステップS2131〜S2132)が、全てのオブジェクトデータについて完了すると、処理はメインルーチンへ戻る。
【0115】
<アクティビティと注釈の差分の追記>
次に、アクティビティと注釈の差分の追記(図19のステップS215a)について説明する。
【0116】
まず、ガントチャート差分表示装置100の差分検出部111は、差分データ141(行差分データ)のレコードに格納されている旧データおよび新データを参照する。
次に、差分検出部111は、旧データおよび/または新データに格納されている、当該レコードの配下に属するアクティビティおよび/または注釈のIDを取得する。
そして、差分検出部111は、当該取得したアクティビティおよび/または注釈のIDをキーとして、図15(a)および(b)に示す差分データ141(アクティビティ差分データ・注釈差分データ)を検索し、キーが一致するレコードを取得する。
そして、差分検出部111は、取得したレコードに格納されている変更種別が、「更新」、「移動」、「削除」、「追加」のいずれかである場合、当該レコードに格納されているID(アクティビティまたは注釈のID)を、差分データ141(行差分データ)の「変更アクティビティ」および/または「変更注釈」へ格納する。
【0117】
これらの処理を、差分データ141(行差分データ)の全てのレコードについて行うと、アクティビティと注釈の差分の追記が終了する。
【0118】
<<ガントチャート表示処理>>
次に、ガントチャート差分表示装置100の表示処理部112が行う、ガントチャート表示処理について説明する。ガントチャート表示処理は、図2において示したような画面を出力装置130に表示する処理である。
図23は、ガントチャート表示処理のフローチャートである。
【0119】
ステップS311において、表示処理部112は、旧ガントチャートデータ151を読み込む。
ステップS311において、表示処理部112は、旧ガントチャート画面を描画する。ここで、旧ガントチャート画面とは、旧メイン画面2100および旧サブ画面2300をいう。
【0120】
ステップS313において、表示処理部112は、差分データ141を読み込む。
【0121】
ステップS314において、表示処理部112は、新ガントチャートデータ152を読み込む。
ステップS315において、表示処理部112は、新ガントチャート画面を描画する。ここで、新ガントチャート画面とは、新メイン画面2200および新サブ画面2400をいう。
なお、ステップS311〜S312、ステップS313およびステップS314〜S315は、同時並行的に実行されてもよいし、任意の順に直列的に実行されてもよい。図23において、フローが枝分かれして複数の流れになっている他の箇所についても同様である。
【0122】
ステップS321において、表示処理部112は、差分データ141から、オブジェクトの変更種別を取得する。
ステップS322において、表示処理部112は、旧ガントチャートデータ151および新ガントチャートデータ152から、描画するオブジェクトの位置およびサイズを取得する。
ステップS323において、強調データ生成部112dは、強調枠2112を描画する。強調枠2112は、タイルマークと同じ色で表示されるが、ユーザがカスタマイズすることも可能である。この場合、強調表示カスタマイズ部114bは、ユーザが設定した内容を、補助記憶装置150に記憶する。そして、ステップS323において強調枠2112を描画する際、強調データ生成部112dは、補助記憶装置150に記憶された設定に基づいて描画を行う。
また、強調データ生成部112dは、強調データ142を生成する。強調データ142は、強調表示されているオブジェクトに関するデータである。
【0123】
ステップS331において、表示処理部112は、行の変更種別および開閉状態を取得する。
ステップS332において、表示処理部112は、描画する行の位置およびサイズを取得する。
【0124】
ステップS333において、タイルマーク生成部112bは、行の配下に属するオブジェクトの変更をカウントする。
ここで、アクティビティと注釈の差分の追記(図19のステップS215a、図15)において説明したように、差分データ141(行データ)には、アクティビティのIDと注釈のIDが、変更前後の行のレコードに格納されている。
そこで、タイルマーク生成部112bは、旧メイン画面2100を描画する際は、旧ガントチャートデータ151に存在しないアクティビティおよび注釈をカウントしない。同様に、タイルマーク生成部112bは、新メイン画面2200を描画する際は、新ガントチャートデータ152に存在しないアクティビティおよび注釈をカウントしない。
このようにすることで、アクティビティおよび注釈が二重にカウントされることが回避され、正しい変更種別および/または変更数量をタイルマークに示すことができる。
【0125】
ステップS334において、タイルマーク生成部112bは、タイルマークを描画する。タイルマークは、ユーザがカスタマイズすることも可能である。この場合、表示属性カスタマイズ部114aは、ユーザが設定した内容を、補助記憶装置150に記憶する。そして、ステップS334においてタイルマークを描画する際、タイルマーク生成部112bは、補助記憶装置150に記憶された設定に基づいて描画を行う。
【0126】
ステップS335において、行関連線生成部112cは、行関連線2113を描画する。
【0127】
ステップS336において、行マップ生成部112aは、新旧行をカウントし、行マップデータを生成する。新旧行のカウントとは、新旧のガントチャートデータ(151,152)の行データにおいて、更新行・移動行・削除行・追加行がそれぞれいくつあるかをカウントすることである。そして、新旧行のカウント結果および他のオブジェクトデータ(新旧)に基づいて、行マップ2500を描画するための行マップデータを生成する。
ステップS337において、行マップ生成部112aは、行マップ2500を描画する。
【0128】
<<同時スクロール処理>>
次に、ガントチャート差分表示装置100の同時スクロール制御部113aが行う、同時スクロール処理について説明する。同時スクロール処理は、図6において説明した同時スクロールを制御する処理である。
図24は、同時スクロール処理のフローチャートである。
【0129】
ステップS401において、同時スクロール制御部113aは、ユーザがマウス等を操作したことを検知し、操作種類を判定する。操作種類には、「行関連線のクリック」および「スクロール」がある。「行関連線のクリック」は、行関連線2113をクリックすることをいう。「スクロール」は、新メイン画面2200または旧メイン画面2100を縦方向または横方向にずらすことをいう。
操作種類が「行関連線のクリック」である場合、ステップS411に進む。
操作種類が「スクロール」である場合、ステップS421に進む。
【0130】
ステップS411において、同時スクロール制御部113aは、新メイン画面2200および旧メイン画面2100を、同じ行までスクロールする。「同じ行までスクロールする」とは、図6において説明した「スクロール位置合わせ」をすることをいう。
そして、ステップS451に進む。
【0131】
ステップS421において、同時スクロール制御部113aは、スクロール方向を判定する。
スクロール方向が「横」である場合、ステップS431に進む。
スクロール方向が「縦」である場合、ステップS441に進む。
【0132】
ステップS431において、同時スクロール制御部113aは、新メイン画面2200および旧メイン画面2100を、同じ日付までスクロールする。
そして、ステップS451に進む。
【0133】
ステップS441において、同時スクロール制御部113aは、旧メイン画面2100および新メイン画面2200のそれぞれ先頭に表示されている行の状態を判定する。行の状態とは、「削除行」、「移動行」および「追加行」のいずれかであるかを示すものである。
行の状態が「削除行」である場合、すなわち、旧メイン画面2100の先頭に表示されている行が削除行である場合、ステップS442に進む。
行の状態が「移動行」である場合、すなわち、旧メイン画面2100および/または新メイン画面2200の先頭に表示されている行が移動行である場合、ステップS443に進む。
行の状態が「追加行」である場合、すなわち、新メイン画面2200の先頭に表示されている行が追加行である場合、ステップS444に進む。
【0134】
ステップS442において、同時スクロール制御部113aは、旧メイン画面2100のみをスクロールする。これは、図6(b)から(c)の処理に対応する。
そして、ステップS451に進む。
【0135】
ステップS443において、同時スクロール制御部113aは、移動行を先頭に表示している画面(旧メイン画面2100および/または新メイン画面2200)をスクロールする。これは、図6(d)から(e)の処理に対応する。
そして、ステップS451に進む。
【0136】
ステップS444において、同時スクロール制御部113aは、新メイン画面2200のみをスクロールする。これは、図6(e)から(f)の処理に対応する。
そして、ステップS451に進む。
【0137】
なお、ステップS441において、行の状態が「削除行」、「移動行」および「追加行」のうちいずれでもない場合は、旧メイン画面2100および新メイン画面2200の両方をスクロールする。これは、図6(a)から(b)および図6(c)から(d)の処理に対応する。
その後、ステップS451に進む(フローチャートとしては図示せず)。
【0138】
ステップS451において、同時スクロール制御部113aは、画面(旧メイン画面2100および新メイン画面2200)を再描画する。
そして、処理を終了する。
【0139】
<<まとめ>>
本実施形態により、以下の効果を奏する。すなわち、ガントチャートにおける変更前後の差分および関連性を表示するので、ガントチャートを作成する者(計画作成者)は、変更箇所を認識することが容易となる。また、計画作成者が複数存在し、ガントチャートデータが競合した場合、当該ガントチャートデータの差分を表示するので、競合を解消することが容易となる。
また、業務を担当する者(担当者)は、自己が担当する業務における変更箇所を認識することが容易となる。また、プロジェクトの管理者(管理者)は、プロジェクトの実行計画の変更や実績(進捗率など)の変更を認識することが容易となる。
【0140】
<<その他>>
なお、前記した実施形態は、本発明を実施するための好適なものであるが、その実施形式はこれらに限定されるものではなく。本発明の要旨を逸脱しない範囲内において種々変更することが可能である。
【符号の説明】
【0141】
100 ガントチャート差分表示装置
111 差分検出部
112 表示処理部
113 操作制御部
114 カスタマイズ部
120 入力装置
130 出力装置
140 主記憶装置
150 補助記憶装置
【特許請求の範囲】
【請求項1】
業務の工程および前記業務に属するアクティビティを、要素であるオブジェクトとして有するガントチャートを表示するガントチャート差分表示装置であって、
前記オブジェクトを示す識別子と、前記オブジェクトが属する前記工程の識別子である親行IDと、を対応付けて記憶しているガントチャートデータを複数備える記憶部と、
前記複数のガントチャートデータを比較して、前記識別子および前記親行IDが一致しない前記オブジェクトを検出し、
前記検出結果に基づいて、前記オブジェクトの変更種別および/または変更数量を示すタイルマークを前記工程に関連付けて、比較元の前記ガントチャートデータを示す第一のガントチャートおよび比較先の前記ガントチャートデータを示す第二のガントチャートに表示し、
前記第一のガントチャートおよび前記第二のガントチャートのそれぞれに表示される、前記識別子が等しい前記工程を結んで、前記工程の対応関係を示す行関連線を表示し、
前記第一のガントチャートに表示されている前記工程の変更種別が削除である場合は、前記第一のガントチャートをスクロールさせ、
前記第一のガントチャートおよび/または前記第二のガントチャートに表示されている前記工程の変更種別が移動である場合は、当該工程を表示している前記第一のガントチャートおよび/または前記第二のガントチャートをスクロールさせ、
前記第二ガントチャートに表示されている前記工程の変更種別が追加である場合は、前記第二のガントチャートをスクロールさせる、制御をする制御部と、を有する
ことを特徴とする、ガントチャート差分表示装置。
【請求項2】
前記制御部は、さらに、
前記業務が行われる期間全体または所定の期間における、前記比較元の前記ガントチャートデータを示す第一のサブ画面および前記比較先の前記ガントチャートデータを示す第二のサブ画面を表示し、
前記第一のガントチャートおよび前記第一のサブ画面の縦軸および横軸の表示位置を揃え、
前記第二のガントチャートおよび前記第二のサブ画面の縦軸および横軸の表示位置を揃える制御を行う、
ことを特徴とする、請求項1に記載のガントチャート差分表示装置。
【請求項3】
前記制御部は、さらに、
前記業務に属する工程および当該工程の変更種別を、全ての工程の中における当該工程の相対的な位置がわかるように表示する行マップに前記タイルマークを表示する、
ことを特徴とする、請求項1または請求項2に記載のガントチャート差分表示装置。
【請求項4】
前記ガントチャートデータは、さらに、
前記オブジェクトの名称と、前記工程を表示するか否かを示す開閉状態と、前記アクティビティの開始日と、前記アクティビティの終了日と、前記アクティビティにおける業務量のうち終了している業務量の比率である進捗率と、を前記オブジェクトの属性として記憶しており、
前記制御部は、さらに、
前記オブジェクトの属性の変更を検出し、
前記検出されたオブジェクトの属性の変更内容を、前記第一のガントチャート、前記第二のガントチャート、前記第一のサブ画面および前記第二のサブ画面に表示する、
ことを特徴とする、請求項2に記載のガントチャート差分表示装置。
【請求項5】
前記ガントチャートデータは、さらに、
前記親行IDが等しい工程である兄弟行同士における相互の関係を示す行内順番を、前記オブジェクトの属性として記憶しており、
前記制御部は、さらに、
前記行内順番における、最小変換手順の追加および削除を検出し、
前記オブジェクトの属性の変更を検出していない場合は、前記オブジェクトの属性の変更を検出し、
前記検出結果を、前記第一のガントチャート、前記第二のガントチャート、前記第一のサブ画面および前記第二のサブ画面に表示する、
ことを特徴とする、請求項1ないし請求項4のいずれか1項に記載のガントチャート差分表示装置。
【請求項1】
業務の工程および前記業務に属するアクティビティを、要素であるオブジェクトとして有するガントチャートを表示するガントチャート差分表示装置であって、
前記オブジェクトを示す識別子と、前記オブジェクトが属する前記工程の識別子である親行IDと、を対応付けて記憶しているガントチャートデータを複数備える記憶部と、
前記複数のガントチャートデータを比較して、前記識別子および前記親行IDが一致しない前記オブジェクトを検出し、
前記検出結果に基づいて、前記オブジェクトの変更種別および/または変更数量を示すタイルマークを前記工程に関連付けて、比較元の前記ガントチャートデータを示す第一のガントチャートおよび比較先の前記ガントチャートデータを示す第二のガントチャートに表示し、
前記第一のガントチャートおよび前記第二のガントチャートのそれぞれに表示される、前記識別子が等しい前記工程を結んで、前記工程の対応関係を示す行関連線を表示し、
前記第一のガントチャートに表示されている前記工程の変更種別が削除である場合は、前記第一のガントチャートをスクロールさせ、
前記第一のガントチャートおよび/または前記第二のガントチャートに表示されている前記工程の変更種別が移動である場合は、当該工程を表示している前記第一のガントチャートおよび/または前記第二のガントチャートをスクロールさせ、
前記第二ガントチャートに表示されている前記工程の変更種別が追加である場合は、前記第二のガントチャートをスクロールさせる、制御をする制御部と、を有する
ことを特徴とする、ガントチャート差分表示装置。
【請求項2】
前記制御部は、さらに、
前記業務が行われる期間全体または所定の期間における、前記比較元の前記ガントチャートデータを示す第一のサブ画面および前記比較先の前記ガントチャートデータを示す第二のサブ画面を表示し、
前記第一のガントチャートおよび前記第一のサブ画面の縦軸および横軸の表示位置を揃え、
前記第二のガントチャートおよび前記第二のサブ画面の縦軸および横軸の表示位置を揃える制御を行う、
ことを特徴とする、請求項1に記載のガントチャート差分表示装置。
【請求項3】
前記制御部は、さらに、
前記業務に属する工程および当該工程の変更種別を、全ての工程の中における当該工程の相対的な位置がわかるように表示する行マップに前記タイルマークを表示する、
ことを特徴とする、請求項1または請求項2に記載のガントチャート差分表示装置。
【請求項4】
前記ガントチャートデータは、さらに、
前記オブジェクトの名称と、前記工程を表示するか否かを示す開閉状態と、前記アクティビティの開始日と、前記アクティビティの終了日と、前記アクティビティにおける業務量のうち終了している業務量の比率である進捗率と、を前記オブジェクトの属性として記憶しており、
前記制御部は、さらに、
前記オブジェクトの属性の変更を検出し、
前記検出されたオブジェクトの属性の変更内容を、前記第一のガントチャート、前記第二のガントチャート、前記第一のサブ画面および前記第二のサブ画面に表示する、
ことを特徴とする、請求項2に記載のガントチャート差分表示装置。
【請求項5】
前記ガントチャートデータは、さらに、
前記親行IDが等しい工程である兄弟行同士における相互の関係を示す行内順番を、前記オブジェクトの属性として記憶しており、
前記制御部は、さらに、
前記行内順番における、最小変換手順の追加および削除を検出し、
前記オブジェクトの属性の変更を検出していない場合は、前記オブジェクトの属性の変更を検出し、
前記検出結果を、前記第一のガントチャート、前記第二のガントチャート、前記第一のサブ画面および前記第二のサブ画面に表示する、
ことを特徴とする、請求項1ないし請求項4のいずれか1項に記載のガントチャート差分表示装置。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【公開番号】特開2013−109503(P2013−109503A)
【公開日】平成25年6月6日(2013.6.6)
【国際特許分類】
【出願番号】特願2011−252971(P2011−252971)
【出願日】平成23年11月18日(2011.11.18)
【出願人】(000233538)株式会社日立ソリューションズ東日本 (53)
【公開日】平成25年6月6日(2013.6.6)
【国際特許分類】
【出願日】平成23年11月18日(2011.11.18)
【出願人】(000233538)株式会社日立ソリューションズ東日本 (53)
[ Back to top ]