(57)【要約】【課題】差分情報のデータサイズを小さくし、且つ大規模データの差分抽出に要する時間を短縮できるようにすることを目的とする。【解決手段】プログラム生成データ差分情報作成部１１０はソースコード１９１、オブジェクトコード１９２および仕様書１９３の新旧の差分を抽出し、旧ファイルを新ファイルへ更新するための差分適用情報を作成すると共に差分の新旧の名称やアドレスを示す差分情報表を作成する。実行コード１９４の差分適用情報を作成するため、プログラムデータ差分情報作成部１２０はソースコード１９１などの差分情報表に基づいてソースコード１９１などの差分について新旧の実行コード１９４を一致させ、その後、実行コード１９４の残りの差分を抽出する。プログラムデータ差分情報作成部１２０はソースコード１９１などの差分情報表と実行コード１９４の残りの差分とに基づいて実行コード１９４の差分適用情報を作成する。【選択図】図１
2011028321.tif 000002
【特許請求の範囲】
【請求項１】
旧版のプログラムデータと、新版のプログラムデータと、前記旧版のプログラムデータの生成に使用された旧版のプログラム生成データと、前記新版のプログラムデータの生成に使用された新版のプログラム生成データとを記憶する新旧データ記憶部と、
前記旧版のプログラム生成データと前記新版のプログラム生成データとの異なる部分をＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）を用いてプログラム生成データ変更部分として特定するプログラム生成データ変更部分特定部と、
前記旧版のプログラムデータ内の部分であって前記プログラム生成データ変更部分に対応する部分と前記新版のプログラムデータ内の部分であって前記プログラム生成データ変更部分に対応する部分とをＣＰＵを用いて同一にするプログラム生成データ変更部分除去部と、
前記プログラム生成データ変更部分除去部により前記プログラム生成データ変更部分に対応する部分を同一にさせた前記旧版のプログラムデータと前記新版のプログラムデータとの異なる部分をＣＰＵを用いてプログラムデータ残変更部分として特定するプログラムデータ残変更部分特定部と、
前記プログラム生成データ変更部分特定部により特定されたプログラム生成データ変更部分と前記プログラム残変更部分特定部により特定されたプログラムデータ残変更部分とを前記旧版のプログラムデータと前記新版のプログラムデータとの差分として表すプログラムデータ差分情報をＣＰＵを用いて生成するプログラムデータ差分情報生成部と
を備えたことを特徴とする差分情報生成装置。
【請求項２】
前記プログラム生成データ変更部分特定部は、前記旧版のプログラム生成データと前記新版のプログラム生成データとの複数の異なる部分のうち複数箇所にあり同じ相違内容を表す部分を前記プログラム生成データ変更部分として特定する
ことを特徴とする請求項１記載の差分情報生成装置。
【請求項３】
前記プログラム生成データ変更部分特定部は、前記旧版のプログラム生成データと前記新版のプログラム生成データとの複数の異なる部分のうち名称を示す部分とアドレスを示す部分とを前記プログラム生成データ変更部分として特定する
ことを特徴とする請求項１または請求項２いずれかに記載の差分情報生成装置。
【請求項４】
前記プログラム生成データ変更部分特定部は、プログラム生成データの編集情報に基づいて前記プログラム生成データ変更部分を特定する
ことを特徴とする請求項１〜請求項３いずれかに記載の差分情報生成装置。
【請求項５】
前記プログラムデータは、実行コードとリンク情報とプログラム管理情報との少なくともいずれかである
ことを特徴とする請求項１〜請求項４いずれかに記載の差分情報生成装置。
【請求項６】
前記プログラム生成データは、ソースコードとオブジェクトコードと仕様書データとの少なくともいずれかである
ことを特徴とする請求項１〜請求項５いずれかに記載の差分情報生成装置。
【請求項７】
新旧データ記憶部が、旧版のプログラムデータと、新版のプログラムデータと、前記旧版のプログラムデータの生成に使用された旧版のプログラム生成データと、前記新版のプログラムデータの生成に使用された新版のプログラム生成データとを記憶し、
プログラム生成データ変更部分特定部が、前記旧版のプログラム生成データと前記新版のプログラム生成データとの異なる部分をＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）を用いてプログラム生成データ変更部分として特定し、
プログラム生成データ変更部分除去部は、前記旧版のプログラムデータ内の部分であって前記プログラム生成データ変更部分に対応する部分と前記新版のプログラムデータ内の部分であって前記プログラム生成データ変更部分に対応する部分とをＣＰＵを用いて同一にし、
プログラムデータ残変更部分特定部が、前記プログラム生成データ変更部分除去部により前記プログラム生成データ変更部分に対応する部分を同一にさせた前記旧版のプログラムデータと前記新版のプログラムデータとの異なる部分をＣＰＵを用いてプログラムデータ残変更部分として特定し、
プログラムデータ差分情報生成部が、前記プログラム生成データ変更部分特定部により特定されたプログラム生成データ変更部分と前記プログラム残変更部分特定部により特定されたプログラムデータ残変更部分とを前記旧版のプログラムデータと前記新版のプログラムデータとの差分として表すプログラムデータ差分情報をＣＰＵを用いて生成する
ことを特徴とする差分情報生成方法。
【請求項８】
請求項７記載の差分情報生成方法をコンピュータに実行させる差分情報生成プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、例えば、プログラムをバージョンアップするための差分情報生成装置、差分情報生成方法および差分情報生成プログラムに関するものである。
【背景技術】
【０００２】
バージョンアップがあった場合、変更のあったファイルを差分情報として送る技術がある（特許文献１、特許文献２）。
この技術には、一部のパラメータを変更する場合など、多くのファイルに少しずつ変更がある場合、開発環境を同期させるために結果的に多くの情報を送らなければならず、データ転送量が多くなるという課題があった。
【０００３】
他の技術として、ファイルなどのバイナリデータ同士の差分を取り、その差分のみを送信することによりデータ転送量を小さくする技術がある（特許文献３）。
この技術には、データの差分を抽出するために少なくとも最低３回はデータを走査しなければならず、対象となるデータの規模が大きいと差分の抽出に要する時間が長いという課題があった。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平１０−２６０８２０号公報
【特許文献２】特開２００１−２７３１４７号公報
【特許文献３】特開２００６−７９４９２号公報
【非特許文献】
【０００５】
【非特許文献１】Ｊ．Ｗ．Ｈｕｎｔ  ａｎｄ  Ｍ  Ｄ  Ｍｃｉｌｌｒｏｙ，  “Ａｎ  Ａｌｇｏｒｉｔｈｍ  ｆｏｒ  ｄｉｆｆｅｒｅｎｔｉａｌ  ｆｉｌｅ  ｃｏｍｐａｒｉｓｏｎ，”  Ｔｅｃｈ．Ｒｅｐ．４１，  ＡＴ  ＆  Ｔ  Ｂｅｌｌ  Ｌａｂｏｒａｔｏｒｉｅｓ  Ｉｎｃ．  ，  Ｍｕｒｒａｙ  Ｈｉｌｌ，ＮＪ，１９７６
【非特許文献２】清原  良三他，“携帯電話ソフトウェア更新のためのバージョン間差分表現方式”，  電子情報通信学会論文誌Ｂ，Ｖｏｌ．Ｊ８９−Ｂ，Ｎｏ．４，ｐｐ．４７８−４８７，  ２００６
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本発明は、例えば、開発環境そのものを同期したい場合など、規模が大きなデータを対象とする場合に、差分情報のデータサイズを小さくし、且つ大規模データの差分抽出に要する時間を短縮できるようにすることを目的とする。
【課題を解決するための手段】
【０００７】
本発明の差分情報生成装置は、
旧版のプログラムデータと、新版のプログラムデータと、前記旧版のプログラムデータの生成に使用された旧版のプログラム生成データと、前記新版のプログラムデータの生成に使用された新版のプログラム生成データとを記憶する新旧データ記憶部と、
前記旧版のプログラム生成データと前記新版のプログラム生成データとの異なる部分をＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）を用いてプログラム生成データ変更部分として特定するプログラム生成データ変更部分特定部と、
前記旧版のプログラムデータ内の部分であって前記プログラム生成データ変更部分に対応する部分と前記新版のプログラムデータ内の部分であって前記プログラム生成データ変更部分に対応する部分とをＣＰＵを用いて同一にするプログラム生成データ変更部分除去部と、
前記プログラム生成データ変更部分除去部により前記プログラム生成データ変更部分に対応する部分を同一にさせた前記旧版のプログラムデータと前記新版のプログラムデータとの異なる部分をＣＰＵを用いてプログラムデータ残変更部分として特定するプログラムデータ残変更部分特定部と、
前記プログラム生成データ変更部分特定部により特定されたプログラム生成データ変更部分と前記プログラム残変更部分特定部により特定されたプログラムデータ残変更部分とを前記旧版のプログラムデータと前記新版のプログラムデータとの差分として表すプログラムデータ差分情報をＣＰＵを用いて生成するプログラムデータ差分情報生成部とを備える。
【発明の効果】
【０００８】
本発明によれば、例えば、差分情報のデータサイズを小さくし、且つ大規模データの差分抽出に要する時間を短縮することができる。
【図面の簡単な説明】
【０００９】
【図１】実施の形態１における開発環境同期装置１００の機能構成図。
【図２】実施の形態１における開発環境同期装置１００のハードウェア資源の一例を示す図。
【図３】実施の形態１におけるプログラム生成データ差分情報作成処理を示す概要図。
【図４】実施の形態１におけるプログラム生成データ差分情報作成処理のフローチャート。
【図５】実施の形態１における差分情報表を示す図。
【図６】実施の形態１におけるプログラムデータ差分情報作成処理を示す概要図。
【図７】実施の形態１におけるプログラムデータ差分情報作成処理のフローチャート。
【図８】実施の形態１におけるプログラムデータ差分抽出処理（Ｓ２４０）およびプログラムデータ差分適用情報作成処理（Ｓ２５０）を示す概要図。
【図９】実施の形態１におけるプログラムデータ差分抽出処理（Ｓ２４０）およびプログラムデータ差分適用情報作成処理（Ｓ２５０）のフローチャート。
【図１０】実施の形態１における差分適用情報の作成方法と従来方法との比較を示す図。
【図１１】実施の形態２における開発環境同期装置１００の機能構成図。
【発明を実施するための形態】
【００１０】
実施の形態１．
プログラム（実行コード）の元になるソースコードやオブジェクトコードから抽出した新旧の変更点を新旧プログラムで一致させた後、新旧プログラムに含まれる残りの変更点を抽出し、新旧プログラムの差分情報を生成する装置、方法およびプログラムについて説明する。
【００１１】
図１は、実施の形態１における開発環境同期装置１００の機能構成図である。
実施の形態１における開発環境同期装置１００の機能構成について、図１に基づいて以下に説明する。
【００１２】
開発環境同期装置１００（差分情報生成装置の一例）は、プログラム生成データ差分情報作成部１１０（プログラム生成データ変更部分特定部の一例）、プログラムデータ差分情報作成部１２０（プログラム生成データ変更部分除去部、プログラムデータ残変更部分特定部、プログラムデータ差分情報生成部の一例）および差分情報記憶部１９０（新旧データ記憶部の一例）を備える。
【００１３】
差分情報記憶部１９０は、開発環境同期装置１００で使用されるデータを記憶媒体を用いて記憶する。
ソースコード１９１、オブジェクトコード１９２、仕様書１９３、実行コード１９４、リンク情報１９５およびプログラム管理情報１９６は差分情報記憶部１９０に記憶されるデータの一例である。それぞれの旧版（現バージョン）と新版（新バージョン）とが予め差分情報記憶部１９０に記憶される。
差分適用情報（１９１ａ〜１９６ａ）および差分情報表（１９１ｔ〜１９３ｔ）は差分情報記憶部１９０に記憶されるデータの一例である。それぞれプログラム生成データ差分情報作成部１１０またはプログラムデータ差分情報作成部１２０により生成される。
【００１４】
ソースコード１９１は、プログラムの処理手順がプログラム言語で記述されたものである。ソースコード１９１は機能毎（例えば、関数（モジュールともいう）毎）に生成される。
オブジェクトコード１９２は、ソースコード１９１をコンパイルして得られたものであり、プログラム言語をマシン語（特定のバイナリコード）に変換したものである。オブジェクトコード１９２はソースコード１９１毎に生成される。
仕様書１９３は、プログラムの詳細（入出力、関数構成、関数の機能・引数など）の説明が記述されたものである。
【００１５】
実行コード１９４は、オブジェクトコード１９２をリンクして得られたものであり、各オブジェクトコード１９２を結合したものである。実行コード１９４はプログラムとして特定の装置（コンピュータ）により実行される。
リンク情報１９５は、実行コード１９４内の各オブジェクトコード１９２の情報（配置されたアドレスなど）を示すものである。
プログラム管理情報１９６は、各オブジェクトコード１９２を結合するための情報（配置するアドレスなど）を示すものである。
【００１６】
ソースコード１９１は仕様書１９３に基づいて生成され、オブジェクトコード１９２はソースコード１９１に基づいて生成され、実行コード１９４はオブジェクトコード１９２に基づいて生成される。つまり、実行コード１９４にはソースコード１９１、オブジェクトコード１９２および仕様書１９３のデータ値または内容が含まれる。
以下、ソースコード１９１、オブジェクトコード１９２および仕様書１９３を、実行コード１９４の生成に使用される元データとして「プログラム生成データ」という。
また、実行コード１９４、リンク情報１９５およびプログラム管理情報１９６を「プログラムデータ」という。
【００１７】
差分適用情報（１９１ａ〜１９６ａ）は、旧版のデータを新版のデータに更新するための方法を示すものである。
差分情報表（１９１ｔ〜１９３ｔ）は、プログラム生成データの旧版と新版との相違点、つまり、旧版から新版へのプログラム生成データの変更点（以下、「差分」という）を示すものである。
【００１８】
プログラム生成データ差分情報作成部１１０は、ソースコード１９１を処理対象とするソースコード差分情報抽出部１１１、オブジェクトコード１９２を処理対象とするオブジェクトコード差分情報抽出部１１２および仕様書１９３を処理対象とする仕様書差分情報抽出部１１３を備える。
プログラム生成データ差分情報作成部１１０の各差分情報抽出部は、それぞれ処理対象について、旧版データと新版データとの異なる部分（差分）をＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）を用いてプログラム生成データ変更部分として特定する。
さらに、プログラム生成データ変更部分に基づいて差分適用情報（１９１ａ〜１９３ａ）および差分情報表（１９１ｔ〜１９３ｔ）をＣＰＵを用いて生成する。
【００１９】
プログラム生成データ差分情報作成部１１０の各差分情報抽出部は、旧版データと新版データとの複数の異なる部分のうち複数箇所にあり同じ相違内容を表す部分をプログラム生成データ変更部分として特定する。
また、旧版データと新版データとの複数の異なる部分のうち名称を示す部分とアドレスを示す部分とをプログラム生成データ変更部分として特定する。
【００２０】
プログラムデータ差分情報作成部１２０は、実行コード１９４を処理対象とする実行コード差分情報抽出部１２１、リンク情報１９５を処理対象とするリンク情報差分情報抽出部１２２およびプログラム管理情報１９６を処理対象とするプログラム管理情報差分抽出部１２３を備える。
プログラムデータ差分情報作成部１２０の各差分情報抽出部は、それぞれ処理対象について、旧版データ内の部分であってプログラム生成データ変更部分に対応する部分と新版データ内の部分であってプログラム生成データ変更部分に対応する部分とをＣＰＵを用いて同一にする。
さらに、プログラム生成データ変更部分に対応する部分を同一にさせた旧版データと新版データとの異なる部分をＣＰＵを用いてプログラムデータ残変更部分として特定する。
さらに、プログラム生成データ変更部分とプログラムデータ残変更部分とを旧版データと新版データとの差分として表す差分適用情報（１９４ａ〜１９６ａ）（プログラムデータ差分情報の一例）をＣＰＵを用いて生成する。
【００２１】
図２は、実施の形態１における開発環境同期装置１００のハードウェア資源の一例を示す図である。
図２において、開発環境同期装置１００は、ＣＰＵ９１１（マイクロプロセッサ、マイクロコンピュータともいう）を備えている。ＣＰＵ９１１は、バス９１２を介してＲＯＭ９１３、ＲＡＭ９１４、通信ボード９１５、表示装置９０１、キーボード９０２、マウス９０３、ドライブ装置９０４、磁気ディスク装置９２０と接続され、これらのハードウェアデバイスを制御する。ドライブ装置９０４は、ＦＤ（Ｆｌｅｘｉｂｌｅ・Ｄｉｓｋ・Ｄｒｉｖｅ）、ＣＤ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ）、ＤＶＤ（Ｄｉｇｉｔａｌ・Ｖｅｒｓａｔｉｌｅ・Ｄｉｓｃ）などの記憶媒体を読み書きする装置である。
【００２２】
通信ボード９１５は、有線または無線で、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、インターネット、電話回線などの通信網に接続している。
【００２３】
磁気ディスク装置９２０には、ＯＳ９２１（オペレーティングシステム）、ウィンドウシステム９２２、プログラム群９２３、ファイル群９２４が記憶されている。
【００２４】
プログラム群９２３には、実施の形態において「〜部」として説明する機能を実行するプログラムが含まれる。プログラムは、ＣＰＵ９１１により読み出され実行される。すなわち、プログラムは、「〜部」としてコンピュータを機能させるものであり、また「〜部」の手順や方法をコンピュータに実行させるものである。
【００２５】
ファイル群９２４には、実施の形態において説明する「〜部」で使用される各種データ（入力、出力、判定結果、計算結果、処理結果など）が含まれる。
【００２６】
実施の形態において構成図およびフローチャートに含まれている矢印は主としてデータや信号の入出力を示す。
【００２７】
実施の形態において「〜部」として説明するものは「〜回路」、「〜装置」、「〜機器」であってもよく、また「〜ステップ」、「〜手順」、「〜処理」であってもよい。すなわち、「〜部」として説明するものは、ファームウェア、ソフトウェア、ハードウェアまたはこれらの組み合わせのいずれで実装されても構わない。
【００２８】
開発環境同期装置１００は、プログラム生成データ（ソースコード１９１、オブジェクトコード１９２、仕様書１９３）の差分情報を作成する「プログラム生成データ差分情報作成処理」を実行し、プログラム生成データの差分情報を利用してプログラムデータ（実行コード１９４、リンク情報１９５、プログラム管理情報１９６）の差分情報を作成する「プログラムデータ差分情報作成処理」を実行して、各データの差分情報を生成する。
以下に、「プログラム生成データ差分情報作成処理」および「プログラムデータ差分情報作成処理」について説明する。
【００２９】
図３は、実施の形態１におけるプログラム生成データ差分情報作成処理を示す概要図である。新版ファイル（１９Ｘｎ）の網掛けは旧版ファイル（１９Ｘｏ）に対する差分を示している。
図４は、実施の形態１におけるプログラム生成データ差分情報作成処理のフローチャートである。
実施の形態１におけるプログラム生成データ差分情報作成処理について、図３および図４に基づいて以下に説明する。
【００３０】
各「〜部」は、以下に説明する処理をＣＰＵを用いて実行する。
【００３１】
まず、プログラム生成データ差分情報作成処理の概要について説明する。
【００３２】
ソースコード差分情報抽出部１１１、オブジェクトコード差分情報抽出部１１２および仕様書差分情報抽出部１１３はそれぞれにプログラム生成データ差分情報作成処理を実行する。
以下、プログラム生成データ差分情報作成処理の説明において、ソースコード差分情報抽出部１１１、オブジェクトコード差分情報抽出部１１２または仕様書差分情報抽出部１１３を「差分情報抽出部」という。
【００３３】
差分情報抽出部は、プログラム生成データの旧版ファイルおよび新版ファイルを読み込む（Ｓ１１０、Ｓ１２０）。
差分情報抽出部は、読み込んだ旧版ファイルおよび新版ファイルに基づいてプログラム生成データの差分を抽出する（Ｓ１３０）。
差分情報抽出部は、抽出した差分の情報に基づいて、プログラム生成データの更新方法を示す差分適用情報を作成する（Ｓ１４０）。
差分情報抽出部は、抽出した差分の情報を示す差分情報表を作成する（Ｓ１５０）。
【００３４】
Ｓ１５０の後、読み込んでいない旧版ファイルおよび新版ファイルが残っている場合、処理はＳ１１０に戻り、読み込んでいない旧版ファイルおよび新版ファイルが残っていない場合、処理は終了する（Ｓ１６０）。
【００３５】
次に、各処理（Ｓ１１０〜Ｓ１６０）の詳細について説明する。
【００３６】
＜Ｓ１１０＞
差分情報抽出部は、プログラム生成データの旧版ファイル（旧版のソースコード１９１ｏ、旧版のオブジェクトコード１９２ｏまたは旧版の仕様書１９３ｏ）を一つ選択し、選択した旧版ファイルをメモリに読み込む。選択され、読み込まれる旧版ファイルは未選択の旧版ファイルのいずれかである。
例えば、ソースコード差分情報抽出部１１１は旧版のソースコード１９１ｏを一つ読み込む。
Ｓ１１０の後、処理はＳ１２０に進む。
【００３７】
＜Ｓ１２０＞
差分情報抽出部は、Ｓ１１０で読み込んだ旧版ファイルに対応する新版ファイル（新版のソースコード１９１ｎ、新版のオブジェクトコード１９２ｎまたは新版の仕様書１９３ｎ）をメモリに読み込む。
例えば、ソースコード差分情報抽出部１１１は旧版のソースコード１９１ｏに対応する新版のソースコード１９１ｎを読み込む。
Ｓ１２０の後、処理はＳ１３０に進む。
【００３８】
＜Ｓ１３０＞
差分情報抽出部は、Ｓ１１０で読み込んだ旧版ファイルとＳ１２０で読み込んだ新版ファイルとの異なる部分（追加、変更、削除があった箇所）を差分として抽出する。
【００３９】
例えば、ファイルがテキストファイル（ソースコードまたは仕様書）である場合、非特許文献１に開示されている「ｄｉｆｆ  コマンドの実装」と同様にして差分を探し出す（抽出する）ことができる。
また、ファイルがバイナリファイル（オブジェクトコード）である場合、非特許文献２に開示されるバイナリ差分抽出方式により差分を探し出すことができる。
【００４０】
Ｓ１３０の後、処理はＳ１４０に進む。
【００４１】
＜Ｓ１４０＞
差分情報抽出部は、Ｓ１３０で抽出した各差分の情報に基づいて、旧版ファイルを新版ファイルに更新する方法を示す差分適用情報（１９Ｘａ）を作成する。差分適用情報を表す記述規則はシステム環境に応じて予め定められているものとする。
【００４２】
例えば、差分適用情報は、新版ファイルに挿入（追加）するデータとその挿入位置とを示す挿入コマンドや、旧版ファイルから新版ファイルへコピー（移動）するデータの旧版ファイル内での位置、新版ファイル内での位置およびサイズを示すコピーコマンドなど、旧版ファイルをどのように変更するかを指定したコマンド群で構成される（非特許文献２参照）。
【００４３】
例えば、ソースコード差分情報抽出部１１１はソースコード１９１の差分適用情報１９１ａを作成する。
Ｓ１４０の後、処理はＳ１５０に進む。
【００４４】
＜Ｓ１５０＞
差分情報抽出部は、Ｓ１３０で抽出された複数の差分の情報から複数箇所に同じパターンで存在する変更点（変更事項）（例えば、名称やアドレスなどの単語）を抽出し、抽出した変更点を示す差分情報表（１９Ｘｔ）を作成する。
複数箇所にある変更点のみ抽出する理由は差分情報表に含める変更点の数を少なくするためである。また、１箇所のみの変更点はそのファイルに特有の変更点であってプログラムデータとは共通しない変更点である可能性が高いからである。例えば、変更点がソースコードに記載された関数名である場合、関数名の宣言、関数の処理定義、関数の呼び出しなど変更点は複数箇所に現れる。但し、１箇所のみの変更点も含めて差分情報表を作成しても構わない。
例えば、差分情報抽出部は、変更前後の関数名、引数名およびアドレスを対応付けて差分情報表を作成する。
【００４５】
図５は、実施の形態１における差分情報表を示す図である。
図５において、表（１）は、テキストデータ（関数名、数値、コメント文）の変更点について旧版ファイルのデータ値「旧版（変更前のデータ値）」と新版ファイルのデータ値「新版（変更後のデータ値）」とを対応付けて示している。例えば、関数名である「ｆｕｎｃｔｉｏｎＡ」を「Ｆｕｎｃｔｉｏｎ＿ａ」に変更した箇所が２箇所以上あったことを示している。
表（２）は、バイナリデータ（アドレス）の変更点について「旧版」と「新版」とを対応付けて示している。例えば、アドレス「１ＣＣ」からアドレス「１ＤＢ」への変更箇所が２箇所以上にあったことを示している。
表（３）は、一定範囲のアドレスに一定のずれがあること（ずれ規則）を示している。例えば、「１Ｄ０（＝１ＣＣ＋４）」から「３ＤＦ（＝３ＤＢ＋４）」までの各アドレスが４バイトずつずれて「１ＣＣ」から「３ＤＢ」までの各アドレスに変更されたことを示している。
変更点のデータがテキストデータとバイナリデータとのいずれであるか判定できない場合、当該変更点はテキストデータについての表（１）とバイナリデータについての表（２）との両方に含めればよい。
また、テキストデータとバイナリデータとを区別せず、変更点を一つの表に纏めてもよい。
【００４６】
図４に戻り、プログラム生成データ差分情報作成処理の説明を続ける。
【００４７】
例えば、ソースコード差分情報抽出部１１１はソースコード１９１の差分情報表１９１ｔを作成する。
Ｓ１５０の後、処理はＳ１６０に進む。
【００４８】
＜Ｓ１６０＞
差分情報抽出部は、Ｓ１１０において未選択の旧版ファイルが残っているか判定する。
未選択の旧版ファイルが残っている場合（ＮＯ）、処理はＳ１１０に戻る。
未選択の旧版ファイルが残っていない場合（ＹＥＳ）、プログラム生成データ差分情報作成処理は終了する。
【００４９】
図６は、実施の形態１におけるプログラムデータ差分情報作成処理を示す概要図である。新版ファイル（１９Ｘｎ）の網掛けは旧版ファイル（１９Ｘｏ）に対する差分を示している。
図７は、実施の形態１におけるプログラムデータ差分情報作成処理のフローチャートである。
実施の形態１におけるプログラムデータ差分情報作成処理について、図６および図７に基づいて以下に説明する。
【００５０】
各「〜部」は、以下に説明する処理をＣＰＵを用いて実行する。
【００５１】
まず、プログラムデータ差分情報作成処理の概要について説明する。
【００５２】
実行コード差分情報抽出部１２１、リンク情報差分情報抽出部１２２およびプログラム管理情報差分抽出部１２３はそれぞれにプログラムデータ差分情報作成処理を実行する。
以下、プログラムデータ差分情報作成処理の説明において、実行コード差分情報抽出部１２１、リンク情報差分情報抽出部１２２またはプログラム管理情報差分抽出部１２３を「差分情報抽出部」という。
【００５３】
差分情報抽出部は、プログラムデータの旧版ファイルおよび新版ファイルを読み込む（Ｓ２１０、Ｓ２２０）。
差分情報抽出部は、プログラム生成データの差分情報表を読み込む（Ｓ２３０）。
差分情報抽出部は、新旧ファイルと差分情報表とに基づいて、プログラムデータの差分を抽出する（Ｓ２４０）。
差分情報抽出部は、抽出した差分の情報に基づいて、プログラムデータの更新方法を示す差分適用情報を作成する（Ｓ２５０）。
【００５４】
次に、各処理（Ｓ２１０〜Ｓ２５０）の詳細について説明する。
【００５５】
＜Ｓ２１０＞
差分情報抽出部は、プログラムデータの旧版ファイル（旧版の実行コード１９４ｏ、旧版のリンク情報１９５ｏまたは旧版のプログラム管理情報１９６ｏ）をメモリに読み込む。
例えば、実行コード差分情報抽出部１２１は旧版の旧実行コード１９４ｏを読み込む。
Ｓ２１０の後、処理はＳ２２０に進む。
【００５６】
＜Ｓ２２０＞
差分情報抽出部は、プログラムデータの新版ファイル（１９４ｎ、新リンク情報１９５ｎまたは１９６ｎ）（Ｓ２１０で読み込んだ旧版ファイルに対応するもの）をメモリに読み込む。
例えば、実行コード差分情報抽出部１２１は新版の新実行コード１９４ｎを読み込む。
Ｓ２２０の後、処理はＳ２３０に進む。
【００５７】
＜Ｓ２３０＞
差分情報抽出部は、テキストデータ、バイナリデータおよびずれ規則の差分情報表（図５参照）（１９１ｔ〜１９３ｔ）のうち、Ｓ２１０およびＳ２２０で読み込んだプログラムデータのデータ形式に対応する差分情報表をメモリに読み込む。
例えば、読み込んだプログラムデータがテキストファイルである場合、テキストデータおよびずれ規則の差分情報表を読み込み、読み込んだプログラムデータがバイナリファイルである場合、バイナリデータおよびずれ規則の差分情報表を読み込む。テキストファイルとはテキスト形式で作成されたファイルであり、バイナリファイルとはワードプロセッサーソフトウェア（ワープロ）のファイルのようにテキスト形式以外の特定形式で作成されたファイルである。一般的に実行コード１９４やリンク情報１９５はテキストファイルであり、プログラム管理情報１９６はテキストファイルまたはバイナリファイルである。
例えば、実行コード差分情報抽出部１２１は、ソースコード１９１、オブジェクトコード１９２および仕様書１９３それぞれの差分情報表からテキストデータについての表部分を読み込む。
但し、テキストファイルかバイナリファイルかの区別をせず、ソースコード１９１、オブジェクトコード１９２および仕様書１９３それぞれの差分情報表を全て読み込んでも構わない。
Ｓ２３０の後、処理はＳ２４０に進む。
【００５８】
＜Ｓ２４０＞
差分情報抽出部は、Ｓ２３０で読み込んだ差分情報表を利用して、Ｓ２１０で読み込んだプログラムデータの旧版ファイルとＳ２２０で読み込んだプログラムデータの新版ファイルとの差分を抽出する。
Ｓ２４０の詳細については後述する。
Ｓ２４０の後、処理はＳ２５０に進む。
【００５９】
＜Ｓ２５０＞
差分情報抽出部は、Ｓ２３０で読み込んだ差分情報表に示される差分とＳ２４０で抽出した差分とに基づいて、プログラムデータの差分適用情報（１９Ｘａ）を作成する。
例えば、実行コード差分情報抽出部１２１は実行コード１９４の差分適用情報１９４ａを作成する。
Ｓ２５０の詳細については後述する。
Ｓ２５０の後、プログラムデータ差分情報作成処理は終了する。
【００６０】
図８は、実施の形態１におけるプログラムデータ差分抽出処理（Ｓ２４０）およびプログラムデータ差分適用情報作成処理（Ｓ２５０）を示す概要図である。
図９は、実施の形態１におけるプログラムデータ差分抽出処理（Ｓ２４０）およびプログラムデータ差分適用情報作成処理（Ｓ２５０）のフローチャートである。
プログラムデータ差分情報作成処理中のＳ２４０およびＳ２５０について、図８および図９に基づいて以下に説明する。
【００６１】
＜Ｓ２４１＞
差分情報抽出部は、プログラムデータの新版ファイルにおいて、差分情報表に示される新版ファイルのデータ値に対応する部分を差分情報表に示される旧版ファイルのデータ値に置き換える。プログラムデータはプログラム生成データに基づいて生成されるため、差分情報表に示されるプログラム生成データの新旧のデータ値とプログラムデータの新旧のデータ値とは同じである。これにより、差分情報表に示される差分についてプログラムデータの新版ファイルと旧版ファイルとが一致する。
例えば、差分情報抽出部は差分情報表（図５参照）に示される新版ファイルのデータ値（例えば、「Ｆｕｎｃｔｉｏｎ＿ａ」）を検索キーとして新版ファイルを検索し、検索キーと一致する箇所（差分箇所）を差分情報表に示される旧版ファイルのデータ値（例えば、「ｆｕｎｃｔｉｏｎＡ」）に置換する。
但し、旧版ファイルの差分箇所を新版ファイルのデータ値に置き換えて、新版ファイルと旧版ファイルとの当該差分箇所を一致させてもよい。また、旧版ファイルおよび新版ファイルそれぞれの差分箇所を同一の所定のデータ値に置き換えて旧版ファイルと新版ファイルとの当該差分箇所を一致させてもよい。
Ｓ２４１の後、処理はＳ２４２に進む。
【００６２】
＜Ｓ２４２＞
差分情報抽出部は、差分情報表に示される差分について一致させたプログラムデータの旧版ファイルと新版ファイルとを対象にして、旧版ファイルと新版ファイルとの差分を抽出する。差分の抽出方法は、プログラム生成データ差分情報作成処理（図３、４参照）のＳ１３０と同じである。
Ｓ２４２の後、処理はＳ２５１に進む。
【００６３】
＜Ｓ２５１＞
差分を一致させていないプログラムデータの旧版ファイルと新版ファイルとには、Ｓ２４１で使用した差分情報表に示される差分の他にＳ２４２で抽出された差分が含まれる。
そこで、差分情報抽出部は、Ｓ２４１で使用した差分情報表の情報とＳ２４２で抽出した各差分の情報とに基づいて、プログラムデータの差分適用情報（１９Ｘａ）を作成する。差分適用情報の作成方法は、プログラム生成データ差分情報作成処理（図３、４参照）のＳ１４０と同じである。
以上で、プログラムデータの差分適用情報（１９Ｘａ）が作成される。
【００６４】
開発環境同期装置１００（例えば、図示していない差分情報出力部）は、上記のようにして作成されたプログラム生成データの差分適用情報（１９１ａ〜１９３ａ）およびプログラムデータの差分適用情報（１９４ａ〜１９６ａ）を当該プログラム生成データおよびプログラムデータを使用する使用装置へ送信して提供する。
各使用装置は、提供された差分適用情報に基づいて現行の旧版データを新版データに更新し、以後、新版データを使用する。
【００６５】
図１０は、実施の形態１における差分適用情報の作成方法と従来方法との比較を示す図である。
実施の形態１における差分適用情報の作成方法と従来方法との比較について、図１０に基づいて以下に説明する。
【００６６】
図１０において、新版ファイル内の差分箇所を網掛け（斜線および格子）で表す。斜線の網掛けは差分情報表に示される差分を表し、格子の網掛けはその他の差分を表す。
【００６７】
一般的に、新旧ファイルの差分を抽出する場合（本実施の形態ではＳ１３０、Ｓ２４２）、特定のブロック（所定サイズのデータ列）単位で新旧ファイルを比較して一致しないブロック（以下、「不一致ブロック」という）を特定する。そして、新旧ファイルの不一致ブロックを前記ブロック単位より小さい単位で比較して一致しない部分（以下、「不一致部分」という）を特定する。さらに、不一致部分を比較して不一致部分を絞り込み、絞り込んだ不一致部分を新旧ファイルの差分とする。
【００６８】
旧版ファイルから新版ファイルへの変更点がファイル内に点在する場合、不一致ブロックが多くなるため、その分、不一致部分の比較（絞り込み検索）が多く必要となり、差分の抽出に長時間を要する。ファイルサイズが大きいほどその可能性は高い。
【００６９】
プログラムデータ（例えば、実行コード）は、複数のプログラム生成データ（例えば、複数のオブジェクトコード）またはその内容を含んだデータであるため、プログラム生成データに比べてファイルサイズが大きい。
【００７０】
そこで、本実施の形態では、プログラムデータの差分を抽出する前に、プログラム生成データの差分（差分情報表に示される差分）に対応する部分（図１０内の斜線の網掛け）について新旧のプログラムデータを一致させる（Ｓ２４１）。そして、その新旧のプログラムデータから残りの差分（図１０内の格子の網掛け）を抽出する（Ｓ２４２）。これにより、差分の抽出前に不一致ブロックを減らし、差分の抽出に要する時間を短縮することができる。
【００７１】
実施の形態１において、例えば、以下の技術について説明した。
【００７２】
複数の事業場所での製品開発や製品にリンクさせるための製品を開発する開発環境を複数の場所で同期して同じ状態にして利用する上で、差分情報を用いて、同期していない状態（場所によってデータが一致していない状態）から同期した状態（各場所でデータが一致している状態）にすることを実現する。これにより、差分情報を高速に取得する。
【００７３】
開発環境同期装置１００は、１つ以上のソースコード、１つ以上のオブジェクトコード、１つ以上の仕様書、リンク情報ファイル、実行コードおよびプログラム管理情報ファイル（ソースコード、オブジェクトコードおよび実行コード間の関係などを管理するファイル）からなる開発環境を開発拠点および複数のサテライト拠点で保持するシステム開発環境で使用される。
開発環境同期装置１００は、１つ以上のソースコードの差分情報抽出手段（図１中の対応する構成の符号「１１１」。以下同様）と、１つ以上のオブジェクトコードのバイナリ差分情報抽出手段（１１２）と、実行コードの差分情報抽出手段（１２１）と、リンク情報ファイルの差分情報抽出手段（１２２）と、プログラム管理情報ファイルの差分情報抽出手段（１２３）とを保持する。そして、開発環境同期装置１００は差分情報のみを拠点間で送付する。
【００７４】
開発環境同期装置１００は、さらに、１つ以上の仕様書の差分情報抽出手段（１１３）を保持する。
【００７５】
開発環境同期装置１００は、ソースコード差分情報抽出手段で得た結果を利用して、実行コードの差分情報抽出手段を動作させる。
開発環境同期装置１００は、ソースコード差分情報抽出手段で得た結果を利用して、リンク情報ファイルの差分情報抽出手段を動作させる。
開発環境同期装置１００は、ソースコード差分情報抽出手段で得た結果を利用して、プログラム管理情報ファイルの差分情報抽出手段を動作させる。
【００７６】
開発環境同期装置１００は、オブジェクトコードのバイナリ差分情報抽出手段で得た結果を利用して、実行コードの差分情報抽出手段を動作させる。
開発環境同期装置１００は、オブジェクトコードのバイナリ差分情報抽出手段で得た結果を利用して、リンク情報ファイルの差分情報抽出手段を動作させる。
開発環境同期装置１００は、オブジェクトコードのバイナリ差分情報抽出手段で得た結果を利用して、プログラム管理情報ファイルの差分情報抽出手段を動作させる。
【００７７】
開発環境同期装置１００は、仕様書の差分情報抽出手段で得た結果を利用して、実行コードの差分情報抽出手段を動作させる。
開発環境同期装置１００は、仕様書の差分情報抽出手段で得た結果を利用して、リンク情報ファイルの差分情報抽出手段を動作させる。
開発環境同期装置１００は、仕様書の差分情報抽出手段で得た結果を利用して、プログラム管理情報ファイルの差分情報抽出手段を動作させる。
【００７８】
このほかにコンパイラ手段やリンク手段といった開発環境にかかせない手段もあるが、これらはバージョンなどを決めた後は変更されるものではないため、開発環境の同期の対象外と考えることができる。但し、コンパイラやリンカの情報をプログラム生成データと同様に同期の対象としても構わない。
【００７９】
開発環境同期装置１００は、以上のように構成されており、最後の大きなファイルの比較において高速に差分を抽出することができる。従来とほとんど変わらない時間がかかるケースも有り得るが、平均的な実行時間は短縮されると予想できる。差分の抽出には比較対象のデータ量ｎ（サイズ、文字数など）の３乗に比例する時間がかかり、データ量ｎが大きくなればなるほど大きな効果が得られると予想できる。
【００８０】
実施の形態２．
プログラム生成データの差分情報表を実施の形態１とは異なる方法で作成する形態について説明する。
以下、実施の形態１と異なる事項について主に説明する。説明を省略する事項については実施の形態１と同様である。
【００８１】
図１１は、実施の形態２における開発環境同期装置１００の機能構成図である。
実施の形態２における開発環境同期装置１００の機能構成について、図１１に基づいて以下に説明する。
【００８２】
開発環境同期装置１００は、実施の形態１の各構成（図１参照）に加えて、プログラム管理情報ファイル変更部１１４（プログラム生成データ変更部分特定部の一例）を備える。
また、差分情報記憶部１９０には、ソースコード１９１、オブジェクトコード１９２および仕様書１９３それぞれについて変更履歴情報（１９１ｈ〜１９３ｈ）（プログラム生成データを編集した内容を示す情報［編集情報］の一例）が予め記憶される。
【００８３】
ソースコード１９１、オブジェクトコード１９２および仕様書１９３は特定の開発ツール（エディターなど）を使用して編集され、開発ツールは編集箇所毎に変更内容（変更前の内容および変更後の内容）を記録するものとする。
【００８４】
変更履歴情報（１９１ｈ〜１９３ｈ）は、開発ツールにより記録されたものである。
【００８５】
プログラム管理情報ファイル変更部１１４は、変更履歴情報（１９１ｈ〜１９３ｈ）の変更前の内容を旧版データ、変更後の内容を新版データとして差分情報表（１９１ｔ〜１９３ｔ）をＣＰＵを用いて作成する。
例えば、プログラム管理情報ファイル変更部１１４は、変更履歴情報に含まれる複数の変更内容のうち同じ変更前後の内容が複数箇所にある変更内容を抽出し、抽出した変更内容を表にして差分情報表を作成する。
差分情報表の作成方法は、実施の形態１（Ｓ１５０）と同様である。
【００８６】
プログラムデータ差分情報作成部１２０の各差分情報抽出部は、プログラム管理情報ファイル変更部１１４により作成された差分情報表を使用してプログラムデータの差分適用情報を作成してもよいし、プログラム生成データ差分情報作成部１１０の各差分情報抽出部により作成された差分情報表とプログラム管理情報ファイル変更部１１４により作成された差分情報表との両方を使用してプログラムデータの差分適用情報を作成してもよい。
【符号の説明】
【００８７】
１００  開発環境同期装置、１１０  プログラム生成データ差分情報作成部、１１１  ソースコード差分情報抽出部、１１２  オブジェクトコード差分情報抽出部、１１３  仕様書差分情報抽出部、１１４  プログラム管理情報ファイル変更部、１２０  プログラムデータ差分情報作成部、１２１  実行コード差分情報抽出部、１２２  リンク情報差分情報抽出部、１２３  プログラム管理情報差分抽出部、１９０  差分情報記憶部、１９１，１９１ｎ，１９１ｏ  ソースコード、１９１ａ  差分適用情報、１９１ｈ  変更履歴情報、１９１ｔ  差分情報表、１９２，１９２ｎ，１９２ｏ  オブジェクトコード、１９２ａ  差分適用情報、１９２ｈ  変更履歴情報、１９２ｔ  差分情報表、１９３，１９３ｎ，１９３ｏ  仕様書、１９３ａ  差分適用情報、１９３ｈ  変更履歴情報、１９３ｔ  差分情報表、１９４，１９４ｎ，１９４ｏ  実行コード、１９４ａ  差分適用情報、１９５，１９５ｎ，１９５ｏ  リンク情報、１９５ａ  差分適用情報、１９６，１９６ｎ，１９６ｏ  プログラム管理情報、１９６ａ  差分適用情報、９０１  表示装置、９０２  キーボード、９０３  マウス、９０４  ドライブ装置、９１１  ＣＰＵ、９１２  バス、９１３  ＲＯＭ、９１４  ＲＡＭ、９１５  通信ボード、９２０  磁気ディスク装置、９２１  ＯＳ、９２２  ウィンドウシステム、９２３  プログラム群、９２４  ファイル群。
【図１】
2011028321.tif 000003
【図２】
2011028321.tif 000004
【図３】
2011028321.tif 000005
【図４】
2011028321.tif 000006
【図５】
2011028321.tif 000007
【図６】
2011028321.tif 000008
【図７】
2011028321.tif 000009
【図８】
2011028321.tif 000010
【図９】
2011028321.tif 000011
【図１０】
2011028321.tif 000012
【図１１】
2011028321.tif 000013