(57)【特許請求の範囲】
【請求項１】
開発対象プログラムを構成する１以上の処理ノード及び前記処理ノードの接続関係を含むフロー定義を、前記処理ノードを示すオブジェクトに対するユーザの操作に従って作成するプログラム開発支援装置において、
前記開発対象プログラムの所定の時点におけるフロー定義である第１フロー定義を取得する第１フロー定義取得部と、
前記開発対象プログラムの前記第１フロー定義に対して前記所定の時点以降の変更が反映された第２フロー定義を取得する第２フロー定義取得部と、
前記開発対象プログラムの前記第１フロー定義を基にして前記所定の時点以降に変更が施された第３フロー定義を記憶する第３フロー定義記憶部と、
前記第３フロー定義と、前記第２フロー定義とが衝突するか否かを判定する衝突判定部と、
衝突すると判定された場合に、前記第１フロー定義と前記第２フロー定義との処理ノードの差分を検出するとともに、前記第１フロー定義と前記第３フロー定義との処理ノードの差分を検出する差分検出部と、
前記第１フロー定義と前記第２フロー定義とで処理ノードに差異がある場合と差異がない場合とで、前記第２フロー定義の処理ノードを示すオブジェクトの表示態様を変えて表示するとともに、前記第１フロー定義と前記第３フロー定義とで差異がある場合と差異がない場合とで、前記第３フロー定義の処理ノードを示すオブジェクトの表示態様を変えて表示するノード表示処理部と、
を備えるプログラム開発支援装置。
【請求項２】
前記ノード表示処理部は、前記第１フロー定義に含まれる第１処理ノードを示すオブジェクトを表示するとともに、前記第１フロー定義と前記第２フロー定義とで差異のない前記第２フロー定義の処理ノードのオブジェクトについては、前記第１処理ノードを示すオブジェクトと同様な表示態様で表示すると共に、前記第１フロー定義と前記第２フロー定義とで差異のある前記第２フロー定義の処理ノードを示すオブジェクトについては、前記第１処理ノードを示すオブジェクトと異なる表示態様で表示し、前記第１フロー定義と前記第３フロー定義とで差異のない前記第３フロー定義の処理ノードを示すオブジェクトについては、前記第１処理ノードを示すオブジェクトと同様な表示態様で表示すると共に、前記第１フロー定義と前記第３フロー定義とで差異のある前記第３フロー定義の処理ノードを示すオブジェクトについては、前記第１処理ノードを示すオブジェクトと異なる表示態様で表示する
請求項１に記載のプログラム開発支援装置。
【請求項３】
前記ノード表示処理部は、前記処理ノードについての差異が、処理ノードの追加、処理ノードの変更、処理ノードの削除のいずれであるかによって、処理ノードを示すオブジェクトの表示態様を異ならせる
請求項１又は請求項２に記載のプログラム開発支援装置。
【請求項４】
通信ネットワークを介して、前記フロー定義の版を管理する版管理システムに接続されており、
前記第１フロー定義取得部は、前記第１フロー定義を、前記版管理システムから取得し、
前記第２フロー定義取得部は、前記第２フロー定義を、前記版管理システムから取得する
請求項１に記載のプログラム開発支援装置。
【請求項５】
前記第２フロー定義取得部は、前記版管理システムにおける前記第２フロー定義が更新されたか否かを判定し、前記第２フロー定義が更新されている場合に、前記版管理システムから更新後の第２フロー定義を取得し、
前記衝突判定部と、前記差分検出部と、前記ノード表示処理部は、前記第２フロー定義取得部が更新後の第２フロー定義を取得した場合には、前記更新後の第２フロー定義を用いて処理を実行する
請求項４に記載のプログラム開発支援装置。
【請求項６】
前記第３フロー定義に対する変更を受け付ける変更受付部をさらに備え、
前記衝突判定部は、前記変更受付部により受け付けられた変更が反映された第３フロー定義と、前記第２フロー定義とが衝突するか否かを判定し、
変更が反映された前記第３フロー定義と前記第２フロー定義とが衝突しないと判定された場合に、版管理システムに、前記第３フロー定義を前記第２フロー定義とマージさせるために送信する送信部をさらに備える
請求項１に記載のプログラム開発支援装置。
【請求項７】
前記ノード表示処理部は、前記第２フロー定義の処理ノードを示すオブジェクトに対応させて、前記第２フロー定義における前記処理ノードのノード定義、又は第１フロー定義との差分を表示可能であると共に、前記第３フロー定義の処理ノードを示すオブジェクトに対応させて、前記第３フロー定義における前記処理ノードのノード定義、又は第３フロー定義との差分を表示可能である
請求項１に記載のプログラム開発支援装置。
【請求項８】
開発対象プログラムを構成する１以上の処理ノード及び前記処理ノードの接続関係を含むフロー定義を、前記処理ノードを示すオブジェクトに対するユーザの操作に従って作成するプログラム開発支援装置によるプログラム開発支援方法であって、
（ａ）前記開発対象プログラムの所定の時点におけるフロー定義である第１フロー定義を取得し、
（ｂ）前記開発対象プログラムの前記第１フロー定義に対して前記所定の時点以降の変更が反映された第２フロー定義を取得し、
（ｃ）記憶部に前記開発対象プログラムの前記第１フロー定義を基にして前記所定の時点以降に変更が施された第３フロー定義を記憶し、
（ｄ）前記第３フロー定義と、前記第２フロー定義とが衝突するか否かを判定し、
（ｅ）衝突すると判定された場合に、前記第１フロー定義と前記第２フロー定義との処理ノードの差分を検出するとともに、前記第１フロー定義と前記第３フロー定義との処理ノードの差分を検出し、
（ｆ）前記第１フロー定義と前記第２フロー定義とで処理ノードに差異がある場合と差異がない場合とで、前記第２フロー定義の処理ノードを示すオブジェクトの表示態様を変えて表示するとともに、前記第１フロー定義と前記第３フロー定義とで差異がある場合と差異がない場合とで、前記第３フロー定義の処理ノードを示すオブジェクトの表示態様を変えて表示する
プログラム開発支援方法。
【請求項９】
前記（ｆ）において、前記第１フロー定義に含まれる第１処理ノードを示すオブジェクトを表示するとともに、前記第１フロー定義と前記第２フロー定義とで差異のない前記第２フロー定義の処理ノードのオブジェクトについては、前記第１処理ノードを示すオブジェクトと同様な表示態様で表示すると共に、前記第１フロー定義と前記第２フロー定義とで差異のある前記第２フロー定義の処理ノードを示すオブジェクトについては、前記第１処理ノードを示すオブジェクトと異なる表示態様で表示し、前記第１フロー定義と前記第３フロー定義とで差異のない前記第３フロー定義の処理ノードを示すオブジェクトについては、前記第１処理ノードを示すオブジェクトと同様な表示態様で表示すると共に、前記第１フロー定義と前記第３フロー定義とで差異のある前記第３フロー定義の処理ノードを示すオブジェクトについては、前記第１処理ノードを示すオブジェクトと異なる表示態様で表示する
請求項８に記載のプログラム開発支援方法。
【請求項１０】
前記（ｆ）において、前記処理ノードについての差異が、処理ノードの追加、処理ノードの変更、処理ノードの削除のいずれであるかによって、処理ノードを示すオブジェクトの表示態様を異ならせる
請求項８又は請求項９に記載のプログラム開発支援方法。
【請求項１１】
前記プログラム開発支援装置は、通信ネットワークを介して、前記フロー定義の版を管理する版管理システムに接続されており、
前記（ａ）において、前記第１フロー定義を、前記版管理システムから取得し、
前記（ｂ）において、第２フロー定義取得部は、前記第２フロー定義を、前記版管理システムから取得する
請求項８に記載のプログラム開発支援方法。
【請求項１２】
前記（ｂ）において、前記版管理システムにおける前記第２フロー定義が更新されたか否かを判定し、前記第２フロー定義が更新されている場合に、前記版管理システムから更新後の第２フロー定義を取得し、
前記（ｄ），（ｅ），（ｆ）では、前記更新後の第２フロー定義を用いて処理を実行する
請求項１１に記載のプログラム開発支援方法。
【請求項１３】
（ｇ）前記第３フロー定義に対する変更を受け付け、
前記（ｄ）において、前記（ｇ）において受け付けられた変更が反映された第３フロー定義と、前記第２フロー定義とが衝突するか否かを判定し、
（ｈ）変更が反映された前記第３フロー定義と前記第２フロー定義とが衝突しないと判定された場合に、版管理システムに、前記第３フロー定義を前記第２フロー定義とマージさせるために送信する
請求項８に記載のプログラム開発支援方法。
【請求項１４】
前記（ｆ）において、前記第２フロー定義の処理ノードを示すオブジェクトに対応させて、前記第２フロー定義における前記処理ノードのノード定義、又は第１フロー定義との差分を表示可能であると共に、前記第３フロー定義の処理ノードを示すオブジェクトに対応させて、前記第３フロー定義における前記処理ノードのノード定義、又は第３フロー定義との差分を表示可能である
請求項８に記載のプログラム開発支援方法。
【請求項１５】
開発対象プログラムを構成する１以上の処理ノード及び前記処理ノードの接続関係を含むフロー定義を、前記処理ノードを示すオブジェクトに対するユーザの操作に従って作成するプログラム開発支援装置を構成するコンピュータに実行させるためのプログラム開発支援プログラムであって、
前記コンピュータを、
前記開発対象プログラムの所定の時点におけるフロー定義である第１フロー定義を取得する第１フロー定義取得部と、
前記開発対象プログラムの前記第１フロー定義に対して前記所定の時点以降の変更が反映された第２フロー定義を取得する第２フロー定義取得部と、
前記開発対象プログラムの前記第１フロー定義を基にして前記所定の時点以降に変更が施された第３フロー定義を記憶する第３フロー定義記憶部と、
前記第３フロー定義と、前記第２フロー定義とが衝突するか否かを判定する衝突判定部と、
衝突すると判定された場合に、前記第１フロー定義と前記第２フロー定義との処理ノードの差分を検出するとともに、前記第１フロー定義と前記第３フロー定義との処理ノードの差分を検出する差分検出部と、
前記第１フロー定義と前記第２フロー定義とで処理ノードに差異がある場合と差異がない場合とで、前記第２フロー定義の処理ノードを示すオブジェクトの表示態様を変えて表示するとともに、前記第１フロー定義と前記第３フロー定義とで差異がある場合と差異がない場合とで、前記第３フロー定義の処理ノードを示すオブジェクトの表示態様を変えて表示するノード表示処理部と、して機能させる
プログラム開発支援プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、処理のまとまりを示すノードをオブジェクトとして表示し、オブジェクトに対するユーザの操作に基づいてプログラムにおけるノード構成を示すフロー定義を作成するプログラム開発支援装置等に関する。
【背景技術】
【０００２】
ソフトウェア開発において、視覚的なオブジェクトを用いてプログラム開発を行うビジュアルプログラミングが知られている。ビジュアルプログラミングでは、処理のまとまりであるノードのそれぞれをブロック（オブジェクト）で表現し、これらのブロックをつなぐ等の操作をすることで、プログラムのフロー（プログラムに含まれるノードやノード間の接続等）を作成できる。このビジュアルプログラミングによると、プログラムのフローを視覚的に理解でき、プログラム言語の知識を有さないユーザでも容易にプログラムを開発することが可能である。【０００３】
また、ビジュアルプログラミングが実行可能な開発支援装置では、作成されたプログラムのフローの定義を、ファイルとして出力、保存することが可能である。開発支援装置では、フロー定義のファイルを読み込むことで、同様のプログラムを継続して開発することが可能である。【０００４】
また、ソフトウェア開発においては、複数の開発者のチームで共同して同一のプログラムを開発することがあるが、この場合には、プログラムの整合性を保つためにバージョン管理システムが利用されることがある。バージョン管理システムには、ソースコード等のバージョン管理だけでなく、変更提案機能、バージョン間の差分確認等、チームでの開発を効率的に行うための支援機能を提供しているものもある。このようなバージョン管理システムの機能を活用してソフトウェア開発を推進する場合には、開発者達は、開発手順をチーム内で定め、それに従って開発を進めることとなる。【０００５】
バージョン管理システムは、テキスト情報、ファイルを管理対象としている。このため、開発支援装置が出力したフロー定義のファイルについても管理可能である。しかしながら、変更箇所を確認する際に利用する差分表示の機能は、テキストを対象にしており、開発支援装置上での視覚的な表現との対応関係を把握することが難しい。【０００６】
また、バージョン管理システムを利用するためには、ＣＬＩ（Ｃｏｍｍａｎｄ  Ｌｉｎｅ  Ｉｎｔｅｒｆａｃｅ）コマンドや、バージョン管理システムを用いた開発手順の知識が必要である。特に、ビジュアルプログラミングが実行可能な開発支援装置においては、ソフトウェア開発の専門的な知識を持たないユーザを主要な利用対象者としていることがあるので、バージョン管理システムを効率的に利用することは困難である。【０００７】
ビジュアルプログラミングに関する技術としては、例えば、特許文献１には、ソフトウェア開発装置で作成した制御ロジックをバージョン管理システムに登録する技術が開示されている。また、特許文献２には、変更前ブロックダイヤグラムと変更後ブロックダイヤグラムとの差分を容易に確認することのできる技術が開示されている。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２０１５−１６２２１８号公報
【特許文献１】特開２０１６−１７７６６８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
例えば、複数の開発者で共同して一つのプログラムの開発を行っている場合には、開発対象の一つのプログラムに対して、バージョンの異なる複数のフロー定義が存在する。この場合に、最終的なプログラムを作成するためには、一のフロー定義に対して、他のフロー定義をマージさせる必要がある。このような場合には、一のフロー定義と、他のフロー定義との間で衝突が発生してしまって、そのままマージできないことが発生する虞がある。【００１０】
このように衝突が発生した場合には、フロー定義を修正する必要がある。この場合においては、例えば、一のフロー定義と、他のフロー定義との差分を表示させて、フロー定義を修正することが考えられる。【００１１】
しかしながら、一のフロー定義と、他のフロー定義との差分のみを確認しただけでは、フロー定義をどのように修正すればよいのか把握できない状況が発生し得る。例えば、２つのフロー定義が、共通の祖先となるフロー定義に対してそれぞれ修正を行ったような場合には、祖先となるフロー定義との差分を考慮しなければ、どのように修正すればよいのかを適切に把握できない。【００１２】
本発明は、上記事情に鑑みなされたものであり、その目的は、複数のバージョンが存在するフロー定義を編集するために必要な情報を適切に表示することのできる技術を提供することにある。
【課題を解決するための手段】
【００１３】
上記目的を達成するため、一観点に係るプログラム開発支援装置は、開発対象プログラムを構成する１以上の処理ノード及び処理ノードの接続関係を含むフロー定義を、処理ノードを示すオブジェクトに対するユーザの操作に従って作成するプログラム開発支援装置において、開発対象プログラムの所定の時点におけるフロー定義である第１フロー定義を取得する第１フロー定義取得部と、開発対象プログラムの第１フロー定義に対して所定の時点以降の変更が反映された第２フロー定義を取得する第２フロー定義取得部と、開発対象プログラムの第１フロー定義を基にして所定の時点以降に変更が施された第３フロー定義を記憶する第３フロー定義記憶部と、第３フロー定義と、第２フロー定義とが衝突するか否かを判定する衝突判定部と、衝突すると判定された場合に、第１フロー定義と第２フロー定義との処理ノードの差分を検出するとともに、第１フロー定義と第３フロー定義との処理ノードの差分を検出する差分検出部と、第１フロー定義と第２フロー定義とで処理ノードに差異がある場合と差異がない場合とで、第２フロー定義の処理ノードを示すオブジェクトの表示態様を変えて表示するとともに、第１フロー定義と第３フロー定義とで差異がある場合と差異がない場合とで、第３フロー定義の処理ノードを示すオブジェクトの表示態様を変えて表示するノード表示処理部と、を備える。
【発明の効果】
【００１４】
本発明によれば、複数のバージョンが存在するフロー定義を編集するために必要な情報を適切に表示することができる。
【図面の簡単な説明】
【００１５】
【図１】図１は、一実施形態に係るプログラム開発管理システムの全体構成図である。
【図２】図２は、一実施形態に係るビジュアルプログラム装置のハードウェア構成図である。
【図３】図３は、一実施形態に係るリポジトリ管理テーブルの一例を示す図である。
【図４】図４は、一実施形態に係る変更衝突管理テーブルの一例を示す図である。
【図５】図５は、一実施形態に係るプログラム開発処理のフローチャートである。
【図６】図６は、一実施形態に係るフロー定義読み込み処理のフローチャートである。
【図７】図７は、一実施形態に係るフロー定義保存処理のフローチャートである。
【図８】図８は、一実施形態に係るフロー表示処理のフローチャートである。
【図９】図９は、一実施形態に係るフロー表示画面の一例を示す図である。
【発明を実施するための形態】
【００１６】
実施形態について、図面を参照して説明する。なお、以下に説明する実施形態は特許請求の範囲に係る発明を限定するものではなく、また実施形態の中で説明されている諸要素及びその組み合わせの全てが発明の解決手段に必須であるとは限らない。
【００１７】
以下の説明では、「ＡＡＡテーブル」の表現にて情報を説明することがあるが、情報は、テーブル以外（例えばリストや連想配列）のデータ構造で表現されていてもよい。すなわち、情報がデータ構造に依存しないことを示すために、「ＡＡＡテーブル」を「ＡＡＡ情報」と呼ぶことができる。
【００１８】
（システム全体構成）
図１は、一実施形態に係るプログラム開発管理システムの全体構成図である。
【００１９】
プログラム開発管理システム１は、１以上のプログラム開発支援装置の一例としてのビジュアルプログラム装置５１と、版管理システムの一例としてのバージョン管理システム（ＶＣＳシステム）６１とを備える。一つのバージョン管理システム６１は、複数のビジュアルプログラム装置５１におけるプログラム（フロー定義）のバージョンを管理することができる。
【００２０】
ビジュアルプログラム装置５１は、１台以上のコンピュータで構成されてもよい。また、ビジュアルプログラム装置５１は、１台以上のコンピュータにより構成される仮想マシンで構成されてもよく、例えば、コンピュータにおいてコンテナを実行することにより実現される仮想マシンで構成されてもよい。また、バージョン管理システム６１は、１台以上のコンピュータで構成されてもよい。また、バージョン管理システム６１は、１台以上のコンピュータにより構成される仮想マシンで構成されてもよく、例えば、コンピュータにおいてコンテナを実行することにより実現される仮想マシンで構成されてもよい。
【００２１】
ビジュアルプログラム装置５１と、ＶＣＳシステム６１とは、通信ネットワーク２０を介して接続されている。通信ネットワーク２０は、有線ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、無線ＬＡＮ、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）等であってよい。
【００２２】
ＶＣＳシステム６１は、１以上のリポジトリ６２を保持する。リポジトリ６２は、開発対象プログラムについての複数のフロー定義を管理、保持する。リポジトリ６２は、所定の開発対象プログラムに対する同時に並行して開発されるバージョンの異なるフロー定義を分離して管理可能なブランチ６３を保持可能である。ブランチ６３は、フロー定義６４を管理する。ブランチ６３は、フロー定義６４に変更があった場合には、その変更の履歴についても管理する。フロー定義６４には、プログラムを構成するひとまとまりの処理（プログラム部品）であるノード（処理ノード）の定義（ノード定義）、例えば、ノードの識別情報や、ノードと他のノードと接続関係等を示す情報が含まれる。
【００２３】
ブランチ６３には、例えば、開発対象プログラムの主となるフロー定義（第２フロー定義）を管理するブランチ（主ブランチ）と、所定の時点における主ブランチのフロー定義（第１フロー定義）に基づいて作成され、編集されるフロー定義を管理するブランチ（開発ブランチ）とがある。開発ブランチは、例えば、同一の開発対象プログラムを共同で編集する開発者（ユーザ）ごとに作成される。
【００２４】
ビジュアルプログラム装置５１は、入出力部５２と、フロー実行部５３と、フロー編集部５４と、バージョン管理システム連携部（ＶＣＳ連携部）５５とを備える。ここで、ＶＣＳ連携部５５が、第１フロー定義取得部、第２フロー定義取得部、衝突判定部、差分検出部、及び送信部の一例に相当する。また、フロー編集部５４がノード表示処理部の一例に相当する。また、入出力部５２が変更受付部の一例に相当する。
【００２５】
入出力部５２は、例えば、ビジュアルプログラム装置５１を使用するユーザからの入力を受け付けると共に、各種情報を表示出力する。フロー実行部５３は、作成されたフロー定義に対応するフロー（プログラム）を実行する。フロー編集部５４は、フロー定義に基づいて、画面に表示させるフロー（表示フロー）を作成する。ＶＣＳ連携部５５は、ＶＣＳシステム６１と連携してフロー定義を管理する処理を行う。
【００２６】
ＶＣＳ連携部５５は、１以上のローカルリポジトリ５８（第３フロー定義記憶部の一例）を保持する。ローカルリポジトリ５８は、或る時点におけるＶＣＳシステム６１のリポジトリ６２の状態に基づいて作成される。したがって、作成当初においては、ローカルリポジトリ５８には、その時点においてリポジトリ６２に存在する主ブランチと同様な状態のブランチ（ローカル側の主ブランチ）が存在する。なお、それ以降においては、ＶＣＳシステム６１において主ブランチの更新等が発生すると、ローカルリポジトリ５８の主ブランチがＶＣＳシステム６１の主ブランチと異なる状態となることがある。ローカルリポジトリ５８は、１以上のブランチ５９を備える。ブランチ５９は、フロー定義６０を管理する。ブランチ５９としては、ビジュアルプログラム装置５１のユーザが開発対象プログラムの編集を開始する際に、その時点におけるリポジトリ６２の主ブランチ（及びその中のフロー定義（第１フロー定義）に基づいて作成される開発ブランチがある。ビジュアルプログラム装置５１のユーザは、この開発ブランチ内のフロー定義に対して変更等を行うこととなる。このフロー定義が第３フロー定義に相当する。
【００２７】
また、ＶＣＳ連携部５５は、ローカルリポジトリ５８を管理するためのリポジトリ管理テーブル５６と、フロー定義における変更衝突に関する情報を管理するための変更衝突管理テーブル５７を有する。
【００２８】
（ハードウェア構成）
図２は、一実施形態に係るビジュアルプログラム装置のハードウェア構成図である。
【００２９】
ビジュアルプログラム装置５１は、例えば、１台のコンピュータにより構成され、プロセッサの一例としてのＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔｅ）２１と、メモリ２２と、記憶装置２３と、入力装置２４と、出力装置２５と、通信装置２６とを備える。各構成要素２１〜２６は、例えば、バスを介して通信可能に接続されている。
【００３０】
メモリ２２は、例えば、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）であり、ビジュアルプログラム装置５１の各機能部を構成するためのプログラム（プログラム開発支援プログラム）を含む種々のプログラムを記憶する。ＣＰＵ２１は、メモリ２２に記憶されているプログラムを実行することにより、各種処理を実行する。記憶装置２３は、例えば、ハードディスクやＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等の不揮発性の記憶装置であり、プログラムを含む各種情報を記憶する。入力装置２４は、例えば、キーボードやマウスなどであり、ビジュアルプログラム装置５１のユーザからの入力を受け付ける。出力装置２４は、例えば、ディスプレイであり、各種情報を表示出力する。通信装置２６は、通信ネットワーク２０を介して、外部の装置（ＶＣＳシステム６１等）との通信を行う。
【００３１】
ここで、図１の入出力部５２は、入力装置２４及び出力装置２５により構成される。また、フロー実行部５３及びフロー編集部５４は、ＣＰＵ２１がメモリ２２のプログラムを実行することにより構成される。ＶＣＳ連携部５５が実行する処理は、ＣＰＵ２１がメモリ２２のプログラムを実行することにより構成される。したがって、フロー実行部５３、フロー編集部５４、及びＶＣＳ連携部５５が実行する処理は、プロセッサが実行する処理ということができる。ＶＣＳ連携部５５におけるリポジトリ管理テーブル５６、変更衝突管理テーブル５７、及びローカルリポジトリ５８を記憶する機能は、記憶装置２３により構成される。
【００３２】
（リポジトリ管理テーブル）
図３は、一実施形態に係るリポジトリ管理テーブルの一例を示す図である。
【００３３】
リポジトリ管理テーブル５６は、ＶＣＳシステム６１のリポジトリ６２と、ローカルリポジトリ５８との対応関係を示す情報を保持するテーブルであり、対応するリポジトリ６２とローカルリポジトリ５８との組毎に対応するエントリ（レコード）を格納する。リポジトリ管理テーブル５６のエントリは、外部リポジトリフィールド５６１と、主ブランチフィールド５６２、ローカルリポジトリフィールド５６３と、開発ブランチフィールド５６４と、分岐コミットフィールド５６５とを含む。
【００３４】
外部リポジトリフィールド５６１は、ＶＣＳシステム６１が保持するリポジトリ６２の場所情報（例えば、ＵＲＬなど）を格納する領域である。主ブランチフィールド５６２は、ユーザ５０が指定した開発のベースとなるブランチ６３（主ブランチ）の識別情報（例えば、ブランチ名）を格納する領域である。ローカルリポジトリフィールド５６３は、エントリに対応するリポジトリ６２と対応するローカルリポジトリ５８の場所情報（例えば、ビジュアルプログラム装置５１におけるローカルリポジトリ５８のパス名）を格納する領域である。開発ブランチフィールド５６４は、ビジュアルプログラム装置５１において開発が進められているブランチ（開発ブランチ）の識別情報（例えば、開発ブランチの名前）を保持する領域である。分岐コミットフィールド５６５は、主ブランチと、開発ブランチとが分岐した時点（開発ブランチが作成された時点）のリポジトリ６２の状態を示す情報（例えば、分岐時の主ブランチのコミットＩＤ）を格納する領域である。このコミットＩＤを用いることにより、リポジトリ６２から分岐時の主ブランチの情報（例えば、フロー定義）を取得することができる。
【００３５】
（変更衝突管理テーブル）
図４は、一実施形態に係る変更衝突管理テーブルの一例を示す図である。
【００３６】
変更衝突管理テーブル５７は、２つのブランチ間（主ブランチと開発ブランチとの間）に変更の衝突があった場合における、衝突したノードの情報を保持するテーブルであり、衝突したノード毎に対応するエントリを格納する。ここで、衝突とは、２つのブランチのフロー定義における各ノードを適切にマージできない状態を意味している。
【００３７】
変更衝突管理テーブル５７のエントリは、ノードＩＤフィールド５７１と、分岐時ノード定義フィールド５７２と、主ブランチノード定義フィールド５７３と、開発ブランチノード定義フィールド５７４とを含む。
【００３８】
ノードＩＤフィールド５７１は、変更の衝突が発生しているノードを一意に示す識別情報（例えば、ビジュアルプログラム装置５１が各ノードに定めるハッシュ値など）を格納する領域である。分岐時ノード定義フィールド５７２は、変更の衝突が発生しているノードについての、主ブランチと開発ブランチとが分岐した時点でのノードの情報（例えば、ＪＳＯＮ形式のノード定義）を格納する領域である。主ブランチノード定義フィールド５７３は、変更の衝突が発生しているノードについての、主ブランチにおけるノードの情報（例えば、ＪＳＯＮ形式のノード定義）を格納する領域である。開発ブランチノード定義フィールド５７４は、変更の衝突が発生しているノードについての、開発ブランチにおけるノードの情報（例えば、ＪＳＯＮ形式のノード定義）を格納する領域である。
【００３９】
（ビジュアルプログラミングにおける開発の流れ）
次に、ビジュアルプログラミングにおける開発の流れの一例に沿って、本実施形態に係るビジュアルプログラム装置５１の動作を説明する。
【００４０】
図５は、一実施形態に係るプログラム開発処理のフローチャートである。
【００４１】
ユーザ５０は、ＶＣＳシステム６１に対して、開発対象プログラムのフロー定義を保存するためのリポジトリ（外部リポジトリ）６２を作成する（ステップＳ４１）。なお、ビジュアルプログラム装置５１を起動して、ビジュアルプログラム装置５１に対してユーザ５０が操作指示を行って、ビジュアルプログラム装置５１を介してＶＣＳシステム６１に、リポジトリ６２を作成するようにしてもよい。
【００４２】
次いで、ユーザ５０は、ビジュアルプログラム装置５１を起動する（ステップＳ４２）。
【００４３】
ビジュアルプログラム装置５１は、起動されると、図６に示すフロー定義読み込み処理を実行することにより、ＶＣＳシステム６１からフロー定義を取得し、フロー定義に対応するフローを表示する（ステップＳ４３）。
【００４４】
次いで、ビジュアルプログラム装置５１は、ユーザ５０による入出力部５２に対する操作入力に従って、表示されたフローに対する編集を実行する（ステップＳ４４）。
【００４５】
ビジュアルプログラム装置５１は、ユーザ５０から編集の終了指示を受け付けると、フロー定義をＶＣＳサービス６１に保存する図７に示すフロー定義保存処理を実行する（ステップＳ４５）。
【００４６】
なお、図５は、ＶＣＳシステム６１にリポジトリ６２を作成していないプログラムの開発を行う場合の処理を示しているが、例えば、既にリポジトリ６２が作成されているプログラムの開発を行う場合には、ステップＳ４２からの処理を実行するようにすればよい。
【００４７】
（フロー定義読み込み処理の流れ）
図６は、一実施形態に係るフロー定義読み込み処理のフローチャートである。フロー定義読み込み処理は、図５のステップＳ４３に対応する処理である。
【００４８】
まず、ＶＣＳ連携部５５は、ユーザ５０から開発対象のプログラムのフロー定義を管理するＶＣＳシステム６１のリポジトリ６２の指定を受け付け、受け付けたリポジトリ６２に対応するローカルリポジトリが、ローカルリポジトリ５８として存在するか否かを、リポジトリ管理テーブル５６を参照して判断する（ステップＳ４３１）。
【００４９】
この結果、指定されたリポジトリ６２に対応するローカルリポジトリ５８が存在しない場合（ステップＳ４３１：Ｎｏ）には、ＶＣＳ連携部５５は、ＶＣＳシステム６１から指定されたリポジトリ６２を取得し、リポジトリ６２に対応するローカルリポジトリ５８を作成する（ステップＳ４３２）。ＶＣＳシステム６１からリポジトリ６２を取得する際には、例えば、ＶＣＳシステム６１がｇｉｔである場合には、ｇｉｔコマンドを利用すればよい。
【００５０】
一方、指定されたリポジトリ６２に対応するローカルリポジトリ５８が存在する場合（ステップＳ４３１：Ｙｅｓ）、又は、ステップＳ４３２でローカルリポジトリ５８を作成した場合には、ＶＣＳ連携部５５は、ローカルリポジトリ５８に、開発ブランチ５９を新たに作成する（ステップＳ４３３）。ここで、開発ブランチ５９は、ローカルリポジトリ５８内の主ブランチ（リポジトリ６２から取得された主ブランチ）の各種情報をコピーして作成される。開発ブランチ５９を作成した後、ＶＣＳ連携部５５は、リポジトリ管理テーブル５６にエントリを追加し、ＶＣＳシステム６１のリポジトリ６２の場所情報と、主ブランチの識別情報と、ローカルリポジトリ５８の場所情報と、開発ブランチの識別情報と、主ブランチと開発ブランチとの分岐時（開発ブランチを作成した時）のリポジトリの状態を示す情報（例えば、分岐時のコミットＩＤ）とを追加したエントリの対応するフィールドに登録する（ステップＳ４３４）。なお、分岐時のコミットＩＤは、例えば、開発ブランチ５９を作成する際に、ＶＣＳシステム６１から取得するようにすればよい。
【００５１】
次いで、フロー編集部５４が開発ブランチ５９に格納されているフロー定義６０を読み込み、フロー定義６０に対応する表示用のフローを作成し（ステップＳ４３５）、入出力部５２が表示用フローを含む画面を表示する（ステップＳ４３６）。
【００５２】
（フロー定義保存処理の流れ）
図７は、一実施形態に係るフロー定義保存処理のフローチャートである。フロー定義保存処理は、図５のステップＳ４５に対応する処理である。
【００５３】
ビジュアルプログラム装置５１が、ユーザ５０からフロー定義を開発ブランチにコミットする要求を受け付けると（ステップＳ４５１）、ＶＣＳ連携部５５がリポジトリ管理テーブル５６を参照して、開発ブランチ５９に対応するＶＣＳシステム６１の主ブランチ６３及び外部リポジトリ６２を特定し、開発ブランチ５９を作成した時点以降において主ブランチ６３に更新があるか否かを判断する（ステップＳ４５２）。
【００５４】
この結果、主ブランチ６３に更新がない場合（ステップＳ４５２：Ｎｏ）には、ＶＣＳ連携部５５は、開発ブランチと主ブランチとの間に変更衝突が発生することがなく、開発ブランチを主ブランチにマージしても問題ないことを意味しているので、処理をステップＳ４６１に進める。
【００５５】
一方、主ブランチ６３に更新がある場合（ステップＳ４５２：Ｙｅｓ）には、ＶＣＳ連携部５５は、ＶＣＳシステム６１から主ブランチ６３の更新内容を取得し、ローカルリポジトリ５８の主ブランチ５９を更新する（ステップＳ４５３）。
【００５６】
次いで、ＶＣＳ連携部５５は、開発ブランチを更新後の主ブランチに接続するｒｅｂａｓｅ処理を実行する（ステップＳ４５４）。ｒｅｂａｓｅ処理の機能は、例えば、ｇｉｔ等のＶＣＳシステムの機能をＶＣＳ連携部５５に組み込んでおくようにすればよい。ｒｅｂａｓｅ処理においては、開発ブランチのフロー定義（第３フロー定義）と主ブランチのフロー定義（第２フロー定義）とについて、変更の衝突（開発ブランチのフロー定義のノードを主ブランチのフロー定義内に接続できない部分が存在すること）が発生すると、発生した衝突に関する情報（変更衝突情報）をフロー定義６０のファイル内に追記して保存する。変更衝突情報としては、衝突が発生したノードの識別情報であってもよく、衝突があった旨の情報であってもよい。
【００５７】
次いで、ＶＣＳ連携部５５は、開発ブランチと主ブランチとのフロー定義の変更の衝突が発生しているか否かを判断する、具体的には、開発ブランチのフロー定義のファイルに変更衝突情報が含まれているか否かを判断する（ステップＳ４５５）。この結果、変更の衝突が発生していない場合（ステップＳ４５５：Ｎｏ）には、開発ブランチを主ブランチにマージしても問題ないことを意味しているので、ＶＣＳ連携部５５は、処理をステップＳ４６１に進める。
【００５８】
一方、変更の衝突が発生している場合（ステップＳ４５５：Ｙｅｓ）、すなわち、フロー定義に変更衝突情報が含まれている場合には、ＶＣＳ連携部５５は、変更衝突情報に基づいて、変更衝突が発生している全てのノードを特定する。次いで、ＶＣＳ連携部５５は、特定したそれぞれのノードに関して、リポジトリ管理テーブル５６を参照して、分岐時の主ブランチのフロー定義（第１フロー定義）におけるノード定義と、最新の主ブランチのフロー定義（第２フロー定義）におけるノード定義と、開発ブランチのフロー定義（第３フロー定義）におけるノード定義とをリポジトリ６２又はローカルリポジトリ５９から取得する。次いで、ＶＣＳ連携部５５は、変更衝突管理テーブル５７に変更衝突が発生しているノードに対応する新たなエントリを追加し、追加したエントリのノードＩＤフィールド５７１に、衝突が発生しているノードの識別情報を格納し、分岐時ノード定義フィールド５７２、主ブランチノード定義フィールド５７３、及び開発ブランチノード定義５７４のそれぞれに、既に取得している対応するノード定義を保存する（ステップＳ４５６）。
【００５９】
次いで、フロー編集部５４は、変更衝突情報を含むフロー定義と、変更衝突管理テーブル５７とを読み込み、ノードの変更衝突に関する情報を含むフロー表示画面３０（図９参照）を表示するためのフロー表示処理（図８参照）を行う（ステップＳ４５７）。
【００６０】
これにより、ユーザ５０は、表示されたフロー表示画面３０を参照して、入出力部５２を操作することにより、衝突を解決するためのフロー定義の編集を行うことができる。この際、ビジュアルプログラム装置５１は、ユーザ５０による入出力部５２に対する操作に基づいて、フロー定義に編集内容を反映する（ステップＳ４５８）。
【００６１】
次いで、ユーザ５０から、衝突を解消したフロー定義を開発ブランチへコミットする要求を受け付けると、ＶＣＳ連携部５５は、衝突を解消したフロー定義をローカルリポジトリ５８の開発ブランチへコミットする処理を実行する（ステップＳ４５９）。この結果、フロー定義の開発ブランチへのコミットが成功すると、ＶＣＳ連携部５５は、変更衝突管理テーブル５７から衝突を解消したノードに対応するエントリを削除し（ステップＳ４６０）、ローカルリポジトリ５８の開発ブランチをＶＣＳシステム６１にＰＵＳＨする、すなわち、開発ブランチをＶＣＳシステム６１へ登録する（ステップＳ４６１）。なお、ＶＣＳシステム６１では、登録された開発ブランチが、主ブランチとマージされることにより、ビジュアルプログラム装置５１のユーザ５０により編集された内容が主ブランチのフロー定義に反映されることとなる。
【００６２】
次いで、ＶＣＳ連携部５５は、ローカルリポジトリ５８からＶＣＳシステム６１にプッシュした開発ブランチを削除し（ステップＳ４６２）、リポジトリ管理テーブル５６から、この開発ブランチに対応するエントリを削除する（ステップＳ４６３）。
【００６３】
（フロー表示処理の流れ）
図８は、一実施形態に係るフロー表示処理のフローチャートである。フロー表示処理は、図７のステップＳ４５７に対応する処理である。
【００６４】
まず、フロー編集部５４は、変更衝突情報を含むフロー定義を読み込み（ステップＳ５０１）、フロー定義に含まれる１以上のノード定義から処理対象とする１つのノード定義を取得する（ステップＳ５０２）。
【００６５】
次いで、フロー編集部５４は、変更衝突管理テーブル５７に、取得したノード定義に対応するノードが登録されているか否かを判断する（ステップＳ５０３）。この結果、このノードが変更衝突管理テーブル５７に登録されていない場合（ステップＳ５０３：Ｎｏ）には、変更衝突が発生していないことを示しているので、フロー編集部５４は、このノードに対応するブロック（オブジェクト）を変更衝突が発生していないことを示す表示態様（例えば、黒色）で描画し（ステップＳ５１０）、処理をステップＳ５０９に進める。
【００６６】
一方、このノードが変更衝突管理テーブル５７に登録されている場合（ステップＳ５０３：Ｙｅｓ）には、このノードについて、主ブランチと、開発ブランチとの間で変更衝突が発生していることを示しており、フロー編集部５４は、変更衝突管理テーブル５７からこのノードに対応する分岐時のノード定義を取得し、分岐時のノード（第１処理ノード）に対応するブロックを、衝突に関係するノードであることを示す所定の表示態様（例えば、灰色）で描画する（ステップＳ５０４）。
【００６７】
次に、ノード編集部５４は、このノードの主ブランチにおけるノード定義を変更衝突管理テーブル５７から取得し、主ブランチのノード定義と分岐時のノード定義とに差分があるか否かを判断する（ステップＳ５０５）。
【００６８】
この結果、主ブランチのノード定義と分岐時のノード定義とに差分がないと判断された場合（ステップＳ５０５：Ｎｏ）には、ノード編集部５４は、主ブランチのノードに対応するブロックを、分岐時のノードに対応するブロックと同じ色（本実施形態では、灰色）で描画し（ステップＳ５１１）、処理をステップＳ５０７に進める。
【００６９】
一方、主ブランチのノード定義と分岐時のノード定義とに差分があると判断された場合（ステップＳ５０５：Ｙｅｓ）には、ノード編集部５４は、主ブランチのノードに対応するブロックを、分岐時のノードに対応するブロックと異なる表示態様（例えば、青色）で描画し（ステップＳ５０６）、処理をステップＳ５０７に進める。なお、ステップＳ５０６において、主ブランチのノードが削除されている場合は、ノード編集部５４は、主ブランチのノードに対応するブロックを、ノードが削除されていることを視覚的に認識可能な表示態様（例えば、青色且つ点線）で描画する。このようにブロックの表示を行うと、主ブランチのノードに対応するブロックと、分岐時のノードに対応するブロックとの表示態様を見比べることにより、これらノード間に差分があるか否かを視覚的に容易かつ適切に把握することができる。
【００７０】
ステップＳ５０７では、ノード編集部５４は、このノードの開発ブランチにおけるノード定義を変更衝突管理テーブル５７から取得し、開発ブランチのノード定義と分岐時のノード定義とに差分があるか否かを判断する。
【００７１】
この結果、開発ブランチのノード定義と分岐時のノード定義とに差分がないと判断された場合（ステップＳ５０７：Ｎｏ）には、ノード編集部５４は、開発ブランチのノードに対応するブロックを、分岐時のノードに対応するブロックと同じ色（本実施形態では、灰色）で描画し（ステップＳ５１２）、処理をステップＳ５０９に進める。
【００７２】
一方、開発ブランチのノード定義と分岐時のノード定義とに差分があると判断された場合（ステップＳ５０７：Ｙｅｓ）には、ノード編集部５４は、開発ブランチのノードに対応するブロックを、主ブランチのノードに対応するブロック及び分岐時のノードに対応するブロックと異なる表示態様（例えば、赤色）で描画し（ステップＳ５０８）、処理をステップＳ５０９に進める。なお、ステップＳ５０８において、開発ブランチのノードが削除されている場合は、ノード編集部５４は、開発ブランチのノードに対応するブロックを、ノードが削除されていることを視覚的に認識可能な表示態様（例えば、赤色且つ点線）で描画する。このようにブロックを表示すると、開発ブランチのノードに対応するブロックと、分岐時のノードに対応するブロックとの表示態様を見比べることにより、これらノード間に差分があるか否かを視覚的に容易かつ適切に把握することができる。また、開発ブランチのノードに対応するブロックと、主ブランチのノードに対応するブロックとの表示態様を見比べることにより、これらノード間に差分があるか否かを視覚的に容易かつ適切に把握することができる。なお、各ノードのブロックから次のノードのブロックにつながるリンク線については、このノードについてのノード定義の中に次のノードが指定されている場合には、各ノードのブロックの色に合わせて描画してもよい。
【００７３】
ステップＳ５０９では、ノード編集部５４は、フロー定義に含まれる全てのノードを処理対象として、ノードに対応するブロックの描画が完了したか否かを判断し、全てのノードを処理対象としたブロックの描画が完了していない場合（ステップＳ５０９：Ｎｏ）には、処理をステップＳ５０２に進める一方、全てのノードを処理対象としたブロックの描画が完了している場合（ステップＳ５０９：Ｙｅｓ）には、フロー表示処理を終了する。
【００７４】
（フロー表示画面）
図９は、一実施形態に係るフロー表示画面の一例を示す図である。
【００７５】
フロー表示画面３０は、ノード選択領域３１と、フロー編集領域３２と、ノード情報表示領域３３と、フロー操作領域３４とを有する。
【００７６】
ノード選択領域３１は、ビジュアルプログラム装置５１で利用可能な複数のノードを示すブロック（オブジェクト）を表示するための領域である。ユーザ５０は、入出力部５２を操作して、ノード選択領域３１に表示されているブロックの中から、使用したいノードのブロックを選択することにより、フロー編集領域３２で選択されたノードのブロックを配置等することができるようになる。
【００７７】
フロー編集領域３２は、フロー定義に従ったフローを表示するための領域である。フロー編集領域３２に表示されるフローとしては、フロー定義に含まれるノードに対応するブロック（３２１〜３２５等）や、ノード間の接続関係を示す接続線等が含まれる。ユーザ５０は、入出力部５２を操作することにより、フロー編集領域３２において、フロー定義におけるノードの配置や、ノードの接続関係等を編集することでフロー定義（すなわち、プログラム）を編集することができる。
【００７８】
フロー編集領域３２においては、開発ブランチと主ブランチとの間で変更の衝突があった場合には、分岐時のノード（分岐時ノード）に対応するブロック、主ブランチのノード（主ノード）に対応するブロック、及び開発ブランチのノード（開発ノード）に対応するブロックが、各ノードに対応するノード定義の差分が視覚的に容易に把握できるように表示される。例えば、ブロック３２２が分岐時ノードに対応し、ブロック３２３が主ノードに対応し、ブロック３２４が開発ノードに対応する。ブロック３２２，３２３，３２４の表示態様を見ることにより、各ブロックに対応するノードのノード定義に差分があるか否かを視覚的に容易に把握することができる。図９に示す例では、ブロック３２２に対応する分岐時ノードと、ブロック３２３に対応する主ノードとのノード定義に差分があり、また、ブロック３２２に対応する分岐時ノードと、ブロック３２４に対応する開発ノードとのノード定義に差分があることを示している。
【００７９】
フロー編集領域３２において、存在していなかったノードや、削除されたノードについては、そのことが視覚的に把握できるように、他のノードのブロックと異なる表示態様（例えば、点線）で表示するようにしてもよく、また、新たに追加されたノードについては、新たに追加されたことを把握できるように他と異なる表示態様で表示するようにしてもよい。また、フロー編集領域３２において、ノードに対応するブロックに対応してノード定義や、他のノードのノード定義との差分の内容を表示するようにしてもよい。具体的には、ブロックの近傍にノード定義や、他のノードのノード定義との差分の内容を表示するようにしてもよく、ブロックが選択等された際に、ノード定義や、他のノードのノード定義との差分の内容をノード情報表示領域３３に表示するようにしてもよい。これにより、フロー表示画面３０に、ノード定義や、差分の内容を適切に表示することができ、ユーザは、容易かつ適切にその内容を把握することができる。
【００８０】
ノード情報表示領域３３は、ノード選択領域３１やフロー編集領域３２で選択されたノードに関するノード定義の内容が表示される領域である。
【００８１】
フロー操作領域３４は、フロー定義の管理に関する動作を選択指定するための領域である。ユーザ５０は、ノード操作領域３４に対して入出力部５２による操作を行うことにより、管理に関する動作を指定することができる。フロー操作領域３４においては、フロー定義の管理に関する動作としては、例えば、フロー定義の読み込み、フロー定義の保存（コミット）、フロー定義の実行などを選択できる。
【００８２】
なお、本発明は、上述の実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲で、適宜変形して実施することが可能である。
【００８３】
例えば、上記実施形態では、図７に示すように、フロー定義を開発ブランチにコミットすることを起点として、ＶＣＳシステム６１の主ブランチに更新がある場合に、主ブランチを取得して、フロー表示処理を行うようにしていたが、本発明はこれに限られず、例えば、ＶＣＳ連携部５５が、ＶＣＳシステム６１のリポジトリ６２における主ブランチが更新されたか否かを逐次監視するようにし、主ブランチが更新されたことを検出した場合に、主ブランチを取得してフロー表示処理を行うようにしてもよい。このようにすると、主ブランチが更新されたことにより発生する変更衝突について、早期に、すなわち、変更衝突に関わる部分が比較的少ない時点において把握することができ、変更衝突を比較的容易に解消することができる。このため、ユーザ５０に対する変更衝突を解消する際の負荷を低減することができ、プログラムの開発効率を向上することができる。
【００８４】
また、上記実施形態では、フロー表示画面３０において、開発ブランチと主ブランチ間で変更の衝突があった場合には、分岐時ノード、主ノード、開発ノードに対応する３つのブロックを表示するようにしていたが、本発明はこれに限られず、主ノードに対応するブロックと、開発ノードに対応するブロックとの２つを表示するようにしてもよい。このようにしても、主ノードが分岐ノードと差分があるか否か、開発ノードが分岐ノードと差分があるか否かを視覚的に把握することができる。
【００８５】
また、上記実施形態では、ノード間に差分がある場合に、ノードに対応するブロックの色や線種を変えるようにしていたが、本発明はこれに限られず、例えば、ブロックの形状を変えるようにしてもよく、要は、視覚的に認識可能な表示態様を変えるようにすればよい。
【００８６】
また、上記実施形態において、ＣＰＵが行っていた処理の一部又は全部を、ハードウェア回路で行うようにしてもよい。また、上記実施形態におけるプログラムは、プログラムソースからインストールされてよい。プログラムソースは、プログラム配布サーバ又は記憶メディア（例えば可搬型の記憶メディア）であってもよい。
【符号の説明】
【００８７】
１…プログラム開発管理システム、２０…通信ネットワーク、２１…ＣＰＵ、２２…メモリ、２３…記憶装置、５１…ビジュアルプログラム装置、５２…入出力部、５３…フロー実行部、５４…フロー編集部、５５…ＶＣＳ連携部、５６…リポジトリ管理テーブル。５７…変更衝突管理テーブル、６１…ＶＣＳシステム
【図１】
0006801086.tif 000002
【図２】
0006801086.tif 000003
【図３】
0006801086.tif 000004
【図４】
0006801086.tif 000005
【図５】
0006801086.tif 000006
【図６】
0006801086.tif 000007
【図７】
0006801086.tif 000008
【図８】
0006801086.tif 000009
【図９】
0006801086.tif 000010