(57)【要約】【課題】  開発時間の短縮化、生成ソフトウェアのシステムリソースの節約を図る。【解決手段】  以前にビルド処理を行った複数のソースファイル群に対して，以前のビルド処理後に更新されたソースファイルを対象として差分ビルドを行うビルド手段４５を備え、ビルド処理前におけるソースファイル群内の各ソースファイルの内容を特定する情報をそれぞれ取得してソースファイル情報として記憶するソースファイル情報取得手段４２と、差分ビルド機能による現在のビルド処理前に取得したソースファイル情報と，以前のビルド処理前に取得して記憶したソースファイル情報と，の差分を抽出するソース差分ログ抽出手段４３と、この抽出したソース差分ログ情報に基づいて，削除されているソースファイルに対応するビルド手段にて以前に生成されたビルド物件中のデータファイルを，当該ビルド物件中から削除するデータファイル削除手段４４と、を備えた。【選択図】図２
2005182102.tif 000002
【特許請求の範囲】
【請求項１】
複数のソースファイル群を端末装置にて実行可能なデータファイルにそれぞれ変換すると共に，これらデータファイル群をソフトウェアとなるビルド物件としてまとめて記憶するビルド処理を行うビルド手段を備え、
このビルド手段が，以前にビルド処理を行った前記複数のソースファイル群に対して，以前のビルド処理後に更新された前記ソースファイルを対象として再びビルド処理を行う差分ビルド機能を備えた、ビルドシステムにおいて、
前記ビルド手段によるビルド処理前における前記ソースファイル群内の各ソースファイルの内容を特定する情報をそれぞれ取得してソースファイル情報として記憶するソースファイル情報取得手段と、前記差分ビルド機能による現在のビルド処理前に取得したソースファイル情報と，以前のビルド処理前に取得して記憶した前記ソースファイル情報と，の差分を抽出するソース差分ログ抽出手段と、この抽出した情報をソース差分ログ情報として外部に出力するソース差分ログ出力手段と、を備えたことを特徴とするビルドシステム。
【請求項２】
複数のソースファイル群を端末装置にて実行可能なデータファイルにそれぞれ変換すると共に，これらデータファイル群をソフトウェアとなるビルド物件としてまとめて記憶するビルド処理を行うビルド手段を備え、
このビルド手段が，以前にビルド処理を行った前記複数のソースファイル群に対して，以前のビルド処理後に更新された前記ソースファイルを対象として再びビルド処理を行う差分ビルド機能を備えた、ビルドシステムにおいて、
前記ビルド手段によるビルド処理前における前記ソースファイル群内の各ソースファイルの内容を特定する情報をそれぞれ取得してソースファイル情報として記憶するソースファイル情報取得手段と、前記差分ビルド機能による現在のビルド処理前に取得したソースファイル情報と，以前のビルド処理前に取得して記憶した前記ソースファイル情報と，の差分を抽出するソース差分ログ抽出手段と、この抽出したソース差分ログ情報に基づいて，削除されているソースファイルに対応する前記ビルド手段にて以前に生成されたビルド物件中の前記データファイルを，当該ビルド物件中から削除するデータファイル削除手段と、を備えたことを特徴とするビルドシステム。
【請求項３】
前記抽出したソース差分ログ情報に基づいて，削除されているソースファイルに対応する前記ビルド手段にて以前に生成されたビルド物件中の前記データファイルを，当該ビルド物件中から削除するデータファイル削除手段、を備えたことを特徴とする請求項１記載のビルドシステム。
【請求項４】
前記ビルド手段によるビルド処理後に，変換された各データファイルの内容を特定する情報をそれぞれ取得してデータファイル情報として記憶するデータファイル情報取得手段と、このデータファイル情報と，以前のビルド時に取得して記憶した前記データファイル情報と，の差分を抽出するビルド差分ログ抽出手段と、この抽出した情報をビルド差分ログ情報として外部に出力するビルド差分ログ出力手段と、を備えたことを特徴とする請求項２又は３記載のビルドシステム。
【請求項５】
ソフトウェアを構成するソースファイルを提供する開発者端末にネットワークを介して接続されたビルドサーバであって、
前記開発者端末から送信される複数のソースファイル群を受信し、各ソースファイルを所定の端末装置にて実行可能なデータファイルにそれぞれ変換すると共に，これらデータファイル群をソフトウェアとなるビルド物件としてまとめて記憶するビルド処理を行うビルド手段を備えると共に、
このビルド手段が，以前にビルド処理を行った前記複数のソースファイル群に対して，以前のビルド処理後に更新された前記ソースファイルを対象として再びビルド処理を行う差分ビルド機能を備え、
前記ビルド手段によるビルド処理前における前記ソースファイル群内の各ソースファイルの内容を特定する情報をそれぞれ取得してソースファイル情報として記憶するソースファイル情報取得手段と、前記差分ビルド機能による現在のビルド処理前に取得したソースファイル情報と，以前のビルド処理前に取得して記憶した前記ソースファイル情報と，の差分を抽出するソース差分ログ抽出手段と、この抽出した情報をソース差分ログ情報として外部に出力するソース差分ログ出力手段と、を備えたことを特徴とするビルドサーバ。
【請求項６】
ソフトウェアを構成するソースファイルを提供する開発者端末にネットワークを介して接続されたビルドサーバであって、
前記開発者端末から送信される複数のソースファイル群を受信し、各ソースファイルを所定の端末装置にて実行可能なデータファイルにそれぞれ変換すると共に，これらデータファイル群をソフトウェアとなるビルド物件としてまとめて記憶するビルド処理を行うビルド手段を備えると共に、
このビルド手段が，以前にビルド処理を行った前記複数のソースファイル群に対して，以前のビルド処理後に更新された前記ソースファイルを対象として再びビルド処理を行う差分ビルド機能を備え、
前記ビルド手段によるビルド処理前における前記ソースファイル群内の各ソースファイルの内容を特定する情報をそれぞれ取得してソースファイル情報として記憶するソースファイル情報取得手段と、前記差分ビルド機能による現在のビルド処理前に取得したソースファイル情報と，以前のビルド処理前に取得して記憶した前記ソースファイル情報と，の差分を抽出するソース差分ログ抽出手段と、この抽出したソース差分ログ情報に基づいて，削除されているソースファイルに対応する前記ビルド手段にて以前に生成されたビルド物件中の前記データファイルを，当該ビルド物件中から削除するデータファイル削除手段と、を備えたことを特徴とするビルドサーバ。
【請求項７】
ソフトウェアを構成する複数のソースファイル群内の各ソースファイルの内容を特定する情報をそれぞれ取得してソースファイル情報として記憶するソースファイル情報取得工程と、
複数のソースファイル群を端末装置にて実行可能なデータファイルにそれぞれ変換すると共に，これらデータファイル群をソフトウェアとなるビルド物件としてまとめて記憶するビルド工程と、
このビルド工程後に，再びビルド処理を行う前記複数のソースファイル群の各ソースファイルの内容を特定する情報をそれぞれ取得して新たなソースファイル情報として記憶する新ソースファイル情報取得工程と、
この新たなソースファイル情報と，以前のビルド処理前に前記ソースファイル情報取得工程にて取得して記憶した前記ソースファイル情報と，の差分を抽出するソース差分ログ抽出工程と、
この抽出したソース差分ログ情報に基づいて，削除されているソースファイルに対応する前記ビルド工程にて以前に生成されたビルド物件中の前記データファイルを，当該ビルド物件中から削除するデータファイル削除工程と、
このデータファイル削除工程後に，前記複数のソースファイル群に対して，以前のビルド処理後に更新された前記ソースファイルを対象として再びビルド処理を行う再ビルド工程と、から成ることを特徴とするビルド方法。
【請求項８】
ソフトウェアの開発を行うコンピュータを、
複数のソースファイル群を端末装置にて実行可能なデータファイルにそれぞれ変換すると共に，これらデータファイル群をソフトウェアとなるビルド物件としてまとめて記憶するビルド処理を行うと共に、以前にビルド処理を行った前記複数のソースファイル群に対して，以前のビルド処理後に更新された前記ソースファイルを対象として再びビルド処理を行う差分ビルド機能を備えたビルド手段、
前記ビルド手段によるビルド処理前における前記ソースファイル群内の各ソースファイルの内容を特定する情報をそれぞれ取得してソースファイル情報として記憶するソースファイル情報取得手段、
前記差分ビルド機能による現在のビルド処理前に取得したソースファイル情報と，以前のビルド処理前に取得して記憶した前記ソースファイル情報と，の差分を抽出するソース差分ログ抽出手段、
この抽出したソース差分ログ情報に基づいて，削除されているソースファイルに対応する前記ビルド手段にて以前に生成されたビルド物件中の前記データファイルを，当該ビルド物件中から削除するデータファイル削除手段、として機能させるためのビルド用プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ビルドシステム及び方法並びにビルド用プログラムにかかり、特に、以前のビルド時から変更されたソースファイルに対して差分ビルド処理を行う機能を有するビルドシステム及び方法並びにビルド用プログラムに関する。また、上記機能を有するビルドサーバに関する。
【背景技術】
【０００２】
パーソナルコンピュータなどの端末装置で使用されるソフトウェアは、所定の言語で記述されたソースプログラムをコンパイル、リンクなど、ビルドすることにより、端末装置で実行可能なファイルとして生成される。例えば、Ｃ＋＋などのオブジェクト指向言語では、コンパイラにて複数のソースファイルを機械語に変換して複数の実行ファイルを生成し、リンカーにて結合することにより、ビルド後の成果物としてのソフトウェアを生成する。また、Ｊａｖａ（登録商標）言語による場合には、複数のソースファイルが中間言語に変換されてクラスファイルを生成し、これらがＪＡＲ形式として１つにまとめてソフトウェアを生成する。このようにしてビルドが行われる。
【０００３】
そして、上述のようにしてビルドされたソフトウェアは、複数の実行ファイル（機械語や中間言語によるもの）にて構成されるため、当該ソフトウェアの開発段階ではこれら複数のファイルを管理することが必要となる。例えば、長期のソフトウェア開発においては、ソースプログラムに変更を加えたり、段階的に機能を付加する必要が生じるが、変更や追加されたソースファイルを管理することにより、迅速かつ的確なソフトウェア開発を実現できる。このような管理システムが、下記の特許文献１に開示されている。
【０００４】
ここで、上記Ｊａｖａ（登録商標）を用いたシステムの開発案件は日に日に増加し、全開発案件に占めるＪａｖａ言語の割合も増加している。このようなＪａｖａで書かれたソースファイルをビルドするツールとしてＡｎｔというツールが存在する。このＡｎｔは、Ｊａｋａｒｔａ−Ａｐａｃｈｅプロジェクトで作成されたライセンスフリーのツールであり、現在のＪａｖａ開発環境においては、標準ビルドツールとして多くの案件で利用されているものである。
【０００５】
【特許文献１】特開平７−９３１４２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、上記Ａｎｔを用いたビルドにおいては、ビルド対象のソースファイルを削除した場合に、そのファイルがアーカイブされているビルド物件（成果物）からは削除されない、という問題があった。すなわち、その削除したソースファイルの内容をビルド物件である成果物に反映するためには、換言すると、削除したソースファイルに対応するクラスファイルをビルド物件から取り除くためには、過去にビルドしてできた成果物を総て一旦削除して、再度新たにビルドを行わなければならず、かかる作業の手間が生じると共に、処理時間が増加し、開発の遅延という問題が発生する。例えば、１つだけ不要なソースファイルが存在していた場合、そのソースファイルに対応するたった１つのクラスファイル削除するためだけに、アーカイブファイルを全て一から作成しなおさなければならないという事態が生じ、効率が悪くシステムリソースの浪費にもつながる。
【０００７】
また、ビルド対象ファイルをリリースする開発者の立場からは、ビルドした結果としてどのファイルに変更があったのかという情報を簡単に入手できれば、障害発生時においても原因の切り分けに大いに役立つことになる。実際Ａｎｔには、ログを出力する機能はあるが、前回のビルドと比較して変更のあった部分のみを出力する機能はなく、膨大なログ情報の中から開発者が関連するファイルの情報を見つけ出さなければならず、かかる作業に膨大な時間を要する、という問題があった。
【０００８】
そこで、本発明は、ソフトウェア開発時の確実性の向上を図ると共に、開発時間の短縮化を図り、さらに、生成されたソフトウェアの大容量化を抑制し、システムリソースの節約を図る、ビルドシステムを提供することをその目的とする。
【課題を解決するための手段】
【０００９】
本発明は、上記従来例の有する不都合を改善すべく、以下のような構成を採っている。まず、本発明は、複数のソースファイル群を端末装置にて実行可能なデータファイルにそれぞれ変換すると共に，これらデータファイル群をソフトウェアとなるビルド物件としてまとめて記憶するビルド処理を行うビルド手段を備え、このビルド手段が，にビルド処理を行った複数のソースファイル群に対して，以前のビルド処理後に更新されたソースファイルを対象として再びビルド処理を行う差分ビルド機能を備えた、ビルドシステムにおいて、ビルド手段によるビルド処理前におけるソースファイル群内の各ソースファイルの内容を特定する情報をそれぞれ取得してソースファイル情報として記憶するソースファイル情報取得手段と、差分ビルド機能による現在のビルド処理前に取得したソースファイル情報と，以前のビルド処理前に取得して記憶したソースファイル情報と，の差分を抽出するソース差分ログ抽出手段と、この抽出した情報をソース差分ログ情報として外部に出力するソース差分ログ出力手段と、を備えた、という構成を採っている。
【００１０】
このような構成することにより、ビルドシステムでは、まず、例えばＪａｖａ（登録商標）プログラム言語で記述されたソースファイル群をコンパイル、アーカイブすることにより、コンピュータにて実行可能なソフトウェアとしてのビルド物件が生成される。そして、一度ビルドが行われた後にソースファイルが変更されて再度ビルドが行われると、この更新されたソースファイルを対象として差分ビルド処理が行われる。これにより、ソフトウェア開発時のビルド時間の短縮化を図っている。これに加え、本発明では、差分ビルド前にソースファイルを特定する情報がソースファイル情報として取得・記憶されると共に、以前のソースファイル情報との差分が抽出される。そして、かかるソース差分ログ情報がソールプログラムを提供する開発者等に対して出力されることにより、当該開発者等は自ら提供したファイルのうち、どのファイルに変更を加えたかということを容易に認識することができる。特に、長期の時間が経過した場合であってもそのことを確認することができるため、バージョンアップなどの作業が正確かつ容易になる。
【００１１】
また、上記構成に加え、抽出したソース差分ログ情報に基づいて，削除されているソースファイルに対応するビルド手段にて以前に生成されたビルド物件中のデータファイルを，当該ビルド物件中から削除するデータファイル削除手段、を備えた、という構成であると望ましい。そして、上記構成から差分ログを出力する機能を除いた以下の構成でもよい。すなわち、複数のソースファイル群を端末装置にて実行可能なデータファイルにそれぞれ変換すると共に，これらデータファイル群をソフトウェアとなるビルド物件としてまとめて記憶するビルド処理を行うビルド手段を備え、このビルド手段が，以前にビルド処理を行った複数のソースファイル群に対して，以前のビルド処理後に更新されたソースファイルを対象として再びビルド処理を行う差分ビルド機能を備えた、ビルドシステムにおいて、ビルド手段によるビルド処理前におけるソースファイル群内の各ソースファイルの内容を特定する情報をそれぞれ取得してソースファイル情報として記憶するソースファイル情報取得手段と、差分ビルド機能による現在のビルド処理前に取得したソースファイル情報と，以前のビルド処理前に取得して記憶したソースファイル情報と，の差分を抽出するソース差分ログ抽出手段と、この抽出したソース差分ログ情報に基づいて，削除されているソースファイルに対応するビルド手段にて以前に生成されたビルド物件中のデータファイルを，当該ビルド物件中から削除するデータファイル削除手段と、を備えた、という構成であってもよい。
【００１２】
これにより、差分情報を基にして既に生成されたビルド物件中から、削除されたソースファイルに対応するすでにコンパイルされた実行可能なデータファイルが削除され、その後、差分ビルド処理が行われる。従って、削除されたソースファイルの内容をビルド物件に反映すべく、以前のビルド物件を総て削除して、ソースファイル群を一からビルドすることが抑制され、ビルド時間のさらなる短縮化を図ることができる。また、ソフトウェア内から不要なファイルが削除さえるため、これにより、ソフトウェアによるシステムリソースの節約を図ることができる。
【００１３】
また、上記構成に加え、ビルド手段によるビルド処理後に，変換された各データファイルの内容を特定する情報をそれぞれ取得してデータファイル情報として記憶するデータファイル情報取得手段と、このデータファイル情報と，以前のビルド時に取得して記憶したデータファイル情報と，の差分を抽出するビルド差分ログ抽出手段と、この抽出した情報をビルド差分ログ情報として外部に出力するビルド差分ログ出力手段と、を備えた、という構成にしてもよい。
【００１４】
これにより、以前のビルド処理によるビルド物件と、差分ビルド処理後に生成されたビルド物件との差分、詳しくは、ビルド物件であるソフトウェアを構成する実行ファイルの構成の変化部分がログ情報として出力されるため、開発者は自己の行った変更の様子をログ情報を参照することで容易に確認することができ、以後のさらなるバージョンアップなどの参考にすることができる。
【００１５】
そして、本発明では、ソフトウェアを構成するソースファイルを提供する開発者端末にネットワークを介して接続されたビルドサーバであって、開発者端末から送信される複数のソースファイル群を受信し、各ソースファイルを所定の端末装置にて実行可能なデータファイルにそれぞれ変換すると共に，これらデータファイル群をソフトウェアとなるビルド物件としてまとめて記憶するビルド処理を行うビルド手段を備えると共に、このビルド手段が，以前にビルド処理を行った複数のソースファイル群に対して，以前のビルド処理後に更新されたソースファイルを対象として再びビルド処理を行う差分ビルド機能を備え、ビルド手段によるビルド処理前におけるソースファイル群内の各ソースファイルの内容を特定する情報をそれぞれ取得してソースファイル情報として記憶するソースファイル情報取得手段と、差分ビルド機能による現在のビルド処理前に取得したソースファイル情報と，以前のビルド処理前に取得して記憶したソースファイル情報と，の差分を抽出するソース差分ログ抽出手段と、この抽出した情報をソース差分ログ情報として外部に出力するソース差分ログ出力手段と、を備えたビルドサーバをも提供している。
【００１６】
同様に、ソフトウェアを構成するソースファイルを提供する開発者端末にネットワークを介して接続されたビルドサーバであって、開発者端末から送信される複数のソースファイル群を受信し、各ソースファイルを所定の端末装置にて実行可能なデータファイルにそれぞれ変換すると共に，これらデータファイル群をソフトウェアとなるビルド物件としてまとめて記憶するビルド処理を行うビルド手段を備えると共に、このビルド手段が，以前にビルド処理を行った複数のソースファイル群に対して，以前のビルド処理後に更新されたソースファイルを対象として再びビルド処理を行う差分ビルド機能を備え、ビルド手段によるビルド処理前におけるソースファイル群内の各ソースファイルの内容を特定する情報をそれぞれ取得してソースファイル情報として記憶するソースファイル情報取得手段と、差分ビルド機能による現在のビルド処理前に取得したソースファイル情報と，以前のビルド処理前に取得して記憶したソースファイル情報と，の差分を抽出するソース差分ログ抽出手段と、この抽出したソース差分ログ情報に基づいて，削除されているソースファイルに対応するビルド手段にて以前に生成されたビルド物件中のデータファイルを，当該ビルド物件中から削除するデータファイル削除手段と、を備えたビルドサーバでもよい。
【００１７】
さらに、本発明では、ソフトウェアを構成する複数のソースファイル群内の各ソースファイルの内容を特定する情報をそれぞれ取得してソースファイル情報として記憶するソースファイル情報取得工程と、複数のソースファイル群を端末装置にて実行可能なデータファイルにそれぞれ変換すると共に，これらデータファイル群をソフトウェアとなるビルド物件としてまとめて記憶するビルド工程と、このビルド工程後に，再びビルド処理を行う複数のソースファイル群の各ソースファイルの内容を特定する情報をそれぞれ取得して新たなソースファイル情報として記憶する新ソースファイル情報取得工程と、この新たなソースファイル情報と，以前のビルド処理前にソースファイル情報取得工程にて取得して記憶したソースファイル情報と，の差分を抽出するソース差分ログ抽出工程と、この抽出したソース差分ログ情報に基づいて，削除されているソースファイルに対応するビルド工程にて以前に生成されたビルド物件中のデータファイルを，当該ビルド物件中から削除するデータファイル削除工程と、このデータファイル削除工程後に，複数のソースファイル群に対して，以前のビルド処理後に更新されたソースファイルを対象として再びビルド処理を行う再ビルド工程と、から成ることをビルド方法をも提供している。
【００１８】
また、本発明では、ソフトウェアの開発を行うコンピュータを、複数のソースファイル群を端末装置にて実行可能なデータファイルにそれぞれ変換すると共に，これらデータファイル群をソフトウェアとなるビルド物件としてまとめて記憶するビルド処理を行うと共に、以前にビルド処理を行った複数のソースファイル群に対して，以前のビルド処理後に更新されたソースファイルを対象として再びビルド処理を行う差分ビルド機能を備えたビルド手段、ビルド手段によるビルド処理前におけるソースファイル群内の各ソースファイルの内容を特定する情報をそれぞれ取得してソースファイル情報として記憶するソースファイル情報取得手段、差分ビルド機能による現在のビルド処理前に取得したソースファイル情報と，以前のビルド処理前に取得して記憶したソースファイル情報と，の差分を抽出するソース差分ログ抽出手段、この抽出したソース差分ログ情報に基づいて，削除されているソースファイルに対応するビルド手段にて以前に生成されたビルド物件中のデータファイルを，当該ビルド物件中から削除するデータファイル削除手段、として機能させるためのビルド用プログラムをも提供している。
【００１９】
かかる構成であっても、上述したビルドシステムと同様に作用し、上記目的を達成することができる。
【発明の効果】
【００２０】
本発明は、以上のように構成され機能するので、これによると、プログラム開発者が、新たなソースプログラム提供時に、以前のものと比較した変更箇所を表す差分ログ情報を取得することができるため、プログラム上の変更点を容易に認識することができる。特に、長期の時間が経過した場合であってもそのことを確認することができ、ソフトウェア開発作業が正確かつ迅速なものとなる。
【００２１】
また、削除されたソースファイルに対応するすでにコンパイルされた実行可能なデータファイルが、以前のビルド処理にて生成されたビルド物件から削除され、その後、差分ビルド処理が行われるため、より的確に変更内容を反映したビルド物件（ソフトウェア）を生成することができる。特に、不要なファイルの存在を無くすことができるため、ソフトウェアの大容量化を抑制することができる。そして、削除されたソースファイルの内容を的確にビルド物件に反映すべく、以前のビルド物件を総て削除して、ソースファイル群を一からビルドする必要がないため、ビルド時間のさらなる短縮化を図ることができる。
【発明を実施するための最良の形態】
【００２２】
本発明の特徴は、従来からソフトウェア開発システムに備わっている差分ビルド機能に、ソースファイルの変更点を開発者に明確に示す機能や、削除されたソースファイルに対応した実行ファイルをビルド物件から削除して再度ビルドを行う機能を備えた、ということが主である。これにより、迅速かつ的確にソースファイルの変更点を反映してソフトウェアの生成を行う、というものである。以下、プログラム開発言語がＪａｖａ（登録商標）である場合を例に挙げて実施例にて詳細に説明する。ただし、ビルド環境、すなわち、開発言語はＪａｖａ言語に限定されるものではない。
【実施例１】
【００２３】
以下、本発明の第一の実施例を、図１乃至図５を参照して説明する。図１は、本発明であるビルドシステムの全体構成を示す概略図である。図２は、ビルドシステムの構成を示す機能ブロック図である。図３乃至図４は、システム内で抽出されるデータの一例を示す図である。図５は、システムの動作を示すフローチャートである。
【００２４】
（全体構成）
本発明であるビルドシステムは、Ｊａｖａ（登録商標）言語によるソフトウェア開発ツールであり、ソフトウェアを構築するソースファイルを提供する開発者端末１にネットワークＮを介して接続されたビルドサーバ２にて構成される。そして、複数の開発者端末１０から提供されたソースファイルをビルドすることにより、ソフトウェアを生成するが、本実施例では特に、「Ａｎｔ」ツールを用いたＪａｖａ開発システムである。ここで、「Ａｎｔ」ツールとは、Ｊａｋａｒｔａプロジェクトから提供されるＪａｖａ用メイクツールであり、ソースファイルと実行ファイルファイルの日付を比較し、ソースファイルが更新されたものだけ、実行ファイルの生成を行うというものである。従って、たびたび変更が加えられるソフトウェア開発においては、効率よく短時間でビルドすることができるため、頻繁に用いられるものである。
【００２５】
そして、本発明では、ビルドサーバ２に本発明の特徴となる機能が備わっており、以前のビルド時に生成されたビルド物件に、迅速かつ的確にソースファイルの変更点を反映させて、ソフトウェアの累積的な開発を行うために好適なシステムである。以下、各構成について詳述すると共に、その動作を説明する。
【００２６】
（開発者端末）
開発者端末１は、ネットワークＮに接続可能なパーソナルコンピュータやサーバコンピュータにて構成されており、開発者が開発したソフトウェアのソースファイルをビルドサーバ２０に送信する端末である。そして、これら複数の者が共同してソフトウェアを開発することを背景に説明する。但し、本発明では、一人の開発者にて全てのソースファイルが提供されるソフトウェア開発に対しても、もちろん適用される。
【００２７】
この開発者端末１は、開発者にて操作されて、各自が作成したプログラムが記述されたソースファイル（図示せず）を、ネットワークＮを介してビルドサーバに送信するよう動作する（矢印１参照）。このとき、開発者端末１は、自己が開発したソースプログラムが、いかなるソフトウェアのものであるか、ということを識別できるデータと共に、ソースファイルを送信する。これは、一のソフトウェアを複数の者で開発している場合に、ビルドサーバ２側でソフトウェアごとにまとめるためである。
【００２８】
（ネットワーク）
ネットワークＮは、本実施例では、専用線や電話回線あるいはＣＡＴＶのケーブル等の有線回線や、携帯電話回線といった無線回線を用い、ＴＣＰ／ＩＰプロトコルといった通信プロトコルにて通信を行うインターネットである。但し、特定企業内のみで稼働するイントラネットや、ＴＣＰ／ＩＰ以外のプロトコルで通信する特定のネットワークであってもよい。
【００２９】
（ビルドサーバ）
本発明の中心となるビルドサーバ２は、ネットワークＮに接続されたサーバコンピュータであって、当該ネットワークＮ上のコンピュータと相互に交信するための通信部３を備えている。そして、ビルドサーバ２には、種々の演算処理を実行する演算部であるＣＰＵ４と、所定のデータを記憶する記憶部であるハードディスク（ＨＤ）５とを備えている。なお、ハードディスク５は記憶部の一例であって、これに限定されるものではない。以下、ＣＰＵ４に構築されている各処理部と、ハードディスク５に記憶されているデータの具体例を、図２を参照して説明する。
【００３０】
まず、ＣＰＵ４には、上述した開発者端末１から送信される複数のソースファイル群を受信して、ハードディスク５に記憶するソースファイル受付部４１が構築されている。このソースファイル受付部４１は、開発ソフトウェアが複数の開発者にて開発されている場合には各開発者端末１からそれぞれソースファイルを受信することになるが、同一のソフトウェアのものである場合には、それをひとまとめにして記憶する。なお、一のソフトウェアのまとまりを以下では「プロジェクト」と呼ぶ。そして、これに対応して、ハードディスク５には、受信したソースファイルを格納するソースファイル記憶部５１が備えられていて、プロジェクトごとにソースファイル群が記憶される。
【００３１】
そして、ＣＰＵ４には、上記受信したあるプロジェクトのソースファイル群を、所定の端末装置にて実行可能なデータファイルにそれぞれ変換すると共に，これらデータファイル群をソフトウェアとなるビルド物件としてまとめてビルド物件記憶部５４に記憶する、というビルド処理を行うビルド部４５が構築されている。ここで、本実施例では、開発言語がＪａｖａ言語であるため、ビルド部４５は、具体的に、まずＪａｖａＶＭにて実行可能な中間言語ファイルであるクラスファイル（実行可能なデータファイル）にコンパイルし、その後、各クラスファイルをＪａｒ形式にまとめてアーカイブを行う。これにより、ソフトウェアを生成する。なお、例えばソースファイルの名称が「００１．ｊａｖａ」である場合には、クラスファイル名を「００１．ｃｌａｓｓ」としてコンパイルする。このように、両ファイルの関係は、拡張子「．ｊａｖａ」の部分が「．ｃｌａｓｓ」に変わるだけであるので、ソースファイルとクラスファイルとの対応関係を容易に認識することができる。
【００３２】
また、上記ビルド処理は、具体的には、「Ａｎｔ」ツールにて実行される。そして、一度ビルド処理を行い、プロジェクトのビルド物件を生成した後にさらにソースファイルに変更を加えてビルド処理を行うと、以前に生成されたクラスファイルとソースファイルとのタイムスタンプを比較し、更新されたものだけを対象として差分ビルド処理を行う。これにより、変更されていないソースファイルを再びコンパイルするという無駄を排除でき、迅速なソフトウェア開発を実現することができる。なお、かかる機能は従来より公知であるため、その詳細な説明は省略する。
【００３３】
そして、本発明におけるＣＰＵ４には、上記処理部に加えて、ビルド処理前に、これらかビルドする対象となるソースファイル群、すなわち、ソフトウェアの元となるプロジェクト内の全てのソースファイルの内容を特定する情報であるソースダイジェスト情報（ソースファイル情報）を取得するソースダイジェスト取得部４２（ソースファイル情報取得手段）が構築されている。このソースダイジェスト取得部４２は、ハッシュ法にてデータを高速に検索し、ソースファイルのハッシュ値を算出して、これをソースファイルの内容を特定するソースダイジェスト情報として抽出する。そして、プロジェクト内にある全てのソースファイルのダイジェスト情報を取得し、その取得データを「source_diff.db」として、ハードディスク５内のソースダイジェスト記憶部５２に記憶しておく。その一例を、図３（ａ）に示す。なお、この場合、ソースファイルは「００１．ｊａｖａ」等であり、その内容を表すハッシュ値は数字とアルファベットで表されたものである。そして、このソースダイジェスト情報は、各プロジェクトごとに区別して記憶され、また、後に、ソースダイジェストを算出した際に、その時間的な前後関係がわかるよう、そのタイムスタンプなども記憶される。
【００３４】
また、ＣＰＵ４には、上述したように取得されたソースダイジェスト情報の差分、具体的には、同一のプロジェクトのものであって、時間的に前後するものの差分を算出するソース差分ログ抽出部４３（ソース差分ログ抽出手段）が構築されている。このソース差分ログ抽出部４３が作動するタイミングは、プロジェクトであるソースファイル群のビルド処理が行われる前であって、上述したように、ソースファイル群のソースダイジェスト情報が取得された後である。従って、ソースダイジェスト情報を取得した場合に、これと同一のプロジェクトに関する以前に取得されたソースダイジェスト情報がソースダイジェスト情報記憶部５２に存在する場合には、それを読み出して差分を抽出し、ソース差分ログ情報としてソース差分ログ記憶部５３に記憶する。すなわち、これからビルド処理を行おうとしているソースファイル群のソースダイジェスト情報と，以前のビルド処理前に取得して記憶したソースダイジェスト情報と，の差分を抽出する。このとき、ソース差分ログ情報は、プロジェクト内で、新たに提供されたソースファイルと、内容が変更されたソールファイルと、削除されたソースファイルと、を特定するデータとして抽出され記憶される。その一例を、図３（ｂ）に示す。この図では、削除されたソースファイルが「Ｄｅｌｅｔｅ」にて示される「００１．ｊａｖａ」ファイルであり、変更されたソースファイルが「Ｍｏｄｉｆｙ」にて示される「００２．ｊａｖａ」ファイルである。また、新たに提供されたソースファイルが「Ｎｅｗ」にて示される「００３．ｊａｖａ」ファイルである。
【００３５】
そして、上記ソース差分ログ情報に基づいて、削除されているソースファイル、すなわち、「Ｄｅｌｅｔｅ」にて示されるソースファイルに対応するクラスファイルであって、以前のビルド時に生成されたものを、その以前に生成されたビルド物件中から削除するクラスファイル削除部４４（データファイル削除手段）が、ＣＰＵ４に構築されている。このクラスファイル削除部４４は、ソース差分ログ情報が生成された後であって、新たにビルド処理を行う前に実行されるものである。従って、例えば、あるプロジェクト内にて、「００１．ｊａｖａ」というソースファイルが削除されたとソース差分ログ抽出部４３にて判断された場合には、そのファイル名のうち拡張子を除いた部分である「００１」をキーワードとして、ビルド物件記憶部５４内に格納されている当該プロジェクトのビルド物件内に「００１．ｃｌａｓｓ」というクラスファイルが存在するか否かを調べ、存在する場合には、当該ファイルを削除する。
【００３６】
このとき、他のソースファイルにて、削除対象となるクラスファイルが参照されているか否かをも調べる。そして、他のソースファイルにて、削除対象となるクラスファイルを参照している場合には、ビルド後にもソフトウェアが作動する上で必要なファイルであるため、その削除は行わないこととする。あるいは、その旨を表す警告情報を、ビルドサーバ２のディスプレイに表示したり、開発者端末１に送信してもよい。
【００３７】
そして、クラスファイル削除部４４が作動した後に、上述したビルド部４５は差分ビルド処理を行う。すると、更新されたソースファイル（新たに追加されたファイルや変更されたファイル）がコンパイルされ、ビルド物件記憶部５４内にすでに存在するビルド物件に対してアーカイブされる。このとき、新たに追加されたソースファイルに対応するクラスファイルは追加され、変更されたソースファイルに対応するクラスファイルは上書きされるため、これにより、ソースファイルの変更内容が反映された新たなビルド物件が構築されることとなる。従って、すでに削除されたソースファイルに対応する不要なクラスファイルがそのままビルド物件であるソフトウェア内に残されるということを防止でき、ソフトウェアの大容量化を抑制することができる。このことは、削除されたソースファイルの内容をビルド物件に反映すべく、以前のビルド物件を総て削除して、ソースファイル群を一からビルドすることを抑制することにもなり、従来と比較して、一層のビルド時間の短縮化を図ることができる。
【００３８】
また、ＣＰＵ４には、ビルド処理後に、コンパイルされた各クラスファイル（変換された実行可能なデータファイル）の内容を特定する情報をそれぞれ取得してクラスダイジェスト情報（データファイル情報）として、クラスダイジェスト記憶部５５に記憶するクラスダイジェスト取得部４６（データファイル情報取得手段）が構築されている。このクラスダイジェスト取得部４６は、生成されたクラスファイルに対して、上述したソースダイジェスト取得部４２とほぼ同様に作動する。その一例を、図４（ａ）に示す。この図に示すように、各クラスファイルのハッシュ値を抽出して、これらを「build_diff.db」としてまとめて記憶しておく。なお、このとき、アーカイブされたｊａｒ形式ファイル内のクラスファイルに関しても、ダイジェスト情報を取得しておく。
【００３９】
そして、上記クラスダイジェスト情報を算出した後に、同一のプロジェクトについて、アーカイブされたビルド物件が以前に生成されており、そのクラスダイジェスト情報が記憶されている場合には、これらの差分を抽出してクラス差分ログ情報としてクラス差分ログ記憶部５６に記憶しておく。すなわち、かかる機能を果たすクラス差分ログ抽出部４７（ビルド差分ログ抽出手段）が、ＣＰＵ４には構築されている。その一例である「build_diff.log」を、図４（ｂ）に示す。この図に示すように、上述同様に、削除されたクラスファイルを「Ｄｅｌｅｔｅ」で示し、新しく追加されたクラスファイルを「Ｎｅｗ」、変更されたクラスファイル、及び、それらをまとめたアーカイブであるｊａｒファイルを「Ｍｏｄｉｆｙ」で示す。
【００４０】
さらに、ＣＰＵ４には、ビルドサーバ２内のデータを、ディスプレイに表示したり、ネットワークＮ上の他のコンピュータに送信するなど、外部に出力するデータ出力部４８が構築されている。このデータ出力部４８は、特に、上記ソース差分抽出部４３にて抽出され、ソース差分ログ記憶部５３に記憶されているソース差分ログ情報を、開発者端末２に送信する機能（ソース差分ログ出力手段）を有している。また、同様に、上記クラス差分ログ抽出部４７にて抽出され、クラス差分ログ記憶部５６に記憶されているクラス差分ログ情報を、開発者端末２に送信する機能（ビルド差分ログ出力手段）をも有している。
【００４１】
なお、以下に説明する処理部は、各処理を実現するために開発されたビルド用プログラムが当該ＣＰＵに組み込まれることで実現されている。そして、かかるプログラムは、ＣＤ−ＲＯＭなどの可搬媒体に記憶されたものがビルドサーバ２に提供されてもよく、ネットワークＮ上の他のコンピュータからダウンロードされることにより提供されてもよい。
【００４２】
（動作）
次に、上記構成の本システムの動作、すなわち、ビルドサーバ２の動作を、図５のフローチャートを参照して説明する。
【００４３】
まず、ビルドサーバ２は、開発者１から新規のソースファイル群のリリースを受けると（ステップＳ１）、ビルドを開始する準備を行う。そして、提供されたソースファイルが含まれるプロジェクト内の全てのソースファイル、すなわち、そのソースファイルが含まれるソフトウェアに関連する全てのソースファイルのダイジェスト情報を取得し、その情報をデータベース形式ファイル「source_diff.db」として、ソースダイジェスト記憶部５２に記憶しておく（ステップＳ２、ソースファイル情報取得行程）。
【００４４】
続いて、上記ソースファイル群のソースダイジェスト情報であって、以前に取得されたものが存在するか否かを調べる（ステップＳ３）。そして、以前のソースダイジェスト情報が存在しない場合には（ステップＳ３にて否定判断）、一度もビルドを行っていないことから最初のビルド処理を行う（ステップＳ７、ビルド行程）。これにより、各ソースファイルがクラスファイルにコンパイルされ、これらがまとめられてｊａｒ形式にアーカイブされる。
【００４５】
続いて、ビルド物件のクラスダイジェスト情報を取得して、クラスダイジェスト記憶部５５に記憶しておく（ステップＳ８）。そして、このクラスダイジェストに対応する以前に取得したクラスダイジェスト情報が存在するか否かを、クラスダイジェスト記憶部５５内を調べるが（ステップＳ９）、今回の場合は新たにビルドを行った場合であるので、以前のクラスダイジェスト情報が存在しない（ステップＳ９にて否定判断）。従って、一旦、ビルド処理は終了する。
【００４６】
その後、開発者にて上記ビルドしたプロジェクト内のソースファイルに変更が加えられ、そのソースファイルが開発者端末１からビルドサーバ２に送信されると、再度ビルド処理が行われる。かかる処理の様子を以下に説明する。
【００４７】
まず、上述したように開発者端末１から変更されたソースファイルを含むソースファイル群を受け付け（ステップＳ１）、各ソースファイルのソースダイジェスト情報を取得して記憶する（ステップＳ２、新ソースファイル情報取得工程）。そして、同一プロジェクトの前回のビルド時に、ソースファイルのダイジェスト情報を取得して記憶したか否かをソースダイジェスト記憶部５２を調べ、そのタイムスタンプを比較して判断する（ステップＳ３）。このとき、上述したように、前回ビルド時のソースファイルのダイジェスト情報があるので（ステップＳ３にて肯定判断）、前回のソースファイルのダイジェスト情報を読み出し（ステップＳ４）、今回のソースファイルのダイジェスト情報と比較してソース差分ログ情報「source_diff.log」を抽出する（ソース差分ログ抽出工程）。そして、この抽出したソース差分ログ情報を、ソース差分ログ記憶部５３に記憶しておく（ステップＳ５）。このとき、ネットワークＮを通じて、ソース差分ログ情報を、開発者端末１に送信する（ソース差分ログ出力行程、図１の矢印Ｙ２参照）。なお、かかる通知は、後のビルド処理後であってもよい。
【００４８】
続いて、ソース差分ログ情報内に、「Ｄｅｌｅｔｅ」にて示される削除されたソースファイルが存在する場合には、ビルド物件記憶部５４中の以前のビルド時に生成されたビルド物件であるアーカイブから、そのソースファイルに対応するクラスファイルを削除する（ステップＳ６、データファイル削除工程）。その後、更新されて提供されたソースファイルに対してビルド処理を行う（ステップＳ７、再ビルド工程）。このとき、すでにビルド物件が存在しているため、上述したようにソースファイルの変更点のみを反映した差分ビルド処理となり、ビルド時間の短縮化を図ることができる。
【００４９】
そしてビルド後に、クラスファイルのダイジェスト情報「build_diff.db」を取得し、その情報をデータベース形式ファイルにてクラスダイジェスト記憶部５５に記憶する（ステップＳ８、データファイル情報取得行程）。また、これと同時に、前回ビルド時のクラスファイルのダイジェスト情報があるか否か、クラスダイジェスト記憶部５５内を検索して判断し（ステップＳ９）、今回は、前回ビルド時のクラスファイルのダイジェスト情報があるため（ステップＳ９にて肯定判断）、前回のクラスファイルのダイジェスト情報を読み出し（ステップＳ１０）、今回のクラスファイルのダイジェスト情報を比較してクラス差分ログ情報「build_diff.log」を抽出する（ビルド差分ログ抽出行程）。そして、かかるログ情報を、開発者端末２に送信する（ステップＳ１１、ビルド差分ログ出力行程、図１の矢印Ｙ２参照）。このようにして、ビルド処理全体を終了する。
【００５０】
このようにすることにより、本発明では、まず、ビルド対象であるソースファイルのログを開発者に対して出力することで、開発者自身がどのファイルに変更を加えたかということを後に容易に確認でき、内容の古いファイルを誤ってリリースしてしまう、ということを防止することができる。また、ソフトウェア開発が長期にわたる場合であっても、その変更点の確認が容易になり、バージョンアップなどの作業の正確性の向上、及び、当該作業の迅速化を図ることができる。さらに、削除されたソースファイルに対応するクラスファイルが以前のビルド物件中から削除され、その後、差分ビルド処理が行われるため、ビルド処理時間の短縮化を図ることができると共に、システムリソースの節約を図ることができる。
【００５１】
以上をまとめると、本発明では、システム開発における後戻り工数の削減並びにビルド時間の短縮、システムリソースの節約等の効果があり、さらなる飛躍的な開発効率の向上を図ることができる。
【００５２】
なお、上記実施例では、ビルドサーバ２がネットワークに接続されて備えられており、ネットワークＮ上の開発者端末１からソースファイルを受け付ける、という構成のシステムを例示したが、かかる構成に限定されるものではない。ビルドサーバ２が有する上記機能を、ソフトウェア開発者が有するパーソナルコンピュータなどの端末に組み込んでもよい。すなわち、ソフトウェア開発者が直接ソースファイルを作成する端末にて、上記ビルドシステムが構成されていてもよい。
【産業上の利用可能性】
【００５３】
本発明であるビルドシステムは、ソフトウェア開発時、具体的には、ソースファイルをコンパイル、アーカイブする際に用いられるため、産業上利用可能である。
【図面の簡単な説明】
【００５４】
【図１】本発明の全体的な構成の概要を示すブロック図である。
【図２】図１に開示したビルドサーバの構成を示す機能ブロック図である。
【図３】図１に開示したビルドサーバにて取得される情報の一例を示す図である。図３（ａ）はソースダイジェスト情報を示し、図３（ｂ）はソース差分ログ情報を示す。
【図４】図１に開示したビルドサーバにて取得される情報の一例を示す図である。図４（ａ）はクラスダイジェスト情報を示し、図４（ｂ）はクラス差分ログ情報を示す。
【図５】本発明の動作を示すフローチャートである。
【符号の説明】
【００５５】
１  開発者端末
２  ビルドサーバ
３  通信部
４  ＣＰＵ（演算部）
５  ハードディスク（記憶部）
４１  ソースファイル受付部
４２  ソースダイジェスト取得部（ソースファイル情報取得手段）
４３  ソース差分ログ抽出部（ソース差分ログ抽出手段）
４４  クラスファイル削除部（データファイル削除手段）
４５  ビルド部（ビルド手段、差分ビルド機能）
４６  クラスダイジェスト取得部（データファイル情報取得手段）
４７  クラス差分ログ抽出部（ビルド差分ログ抽出手段）
４８  データ出力部（ソース差分ログ出力手段、ビルド差分ログ出力手段）
５１  ソースファイル記憶部
５２  ソースダイジェスト記憶部
５３  ソース差分ログ記憶部
５４  ビルド物件記憶部
５５  クラスダイジェスト記憶部
５６  クラス差分ログ記憶部
【図１】
2005182102.tif 000003
【図２】
2005182102.tif 000004
【図３】
2005182102.tif 000005
【図４】
2005182102.tif 000006
【図５】
2005182102.tif 000007