(57)【特許請求の範囲】
【請求項１】
第１のソースプログラムと第２のソースプログラムとを比較して、前記第１のソースプログラムと前記第２のソースプログラムとの差分を検出する差分検出装置であって、
ユーザからの入力を受ける入力部によって当該入力された内容を示すように生成された、又は、記憶部に格納された、少なくとも１つ以上の桁を特定可能とする桁特定情報を取得して、取得した桁特定情報によって特定される桁を、前記差分の検出を除外する除外範囲として特定する除外範囲特定部と、
前記第１のソースプログラムと前記第２のソースプログラムとの比較において、前記除外範囲特定部によって特定された除外範囲を除いた範囲における差分を検出する差分検出部と、
を備え、
前記差分検出装置は、前記第１のソースプログラムが記述された第１のソースファイルと、前記第２のソースプログラムが記述された第２のソースファイルとを比較するものであって、
前記差分検出装置は、さらに、
前記入力部と、
前記ソースファイルの拡張子と、前記少なくとも１つ以上の桁とを対応付けた対応情報が格納された対応情報記憶部と、を備え、
前記入力部は、ユーザから、前記比較を指示するコマンドと、当該比較の対象とする前記第１のソースファイル及び前記第２のソースファイルのそれぞれのファイル名との入力を受け、入力を受けたコマンド及びファイル名を示す入力情報を、前記桁特定情報として出力し、
前記除外範囲特定部は、前記対応情報において、前記入力情報が示す前記第１のソースファイルのファイル名及び前記第２のソースファイルのファイル名のいずれかの拡張子に対応する桁を、前記除外範囲として特定し、
前記差分検出部は、前記入力部からの前記コマンドを示す入力情報の出力に応じて、前記比較を行う、差分検出装置。
【請求項２】
前記差分検出装置は、さらに、前記入力部を備え、
前記入力部は、ユーザから、前記比較を指示するコマンドと、前記少なくとも１つ以上の桁が指定されたコマンドオプションとの入力を受け、入力を受けたコマンド及びコマンドオプションを示す入力情報を、前記桁特定情報として出力し、
前記除外範囲特定部は、前記入力部から出力された入力情報が示すコマンドオプションで指定された桁を、前記除外範囲として特定し、
前記差分検出部は、前記入力部からの前記コマンドを示す入力情報の出力に応じて、前記比較を行う、
請求項１に記載の差分検出装置。
【請求項３】
前記差分検出装置は、さらに、前記記憶部を有し、
前記記憶部は、前記桁特定情報として、前記少なくとも１つ以上の桁を示す情報を格納し、
前記除外範囲特定部は、前記記憶部に格納された桁特定情報が示す桁を、前記除外範囲として特定する、
請求項１に記載の差分検出装置。
【請求項４】
前記差分検出装置は、さらに、
前記入力部と、
前記第１のソースプログラム又は前記第２のソースプログラムを表示する表示部と、を備え、
前記入力部は、ユーザから、前記表示部におけるソースプログラムの表示に対して、任意の範囲を指定する入力を受け、入力を受けた範囲を示す入力情報を、前記桁特定情報として出力し、
前記除外範囲特定部は、前記入力部から出力された入力情報が示す範囲に含まれる桁を、前記除外範囲として特定する、
請求項１に記載の差分検出装置。
【請求項５】
前記差分検出部は、前記除外範囲において、前記第１のソースプログラム及び前記第２のソースプログラムのそれぞれにおける同一位置の文字を同一の文字でマスクしてから、前記第１のソースプログラムと前記第２のソースプログラムとを比較することによって、前記除外範囲を除いた範囲における差分を検出する、
請求項１乃至４のいずれか１項に記載の差分検出装置。
【請求項６】
前記差分検出部は、前記第１のソースプログラム及び前記第２のソースプログラムのそれぞれにおいて、前記除外範囲における文字を削除してから、前記第１のソースプログラムと前記第２のソースプログラムとを比較することによって、前記除外範囲を除いた範囲における差分を検出する、
請求項１乃至４のいずれか１項に記載の差分検出装置。
【請求項７】
前記差分検出部は、前記第１のソースプログラムと前記第２のソースプログラムとを比較した差分のうち、前記除外範囲を除いた範囲における差分を検出する、
請求項１乃至４のいずれか１項に記載の差分検出装置。
【請求項８】
第１のソースプログラムと第２のソースプログラムとを比較して、前記第１のソースプログラムと前記第２のソースプログラムとの差分を検出する差分検出方法であって、
ユーザからの入力を受ける入力部によって当該入力された内容を示すように生成された、又は、記憶部に格納された、少なくとも１つ以上の桁を特定可能とする桁特定情報を取得する取得ステップと、
前記取得した桁特定情報によって特定される桁を、前記差分の検出を除外する除外範囲として特定する特定ステップと、
前記第１のソースプログラムと前記第２のソースプログラムとを比較する比較ステップと、を備え、
前記比較ステップでは、前記特定された除外範囲を除いた範囲における差分を検出する、
差分検出方法であって、
前記差分検出方法は、前記第１のソースプログラムが記述された第１のソースファイルと、前記第２のソースプログラムが記述された第２のソースファイルとを比較するものであって、
前記取得ステップは、前記入力部が、ユーザから、前記比較を指示するコマンドと、当該比較の対象とする前記第１のソースファイル及び前記第２のソースファイルのそれぞれのファイル名との入力を受け、入力を受けたコマンド及びファイル名を示す入力情報を、前記桁特定情報として出力し、
前記特定ステップは、対応情報記憶部に格納された、前記ソースファイルの拡張子と、前記少なくとも１つ以上の桁とを対応付けた対応情報において、前記入力情報が示す前記第１のソースファイルのファイル名及び前記第２のソースファイルのファイル名のいずれかの拡張子に対応する桁を、前記除外範囲として特定し、
前記比較ステップは、前記入力部からの前記コマンドを示す入力情報の出力に応じて、前記比較を行う、差分検出方法。
【請求項９】
第１のソースプログラムと第２のソースプログラムとを比較して、前記第１のソースプログラムと前記第２のソースプログラムとの差分を検出するための差分検出プログラムであって、
ユーザからの入力を受ける入力部によって当該入力された内容を示すように生成された、又は、記憶部に格納された、少なくとも１つ以上の桁を特定可能とする桁特定情報を取得する取得処理と、
前記取得した桁特定情報によって特定される桁を、前記差分の検出を除外する除外範囲として特定する特定処理と、
前記第１のソースプログラムと前記第２のソースプログラムとを比較する比較処理と、をコンピュータに実行させ、
前記比較処理では、前記特定された除外範囲を除いた範囲における差分を検出する、
差分検出プログラムであって、
前記差分検出プログラムは、前記第１のソースプログラムが記述された第１のソースファイルと、前記第２のソースプログラムが記述された第２のソースファイルとを比較するものであって、
前記取得処理は、前記入力部が、ユーザから、前記比較を指示するコマンドと、当該比較の対象とする前記第１のソースファイル及び前記第２のソースファイルのそれぞれのファイル名との入力を受け、入力を受けたコマンド及びファイル名を示す入力情報を、前記桁特定情報として出力し、
前記特定処理は、対応情報記憶部に格納された、前記ソースファイルの拡張子と、前記少なくとも１つ以上の桁とを対応付けた対応情報において、前記入力情報が示す前記第１のソースファイルのファイル名及び前記第２のソースファイルのファイル名のいずれかの拡張子に対応する桁を、前記除外範囲として特定し、
前記比較処理は、前記入力部からの前記コマンドを示す入力情報の出力に応じて、前記比較を行う、差分検出プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、差分検出装置、差分検出方法及び差分検出プログラムに関し、特に、ソースプログラムを比較する技術に関する。
【背景技術】
【０００２】
プログラムの設計においては、修正前のソースプログラムと、修正後のソースプログラムとを比較することによって検出した差分に基づいて、意図していない変更が含まれていないか判断する作業が行われる。このとき、一般的な比較ツールでは、本来検出したいプログラムロジックの変更箇所以外の変更箇所も「変更有り」と検出されてしまう。
【０００３】
例えば、ＣＯＢＯＬのソースプログラムでは、規格で正書法が定められており、ＪＩＳ  Ｘ  ３００２−１９９２規格までは、各行の先頭に６桁の一連番行領域が固定的に割り当てられる。このような規格に準拠したＣＯＢＯＬエディタによって定型の正書法に則ってＣＯＢＯＬのソースプログラムを記述した場合には、自動的に各行の先頭に６桁の一連番号が付される。この場合、修正前のソースプログラムと修正後のソースプログラムを比較したときに、一連番号のみが変更されている行であっても、「変更有り」と検出されてしまう。
【０００４】
また、ソースプログラムでは、１行の後半にコメントを記述することが通例となっている。ＣＯＢＯＬのソースプログラムでは、コメントは、７３桁目〜８０桁目の識別領域に記載される。この場合、修正前のソースプログラムと修正後のソースプログラムを比較したときに、コメント部分のみが変更されている行であっても、「変更有り」と検出されてしまう。
【０００５】
このように、比較結果に基づいてプログラムロジックの変更箇所を特定する際に、ユーザは、比較結果に示された変更箇所がプログラムロジックの変更箇所かそれ以外の変更箇所であるかを判定する必要があった。このため、ユーザが、本来検出したいプログラムロジックの変更箇所を特定する場合に、取捨選択の手間が生じてしまっていた。その結果、見落としが発生してしまう等、目的とする変更箇所の正確な特定が阻害されてしまっていた。
【０００６】
ここで、特許文献１には、日付表示部分などの被テストプログラムの出力結果の一部を比較除外データとして設定して、改正前の被テストプログラムの出力結果と、改正後の被テストプログラムの出力結果とを比較する技術が開示されている。また、特許文献２には、ＳＧＭＬ（Standard Generalized Markup Language）で記述された構造化文書を比較する場合に、無視タグの中身を比較しないようにして、差分文字列を抽出する技術が開示されている。
【０００７】
しかし、これらの技術は、ユーザがソースプログラムにおいて目的とする変更箇所の特定を容易に行うことを可能とする技術を開示したものではない。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００１−２８２５７８号公報
【特許文献２】特開平８−３２９０７９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
以上に説明したように、ユーザが、ソースプログラムの差分検出結果に基づいて、目的とする変更箇所を特定することが困難となってしまっているという課題がある。
【００１０】
本発明の目的は、上述したような課題を解決するために、ユーザがソースプログラムにおいて目的とする変更箇所の特定を容易に行うことが可能となる差分検出装置、差分検出方法及び差分検出プログラムを提供することである。
【課題を解決するための手段】
【００１１】
本発明の第１の態様にかかる差分検出装置は、第１のソースプログラムと第２のソースプログラムとを比較して、前記第１のソースプログラムと前記第２のソースプログラムとの差分を検出する差分検出装置であって、ユーザからの入力を受ける入力部によって当該入力された内容を示すように生成された、又は、記憶部に格納された、少なくとも１つ以上の桁を特定可能とする桁特定情報を取得して、取得した桁特定情報によって特定される桁を、前記差分の検出を除外する除外範囲として特定する除外範囲特定部と、前記第１のソースプログラムと前記第２のソースプログラムとの比較において、前記除外範囲特定部によって特定された除外範囲を除いた範囲における差分を検出する差分検出部と、を備えたものである。
【００１２】
本発明の第２の態様にかかる差分検出方法は、第１のソースプログラムと第２のソースプログラムとを比較して、前記第１のソースプログラムと前記第２のソースプログラムとの差分を検出する差分検出方法であって、ユーザからの入力を受ける入力部によって当該入力された内容を示すように生成された、又は、記憶部に格納された、少なくとも１つ以上の桁を特定可能とする桁特定情報を取得する取得ステップと、前記取得した桁特定情報によって特定される桁を、前記差分の検出を除外する除外範囲として特定する特定ステップと、前記第１のソースプログラムと前記第２のソースプログラムとを比較する比較ステップと、を備え、前記比較ステップでは、前記特定された除外範囲を除いた範囲における差分を検出するものである。
【００１３】
本発明の第３の態様にかかる差分検出プログラムは、第１のソースプログラムと第２のソースプログラムとを比較して、前記第１のソースプログラムと前記第２のソースプログラムとの差分を検出するための差分検出プログラムであって、ユーザからの入力を受ける入力部によって当該入力された内容を示すように生成された、又は、記憶部に格納された、少なくとも１つ以上の桁を特定可能とする桁特定情報を取得する取得処理と、前記取得した桁特定情報によって特定される桁を、前記差分の検出を除外する除外範囲として特定する特定処理と、前記第１のソースプログラムと前記第２のソースプログラムとを比較する比較処理と、をコンピュータに実行させ、前記比較処理では、前記特定された除外範囲を除いた範囲における差分を検出するものである。
【発明の効果】
【００１４】
本発明の上述した各態様によれば、ユーザがソースプログラムにおいて目的とする変更箇所の特定を容易に行うことが可能となる差分検出装置、差分検出方法及び差分検出プログラムを提供することができる。
【図面の簡単な説明】
【００１５】
【図１】実施の形態１にかかる情報処理装置の一例を示す全体構成図である。
【図２】実施の形態１にかかる差分比較処理において比較対象とするテキストファイルの一例を示す第１の図である。
【図３】実施の形態１にかかる差分比較処理の第１の例を示すフローチャートである。
【図４】実施の形態１にかかる差分比較処理の第１の例の概念図である。
【図５】実施の形態１にかかる差分比較処理の第１の例により得られる差分結果ファイルの内容を比較するための第１の図である。
【図６】実施の形態１にかかる差分比較処理の第２の例を示すフローチャートである。
【図７】実施の形態１にかかる差分比較処理において比較対象とするテキストファイルの一例を示す第２の図である。
【図８】実施の形態１にかかる差分比較処理の第３の例を示すフローチャートである。
【図９】実施の形態１にかかる差分比較処理の第３の例により得られる差分結果ファイルの内容を比較するための図である。
【図１０】実施の形態１にかかる差分比較処理の第４の例を示すフローチャートである。
【図１１】実施の形態１にかかる情報処理装置の他の一例を示す全体構成図である。
【図１２】実施の形態１にかかる差分比較処理の第５の例を示すフローチャートである。
【図１３】実施の形態１にかかる差分比較処理の第５の例の概念図である。
【図１４】実施の形態１にかかる差分比較処理の第５の例により得られる差分結果ファイルの内容を示す図である。
【図１５】実施の形態３にかかる指示ファイルの記載方法のバリエーションを示す図である。
【図１６】実施の形態５にかかる除外範囲指定方法の第１の例を示す図である。
【図１７】実施の形態５にかかる除外範囲指定方法の第２の例を示す図である。
【図１８】実施の形態５にかかる除外範囲指定方法の第３の例を示す図である。
【図１９】実施の形態にかかる差分検出装置の一例を示す全体構成図である。
【発明を実施するための形態】
【００１６】
＜発明の実施の形態１＞
以下、図面を参照して本発明の実施の形態について説明する。図１は、実施の形態１にかかる情報処理装置の一例を示す全体構成図である。情報処理装置１０は、記憶部１１、入力部１２、及び、差分比較部１３を有する。情報処理装置１０は、例えば、パーソナルコンピュータ又はサーバ等のコンピュータである。なお、図中の実線の矢印は情報処理装置１０内の処理の流れを示しており、点線の矢印は、情報処理装置１０内のデータの入出力の流れを示している。
【００１７】
記憶部１１は、ソースプログラムが記述されたソースファイル等のテキストファイルが記憶される。記憶部１１は、例えば、ＨＤＤ（Hard Disk Drive）及びメモリ等の記憶媒体、又は、それらの組み合わせ等により構成される。
【００１８】
記憶部１１には、差分比較部１３に入力される入力文書として、変更前のテキストファイルと、そのテキストファイルにユーザが変更を加えた変更後のテキストファイルとが記憶されている。これらのテキストファイルは、差分比較部１３が比較対象とするファイルである。以下、変更前のテキストファイルを「変更前テキストファイル」とも記載し、変更後のテキストファイルを「変更後テキストファイル」とも記載する。また、テキストファイルは、ＣＯＢＯＬ、Ｃ、Ｃ＋＋、ＪＡＶＡ（登録商標）等のプログラミング言語で記載されたソースファイルであってもよく、その他の種類のテキストファイルであってもよい。
【００１９】
記憶部１１には、差分比較部１３の結果出力部１６から出力される出力文書として、差分結果ファイルを記憶する。結果出力部１６は、比較処理部１５によって変更前テキストファイルと変更後のテキストファイルとを比較して検出された差分を示す差分結果ファイルを生成して記憶部１５に格納する。
【００２０】
入力部１２は、ユーザからの文字等の入力を受ける。入力部１２は、例えば、キーボード、マウス、タッチパネル、又は、それらの少なくとも１つの組み合わせ等により構成される。ユーザは、入力部１２によって、変更前テキストファイル及び変更後テキストファイルの内容の入力、除外範囲を指定する入力等を行う。入力部１２は、ユーザから入力された入力内容を示す入力データを、差分比較部１３のデータ取得部１４に出力する。
【００２１】
差分比較部１３は、記憶部１１に格納された変更前テキストファイルと変更後テキストファイルとを比較して、それらの差分を検出する。このときに、差分比較部１３は、ユーザから入力部１２に対して入力された除外範囲は、テキストファイルの比較における差分の検出対象から除外する。差分比較部１３は、例えば、ＣＰＵ（Central Processing Unit）を含み、ＣＰＵがＣＵＩ（Character User Interface）環境を提供するＯＳ（Operating System）及びコマンドラインツール等を含むプログラムを実行することによって、その機能を実現する。このコマンドラインツールを実行することによって、後述する各種コマンドの機能が実現される。差分比較部１３は、データ取得部１４、比較処理部１５、及び、結果出力部１６を有する。
【００２２】
データ取得部１４は、変更前テキストファイル、変更後テキストファイル、及び、除外範囲を示す入力データを取得する。データ取得部１４は、変更前テキストファイル及び変更後テキストファイルを記憶部１１から読み出して取得し、入力データを入力部１２から取得する。
【００２３】
データ取得部１４は、除外範囲解析部１７を有する。除外範囲解析部１７は、データ取得部１４が取得した入力データに基づいて、どの範囲が差分の検出対象としない除外範囲として指定されたかを解析する。データ取得部１４は、記憶部１１から取得した変更前テキストファイル及び変更後テキストファイルのデータと、除外範囲解析部１７が解析した除外範囲を示す除外範囲データとを比較処理部１５に出力する。
【００２４】
比較処理部１５は、変更前テキストファイルと変更後テキストファイルとを比較して、差分を検出する。このとき、比較処理部１５は、除外範囲解析部１７から出力された除外範囲データによって示される除外範囲を、差分を検出する対象から除外する（除外範囲内にある差分は無視する）。比較処理部１５が実行する処理の詳細については後述する。
【００２５】
結果出力部１６は、比較処理部１５が検出した差分（除外範囲内の差分を除いた差分）を示す差分結果ファイルを生成して記憶部１１に格納する。
【００２６】
そのほか、情報処理装置１０は、テキストファイル、差分結果ファイル及びコマンドラインユーザインタフェース等が表示される表示部（図示せず）を有する。表示部は、例えば、液晶ディスプレイ、プラズマディスプレイ、及び、有機ＥＬ（Electro-Luminescence）ディスプレイ等によって構成される。なお、表示部は、入力部１２とともにタッチパネルを構成していてもよい。後述するコマンドラインは、表示部に表示されることになる。
【００２７】
以下、情報処理装置１０における除外範囲指定方法と、差分比較処理について、それぞれ分けて説明する。なお、差分比較とは、２つのテキストファイルを比較して、それらの差分を検出することを意味する。
【００２８】
まず、除外範囲指定方法について説明する。実施の形態１においては、コマンドオプションでユーザが除外範囲を指定する方法について説明する。つまり、情報処理装置１０は、差分比較を実行するコマンド文字列に付随して用いられるオプション文字列によって、除外範囲を指定する。
【００２９】
以下、具体的に説明する。ここでは、差分比較を実行するコマンド文字列が「diff」であるものとして説明する。例えば、除外範囲を指定せずに、変更前テキストファイル「fig1.txt」と変更後テキストファイル「fig2.txt」との差分比較を実行する場合には、ユーザは、コマンド及び比較対象とする２つのテキストファイルのファイル名を指定した、次の文字列を、入力部１２によってコマンドラインに入力する。なお、ファイル名を指定する場合は、相対パス又は絶対パスで指定を行ってもよいことは言うまでもない。
【００３０】
diff fig1.txt fig2.txt
【００３１】
入力部１２は、ユーザによって入力された文字列を示す入力データをデータ取得部１４に出力する。データ取得部１４は、入力データが示す文字列において、コマンド「diff」が指定されている場合、コマンドとともに指定されているテキストファイル「fig1.txt」及び「fig2.txt」を記憶部１１から取得して、比較処理部１５に出力する。比較処理部１５は、データ取得部１４から出力された２つのテキストファイル「fig1.txt」及び「fig2.txt」を比較して、それらの差分を検出する。比較処理部１５は、２つのテキストファイルのそれぞれにおいて、差分が検出された箇所のデータを結果出力部１６に出力する。結果出力部１６は、比較処理部１５から出力されたデータに基づいて差分を示す差分結果ファイルを生成して、記憶部１１に格納する。
【００３２】
実施の形態１においては、差分比較を実行するコマンド文字列において、さらに除外範囲を指定するオプション文字列を追加する。オプション文字列による除外範囲の指定方法として、以下の２種類が挙げられる。
【００３３】
第１に、除外範囲となる桁の範囲を指定する方法（桁範囲指定方法）が挙げられる。この方法では、次のオプション文字列によって除外範囲を指定する。
【００３４】
xm-n
【００３５】
「ｍ」は、除外範囲の開始桁位置を示す数字となり、「ｎ」は、除外範囲の終了桁位置を示す数字となる。なお、ｍ、ｎは桁数を示す任意の整数とする。「x」は、桁範囲を指定するオプション文字列の開始を示す文字であり、「-」は、除外範囲の開始桁位置を示す数字ｍと、除外範囲の終了桁位置を示す数字ｍとを分離する文字である。「x」及び「-」は、ここで例示した文字に限られず、任意の文字としてよく、その文字数も２文字以上としてもよい。
【００３６】
ユーザは、この規則に従って、除外範囲を指定する場合には、例えば、次の文字列を、入力部１２によってコマンドラインに入力する。
【００３７】
diff -xm-n fig1.txt fig2.txt
【００３８】
ユーザは、除外範囲を指定する場合、このように、除外範囲の開始桁位置と除外範囲の終了桁位置とを指定するオプション文字列を、差分比較を実行するコマンド文字列と併せて、入力部１２によってコマンドラインに入力する。
【００３９】
また、除外範囲となる桁の範囲を指定する方法（桁範囲指定方法）として、次のオプション文字列によって除外範囲を指定するようにしてもよい。
【００４０】
xm yn
【００４１】
「ｍ」及び「ｎ」については、上記と同様であるため、説明を省略する。「ｘ」は、除外範囲の開始桁位置を示す数字ｍの開始を示すオプション文字であり、「ｙ」は、除外範囲の終了桁位置を示す数字ｎの開始を示すオプション文字である。「ｘ」及び「ｙ」のそれぞれは、ここで例示した文字に限られず、任意の文字としてよく、その文字数も２文字以上としてもよい。
【００４２】
ユーザは、この規則に従って、除外範囲を指定する場合には、例えば、次の文字列を、入力部１２によってコマンドラインに入力する。
【００４３】
diff -xm -yn fig1.txt fig2.txt
【００４４】
なお、この指定方法においては、オプション文字「ｘ」、「ｙ」の並び順がこの通りであり、除外範囲の開始桁位置を示す数字ｍ、及び、除外範囲の終了桁位置を示す数字ｎが昇順に指定されるように制限を設けることが好ましい。例えば、データ取得部１４は、入力部１２から出力された入力データが示す文字列において、オプション文字ｘ、ｙが、ｘ、ｙの順に並んでいない場合、もしくは、除外範囲の開始桁位置を示す数字ｍ及び除外範囲の終了桁位置を示す数字ｎが昇順となっていない場合には、比較処理部１５によるテキストファイルの比較を抑止して、コマンドラインにオプション文字列のエラーを表示するようにしてもよい。
【００４５】
第２に、除外範囲となる桁を１つずつ全桁指定する方法（全桁指定方法）が挙げられる。この方法では、次のオプション文字列によって除外範囲を指定する。
【００４６】
xm
【００４７】
「ｍ」は、除外範囲とする桁を示す数字である。なお、ｍは桁数を示す任意の整数とする。「ｘ」は、除外範囲とする桁位置を示す数字「ｍ」の開始を示すオプション文字である。「x」は、ここで例示した文字に限られず、任意の文字としてよく、その文字数も２文字以上としてもよい。
【００４８】
ユーザは、この規則に従って、除外範囲を指定する場合には、例えば、次の文字列を、入力部１２によってコマンドラインに入力する。
【００４９】
diff -xm fig1.txt fig2.txt
【００５０】
この方法において、例えば、１桁目から６桁目までを除外範囲として指定する場合には、次のように、オプション文字列を指定することになる。
【００５１】
diff -x1 -x2 -x3 -x4 -x5 -x6 fig1.txt fig2.txt
【００５２】
なお、複数の桁位置を除外範囲として指定するパターンは、ここで例示したパターンに限られない。例えば、同様にして、これとは異なる連続する複数桁を指定するようにしてもよく、連続しない複数の桁を指定するようにしてもよい。このように、除外範囲を指定するオプション文字列は、複数のオプション文字列を繰り返し指定することが可能である。これは、桁範囲指定方法についても同様である。なお、オプション文字列は、オプション文字と、除外範囲の桁とを指定するものであれば、上述した例に限られず、適宜、変更して実施するようにしてもよい。
【００５３】
このように、除外範囲は、桁範囲指定方法及び全桁指定方法のいずれを使用して指定してもよい。差分比較部１３は、２つのテキストファイルを比較して、このようにして指定された除外範囲を除外した範囲内における差分を検出する。具体的には、入力部１２は、ユーザが入力した文字列を示す入力データを生成してデータ取得部１４に出力する。この文字列には、上述したように、コマンド文字列、オプション文字列、及び、比較対象とする２つのテキストファイルのファイル名が含まれる。データ取得部１４は、入力部１２から出力された入力データが示す２つのテキストファイルを記憶部１１から取得する。
【００５４】
また、データ取得部１４の除外範囲解析部１７は、入力データが示すオプション文字列に基づいて、ユーザによって指定された除外範囲を特定する。除外範囲解析部１７は、上述した規則に従って、除外範囲を特定して、特定した除外範囲を示す除外範囲データを生成する。例えば、入力データが示すオプション文字列において、桁範囲指定方法によって除外範囲が記述されている場合、除外範囲解析部１７は、ｍ桁目からｎ桁目までの範囲を除外範囲とすることを示す除外範囲データを生成する。データ取得部１４は、取得した２つのテキストファイルと、除外範囲解析部１７が生成した除外範囲データとを比較処理部１５に出力する。
【００５５】
そして、比較処理部１５は、データ取得部１４から出力された２つのテキストファイルを比較して、データ取得部１４から出力された除外範囲データが示す除外範囲を除いた範囲において、それらの差分を検出する。
【００５６】
続いて、以上に説明した除外範囲指定方法によって指定された除外範囲に基づいて、差分比較部１３が実行する差分比較処理について、以下に説明する。差分比較処理は、除外範囲を比較対象外として比較をすることで、除外範囲外の差分を検出する第１の方法と、除外範囲を比較対象外とせずに比較をした後に除外範囲における差分を削除することで、除外範囲外の差分を検出する第２の方法がある。第１の方法については、図２〜図１０を参照して説明し、第２の方法については、図１１及び図１２を参照して説明する。なお、比較方法として、変更前テキストファイル及び変更後テキストファイルを１行ずつ比較する方法と、変更前テキストファイル及び変更後テキストファイルを一括して比較する方法がある。
【００５７】
まず、第１の方法において、差分比較部１３が変更前テキストファイル及び変更後テキストファイルを１行ずつ比較する場合における差分比較処理について説明する。図２は、この差分比較対象において比較対象とするテキストファイルの一例を示す図である。図２（ａ）は、変更前テキストファイルの一例を示し、図２（ｂ）は、変更後テキストファイルの一例を示す。図２（ａ）、（ｂ）のテキストファイルの最上部「１２３・・・ＸＹＺ」は、桁位置を明確にするために示している文字列であり、実際のテキストファイルには含まれていない。図２（ａ）、（ｂ）において、１桁目〜６桁目は、一連番号領域であり、３１桁目〜３６桁目（図２の最上部の文字「Ｕ」に対応する桁から、文字「Ｚ」に対応する桁）は、コメントが記載される領域であるものとして説明する。すなわち、図２に示すテキストファイルは、ＣＯＢＯＬのソースプログラムが記述されている場合について例示している。図２（ａ）の変更前テキストファイルのファイル名を「fig1.txt」とし、図２（ｂ）の変更後テキストファイルのファイル名を「fig2.txt」とした例について説明する。
【００５８】
図２（ｂ）の変更後テキストファイルの２行目、４行目は、図２（ａ）の変更前テキストファイルからプログラムのロジック部分を変更している。変更後テキストファイルの３行目、５行目及び６行目は、変更前テキストファイルからコメント部分を変更した箇所である。これらの行はロジック部分が変更されていないため、ロジック部分の差分のみを検出したい場合には、それらの変更箇所は差分として検出されたくない箇所となる。なお、変更箇所の明確化のため、変更箇所を囲み線によって示しているが、実際には記載されていないものとする。
【００５９】
図３は、差分比較部１３の差分比較処理の第１の例を示すフローチャートである。図３を用いて、差分比較部１３の差分比較処理について説明する。
【００６０】
まず、ユーザは、前述の除外範囲指定方法によって、差分比較のコマンドとともに除外範囲を入力部１２に対して入力することによって、差分比較のコマンドを実行する。除外範囲解析部１７は、入力部１２から入力された入力データが示すオプション文字列に基づいて、除外範囲を確定する（ステップＳ１）。例えば、ユーザは、図３に示した変更前テキストファイル及び変更後テキストファイルにおいて、３０桁目〜３６桁目のコメント部分の比較をしないようにしたい場合に、次のいずれかの文字列をコマンドラインに入力する。なお、本来のコメント部分は、３１桁目〜３６桁目であるが、図２（ａ）に示す変更前テキストファイルにおいて誤って３０行目に記載されたコメントの記載を除外するために、３０桁目〜３６桁目を除外範囲とする場合について示している。
【００６１】
diff -x30-36 fig1.txt fig2.txt
diff -x30 -y36 fig1.txt fig2.txt
diff -x30 -x31 -x32 -x33 -x34 -x35 -x36 fig1.txt fig2.txt
【００６２】
このような文字列が入力された場合、除外範囲解析部１７は、そのオプション文字列に基づいて、変更前テキストファイル及び変更後テキストファイルの比較における除外範囲が、３０桁目〜３６桁目であると特定する。
【００６３】
比較処理部１５は、除外範囲となる桁位置にある文字をマスクする文字列を作成する（ステップＳ２）。ここで、比較処理部１５は、データ取得部１４から出力された除外範囲データが示す除外範囲に基づいて、マスクすべき文字列（１文字を含む）の長さを特定して、文字列を作成するようにすればよい。この文字列は、どのような文字列から構成されていてもよい。例えば、上述したように、３０桁目〜３６桁目までの連続した６桁の範囲をマスクする場合には、「000000」のように同じ文字の集合から構成されるようにしてもよく、「012345」のように異なる文字の集合から構成されるようにしてもよい。変更前テキストファイルと、変更後テキストファイルのそれぞれに対して、同一の文字列でマスクさえすれば、比較によって差分は検出されなくなるからである。
【００６４】
データ取得部１４は、記憶部１１から変更前テキストファイル（ファイル１）のデータを１行分読み込み、読み込んだデータを比較処理部１５に出力する。比較処理部１５は、データ取得部１４から出力されたデータが示す１行分の文字列において、除外範囲となる桁位置をステップＳ２で作成した文字列でマスクする。そして、比較処理部１５は、マスク後の１行分の文字列を示すデータを比較用のテンポラリ領域１へ格納する（ステップＳ３）。
【００６５】
また、データ取得部１４は、記憶部１１から変更後テキストファイル（ファイル２）のデータを１行分読み込み、読み込んだデータを比較処理部１５に出力する。比較処理部１５は、データ取得部１４から出力されたデータが示す１行分の文字列において、除外範囲となる桁位置をステップＳ２で作成した文字列でマスクする。そして、比較処理部１５は、マスク後の１行分の文字列を示すデータを比較用のテンポラリ領域２へ格納する（ステップＳ４）。テンポラリ領域１、２は、例えば、記憶部１１に設けられる。
【００６６】
比較処理部１５は、テンポラリ領域１に格納されたデータが示す文字列と、テンポラリ領域２に格納されたデータが示す文字列とを比較する（ステップＳ５）。これによって、比較処理部１５は、比較した文字列に差分があるか否か（文字列同士が同一であるか否か）を判定する（ステップＳ６）。
【００６７】
差分がある場合（ステップＳ６のＹｅｓ）、比較処理部１５は、比較した行のマスク前の文字列を示すデータを、結果出力部１６に出力する。結果出力部１６は、比較処理部１５から出力されたデータの文字列を示すデータを、差分を示すデータとして記憶部１１の差分結果ファイルに出力する（ステップＳ７）。このときに、差分を示すデータが示す文字列には、後述する図５に示すように、差分が検出された行の文字列以外に、変更前と変更後の文字列を明確に区別するための文字列等の他の文字列を含んでいてもよい。差分結果ファイルは、例えば、結果出力部１６が最初にデータを出力するときに、結果出力部１６によって記憶部１１に生成される。
【００６８】
そして、差分比較部１３は、変更前テキストファイル及び変更後テキストファイルの内容を全て比較したか否かを判定する（ステップＳ８）。データ取得部１４によって、変更前テキストファイル及び変更後テキストファイルの全ての行のデータを読み出している場合には、それらの全てを比較したと判定し、全ての行のデータを読み出していない場合には、それらの全てを比較していないと判定する。
【００６９】
差分がない場合（ステップＳ６のＮｏ）、差分比較部１３は、ステップＳ８の判定処理を実行する。
【００７０】
変更前テキストファイル及び変更後テキストファイルの内容が全て比較されていない場合には（ステップＳ８のＮｏ）、差分比較部１３は、ステップＳ３に戻って処理を続ける。例えば、差分比較部１３は、変更前テキストファイル及び変更後テキストファイルにおいて、直前にステップＳ５において比較された行の次の行について、ステップＳ３〜Ｓ５の処理を実行する。
【００７１】
変更前テキストファイル及び変更後テキストファイルの内容が全て比較された場合には（ステップＳ８のＹｅｓ）、差分比較部１３は差分比較処理を終了する。この一連の処理によって、結果出力部１６によって、比較結果（差分）を示す差分結果ファイルが生成されて、記憶部１１に格納されることになる。
【００７２】
図４（ａ）は、以上に説明した差分比較部１３が実行する差分比較処理の概念図を示したものである。図４（ａ）に示すように、差分比較処理においては、変更前テキストファイル、変更後テキストファイル、及び、指定された除外範囲に基づいて、差分比較処理がなされる。この差分比較処理により、除外範囲内の差分を除いた差分が差分結果として出力され、除外範囲内の差分については差分結果として出力されない。
【００７３】
図４（ｂ）は、図４（ａ）との比較のために記載した差分比較処理の概念図であり、図４（ｂ）は、除外範囲を考慮しない差分比較処理の概念図を示したものである。図４（ｂ）に示す差分比較処理では、変更前テキストファイル及び変更後テキストファイルに基づいて、通常の差分比較処理（除外範囲を考慮しない差分比較処理）がなされる。この比較により、通常の差分結果として、全ての差分が出力される。
【００７４】
図５は、実施の形態１にかかる差分比較処理により得られる差分結果ファイルの内容を比較するための図である。なお、図５（ａ）及び図５（ｂ）のそれぞれにおいて、それぞれの図で示す比較結果を得るにあたり、コマンドラインに入力された文字列も示している。図５（ａ）は、差分比較部１３によって除外範囲を除外して差分比較処理を実行することにより得られた差分結果ファイルの内容を示したものである。図５（ａ）に示す差分結果ファイルには、ロジック部分に変更箇所がある変更前テキストファイル及び変更後テキストファイルの２行目及び４行目が記載されており、コメント部分のみに変更箇所がある変更前テキストファイル及び変更後テキストファイルの３行目、５行目及び６行目は記載されていない。
【００７５】
図５（ｂ）は、除外範囲を除外せずに差分比較処理を実行した場合に得られる差分結果ファイルの内容を示したものである。図５（ｂ）の差分結果ファイルには、変更前テキストファイル及び変更後テキストファイルの２行目及び４行目のみならず、コメント部分のみに変更箇所がある３行目、５行目及び６行目も記載されている。それに対して、図５（ａ）の差分結果ファイルは、図５（ｂ）の差分結果ファイルと比較すると、ロジック部分のみの変更行が示されている。そのため、ユーザは、差分結果ファイルの内容を参照することによって、プログラムロジックの変更箇所を容易に特定することができる。これは、差分比較部１３が、コメント部分を除外範囲としてマスクし、マスク後の内容に基づいて差分比較処理を実行することで、除外範囲であるコメント部分に差分があっても「変更有り」として検出されないようにしているためである。
【００７６】
続いて、差分比較部１３が変更前テキストファイル及び変更後テキストファイルを１行ずつ比較する場合における他の差分比較処理について説明する。図６は、差分比較部１３の差分比較処理の第２の例を示すフローチャートである。
【００７７】
なお、図６のステップＳ９は、図３のステップＳ１と同様の処理であるため、説明を省略する。
【００７８】
データ取得部１４は、記憶部１１から変更前テキストファイル（ファイル１）のデータを１行分読み込み、読み込んだデータを比較処理部１５に出力する。比較処理部１５は、データ取得部１４から出力されたデータが示す１行分の文字列において、除外範囲となる桁位置の文字を削除する。そして、比較処理部１５は、削除後の１行分の文字列を示すデータを比較用のテンポラリ領域１へ格納する（ステップＳ１０）。
【００７９】
また、データ取得部１４は、記憶部１１から変更後テキストファイル（ファイル２）のデータを１行分読み込み、読み込んだデータを比較処理部１５に出力する。比較処理部１５は、データ取得部１４から出力されたデータが示す１行分の文字列において、除外範囲となる桁位置の文字を削除する。そして、比較処理部１５は、削除後の１行分の文字列を示すデータを比較用のテンポラリ領域２へ格納する（ステップＳ１１）。
【００８０】
ステップＳ１２〜Ｓ１５は、図３のステップＳ５〜Ｓ８と同様の処理であるため、説明を省略する。このように、差分比較部１３は、除外範囲の文字列を削除し、削除後の内容に基づいて差分比較処理を実行しているため、除外範囲は「変更有り」として検出されない。
【００８１】
なお、図３、図６に示した差分比較処理で対象とする変更後テキストファイルにおいて、変更前テキストファイルと比較して行削除又は行挿入が行われている場合は、一般的な差分比較アルゴリズムにおける、行削除又は行挿入を検出するアルゴリズムを利用して、変更前テキストファイルと変更後テキストファイルとで対応する行を特定するようにすればよい。そして、特定したそれぞれの行において、上述したように除外範囲をマスク又は削除して比較を行うようにすればよい。
【００８２】
続いて、第１の方法において、差分比較部１３が変更前テキストファイル及び変更後テキストファイルをファイル全体で一括して比較する場合における差分比較処理について説明する。図７は、この差分比較処理において比較対象とするテキストファイルの一例を示す図である。図７（ａ）は、変更前テキストファイルの一例を示し、図７（ｂ）は、変更後テキストファイルの一例を示す。図７（ａ）の変更前テキストファイルのファイル名を「fig2_a1.txt」とし、図７（ｂ）の変更後テキストファイルのファイル名を「fig2_a2.txt」とした例について説明する。
【００８３】
図７（ｂ）の変更後テキストファイルの１１行目は、変更前テキストファイルに対して挿入された行であり、７行目及び１４行目は、変更前テキストファイルからプログラムのロジック部分を変更している。変更後テキストファイルの１２行目及び１３行目は、変更後テキストファイルの１１行目が追加されたことに付随して、一連番号が変更された行であり、ロジック部分は変更されていない。そのため、この行は差分比較において、差分として検出したくない行である。そのため、以下では、一連番号領域である１桁目〜６桁目を除外範囲として指定した場合について説明する。なお、変更箇所の明確化のため、変更箇所を囲み線によって示しているが、実際には記載されていないものとする。
【００８４】
続いて、差分比較部１３が変更前テキストファイル及び変更後テキストファイルをファイル全体で一括して比較する場合における差分比較処理について説明する。図８は、差分比較部１３の差分比較処理の第３の例を示すフローチャートである。
【００８５】
図８のステップＳ１６、１７は、図３のステップＳ１、Ｓ２と同様の処理であるため、説明を省略する。
【００８６】
データ取得部１４は、記憶部１１から変更前テキストファイル（ファイル１）を読み込み、読み込んだ変更前テキストファイルを比較処理部１５に出力する。比較処理部１５は、データ取得部１４から出力された変更前テキストファイルが示すテキストの各行の文字列において、除外範囲となる桁位置をステップＳ１７で作成した文字列でマスクする。これによって、比較処理部１５は、除外範囲の文字列がマスクされた比較用のテンポラリファイル１を生成する（ステップＳ１８）。比較処理部１５は、生成したテンポラリファイル１をテンポラリ領域１に格納する。
【００８７】
また、データ取得部１４は、記憶部１１から変更後テキストファイル（ファイル２）を読み込み、読み込んだ変更後テキストファイルを比較処理部１５に出力する。比較処理部１５は、データ取得部１４から出力された変更後テキストファイルが示すテキストの各行の文字列において、除外範囲となる桁位置をステップＳ１７で作成した文字列でマスクする。これによって、比較処理部１５は、除外範囲の文字列がマスクされた比較用のテンポラリファイル２を生成する（ステップＳ１９）。比較処理部１５は、生成したテンポラリファイル２をテンポラリ領域２に格納する。
【００８８】
比較処理部１５は、テンポラリ領域１に格納されたテンポラリファイル１と、テンポラリ領域２に格納されたテンポラリファイル２を比較する（Ｓ２０）。これによって、比較処理部１５は、差分があるか否か（文字列同士が同一であるか否か）を判定する（ステップＳ２１）。変更後テキストファイルにおいて、変更前テキストファイルと比較して行削除又は行挿入が行われている場合は、上述したように、一般的な差分比較アルゴリズムにおける、行削除又は行挿入を検出するアルゴリズムを利用して、挿入された行及び削除された行を検出するようにすればよい。
【００８９】
差分がある場合には（ステップＳ２１のＹｅｓ）、比較処理部１５は、変更前テキストファイル及び変更後テキストファイルのそれぞれにおける、差分が検出された各行のマスク前の文字列を示すデータを、差分の文字列を結果出力部１６に出力する。結果出力部１６は、比較処理部１５から出力されたデータの文字列を示すデータを、差分を示すデータとして記憶部１１の差分結果ファイルに出力する（ステップＳ２２）。このとき、上述したように、差分を示すデータが示す文字列には、差分が検出された行の文字列以外に、変更前と変更後の文字列を明確に区別するための文字列等の他の文字列を含めてもよい。そして、差分比較部１３は、差分比較処理を終了する。これによって、結果出力部１６によって、比較結果（差分）を示す差分結果ファイルが生成されて、記憶部１１に格納されることになる。
【００９０】
差分がない場合には（ステップＳ２１のＮｏ）、差分比較部１３は、差分比較処理を終了する。この場合、結果出力部１６によって、差分結果ファイルには何も出力されない。すなわち、差分結果ファイルは生成されない。
【００９１】
以上に説明した差分比較部１３が実行する差分比較処理の概念図は、図４（ａ）の通りである。図９は、差分比較処理により得られる差分結果ファイルの内容を比較する図である。なお、図９（ａ）及び図９（ｂ）のそれぞれにおいて、それぞれの図で示す比較結果を得るにあたり、コマンドラインに入力された文字列も示している。図９（ａ）は、差分比較部１３によって除外範囲を除外して差分比較処理を実行することにより得られた差分結果ファイルを示したものである。図９（ａ）の差分結果ファイルには、ロジック部分に変更点がある変更後テキストファイルの７行目、１１行目及び１４行目と、変更前テキストファイルの７行目及び１３行目とが記載されており、一連番号領域のみに変更箇所がある変更後テキストファイルの１２行目及び１３行目は記載されていない。
【００９２】
図９（ｂ）は、除外範囲を除外せずに差分比較処理を実行した場合に得られる差分結果ファイルを示したものである。図９（ｂ）の差分結果ファイルには、変更後テキストファイルの７行目、１１行目及び１４行目と、変更前テキストファイルの７行目及び１３行目のみならず、一連番号領域のみに変更箇所がある変更後テキストファイルの１２行目及び１３行目と、変更前テキストファイルの１１行目及び１２行目も記載されている。それに対して、図９（ａ）の差分結果ファイルは、図９（ｂ）の差分結果ファイルと比較すると、ロジック部分のみの変更行が示されている。そのため、ユーザは、差分結果ファイルの内容を参照することによって、プログラムロジックの変更箇所を容易に特定することができる。これは、差分比較部１３が、一連番号領域を除外範囲としてマスクし、マスク後の内容に基づいて差分比較処理を実行することで、除外範囲である一連番号領域に差分があっても「変更有り」として検出されないためである。
【００９３】
続いて、差分比較部１３が変更前テキストファイル及び変更後テキストファイルをファイル全体で一括して比較する場合における他の差分比較処理について説明する。図１０は、差分比較部１３の差分比較処理の第４の例を示すフローチャートである。
【００９４】
図１０のステップＳ２３は、図８のステップＳ１６と同様の処理であるため、説明を省略する。
【００９５】
データ取得部１４は、記憶部１１から変更前テキストファイル（ファイル１）を読み込み、読み込んだ変更前テキストファイルを比較処理部１５に出力する。比較処理部１５は、データ取得部１４から出力された変更前テキストファイルが示すテキストの各行の文字列において、除外範囲となる桁位置の文字列を削除する。これによって、比較処理部１５は、除外範囲の文字列が削除された比較用のテンポラリファイル１を生成する（ステップＳ２４）。比較処理部１５は、生成したテンポラリファイル１をテンポラリ領域１に格納する。
【００９６】
また、データ取得部１４は、記憶部１１から変更後テキストファイル（ファイル２）を読み込み、読み込んだ変更後テキストファイルを比較処理部１５に出力する。比較処理部１５は、データ取得部１４から出力された変更後テキストファイルが示すテキストの各行の文字列において、除外範囲となる桁位置の文字列を削除する。これによって、比較処理部１５は、除外範囲の文字列が削除された比較用のテンポラリファイル２を生成する（ステップＳ２５）。比較処理部１５は、生成したテンポラリファイル２をテンポラリ領域２に格納する。
【００９７】
ステップＳ２６〜Ｓ２８は、図９のステップＳ２０〜Ｓ２２と同様の処理であるため、説明を省略する。このように、差分比較部１３は、除外範囲の文字列を削除し、削除後の内容に基づいて差分比較処理を実行しているため、除外範囲は「変更有り」として検出されない。
【００９８】
以上、図３及び図８を参照して説明した差分比較処理では、変更前テキストファイルと変更後テキストファイルのそれぞれのテキストにおいて、ユーザが指定した除外範囲を同一の文字列でマスクして比較を行うようにしている。また、図６及び図１０を参照して説明した差分比較処理は、変更前テキストファイルと変更後テキストファイルのそれぞれのテキストにおいて、ユーザが指定した除外範囲を削除して比較を行うようにしている。これによれば、比較結果に除外範囲内の差分が反映されないようにすることができる。
【００９９】
続いて、上述した第２の方法について説明する。図１１は、第２の方法による差分比較処理を実行する情報処理装置の一例を示す全体構成図である。図１１に示した情報処理装置２０は、図１に示した情報処理装置１０と比較して、さらに除外範囲外差分抽出部２８を有する。
【０１００】
記憶部２１、入力部２２の構成及び機能は、図１に示した記憶部１１、入力部１２と同様であるため、説明を省略する。差分比較部２３内のデータ取得部２４の構成及び機能も、図１に示したデータ取得部１４と同様であるため、説明を省略する。
【０１０１】
比較処理部２５は、変更前テキストファイルと変更後テキストファイルとを比較して、それらの差分を検出する。なお、比較処理部１５は、除外範囲を考慮せずに、変更前テキストファイルと変更後テキストファイルとの差分を検出する。また、比較処理部２５は、データ取得部２４から出力された除外範囲データを結果出力部２６に出力する。
【０１０２】
結果出力部２６は、比較処理部２５によって変更前テキストファイルと変更後テキストファイルとを比較して検出された差分を示す差分結果ファイル（通常の差分結果ファイル）を記憶部２１に格納する。結果出力部２６の除外範囲外差分抽出部２８は、通常の差分結果ファイル及びユーザが指定した除外範囲に基づいて、通常の差分結果ファイルが示す差分のうち、除外範囲内の差分を除いた差分を抽出して、抽出した差分を示す差分結果ファイル（除外範囲内の差分を除く差分結果ファイル）を生成して記憶部２１に格納する。また、除外範囲外差分抽出部２８は、通常の差分結果ファイル及びユーザが指定した除外範囲に基づいて、通常の差分結果ファイルが示す差分のうち、除外範囲内の差分を抽出して、抽出した差分を示す差分結果ファイル（除外範囲内の差分結果ファイル）を生成して記憶部２１に格納するようにしてもよい。なお、結果出力部２６は、ユーザが指定した除外範囲を、比較処理部２５から出力された除外範囲データによって認識するようにすればよい。
【０１０３】
続いて、第２の方法における他の差分比較処理について説明する。図１２は、差分比較部２３の差分比較処理の第５の例を示すフローチャートである。図１２を用いて、差分比較部２３の差分比較処理について説明する。
【０１０４】
まず、除外範囲解析部２７は、図３のステップＳ１と同様に、除外範囲指定方法に準じて、除外範囲を確定する（ステップＳ２９）。
【０１０５】
データ取得部１４は、変更前テキストファイル（ファイル１）のデータを読み込み、読み込んだデータを比較処理部２５に出力する。また、データ取得部１４は、記憶部１１から変更後テキストファイル（ファイル２）のデータを読み込み、読み込んだデータを比較処理部１５に出力する。
【０１０６】
比較処理部２５は、データ取得部１４から出力されたデータに基づいて、変更前テキストファイルが示すテキストと、変更後テキストファイルが示すテキストとを比較する。ここで、比較処理部２５は、除外範囲を考慮しない通常の差分比較処理を実行する（ステップＳ３０）。これによって、比較処理部２５は、比較したテキストに差分があるか否か（文字列同士が同一であるか否か）を判定する（ステップＳ３１）。
【０１０７】
差分がある場合には（ステップＳ３１のＹｅｓ）、比較処理部１５は、変更前テキストファイル及び変更後テキストファイルのそれぞれにおける、差分が検出された各行の文字列を示すデータを、結果出力部１６に出力する。比較処理部１５から出力されたデータの文字列を示すデータを、差分を示すデータとして記憶部１１の通常の差分結果ファイルに出力する（ステップＳ３２）。これによって、結果出力部１６によって、除外範囲を考慮しない通常の比較結果（差分）を示す通常の差分結果ファイルが生成されて、記憶部１１に格納されることになる。
【０１０８】
差分がない場合には（ステップＳ３１のＮｏ）、差分比較部１３は差分比較処理を終了し、通常の差分結果ファイルには何の文字列も出力されない。すなわち、通常の差分結果ファイルは生成されない。
【０１０９】
結果出力部２６内の除外範囲外差分抽出部２８は、通常の差分結果ファイル及び比較処理部２５から出力された除外範囲データが示す除外範囲に基づいて、以下に説明するように、除外範囲内の差分を除く比較結果（差分）を示す差分結果ファイルを生成する。まず、除外範囲外差分抽出部２８は、比較処理部２５が生成した通常の差分結果ファイルから、変更前テキストファイル及び変更後テキストファイルの１つ分の差分を示すデータを読み込む（ステップＳ３３）。ここで、１つ分の差分とは、例えば、図５（ａ）では、「2c2」以降から「4c4」よりも前までの文字列と、「4c4」以降の文字列とのそれぞれが該当する。また、図５（ｂ）では、「2,6c2,6」以降の全ての文字列が該当する。そして、除外範囲外差分抽出部２８は、読み込んだデータが示す差分が、除外範囲内の差分か否かを判定する（ステップＳ３４）。具体的には、除外範囲外差分抽出部２８は、データで示された差分のうち、変更前の１行あたりの文字列と、それに対応する変更後の１行あたりの文字列とで差分のある桁位置が、除外範囲解析部２７で特定された除外範囲内の桁位置であるか否かを判定する。
【０１１０】
除外範囲内の差分である場合には（ステップＳ３４のＹｅｓ）、除外範囲外差分抽出部２８は、変更前の１行あたりの文字列と、それに対応する変更後の１行あたりの文字列とを示すデータを、差分を示すデータとして除外範囲内の差分結果ファイルに出力する（ステップＳ３５）。なお、このとき、１つ分の差分のデータにおいて、連続する複数の行が除外範囲内の差分であると判定された場合は、図５（ｂ）に示すように、１つ分の差分を示すデータとしてまとめて除外範囲内の差分結果ファイルに出力するようにしてもよい。
【０１１１】
除外範囲内の差分でない（除外範囲外の差分である）場合には（ステップＳ３５のＮｏ）、除外範囲外差分抽出部２８は、変更前の１行あたりの文字列と、それに対応する変更後の１行あたりの文字列とを示すデータを、差分を示すデータとして除外範囲外の差分結果ファイル（除外範囲内の差分を除く差分結果ファイル）に出力する（ステップＳ３６）。なお、このとき、１つ分の差分のデータにおいて、連続する複数の行が除外範囲外の差分であると判定された場合は、上述したように、１つ分の差分を示すデータとしてまとめて除外範囲外の差分結果ファイルに出力するようにしてもよい。すなわち、ステップＳ３６により、除外範囲外差分抽出部２８は、除外範囲外の差分を抽出する。
【０１１２】
ステップＳ３５又はＳ３６の後、除外範囲外差分抽出部２８は、比較処理部２５が生成した通常の差分結果ファイルの内容を全て処理したか否かを判定する（ステップＳ３７）。すなわち、除外範囲外差分抽出部２８は、通常の差分結果ファイルの全ての差分を示すデータを読み出している場合には、全て処理したと判定し、全ての差分を示すデータを読み出していない場合には、全て処理していないと判定する。
【０１１３】
通常の差分結果ファイルの内容を全て処理していない場合（ステップＳ３７のＮｏ）、除外範囲外差分抽出部２８は、直前に処理した１つ分の差分の次に差分結果ファイルに記載された１つ分の差分のデータを読み込み（ステップＳ３３）、処理を実行する（ステップＳ３４）。通常の差分結果ファイルの内容を全て処理した場合（ステップＳ３７のＹｅｓ）、除外範囲外差分抽出部２８は、処理を終了する。この一連の処理によって、結果出力部２６によって、除外範囲内の差分を除く差分結果ファイルと、除外範囲内の差分結果ファイルとが生成されて記憶部１１に格納されることになる。
【０１１４】
図１３は、以上に説明した差分比較部２３が実行する差分比較処理の概念図を示したものである。図１３に示すように、差分比較処理においては、まず、除外範囲を考慮しない差分比較処理（通常の差分比較処理）が実行される。その後に、通常の差分比較処理で得られた差分結果、及び、指定された除外範囲に基づいて、除外範囲内を差分を除いた差分結果が出力される。また、除外範囲の差分を除く過程で、除外範囲内の差分結果も出力される。
【０１１５】
図１４は、以上に説明した差分比較処理により得られる差分結果ファイルの内容を示している。図１４（ａ）は、除外範囲外の差分結果ファイルの内容を示したものであり、図５（ａ）に示す差分結果ファイルの内容と同一となる。
【０１１６】
図１４（ｂ）は、除外範囲内の差分結果ファイルの内容を示したものである。図１４（ｂ）に示す差分結果ファイルには、ロジック部分以外ではなく、除外範囲としたコメント部分のみに変更箇所がある変更前テキストファイル及び変更後テキストファイルの３行目、５行目及び６行目が記載されており、除外範囲外のロジック部分の変更がなされた２行目及び４行目は記載されていない。ここで、図１４（ｂ）では、上述したように、連続する５行目及び６行目の差分を、１つ分の差分としてまとめて記載している。
【０１１７】
これによれば、ユーザは、図１４（ａ）に示すように、ロジック部分のみの変更箇所を差分として示す差分結果ファイルの内容を参照することによって、プログラムロジックの変更箇所を容易に特定することができる。また、ユーザは、図１４（ｂ）に示すように、ロジック部分以外の変更箇所を差分として示す差分結果ファイルの内容を参照することによって、ロジック部分以外の変更箇所を容易に特定することができる。例えば、ユーザは、図１４（ｂ）に示された差分結果ファイルを参照することにより、コメントの変更箇所を容易に確認することができる。
【０１１８】
なお、図１２のステップＳ３０では、変更前テキストファイル及び変更後テキストファイルの全てのデータを読み込んで差分比較処理を実行するようにしてもよく、変更前テキストファイル及び変更後テキストファイルのデータを１行分ずつ読み込んで差分比較処理を実行するようにしてもよい。一行ずつ比較する場合、図３のステップＳ６〜Ｓ８と同様に処理すればよい。具体的には、比較処理部２５は、差分があれば、その差分が検出された変更前テキストファイル及び変更後テキストファイルのそれぞれにおいて比較した行の文字列を示すデータを結果出力部２６に出力する。そして、結果出力部２６は、比較処理部１５から出力されたデータの文字列を示すデータを、差分を示すデータとして記憶部１１の差分結果ファイルに出力する。これを、変更前テキストファイル及び変更後テキストファイルのデータを全て読み込むまで繰り返せばよい。そして、全ての比較が終了したときに、結果出力部２６は、図１２のステップＳ３３以降の処理を開始する。
【０１１９】
ここで、結果出力部２６は、除外範囲内の差分結果ファイルは、生成しないようにしてもよい。また、実施の形態１においては、結果出力部１６又は結果出力部２６は、比較結果を差分結果ファイルに出力する場合について例示したが、比較結果の出力方法はこれに限られない。比較結果の出力先は、ファイルのみに限られず、例えば、標準出力、標準エラー出力、ファイル、メモリイメージ、及び、それらの少なくとも１つとしてもよい。すなわち、結果出力部１６又は結果出力部２６が出力する内容は、標準出力又は標準エラー出力として、情報処理装置１０が有する表示部に表示させるようにしてもよい。
【０１２０】
＜発明の実施の形態２＞
以下、本発明の実施の形態２について説明する。実施の形態２では、環境変数によって除外範囲を指定する場合について説明する。実施の形態２にかかる情報処理装置の構成は、図１に示す情報処理装置１０と同様である（図１１に示す情報処理装置２０と同様であってもよい）ため、説明を省略する。
【０１２１】
以下、環境変数を用いる方法について具体的に説明する。実施の形態２にかかる情報処理装置１０においてテキストファイルを比較して差分を検出する方法は、実施の形態１に記載した通りであり、説明を省略する。実施の形態２においては、ユーザが、除外範囲を指定する任意の環境変数文字列を予め定めておく。そして、ユーザは、その環境変数の設定値として、除外範囲とする桁を設定する。環境変数の設定は、例えば、一般的な環境変数を設定するコマンドによって行うようにすればよい。すなわち、差分比較部１３は、ユーザが、入力部１２によってコマンドラインに対して、環境変数文字列と設定値とを指定して、環境変数を設定するコマンドを入力した場合に、その環境変数文字列で示される環境変数に、指定された設定値を設定する。このとき、差分比較部１３は、設定値を環境変数文字列と関連付けて記憶部１１に格納する。ユーザが、コマンドラインで差分比較のコマンドを実行する前に、環境変数を設定しておくことにより、差分比較のコマンドが実行されたときに、データ取得部１４が記憶部１１に格納された設定値を取得して、データ取得部１４の除外範囲解析部１７が設定値として設定された文字列を解析して、除外範囲となる桁位置を特定する。
【０１２２】
環境変数における除外範囲の設定では、実施の形態１に記載のオプション指定と同様に、桁範囲指定方法及び全桁指定方法の両方が可能である。
【０１２３】
まず、桁範囲指定方法で環境変数を設定する場合について説明する。ここで、環境変数を設定するコマンド文字列が「export」であり、環境変数文字列が「EXCLUDE」ものとして説明する。この場合、ユーザは、コマンド及び除外範囲とする桁範囲を指定した、次の文字列を、入力部１２によってコマンドラインに対して入力する。
【０１２４】
export EXCLUDE=m-n
【０１２５】
「ｍ」は、除外範囲の開始桁位置を示す数字となり、「ｎ」は、除外範囲の終了桁位置を示す数字となる。なお、ｍ、ｎは桁数を示す任意の整数である。「-」は、除外範囲の開始桁位置を示す数字ｍと、除外範囲の終了桁位置を示す数字ｎとを分離する文字である。「-」は、ここで例示した文字に限られず、任意の文字としてよく、その文字数も２文字以上としてもよい。
【０１２６】
さらに、この環境変数の設定では、複数の桁範囲を繰り返し指定することが可能である。例えば、ユーザは、次の文字列を、入力部１２によってコマンドラインに対して入力する。
【０１２７】
export EXCLUDE=1-6,・・・,73-80
【０１２８】
この場合、１桁目から６桁目までの桁範囲と、７３桁目から８０桁目までの桁範囲とが除外範囲として設定される。なお、「・・・」の箇所において、他の桁範囲が指定されている場合には、その桁範囲も除外範囲として設定される。ここで、「,」は、このように、複数の桁範囲が指定された場合に、それらを分離する文字であり、「・・・」は、繰り返しを示す。すなわち、「・・・」では、実際には、少なくとも１つの桁範囲を指定する文字列となる。なお、「・・・」において、桁範囲が指定されない場合は、「,」が１つ不要となることは言うまでもない。なお、「,」は、ここで例示した文字に限られず、任意の文字としてよく、その文字数も２文字以上としてもよい。
【０１２９】
続いて、全桁指定方法で環境変数を設定する場合について説明する。この場合、ユーザは、コマンド及び除外範囲とする桁位置を指定した、次の文字列を、入力部１２によってコマンドラインに対して入力する。
【０１３０】
export EXCLUDE=m
【０１３１】
「m」は、除外範囲とする桁を示す数字である。なお、ｍは桁数を示す任意の整数とする。また、複数の桁が指定された場合に、それらを分離する文字「,」によって、上述と同様に、複数の桁を繰り返し指定することも可能である。
【０１３２】
このように、ユーザは、桁範囲指定方法及び全桁指定方法のいずれかによって、除外範囲とする桁位置を、環境変数として設定することができる。なお、環境変数の設定値とする文字列は、除外範囲の桁位置を指定するものであれば、上述した例に限られず、適宜、変更して実施するようにしてもよい。
【０１３３】
ユーザは、例えば、桁範囲指定方法によって、１桁目から６桁目までを除外範囲としたい場合、環境変数に「1-6」を設定する。また、全桁指定方法によって、１桁目から６桁目までを除外範囲としたい場合、環境変数に「1,2,3,4,5,6」を設定する。そして、次のように、差分比較のコマンドと、比較するテキストファイル「fig1.txt」及び「fig2.txt」を指定した文字列を、入力部１２によってコマンドラインに対して入力すればよい。
【０１３４】
diff fig1.txt fig2.txt
【０１３５】
また、除外範囲を設定する環境変数を複数用意して、それぞれに異なる除外範囲を設定可能としてもよい。そして、差分比較のコマンドを実行するときに、次に示すように、利用したい除外範囲を設定した環境変数の環境変数文字列も指定することで、所望の比較を行えるようにしてもよい。
【０１３６】
diff EXCLUDE fig1.txt fig2.txt
【０１３７】
この場合、除外範囲解析部１７は、記憶部１１に格納された環境変数の設定値のうち、コマンドで指定された環境変数文字列に対応する設定値を取得して、取得した設定値に基づいて、除外範囲を特定して、特定した除外範囲を示す除外範囲データを生成する。
【０１３８】
差分比較部１３は、以上に示した除外範囲指定方法によって除外範囲を指定して、実施の形態１において説明した各差分比較処理を実行することが可能である。すなわち、差分比較のコマンドがコマンドラインで入力されて実行されたときに、除外範囲解析部１７は、記憶部１１に格納された環境変数を参照して、上述した規則に従って除外範囲を特定する（例えば、図３ではステップＳ１が該当する）。除外範囲解析部１７は、特定した除外範囲を示す除外範囲データを生成する。この除外範囲データが示す除外範囲に従って、差分比較部１３は、実施の形態１と同様の差分比較処理を実行する。実施の形態２にかかる情報処理装置が情報処理装置２０と同じ構成でも、同様にして差分比較処理を実行可能であることは言うまでもない。
【０１３９】
＜発明の実施の形態３＞
以下、本発明の実施の形態３について説明する。実施の形態３では、ファイルによって、除外範囲を指定する場合について説明する。実施の形態３にかかる情報処理装置の構成は、図１に示す情報処理装置１０と同様である（図１１に示す情報処理装置２０と同様であってもよい）ため、説明を省略する。
【０１４０】
以下、ファイルを用いる方法について具体的に説明する。実施の形態３にかかる情報処理装置１０においてテキストファイルを比較して差分を検出する方法は、実施の形態１に記載した通りであり、説明を省略する。実施の形態３においては、ユーザが、除外範囲を指定したファイル（指示ファイル）を予め作成して、記憶部１１に格納しておく。差分比較のコマンドが実行されたときに、データ取得部１４が記憶部１１に格納された指示ファイルを取得して、データ取得部１４の除外範囲解析部１７が指示ファイルにおいて示される文字列を解析して、除外範囲となる桁位置を特定する。
【０１４１】
環境変数における除外範囲の設定では、実施の形態１に記載のオプション指定と同様に、桁範囲指定方法及び全桁指定方法の両方が可能である。
【０１４２】
桁範囲指定方法では、指示ファイルにおいて、ｍ桁目からｎ桁目まで除外範囲として指定する場合、指示ファイル内に文字列「m-n」を記述する。また、全桁指定方法では、指示ファイルにおいて、ｍ桁目を除外範囲として指定する場合、指示ファイル内に文字列「m」を記述する。また、桁範囲を指定する場合には、それらを分離する文字「,」によって繰り返し指定することも可能である。この記載方法については、実施の形態２と同様であるため、説明を省略する。
【０１４３】
図１５は、指示ファイルの記載方法のバリエーションを示す図である。なお、以下の説明における文字「ｏ」及び「ｐ」のそれぞれは、上述した文字「ｍ」及び「ｎ」と同様であるため、説明を省略する。
【０１４４】
図１５（ａ）（例１）に示された指示ファイルでは、桁範囲指定方法によって、１行に１つの桁範囲が除外範囲として指定されている。図１５（ａ）では、ｍ桁目からｎ桁目、ｏ桁目からｐ桁目等が除外範囲として指定されている。
【０１４５】
図１５（ｂ）（例２）に示された指示ファイルでは、桁範囲指定方法によって、１行に複数の桁範囲が除外範囲として指定されている。図１５（ｂ）では、図１５（ａ）と同様、ｍ桁目からｎ桁目、ｏ桁目からｐ桁目等が除外範囲として指定されている。
【０１４６】
図１５（ｃ）（例３）に示された指示ファイルでは、全桁指定方法によって、１行に１つの桁が除外範囲が指定されている。図１５（ｃ）では、ｍ桁目、ｎ桁目等が除外範囲として指定されている。
【０１４７】
図１５（ｄ）（例４）に示された指示ファイルでは、全桁指定方法によって、１行に複数の桁が除外範囲として指定されている。図１５（ｄ）では、図１５（ｃ）と同様に、ｍ桁目、ｎ桁目等が除外範囲として指定されている。
【０１４８】
図１５（ｅ）は、図１５（ａ）〜（ｄ）に記載した指示ファイルの記載方法を、フォーマット及び除外範囲指定方法の組み合せに基づいて分類した図である。図１５（ａ）（例１）では、「１行に１つの除外範囲が指定される」フォーマットで、その除外範囲は「桁範囲指定方法」により指定されている。図１５（ｂ）（例２）では、「１行に複数の除外範囲が指定される」フォーマットで、その除外範囲は「桁範囲指定方法」により指定されている。図１５（ｃ）（例３）では、「１行に１つの除外範囲が指定される」フォーマットで、その除外範囲は「全桁指定方法」により指定されている。図１５（ｄ）（例４）では、「１行に複数の除外範囲が指定される」フォーマットで、その除外範囲は「全桁指定方法」により指定されている。
【０１４９】
なお、以上に示した桁範囲指定方法による記載と、全桁指定方法による記載とを、指示ファイル内で混在させることも可能である。例えば、図１５（ｆ）に示す指示ファイルの記載では、桁範囲指定方法によって指定されたｍ桁目からｎ桁目までの桁範囲と、全桁指定方法によって指定されたｏ桁目及びｐ桁目の桁とが除外範囲として指定されている。さらに、指示ファイル内において、「１行に１つの除外範囲が指定される」フォーマットと、「１行に複数の除外範囲が指定される」フォーマットとが混在していてもよい。例えば、図１５（ｇ）に示す指示ファイルの記載によれば、１行目で１つのｍ桁目からｎ桁目までの桁範囲を除外範囲として指定されており、２行目でｏ桁目及びｐ桁目の桁が除外範囲として指定されている。
【０１５０】
ユーザは、以上に説明した規則に従って、除外範囲とする桁位置を記述した指示ファイルを作成して、記憶部１１に格納する。指示ファイルは、例えば、テキストファイル等の任意の形式で格納される。
【０１５１】
ユーザは、差分比較のコマンドを実行する際に、コマンド文字列とともに指示ファイルのファイル名を入力することにより、差分比較における除外範囲を指定する。例えば、ユーザが、除外範囲に指定した指示ファイルのファイル名を「A.txt」として指示ファイルを作成した場合、次のように、差分比較のコマンドと、指示ファイルのファイル名と、比較するテキストファイル「fig1.txt」及び「fig2.txt」を指定した文字列を、データ取得部１４によってコマンドラインに対して入力すればよい。
【０１５２】
diff A.txt fig1.txt fig2.txt
【０１５３】
差分比較部１３は、以上に示した除外範囲指定方法によって除外範囲を指定して、実施の形態１において説明した各差分比較処理を実行することが可能である。具体的には、入力部１２は、ユーザが入力した文字列を示す入力データを生成してデータ取得部１４に出力する。この文字列には、上述したように、コマンド文字列、指示ファイル名、及び、比較対象とする２つのテキストファイルのファイル名が含まれる。除外範囲解析部１７は、記憶部１１に格納された指示ファイルのうち、入力部１２から出力された入力データが示す指示ファイル名の指示ファイルを参照して、上述した規則に従って除外範囲を特定する（例えば、図３ではステップＳ１が該当する）。除外範囲解析部１７は、特定した除外範囲を示す除外範囲データを生成する。この除外範囲データが示す除外範囲に従って、差分比較部１３は、実施の形態１と同様の差分比較処理を実行する。実施の形態３にかかる情報処理装置が情報処理装置２０と同じ構成でも、同様にして差分比較処理を実行可能であることは言うまでもない。
【０１５４】
なお、ユーザによる指示ファイルの指定を不要として、データ取得部１４が、差分比較のコマンドが実行された際に、自動的に指示ファイルを判別して取得するようにしてもよい。具体的には、指示ファイルのファイル名を予め固定的に定めておき、差分比較のコマンドが実行された際に、データ取得部１４がそのファイル名の指示ファイルを記憶部１１から取得するようにすればよい。以下、上述と同様にして、除外範囲解析部１７が、データ取得部１４が取得した指示ファイルによって除外範囲を特定して、差分比較部１３がその除外範囲に基づいて差分比較処理を実行するようにすればよい。
【０１５５】
＜発明の実施の形態４＞
以下、本発明の実施の形態４について説明する。実施の形態４では、ファイルフォーマット（ファイル拡張子）によって、除外範囲を指定する場合について説明する。実施の形態４にかかる情報処理装置の構成は、図１に示す情報処理装置１０と同様である（図１１に示す情報処理装置２０と同様であってもよい）ため、説明を省略する。
【０１５６】
以下、ファイルフォーマットを用いる方法について具体的に説明する。実施の形態４にかかる情報処理装置１０においてテキストファイルを比較して差分を検出する方法は、実施の形態１に記載した通りであり、説明を省略する。本実施の形態４においては、テキストファイルのファイル拡張子から、そのテキストファイルのファイルフォーマットが一意に特定されることを利用して除外範囲を特定する。テキストファイルは、ファイル拡張子によって、所定のルールに従った記述がされる場合がある。そのため、ファイル拡張子によって、そのテキストファイルを比較する場合に、除外範囲とすべき桁位置が一意に特定されることになる。そこで、本実施の形態４においては、ファイル拡張子と、除外範囲となる桁又は桁範囲を予め対応付けておき、それに基づいて、比較対象となるテキストファイルのファイル拡張子から除外範囲を特定する。
【０１５７】
このときに、ファイル拡張子から除外範囲を特定する方法の一例について説明する。例えば、ユーザは、ファイル拡張子と、除外範囲とを対応付けた対応情報を、予め記憶部１１に格納しておく。そして、差分比較のコマンドが実行されたときに、データ取得部１４が記憶部１１に格納された対応情報を取得して、データ取得部１４の除外範囲解析部１７が対応情報に基づいて、差分比較のコマンドで指定されたテキストファイルのファイル拡張子に対応する除外範囲を、そのテキストファイルの比較における除外範囲として特定する。
【０１５８】
ＣＯＢＯＬのソースファイルでは、ソース記述の規則とファイル拡張子を関連付ける場合がある。例えば、ファイル拡張子が「.cob」である場合には、ファイルの１桁目〜６桁目が一連番号領域、７桁目が標識領域、８桁目から行終了文字までがプログラム記述領域とし、ファイル拡張子が「.cbl」である場合には、ファイルの１桁目〜６桁目が一連番号領域、７桁目が標識領域、８桁目〜７２桁目がプログラム記述領域、７３桁目〜８０桁目がプログラムの識別領域とすることができる。
【０１５９】
このような関連付けにおいて、ファイル拡張子が「.cob」の場合には、一連番号領域である１桁目〜６桁目、標識領域である７桁目を除外範囲として予め定めておくことにより、プログラムのロジック部分のみを比較対象とすることができる。また、ファイル拡張子が「.cbl」の場合に一連番号領域である１桁目〜６桁目、標識領域である７桁目、プログラムの識別領域である７３桁目〜８０桁目を除外範囲として予め定めておくことにより、プログラムのロジック部分のみを比較対象とすることができる。
【０１６０】
これにより、ユーザは、オプション文字列を記載せずに、差分比較のコマンドを実行することによって、除外範囲を考慮したテキストファイルの比較を実行することができる。以下、比較するテキストファイルが、ＣＯＢＯＬのソースファイルである場合について説明する。例えば、プログラムのロジック部分のみを比較対象として、ＣＯＢＯＬのソースファイル「fig1.cob」及び「fig2.cob」を比較する際には、ユーザは、次のように、差分比較のコマンドと、比較するソースファイルのファイル名「fig1.cob」及び「fig2.cob」を、入力部１２によってコマンドラインに対して入力すればよい。
【０１６１】
diff fig1.cob fig2.cob
【０１６２】
入力部１２は、このユーザによって入力された文字列を示す入力データをデータ取得部１４に出力する。データ取得部１４の除外範囲解析部１７は、入力データが示すファイル名のファイル拡張子に基づいて、記憶部１１に格納された対応情報を参照して除外範囲を特定する。例えば、対応情報に、ファイル拡張子「.cob」の除外範囲が１桁目〜７桁目であることを記載する。これによれば、除外範囲解析部１７は、「fig1.cob」と「fig2.cob」との比較においては、１桁目〜７桁目を除外範囲として特定し、特定した除外範囲を示す除外範囲データを生成する。この除外範囲データが示す除外範囲に従って、差分比較部１３は、実施の形態１と同様の差分比較処理を実行する。実施の形態４にかかる情報処理装置が情報処理装置２０と同じ構成でも、同様にして差分比較処理を実行可能であることは言うまでもない。なお、ファイル拡張子が「.clb」である場合は、除外範囲を１桁目〜７桁目及び７３桁目〜８０桁目とすればよいこと以外は、同様であるため、説明を省略する。なお、ファイル拡張子は、ここで例示したファイル拡張子に限られない。
【０１６３】
なお、ファイル拡張子ではなく、比較対象のファイルのファイル名によって、同様にして除外範囲を決定されてもよい。例えば、ユーザ間で、ＣＯＢＯＬのソースファイルのファイル名には文字列「cob」を含めると予め定めておく。なお、この文字列は、ここでの例示に限られない。そして、比較対象のファイルのファイル名に文字列「cob」が含まれている場合には、１桁目〜７桁目を除外範囲とするように予め定めておく。これは、上述と同様に、ファイル名に含める文字列と除外範囲とを対応付けた情報を、記憶部１１に格納しておくことで予め定めておく。そして、ユーザがテキストファイル「cob1.txt」及び「cob2.txt」を比較対象として指定して差分比較のコマンドを入力したときに、除外範囲解析部１７は、ファイル名に含まれる文字列「cob」に基づいて、１桁目〜７桁目を除外範囲として特定する。これによって、差分比較部１３は、上記と同様に、除外範囲を考慮した差分比較処理を実行することができる。
【０１６４】
また、プログラムエディタのように、扱うファイルのファイル拡張子が予め決まっている専用ツール（エディタ）上で差分比較コマンドを実行して差分比較処理を起動する場合には、ユーザによる対応情報を作成しての除外範囲の指定を不要としてもよい。例えば、専用ツールで、テキストファイル（変更後テキストファイルに相当）を編集しているときに差分比較処理が起動された場合、専用ツールで自動的に扱うファイルフォーマットに応じた除外範囲を採用することで、ユーザによる除外範囲の指定を不要とするようにしてもよい。例えば、対応情報を含む専用ツールのプログラムを記憶部１１に格納しておき、差分比較部１３が、さらに、そのプログラムを実行することによって、この機能を実現する。
【０１６５】
＜発明の実施の形態５＞
以下、図面を参照して本発明の実施の形態５について説明する。実施の形態５では、エディタによって、除外範囲を指定する場合について説明する。実施の形態５にかかる情報処理装置の構成は、図１に示す情報処理装置１０と同様である（図１１に示す情報処理装置２０と同様であってもよい）ため、説明を省略する。
【０１６６】
以下、ユーザによる除外範囲指示の方法について具体的に説明する。実施の形態５にかかる情報処理装置１０においてテキストファイルを比較して差分を検出する方法は、実施の形態１に記載した通りであり、説明を省略する。実施の形態５においては、エディタによって、比較対象のテキストファイルの一方を情報処理装置１０の表示部（画面上）に表示している場合に、ユーザによって指定された範囲に対応する桁位置を除外範囲として特定する。ユーザは、入力部１２のマウスのドラッグアンドドロップ又はキーボードによって、画面上に表示されたテキストファイルのテキストの任意の範囲を指定する入力を行うことにより、除外範囲を指定する。このとき、入力部１２は、指定された範囲を示す入力データをデータ取得部１４に出力する。また、このとき、情報処理装置１０は、指定された範囲を示す表示（反転表示又は下線表示等）をするようにしてもよい。データ取得部１４の除外範囲解析部１７は、入力部１２から入力された入力データが示す範囲に含まれる桁位置を、除外範囲として特定する。なお、マウスによって範囲を指定する機能は、例えば、ＧＵＩ（Graphical User Interface）ツールを記憶部１１に格納しておき、差分比較部１３が、さらに、そのＧＵＩツールを実行することによって実現する。
【０１６７】
以下、エディタによって、除外範囲を指定する方法として、第１の方法から第３の方法について説明する。まず、第１の方法について説明する。図１６は、実施の形態５において比較対象となる変更前テキストファイル及び変更後テキストファイルの一例を示したものであり、図２と同じ内容のテキストファイルである。図１６（ａ）は、変更前テキストファイル（ファイル１）を示し、図１６（ｂ）は、変更後テキストファイル（ファイル２）を示す。変更後テキストファイルにおけるロジック部分の変更箇所、コメント部分の変更箇所については、図２を参照して、実施の形態１で説明した通りであり、説明を省略する。
【０１６８】
ここで、ユーザによって、図１６（ｂ）に示すように、変更後テキストファイルの表示内容において範囲が指定されたものとする。なお、指定範囲の明確化のため、指定範囲を囲み線によって示しているが、実際には記載されていないものとする。この場合、除外範囲解析部１７は、それぞれの指定範囲に含まれる桁位置である、１桁目〜６桁目（一連番号領域）、３０桁目〜３６桁目（コメント部分）を除外範囲として特定する。除外範囲解析部１７は、特定した除外範囲を示す除外範囲データを生成して記憶部１１に格納する。
【０１６９】
なお、図１６（ｂ）では、一部の行が指定された場合でも、その指定範囲に含まれる桁位置を除外範囲として特定する場合について説明したが、これに限られない。例えば、図１６（ｃ）に示すように、全ての行が指定された場合に、その指定範囲に含まれる桁位置を除外範囲として特定するようにしてもよい。
【０１７０】
そして、入力部１２は、ユーザによって変更前テキストファイル及び変更後テキストファイルを指定した差分比較のコマンドが入力された場合、その入力された文字列を示す入力データをデータ取得部１４に出力する。データ取得部１４は、この入力データに応じて、記憶部１１に格納された除外範囲データを取得して、比較対象となるテキストファイルのデータとともに比較処理部１５に出力する。この除外範囲データが示す除外範囲に従って、差分比較部１３は、実施の形態１と同様の差分比較処理を実行する。すなわち、比較処理部１５は、この除外範囲データに基づいて、除外範囲が１桁目〜６桁目及び３０桁目〜３６桁目であると認識することができる。
【０１７１】
以上の例では、変更後テキストファイルの表示内容において除外範囲として指定する場合について例示したが、これに限られない。変更後テキストファイルではなく、変更前テキストファイルの表示内容において同様にして除外範囲を指定するようにしてもよい。また、変更前テキストファイル及び変更後テキストファイルのそれぞれの表示内容において除外範囲を指定するようにして、除外範囲解析部１７は、それぞれにおける入力データの少なくともいずれかで指定された範囲に含まれる桁位置を除外範囲として特定するようにしてもよい。
【０１７２】
続いて、第２の方法について説明する。ユーザは、任意の１行における桁位置を指定することにより、除外範囲となる桁位置を指定するようにしてもよい。図１７（ａ）、（ｂ）は、図１６（ａ）、（ｂ）と同じ内容のテキストファイルである。ここで、ユーザによって、図１７（ｂ）に示すように、１行目の１桁目〜６桁目及び３０桁目〜３６桁目だけが除外範囲として指定されたものとする。なお、指定範囲の明確化のため、指定範囲を囲み線によって示しているが、実際には記載されていないものとする。この場合、除外範囲解析部１７は、それぞれの指定範囲に含まれる桁位置である、１桁目〜６桁目（一連番号領域）、３０桁目〜３６桁目（コメント部分）を除外範囲として特定する。除外範囲解析部１７は、特定した除外範囲を示す除外範囲データを生成して記憶部１１に格納する。
【０１７３】
そして、上述と同様に、ユーザによる変更前テキストファイル及び変更後テキストファイルを指定した差分比較のコマンドの入力に応じて、差分比較部１３が、実施の形態１と同様の差分比較処理を実行する。
【０１７４】
なお、除外範囲が指定されたテキストファイルの表示内容において、ユーザが範囲を指定した行以外の行においても、指定範囲と同じ桁位置を、除外範囲として指定されたことを示す表示（反転表示又は下線表示等）を行うようにしてもよい。これについては、第１の方法についても同様である。例えば、情報処理装置１０は、図１７（ｂ）において、指定された１行目の１桁目〜６桁目及び３０桁目〜３６桁目のみを反転表示するようにしてもよく、２行目以降の１桁目〜６桁目及び３０桁目〜３６桁目も反転表示するようにしてもよい。
【０１７５】
そのほか、上述したように、変更後テキストファイルではなく、変更前テキストファイルの表示内容において同様にして除外範囲を指定するようにしてもよく、変更前テキストファイル及び変更後テキストファイルのそれぞれの表示内容において除外範囲を指定するようにしてもよい。
【０１７６】
続いて、第３の方法について説明する。情報処理装置１０が、画面上にファイルの桁範囲指定用の専用領域を表示するようにして、ユーザは、その領域において桁位置を指定することにより、除外範囲となる桁位置を指定するようにしてもよい。図１８（ａ）、（ｂ）は、図１６（ａ）、（ｂ）と同じ内容のテキストファイルである。図１８（ａ）、（ｂ）に示すテキストファイルでは、ユーザが実際に文字を記入する領域の最上部に、桁位置を示す桁範囲指定用の専用領域が設けられている。ユーザによって、図１８（ｂ）に示すように、桁範囲指定用の専用領域において、１桁目〜６桁目及び３０桁目〜３６桁目が除外範囲として指定されたものとする。なお、指定範囲の明確化のため、指定範囲を囲み線によって示しているが、実際には記載されていないものとする。この場合、除外範囲解析部１７は、それぞれの指定範囲に含まれる桁位置である、１桁目〜６桁目（一連番号領域）、３０桁目〜３６桁目（コメント部分）を除外範囲として特定する。除外範囲解析部１７は、特定した除外範囲を示す除外範囲データを生成して記憶部１１に格納する。
【０１７７】
そして、上述と同様に、ユーザによる変更前テキストファイル及び変更後テキストファイルを指定した差分比較のコマンドの入力に応じて、差分比較部１３が、実施の形態１と同様の差分比較処理を実行する。
【０１７８】
なお、除外範囲が指定されたテキストファイルの表示内容において、桁範囲指定用の専用領域以外においても、指定範囲と同じ桁位置を、除外範囲として指定されたことを示す表示（反転表示又は下線表示等）を行うようにしてもよい。そのほか、上述したように、変更後テキストファイルではなく、変更前テキストファイルの表示内容において同様にして除外範囲を指定するようにしてもよく、変更前テキストファイル及び変更後テキストファイルのそれぞれの表示内容において除外範囲を指定するようにしてもよい。
【０１７９】
＜発明の実施の形態の概要＞
ここで、本発明の実施の形態の概要について説明する。図１９を参照して、本発明の実施の形態にかかる情報処理装置１０、２０の概略構成となる差分検出装置９について説明する。図１９は、本発明の実施の形態にかかる差分検出装置９の一例を示す全体構成図である。
【０１８０】
差分検出装置９は、第１のソースプログラムと第２のソースプログラムとを比較して、第１のソースプログラムと第２のソースプログラムとの差分を検出する装置である。差分検出装置９は、除外範囲特定部９１及び差分検出部９２を有する。
【０１８１】
除外範囲特定部９１は、ユーザからの入力を受ける入力部によって入力された内容を示すように生成された、又は、記憶部に格納された、桁特定情報を取得して、取得した桁特定情報によって特定される桁を、差分の検出を除外する除外範囲として特定する。桁特定情報は、少なくとも１つ以上の桁を特定可能とする情報である。
【０１８２】
差分検出部９２は、第１のソースプログラムと第２のソースプログラムとの比較において、除外範囲特定部９１によって特定された除外範囲を除いた範囲における差分を検出する。
【０１８３】
続いて、本発明の実施の形態にかかる差分検出装置９の処理について説明する。まず、除外範囲特定部９１は、ユーザからの入力を受ける入力部によって入力された内容を示すように生成された、又は、記憶部に格納された桁特定情報を取得する。除外範囲特定部９１は、取得した桁特定情報によって特定される桁を、差分の検出を除外する除外範囲として特定する。差分検出部９２は、第１のソースプログラムと第２のソースプログラムとを比較する。このときに、差分検出部９２は、除外範囲特定部９１によって特定された除外範囲を除いた範囲における差分を検出する。
【０１８４】
上述したように、ソースプログラムでは、ユーザは、所望の桁位置の変更箇所のみを確認したいという要望がある。それに対して、この差分検出装置９の処理によれば、所望の桁位置以外を除外範囲として比較を行うことができるので、所望の桁位置の差分のみを検出することが可能となる。これによれば、ユーザが、検出結果に基づいて、ソースプログラムにおいて目的とする変更箇所の特定を容易に行うことが可能となる。
【０１８５】
以上に説明したように、実施の形態１〜５にかかる情報処理装置１０、２０においては、２つのテキストファイルの差分比較処理を実行するに際して、指定した範囲（桁位置）を除外した比較処理が可能となる。なお、比較対象となるテキストファイルには、プログラムのソースファイルが含まれる。また、除外範囲は、複数指定が可能である。
【０１８６】
また、実施の形態１〜５にかかる除外範囲指定方法及び差分比較処理を実装した比較ツールや開発支援ツール等のプログラムを上で差分比較処理を起動することによって、プログラムロジック部分に影響しない任意の桁位置の変更があったとしても、プログラムロジック部分のみの差分確認を行えるようにすることも可能である。さらに、実施の形態１において、図１２を参照して説明した差分比較処理方法によれば、指定した桁位置を除外範囲とした差分結果と共に、除外範囲の差分結果を残すことも可能となる。これにより、ユーザが変更前テキストファイルにおいて除外範囲（例えば、コメント部分）の変更も実施しており、コメント部分の比較結果も確認したい場合に、差分を取り直すことなく一度に確認を行うことが可能である。
【０１８７】
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。差分比較部１３は、実施の形態１〜５に記載された除外範囲指定方法において、１つだけの方法をとることが可能なように設計されているのではなく、複数の方法をとることが可能なように設計されていてもよい。
【０１８８】
また、実施の形態４で説明したように、エディタによってテキストファイル（変更後テキストファイルに相当）を編集しているときに、エディタ上で差分比較処理を起動するようにすることもできる。この場合、除外範囲における編集内容を変更後テキストファイルに反映しないようにしておき、差分比較処理の終了後に、編集内容を変更後テキストファイルに反映するようにしてもよい。このようにすることで、差分比較時に、変更後テキストファイルの除外範囲における内容は、変更前テキストファイルと同一となるため、除外範囲における差分が検出されないようにすることができる。例えば、エディタのプログラムを記憶部１１に格納しておき、差分比較部１３が、さらに、そのプログラムを実行することによって、この機能を実現する。また、エディタは、テキストファイルを編集するものであれば、プログラムエディタに限られない。
【０１８９】
すなわち、差分比較部１３は、上述したＯＳ及びコマンドラインツールのみに限られず、さらに、２つのテキストファイルの差分比較が実行可能な他のプログラムを実行することによって、その機能が実現されていてもよい。差分比較処理の起動方法は、そのプログラムに応じて適宜変更してもよく、実施の形態１〜５に示した方法に限られない。
【０１９０】
比較対象とするソースファイルは、ＣＯＢＯＬに限られず、Ｃ、Ｃ＋＋、ＪＡＶＡ等の他の種類のプログラム言語におけるソースファイルについても応用可能である。例えば、ＣＯＢＯＬ以外のプログラミング言語であっても、ユーザ間でコメント部分を記載する桁位置を予め定めておくことで、その桁位置を除外範囲としてロジック部分における差分を検出することが可能となる。また、ソースファイルではなく、その他のテキスト文字列が記載されたファイル同士を、差分比較処理の比較対象とすることもできる。また、本実施の形態では、テキストファイル単位で差分比較を行う場合について例示したが、テキストファイルに含まれる一部のテキストを比較対象とするようにしてもよい。例えば、ソースファイルの場合は、ソースファイルに記述されたソースプログラムの一部を比較対象とするようにしてもよい。
【０１９１】
実施の形態１〜５では、各行が同じ形式の固定フォーマットのテキストファイルを比較する場合について説明している。しかし、フォーマットが不定形の場合であっても、何らかの目印によって除外範囲を特定することにより、比較を実施するようにしてもよい。例えば、プログラミング言語の場合、プログラムのロジック部分以外のコメント部分を示す目印（文字）が決まっていることが多い。そのため、その文字にはさまれた範囲、又は、その文字以降の桁範囲のコメント部分を除外範囲として特定するようにしてもよい。また、この目印は、ユーザによって入力部１２を介して任意の文字を設定可能としてもよい。例えば、Ｃ、Ｃ＋＋及びＪＡＶＡでは、「/*」と「*/」ではさまれた範囲がコメント部分となり、Ｃ＋＋及びＪＡＶＡでは、「//」以降がコメント部分となる。そのため、この場合には、これらの文字を目印とする。
【０１９２】
また、プログラム言語以外のテキストファイルにおいても、任意の桁範囲に主題となる文章が記載され、その他は備考欄となる検証する必要性の低い文章が記載されるような場合には、備考欄を除外範囲として、主題部分についてのみ差分が検出されるようにしてもよい。
【０１９３】
本発明の実施の形態にかかる情報処理装置１０、２０（コンピュータ）が実行するプログラムは、様々なタイプの非一時的なコンピュータ可読媒体（non-transitory computer readable medium）を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体（tangible storage medium）を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体（例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ）、光磁気記録媒体（例えば光磁気ディスク）、ＣＤ−ＲＯＭ（Read Only Memory）、ＣＤ−Ｒ、ＣＤ−Ｒ／Ｗ、半導体メモリ（例えば、マスクＲＯＭ、ＰＲＯＭ（Programmable ROM）、ＥＰＲＯＭ（Erasable PROM）、フラッシュＲＯＭ、ＲＡＭ（Random Access Memory））を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体（transitory computer readable medium）によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
【符号の説明】
【０１９４】
９  差分検出装置
１０、２０  情報処理装置
１１、２１  記憶部
１２、２２  入力装置
１３、２３  差分比較部
１４、２４  入力部
１５、２５  比較処理部
１６、２６  結果出力部
１７、２７  除外範囲解析部
２８  除外範囲外差分抽出部
９１  除外範囲特定部
９２  差分検出部
【図１】
0005910169.tif 000002
【図２】
0005910169.tif 000003
【図３】
0005910169.tif 000004
【図４】
0005910169.tif 000005
【図５】
0005910169.tif 000006
【図６】
0005910169.tif 000007
【図７】
0005910169.tif 000008
【図８】
0005910169.tif 000009
【図９】
0005910169.tif 000010
【図１０】
0005910169.tif 000011
【図１１】
0005910169.tif 000012
【図１２】
0005910169.tif 000013
【図１３】
0005910169.tif 000014
【図１４】
0005910169.tif 000015
【図１５】
0005910169.tif 000016
【図１６】
0005910169.tif 000017
【図１７】
0005910169.tif 000018
【図１８】
0005910169.tif 000019
【図１９】
0005910169.tif 000020