(57)【要約】【課題】第２のソースコードに対する変更の後に第１のソースコードに対する変更が行われた場合に、第２のソースコードに対する前の変更を有効に残す、ソースコード管理・生成プログラムを提供すること。【解決手段】第１の言語で記載された第１のソースコード２１を第２の言語で記載された第２のソースコード２２に変換する変換部１１と、第２のソースコード２２に対する変更の差分を検出する差分検出部１２と、変換部１１の生成する第２のソースコード２２に対して、差分検出部１２の検出した差分を適用する差分適用部１３とを備える、ソースコード管理・生成プログラムを提供する。第２のソースコード２２に対する前の変更が、差分適用部によって有効に残される。【選択図】図１
2019128926.tif 000002
【特許請求の範囲】
【請求項１】
第１の言語で記載された第１のソースコードを第２の言語で記載された第２のソースコードに変換する変換部と、
前記第２のソースコードに対する変更の差分を検出する差分検出部と、
前記第１のソースコードが変更された際に、前記変換部の生成する前記第２のソースコードに対して、前記差分検出部の検出した差分を適用する差分適用部とを備えることを特徴とする、ソースコード管理・生成プログラム。
【請求項２】
前記差分検出部は、変更前の第２のソースコードの全部又は一部と変更後の第２のソースコードの全部又は一部との組である差分データを保持することを特徴とする、請求項１に記載のソースコード管理・生成プログラム。
【請求項３】
前記差分適用部は、前記第１のソースコードの変更が前記第２のソースコードの前記差分検出部の検出した差分に係る箇所について行われた場合には、その旨を示すメッセージを出力することを特徴とする、請求項１又は２に記載のソースコード管理・生成プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソースコードの変更を管理し、変更に対応したソースコードを生成するソースコード管理・生成プログラムに関する。
【背景技術】
【０００２】
コンピュータプログラムのソースコードを作成することは、プログラム言語の知識等を必要とし、必ずしも万人にとって容易なものではない。そこで、記載が容易な第１の言語でプログラムの概要を記載し、第２の言語（プログラム言語）に変換する手法（「スキャフォールディング」と呼ばれる。）が用いられることがある。
【０００３】
スキャフォールディングに当たっては、第２の言語で記載されたソースコード（「第２のソースコード」と呼ぶ。）が変更されることが多い。第１の言語では十分に記載しきれない詳細を指定する目的である。ここで、第２のソースコードが変更された後に、再び第１の言語で記載されたソースコード（「第１のソースコード」と呼ぶ。）が変更されたとする。変更後の第１のソースコードを変換して第２のソースコードとすると、第２のソースコードに対する前の変更が消えてしまう。すなわち、第２のソースコードに対する変更を再び行う必要がある。
【０００４】
この問題に関し、ソースコードが変更された際に差分（変更部分）を検出して、後に適用する手法は、例えば特許文献１に開示されていた。しかし、２つの言語のソースコードにまたがる変更に正確に対応するものではなかった。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００２−００７１２１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本発明は、第２のソースコードに対する変更の後に第１のソースコードに対する変更が行われた場合に、第２のソースコードに対する前の変更を有効に残す、ソースコード管理・生成プログラムを提供することを課題とする。
【課題を解決するための手段】
【０００７】
本発明のソースコード管理・生成プログラムは、
第１の言語で記載された第１のソースコードを第２の言語で記載された第２のソースコードに変換する変換部と、
前記第２のソースコードに対する変更の差分を検出する差分検出部と、
前記第１のソースコードが変更された際に、前記変換部の生成する前記第２のソースコードに対して、前記差分検出部の検出した差分を適用する差分適用部とを備えることを特徴とする。
【０００８】
この特徴によれば、第２のソースコードに対する前の変更が差分として適用され、第２のソースコードに対する前の変更を有効に残すことができる。第２のソースコードに対する変更を再び行う必要がなくなる。
【０００９】
ここで、第１の言語及び第２の言語について、通常は、第２の言語がＣ言語、ＰＨＰ等のプログラム言語であり、第１の言語がより概念化した記述を行うものある。第１の言語として、データを記述した通常のテキスト形式、EXCEL（登録商標）等の表計算ソフトウエアのデータ形式を用いることができる。しかし 、本発明はこれに限定されない。例えば、第１の言語がＣ言語等のプログラム言語であり、第２の言語がアセンブラ言語であってもよい。実行モジュールがアセンブラ言語と等価（相互に変換可能）であるので、プログラム言語から実行モジュールを生成するコンパイラも変換部を構成し得る。また、第１の言語がｃｓｖであり２の言語がｈｔｍｌである等、各種の第１の言語と第２の言語との組み合わせが考えられる。
【００１０】
さらに、第１の言語とは別の第３の言語 で記載されたデータを第１の言語で記載された第１のソースコードに変換する前処理、第２の言語で記載された第２のソースコードを第２の言語とは別の第４の 言語で記載されたデータに変換する後処理、をそれぞれ追加してもよい。なお第４の言語は第３の言語と同一でもよい。例えば、第３の言語がEXCELやWORD（登録商標）などのソフトウエアによる記述である場合に、そのソフトウエアの処理するバイナリデータデータに対して、 前処理としてそのバイナリデータと可逆な第１の言語（テキスト記述言語）に置き換える処理を行い、後処理として第１の言語からそのバイナリデータに置き換える処理を行う。第１の言語では、バイナリデータの中で表現されるテキスト情報と、色や文字サイズなどの装飾情報をそれぞれテキストで表現し、変更前後でテキストや装飾がどのように編集されたのかを細かに計算することを可能にする。また、第１の言語からバイナリデータに戻す後処理において、編集箇所の衝突マークをバイナリデータでの装飾としての表現に置き換えることができる。第３の言語と第１の言語との間で変換による情報ロスがなく、第３の言語の差分をよりきめ細かに取ることが可能となる。これによれば、ソースコードとは別の様式のもの、例えば設計書、仕様書等の文書データ、についても、差分を適用した管理・生成を行うことができる。
【００１１】
本発明のソースコード管理・生成プログラムは、
前記差分検出部は、変更前の第２のソースコードの全部又は一部と変更後の第２のソースコードの全部又は一部との組である差分データを保持することを特徴とする。
【００１２】
この特徴によれば、検出された差分が差分データとして保持され、差分の適用が効率的になる。
【００１３】
本発明のソースコード管理・生成プログラムは、
前記差分適用部は、前記第１のソースコードの変更が前記第２のソースコードの前記差分検出部の検出した差分に係る箇所について行われた場合には、その旨を示すメッセージを出力することを特徴とする。
【００１４】
この特徴によれば、第２のソースコードに対する変更の前の第２のソースコードが、第１のソースコードの変更によって影響される場合、すなわち、差分の適用をいかに行うかが明確でない場合、には、その旨をプログラマに伝達することができる。
【発明の効果】
【００１５】
本発明によれば、第２のソースコードに対する変更の後に第１のソースコードに対する変更が行われた場合に、第２のソースコードに対する前の変更を有効に残す、ソースコード管理・生成プログラムを提供することができる。
【図面の簡単な説明】
【００１６】
【図１】図１は、ソースコード管理・生成プログラムの構成を示す図である。（実施例１）
【図２】図２は、第２のソースコードが変更された際の処理を示す図である。（実施例２）
【図３】図３は、第１のソースコードが変更された際の処理を示す図である。（実施例２）
【図４】図４は、第１のソースコードが変更された際の処理を示す図である。（実施例３）
【発明を実施するための形態】
【００１７】
以下、本発明の実施例について説明する。
【実施例１】
【００１８】
本実施例は、ソースコード管理・生成プログラムの基本的な構成及び動作を示すものである。
【００１９】
図１は、ソースコード管理・生成プログラムの構成を示す図である。ソースコード管理・生成プログラム１は、変換部１１、差分検出部１２及び差分適用部１３を備え、差分データ２２ｄを保持している。第１のソースコード２１及び第２のソースコード２２を管理し、第２のソースコード２２を生成する。
【００２０】
第２のソースコード２２は、アセンブラ言語を含むプログラム言語によって記載されたソースコードである。
【００２１】
第１のソースコード２１は、第２のソースコード２２を生成する基となる、第２のソースコードとは別の言語によって記載されたソースコードである。ここで、第１のソースコード２１に係る言語は、作成者の労力に鑑み、プロトタイプを記述する言語であることが多い。しかし、第１のソースコード２１が第２のソースコード２２に変換可能であれば、いかなる言語であってもよい。
【００２２】
変換部１１は、第１のソースコード２１を第２のソースコード２２に変換する。変換部１１は、スキャフォールディングに用いられる変換プログラム、コンパイラ、その他既存のものであってよい。
【００２３】
差分検出部１２は、２つの第２のソースコード２２（２２ａ及び２２ｂ）の差分を検出し差分データ２２ｄを出力する。
【００２４】
第１のソースコード２１に係る言語がプロトタイプを記述する言語、その他第２のソースコード２２を厳密には規定できない言語である場合、プログラムを正確に作成するために、第１のソースコード２１では記述されない部分について第２のソースコード２２を２２ａから２２ｂに変更する。この変更にかかる差分を差分検出部１２が検出する。
【００２５】
差分データ２２ｄは、検出された差分に係るデータである。第２のソースコード２２ａのいずれの箇所が、いかに変更されて第２のソースコード２２ｂとなるかを表したものである。
【００２６】
差分適用部１３は、変換部１１によって変換された第２のソースコード２２ａに、差分データ２２ｄに基づく変更（差分の適用）を行い、第２のソースコード２２ｃを出力する。
【００２７】
第２のソースコード２２ａが変更されて第２のソースコード２２ｂが作成された後に、第１のソースコード２１が変更されたとする。変更後の第１のソースコード２１を変換部１１によって変換し、第２のソースコード２２ａを得るが、第２のソースコード２２ｂへの変更は反映されていない。
【００２８】
そこで、差分適用部１３が、差分データ２２ｄに基づく変更（差分の適用）を行い第２のソースコード２２ｃを出力することによって、第２のソースコード２２ｂへの変更を反映することができる。
【００２９】
以上によれば、第１のソースコード２１が変更された場合に、その前に第２のソースコード２２ａに対してなされた変更が反映された第２のソースコード２２ｃを得ることができる。
【００３０】
以上詳細に説明したように、本実施例のソースコード管理・生成プログラム１によれば、第２のソースコード２２ａに対する変更の後に第１のソースコード２１に対する変更が行われた場合に、第２のソースコード２２ａに対する変更を有効に残して、第２のソースコード２２ｃを得ることができる。
【００３１】
なお、差分データ２２ｄは、必ずしも保持しなくともよい。第２のソースコード２２ａ及び２２ｂを共に保持することにより、第１のソースコード２１に対する変更が行われた後で差分データ２２ｄに相当する情報を求めてもよい。
【００３２】
また、差分データにおいては、変更された個所と、変更内容（例えば変更前後のソースコード）を保持するが、いかなる形式で保持してもよい。変更された個所としては、変更前の第２のソースコード２２ａにおける位置（例えば何行目であるか）を用いることが通常であるが、該位置に対応する変換前の第１のソースコード２１における位置を用いてもよい。
【実施例２】
【００３３】
本実施例は、ソースコード管理・生成プログラムの動作によって生成されるソースコードを示すものである。ソースコード管理・生成プログラム１（変換部１１、差分検出部１２及び差分適用部１３）は実施例１と同様であり、詳細な説明を省略する。
【００３４】
図２は、第２のソースコードが変更された際の処理を示す図である。第１のソースコード２１は、ブロックａ及びブロックｂから構成されているものとする。各々のブロックには、具体的なソースコードが記述されているが、いかなるソースコードであるかは本質的でない。
【００３５】
変換部１１により、第１のソースコード２１のブロックａ及びブロックｂが、第２のソースコード２２ａのブロックＡ及びブロックＢに変換される。第１のソースコードにおいて小文字で表したブロックを変換したものを、第２のソースコードにおいて大文字で表している。（以下同じ。）
【００３６】
ここで、第１のソースコード２１及び第２のソースコードにおいて、いかなる単位をブロックとするかは本質的でない。例えば、第１のソースコード２１における１行ごとに別々のブロックとしてもよいし、第１のソースコード２１をサブルーチンなどの機能的な単位に分割して各々を１つのブロックとしてもよい。ただし、第１のソースコード２１におけるブロックａ，ｂが、それぞれ第２のソースコード２２ａにおけるブロックＡ，Ｂに１対１に対応する必要がある。すなわち、変換部１１において第１のソースコード２１と第２のソースコード２２ａとを対応付けて変換する単位をブロックとする。この要件を満たす限り、ブロックを任意に設計してよい。
【００３７】
ブロックＡ及びブロックＢからなる第２のソースコード２２ａに対し、ブロックＡに変更が加えられ、ブロックＡ”となったとする。ブロックＢには変更が加えられなかったとする。ブロックＡ”及びブロックＢからなる第２のソースコード２２ｂが作成されたものであある。添え字「’」及び「”」により、変更が行われたブロックであることを表す。（以下同じ。）
【００３８】
差分検出部１２が、２つの第２のソースコード２２（２２ａ及び２２ｂ）の差分を検出して出力する差分データ２２ｄとしては、ＡがＡ”に変更されたことが含まれている。
【００３９】
図３は、第１のソースコードが変更された際の処理を示す図である。図２に示した第１のソースコード２１、第２のソースコード２２ａ、第２のソースコード２２ｂ及び差分データ２２ｄが作成された後に、第１のソースコード２１が第１のソースコード２１’に変更されたものとする。第１のソースコード２１’は、ブロックａ及びブロックｂ’から構成されている。すなわち、ブロックｂに対して変更が加えられ、ブロックｂ’となったものである。
【００４０】
第１のソースコード２１’は、変換部１１により、ブロックＡ及びブロックＢ’からなる第２のソースコード２２ａ’に変換される。第２のソースコード２２ａ’には、第２のソースコード２２ｂに含まれるブロックＡ”がなく、ブロックＡとなってしまっている。変換部１１には第２のソースコード２２ｂが作成されたことに関する情報が伝わらないためである。
【００４１】
従来は、この状態になり、ブロックＡ”を含む第２のソースコードを再作成しなければならなかった。
【００４２】
そこで、差分適用部１３によって差分を適用し（ブロックＡをブロックＡ”に変更し）、第２のソースコード２２ｃを得る。第２のソースコード２２ｃは、ブロックＡ”及びブロックＢ’からなるものとなる。
【００４３】
以上詳細に説明したように、第１のソースコード２１に対する変更（ブロックｂをブロックｂ’に変更）が行われた場合に、その変更を反映し（ブロックＢ’）、その前に行われた第２のソースコード２２ａに対する変更（ブロックＡをブロックＡ”に変更）を有効に残して、第２のソースコード２２ｃ（ブロックＡ”及びブロックＢ’からなるもの）を得ることができる。
【実施例３】
【００４４】
本実施例は、差分の適用が不可能な場合の処理を示すものである。ソースコード管理・生成プログラム１（変換部１１、差分検出部１２及び差分適用部１３）は実施例１と同様であり、詳細な説明を省略する。
【００４５】
図２に示した第２のソースコードが変更された際の処理は、実施例２と同様である。その後、第１のソースコード２１が第１のソースコード２１’に変更されるが、実施例２ではブロックａ及びブロックｂ’から構成されていた第１のソースコード２１’が、本実施例ではブロックａ’及びブロックｂから構成されている。すなわち、ブロックａに対して変更が加えられ、ブロックａ’となったものである。
【００４６】
図４は、第１のソースコードが変更された際の処理を示す図である。差分適用部１３によって差分を適用し（ブロックＡをブロックＡ”に変更し）、第２のソースコード２２ｃを得ようとするが、第２のソースコード２２ａ’は、ブロックＡ’及びブロックＢからなるものとなっており、差分を適用するべきブロックＡが存在しない。
【００４７】
そこで、差分適用部１３は、第１のソースコードが変更された箇所が差分検出部によって検出された差分に係る箇所（第２のソースコードが変更された箇所）である旨のメッセージを出力する。第１のソースコードに対する変更と、第２のソースコードに対する変更とが同一の箇所（ブロック）に行われたこととなり、両方の変更に係る内容の新たな変更をプログラマに促すものである。
【００４８】
以上詳細に説明したように、第１のソースコード２１に対する変更（ブロックｂをブロックｂ’に変更）が行われた場合に、その変更を反映し（ブロックＢ’）、かつ、その前に行われた第２のソースコード２２ａに対する変更（ブロックＡをブロックＡ”に変更）を有効に残すことが困難である場合に、新たな変更をプログラマに促すことができる。
【産業上の利用可能性】
【００４９】
第２のソースコードに対する変更の後に第１のソースコードに対する変更が行われた場合に、第２のソースコードに対する前の変更を有効に残す、ソースコード管理・生成プログラムである。多くのプログラム開発者による利用が考えられる。
【符号の説明】
【００５０】
１     ソースコード管理・生成プログラム
１１   変換部
１２     差分検出部
１３     差分適用部
２１     第１のソースコード
２２     第２のソースコード
【図１】
2019128926.tif 000003
【図２】
2019128926.tif 000004
【図３】
2019128926.tif 000005
【図４】
2019128926.tif 000006