(57)【要約】      （修正有）【課題】インクルードファイルの変更をプログラムに反映させることができる、ビルド実行支援システムを提供する。【解決手段】ビルド実行支援システム１は、ソースファイルをコンパイルし、オブジェクトファイルを出力するビルド実行支援システムである。このビルド実行支援システム１は、ソースファイル群１２の情報が格納される登録情報格納部８と、前記ソースファイル群１２から選択されるソースファイルを、コンパイル対象ファイルに決定するか否かを判定するコンパイル対象判定部１５と、前記コンパイル対象ファイルから、前記オブジェクトファイルを生成するコンパイラ実行部１９とを具備する。前記コンパイル対象判定部１５は、前記コンパイル対象ファイルが参照するインクルードファイルが前回のコンパイル時から変更されている場合に、コンパイル対象として設定する、インクルードファイル変更判定部２９を備える。【選択図】図３
2012123664.tif 000002
【特許請求の範囲】
【請求項１】
ソースファイル群及びインクルードファイル群を格納する記憶装置を参照し、前記ソースファイル群に含まれるソースファイルをコンパイルし、オブジェクトファイルを出力する、ビルド実行支援システムであって、
ビルド対象として登録された登録ソースファイル群を示す登録ソースファイル情報が格納される、登録情報格納部と、
前記登録ソースファイル群から選択される選択ソースファイルを、コンパイル対象ファイルに決定するか否かを判定する、コンパイル対象判定部と、
前記コンパイル対象ファイルをコンパイルし、前記オブジェクトファイルを生成する、コンパイラ実行部と、
を具備し、
前記コンパイル対象判定部は、
前記選択ソースファイルが参照するインクルードファイルを特定インクルードファイルとして特定し、前記特定インクルードファイルが前回のコンパイル時から変更されているか否かを判定し、変更されている場合に、前記選択ソースファイルを前記コンパイル対象ファイルとして設定する、インクルードファイル変更判定部を備える
ビルド実行支援システム。
【請求項２】
請求項１に記載されたビルド実行支援システムであって、
前記インクルードファイル変更判定部は、
前記特定インクルードファイルの配置場所が前回のコンパイル時における配置場所から変更されたか否かを判定し、変更されていた場合に、前記選択ソースファイルを前記コンパイル対象ファイルとして決定する、配置パス変更判定部を備える
ビルド実行支援システム。
【請求項３】
請求項２に記載されたビルド実行支援システムであって、
更に、
前回のコンパイル時における、ソースファイル名、インクルードファイル名、及びインクルードファイルの配置フォルダパスの対応関係を示す参照情報を格納する、参照情報格納部、
を具備し、
前記配置パス変更判定部は、
前記ソースファイル群の中から前記選択ソースファイルを読み込み、前記選択ソースファイルに記述されているインクルードファイル名を特定インクルードファイル名として特定する、インクルードファイル名特定部と、
前記記憶装置の中から前記特定インクルードファイル名を有するインクルードファイルを前記特定インクルードファイルとして検索し、検索結果に基いて、前記特定インクルードファイルの配置場所を特定パスとして特定する、パス特定部と、
前記特定パスが、前記参照情報に記載される前記配置フォルダパスに一致するか否かを判定する、パス判定部と、
一致しない場合に、前記選択ソースファイルを前記コンパイル対象ファイルとして決定するとともに、前記参照情報に記載される前記配置フォルダパスを前記特定パスに書き換える、パス更新部とを備え、
前記コンパイラ実行部は、書き換えられた前記参照情報に基づいて、前記コンパイル対象ファイルをコンパイルする
ビルド実行支援システム。
【請求項４】
請求項３に記載されたビルド実行支援システムであって、
更に、
前記登録情報格納部に登録された前記登録ソースファイル情報が前回のコンパイル時から変更されているか否かを判定し、変更されている場合に、変更後の前記各登録ソースファイルについて、ファイル名、インクルードファイル名、及びインクルードファイルの配置フォルダパスの対応関係を示す情報を生成し、参照情報として前記参照情報格納部に格納する、ソースファイル解析部
を具備する
ビルド実行支援システム。
【請求項５】
請求項１乃至４のいずれかに記載されたビルド実行支援システムであって、
前記インクルードファイル変更判定部は、更に、
前記特定インクルードファイルが前回のコンパイル時におけるファイルから編集されているか否かを判定し、編集されていた場合に、前記選択ソースファイルを前記コンパイル対象ファイルとして決定する、インクルードファイル編集判定部を備える
ビルド実行支援システム。
【請求項６】
請求項１乃至５のいずれかに記載されたビルド実行支援システムであって、
更に、
前記選択ソースファイルの記述内容が前回のコンパイル時から変更されたか否かを判定し、変更された場合に前記選択ソースファイルを前記コンパイル対象ファイルとして決定する、ソースファイル変更判定部
を具備する
ビルド実行支援システム。
【請求項７】
請求項６に記載されたビルド実行支援システムであって、
前記ソースファイル群に含まれる各ソースファイルは、作成時刻を示すソースファイルタイムスタンプ情報を有しており、
更に、
ソースファイルと、前回コンパイルされた時のソースファイルタイムスタンプ情報である前ソースファイルタイムスタンプ情報との対応関係を示す情報を格納する、ソースファイルタイムスタンプ情報格納部、
を具備し、
前記ソースファイル変更判定部は、
前記選択ソースファイルにアクセスし、前記選択ソースファイルに含まれるソースファイルタイムスタンプ情報を、選択ソースファイルタイムスタンプ情報として特定する、タイムスタンプ情報特定部と、
前記ソースファイルタイムスタンプ情報格納部を参照し、前記選択ソースファイルタイムスタンプ情報が前記前ソースファイルタイムスタンプ情報に一致するか否かを判定する、タイムスタンプ情報判定部と、
一致しない場合に、前記選択ソースファイルを前記コンパイル対象ファイルとして決定するとともに、前記前ソースファイルタイムスタンプ情報を更新する、タイムスタンプ情報更新部とを備える
ビルド実行支援システム。
【請求項８】
請求項７に記載されたビルド実行支援システムであって、
前記タイムスタンプ情報判定部は、前記ソースファイルタイムスタンプ情報格納部において、前記選択ソースファイルのファイル名に対応する前ソースファイルタイムスタンプ情報が格納されているか否かを判定し、
前記タイムスタンプ情報更新部は、前記対応する前ソースファイルタイムスタンプ情報が格納されていなかった場合に、前記選択ソースファイルを前記コンパイル対象ファイルとして決定するとともに、前記選択ソースファイルのファイル名と前記選択ソースファイルタイムスタンプ情報との対応関係を示す情報を、前記前ソースファイルタイムスタンプ情報として、前記ソースファイルタイムスタンプ情報格納部に格納する
ビルド実行支援システム。
【請求項９】
ソースファイル群及びインクルードファイル群を格納する記憶装置を参照し、前記ソースファイル群に含まれるソースファイルをコンパイルし、オブジェクトファイルを出力する、ビルド実行支援方法であって、
ビルド対象として指定された登録ソースファイル群を示す登録ソースファイル情報を登録するステップと、
前記登録ソースファイル群から選択ソースファイルを選択し、前記選択ソースファイルをコンパイル対象ファイルに決定するか否かを判定するステップと、
前記コンパイル対象ファイルをコンパイルし、前記オブジェクトファイルを生成するステップと、
を具備し、
前記コンパイル対象ファイルに決定するか否かを判定するステップは、
前記選択ソースファイルが参照するインクルードファイルを特定インクルードファイルとして特定し、前記特定インクルードファイルが前回のコンパイル時から変更されているか否かを判定し、変更されている場合に、前記選択ソースファイルを前記コンパイル対象ファイルとして設定するステップを備える
ビルド実行支援方法。
【請求項１０】
請求項９に記載されたビルド実行支援方法をコンピュータにより実現するための、ビルド実行支援プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ビルド実行支援システム、ビルド実行支援方法、及びビルド実行支援プログラムに関する。
【背景技術】
【０００２】
近年、半導体集積回路の大規模化により、コンピュータによって実行されるプログラムのサイズが増加している。プログラムの開発時には、開発者によってソースファイル群が作成される。ソースファイル群は、コンパイルされ、オブジェクトファイル群に変換される。オブジェクトファイル群がリンクされ、最終的な目的プログラムが生成される。
【０００３】
ソースファイル群に含まれるソースファイルも、その内容が複雑化しており、容易に管理することが求められている。容易に管理するために、インクルードファイルが用いられることがある。インクルードファイルは、汎用的な機能等を実現するためのファイルであり、ソースファイルとは別に用意される。ソースファイルには、参照するインクルードファイルのファイル名（インクルードファイル名）が記述される。ソースファイルをコンパイルする際には、参照するインクルードファイルが、オブジェクトファイルに取り込まれる。
【０００４】
ところで、プログラムの開発時には、ソースファイルが、必要に応じて編集される。編集結果を最終的なプログラムに反映させるためには、ソースファイル群のなかから編集が行われたソースファイルを特定し、特定したソースファイルを再度コンパイルしなければならない。この際、ソースファイルが誤って特定されると、追加または修正が最終的なプログラムに反映されず、所望するプログラムを得ることができない。
【０００５】
関連技術が、特許文献１（特開平１０−２８９１３６号公報）に記載されている。図１は、特許文献１に記載されたデータファイルロードシステムを示すブロック図である。このデータファイルロードシステムは、ロード要求された元データファイル１３１をリードオンリー記録装置１３０上で検索し、その識別情報を生成する元データ検索手段１２１、元データファイルの修正データファイルの有無を示す修正情報を登録する修正情報データベース１４１、識別情報をキーとして修正情報データベースを検索し記憶装置１４０に修正データファイルが存在するかどうかを判別し、存在しなければ元データファイルのパス情報を出力する修正データ検索手段１２２、修正データファイルのパス情報をロード要求されたデータファイルのパス情報として仮想的に置き換えて出力するデータファイルパス置換手段１２３、元データファイルまたは修正データファイルのパス情報に基づいて、リードオンリー記憶装置または記憶装置からデータファイルをロード要求されたデータファイルとしてロード出力するロード出力手段１５０とを備える。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平１０−２８９１３６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
特許文献１に記載されたデータファイルロードシステムでは、最新のデータファイルを特定するために、修正情報データベースが用いられる。ソースファイルを修正した場合、開発者は、修正情報データベースを作成し、データファイルロードシステムに入力しなければならない。作成した修正情報データベースが間違っていた場合、正しいデータファイルを特定することができない可能性がある。
【０００８】
また、ソースファイルがインクルードファイルを参照している場合には、ソースファイルの記述内容が編集されなくても、参照先のインクルードファイルが編集されることがある。この場合、ソースファイルが編集されていないため、参照先のインクルードファイルが編集されていても、ソースファイルがコンパイル対象として抽出されないことがある。そのため、インクルードファイルの編集結果が最終的なプログラムに反映されない、という問題点があった。
【課題を解決するための手段】
【０００９】
本発明に係るビルド実行支援システムは、ソースファイル群及びインクルードファイル群を格納する記憶装置を参照し、前記ソースファイル群に含まれるソースファイルをコンパイルし、オブジェクトファイルを出力する、ビルド実行支援システムである。このビルド実行支援システムは、ビルド対象として登録された登録ソースファイルを示す登録ソースファイル情報が格納される、登録情報格納部と、前記登録ソースファイル群から選択ソースファイルを選択し、前記選択ソースファイルをコンパイル対象ファイルに決定するか否かを判定する、コンパイル対象判定部と、前記コンパイル対象ファイルをコンパイルし、前記オブジェクトファイルを生成する、コンパイラ実行部とを具備する。前記コンパイル対象判定部は、前記選択ソースファイルが参照するインクルードファイルを特定インクルードファイルとして特定し、前記特定インクルードファイルが前回のコンパイル時から変更されているか否かを判定し、変更されている場合に、前記選択ソースファイルを前記コンパイル対象ファイルとして設定する、インクルードファイル変更判定部を備える。
【００１０】
この発明によれば、特定インクルードファイルが前回のコンパイル時から変更されている場合、登録ソースファイルがコンパイル対象ファイルとして設定される。すなわち、登録ソースファイルの記述内容が変更されていなくても、特定インクルードファイルが変更されていれば、登録ソースファイルがコンパイル対象ファイルとして設定される。従って、特定インクルードファイルの変更を最終的なプログラムに反映させることができる。
【００１１】
本発明に係るビルド実行支援方法は、ソースファイル群及びインクルードファイル群を格納する記憶装置を参照し、前記ソースファイル群に含まれるソースファイルをコンパイルし、オブジェクトファイルを出力する、ビルド実行支援方法である。このビルド実行支援方法は、ビルド対象として指定された登録ソースファイルを示す登録ソースファイル情報を登録するステップと、前記登録ソースファイルをコンパイル対象ファイルに決定するか否かを判定するステップと、前記コンパイル対象ファイルをコンパイルし、前記オブジェクトファイルを生成するステップとを具備する。前記コンパイル対象ファイルに決定するか否かを判定するステップは、前記登録ソースファイルが参照するインクルードファイルを特定インクルードファイルとして特定し、前記特定インクルードファイルが前回のコンパイル時から変更されているか否かを判定し、変更されている場合に、前記登録ソースファイルを前記コンパイル対象ファイルとして設定するステップを備える。
【００１２】
本発明に係るビルド実行支援プログラムは、上述のビルド実行支援方法をコンピュータにより実現するためのプログラムである。
【発明の効果】
【００１３】
本発明によれば、インクルードファイルの配置されているフォルダが変更された場合であっても、インクルードファイルの変更を最終的なプログラムに反映させることができる、ビルド実行支援システム、ビルド実行支援方法、及びビルド実行支援プログラムが提供される。
【図面の簡単な説明】
【００１４】
【図１】特許文献１（特開平１０−２８９１３６号公報）に記載されたデータファイルロードシステムを示すブロック図である。
【図２】本実施形態に係るビルド実行支援システムを示す構成図である。
【図３】ビルド実行支援システムを示す機能構成図である。
【図４】参照情報を示す概念図である。
【図５】ソースファイルタイムスタンプ情報を示す概念図である。
【図６】ビルド対象支援システムの動作方法を概略的に示すフローチャートである。
【図７】ステップＳ２０におけるデータの流れを示す図である。
【図８】ステップＳ２０における動作を詳細に示すフローチャートである。
【図９】ソースファイル変更判定部の構成を詳細に示すブロック図である。
【図１０】ステップＳ４０における動作を詳細に示すフローチャートである。
【図１１】配置パス変更判定部を詳細に示すブロック図である。
【図１２】ステップＳ５０における動作を詳細に示すフローチャートである。
【図１３】ステップＳ６０におけるデータの流れを示す図である。
【図１４】ステップＳ６０の動作を詳細に示すフローチャートである。
【発明を実施するための形態】
【００１５】
以下に、図面を参照しつつ、本発明の実施形態について説明する。
【００１６】
図２は、本実施形態に係るビルド実行支援システム１を示す構成図である。図２に示されるように、ビルド実行支援システム１には、外部記憶装置６が接続されている。
【００１７】
外部記憶装置６には、ソースファイル群１２、インクルードファイル群１３、及びオブジェクトファイル群１４が格納されている。ソースファイル群１２に含まれる各ソースファイルには、参照するインクルードファイルのファイル名が記述されている。インクルードファイル群１３は、ソースファイル群１２によって参照されるファイル群である。オブジェクトファイル群１４は、ソースファイル群１２がコンパイルされることにより生成されたファイル群である。各ファイル群に含まれる各ファイルには、そのファイルの作成日時を示すタイムスタンプ情報が記述されている。
【００１８】
本実施形態に係るビルド実行支援システム１は、ソースファイル群１２の中からコンパイルするべきソースファイルを決定し、決定したソースファイルをコンパイルし、オブジェクトファイルを生成する機能を有している。ソースファイル群１２において、既にコンパイル済みのソースファイルについては、コンパイルを再度行なう必要は無い。一方で、修正などが行なわれたソースファイルについては、コンパイルを再度行い、最終的な目的プログラムに修正等を反映させる必要がある。そこで、本実施形態に係るビルド実行支援システム１は、コンパイル対象のソースファイルが的確に決定されるように、工夫されている。
【００１９】
図２に示されるように、ビルド実行支援システム１は、ＣＰＵ４、ＲＯＭ２、格納部３（ＲＡＭ）、及び入力装置５（例えばマウス及びキーボード）を備えており、これらはバスを介して接続されている。ＲＯＭ２には、ビルド実行支援プログラム７が格納されている。ビルド実行支援システム１の機能は、ＣＰＵ４がビルド実行支援プログラム７を実行することにより、実現される。但し、図２に示される構成は一例に過ぎず、他の構成によってビルド実行支援システム１を実現することも可能である。
【００２０】
図３は、ビルド実行支援システム１を示す機能構成図である。図３に示されるように、ビルド実行支援システム１は、ソースファイル解析部１４、コンパイル対象判定部１５、及びコンパイラ実行部１９を有している。また、格納部３は、登録情報格納部８、参照情報格納部９、ソースファイルタイムスタンプ情報格納部１０、及びコンパイル対象ファイル情報格納部１１を有している。
【００２１】
登録情報格納部８には、登録ソースファイル情報２０、及びインクルードパス情報２１が格納されている。登録ソースファイル情報２０は、ビルド対象として選ばれたソースファイル群（登録ソースファイル群）のファイル名を示す情報である。インクルードパス情報２１は、インクルードファイル群１３が配置されているフォルダを特定する配置パス群を、リストとして示す情報である。登録ソースファイル情報２０及びインクルードパス情報２１は、ユーザにより、入力装置５を介して、登録情報格納部８に格納される。
【００２２】
参照情報格納部９には、参照情報が格納される。図４は、参照情報を示す概念図である。参照情報は、登録ソースファイル群に含まれる各登録ソースファイルに関して、ソースファイル名、インクルードファイル名、及びインクルードファイルの配置フォルダパスの対応関係を示している。参照情報は、ビルド実効支援システム１によって生成され、格納される。
【００２３】
ソースファイルタイムスタンプ情報格納部１０には、ソースファイルタイムスタンプ情報が格納される。図５は、ソースファイルタイムスタンプ情報を示す概念図である。ソースファイルタイムスタンプ情報は、ソースファイル名と、前回のコンパイル時におけるタイムスタンプ情報（前ソースファイルタイムスタンプ情報）との対応関係を示している。ソースファイルタイムスタンプ情報も、参照情報と同様に、ビルド実行支援システム１によって生成され、格納される。
【００２４】
コンパイル対象ファイル情報格納部１１には、コンパイル対象ファイル情報が格納される。コンパイル対象ファイル情報は、コンパイル対象として選択されたソースファイルのファイル名を示す情報である。コンパイル対象ファイル情報も、参照情報と同様に、ビルド実行支援システムによって生成され、格納される。
【００２５】
ソースファイル解析部１４は、ソースファイル群１２に含まれる各ソースファイルの構文を解析する機能を有している。ソースファイル解析部１１４は、その解析結果に基いて、参照先のインクルードファイルの配置フォルダを特定する。また、ソースファイル解析部１４は、その特定結果に基いて、参照情報を生成し、参照情報格納部９に格納する。
【００２６】
コンパイル対象判定部１５は、登録ソースファイル情報に基づいて、登録ソースファイル群から選択ソースファイルを選択する。そして、コンパイル対象判定部１５は、選択ソースファイルをコンパイル対象ファイルに設定するか否かを判定する。図３に示されるように、コンパイル対象判定部１５は、ソースファイル変更判定部１６、配置パス変更判定部１７、及びインクルードファイル編集判定部１８を有している。
【００２７】
ソースファイル変更判定部１６は、選択ソースファイルの記述内容が、前回のコンパイル時から変更されているか否かを判定する機能を有している。変更されている場合、ソースファイル変更判定部１６は、選択ソースファイルをコンパイル対象ファイルとして設定する。
【００２８】
配置パス変更判定部１７は、選択ソースファイルが参照するインクルードファイルの配置場所が、前回のコンパイル時から変更されているか否かを判定する機能を有している。変更されている場合、配置パス変更判定部１７は、選択ソースファイルをコンパイル対象ファイルとして設定する。
【００２９】
インクルードファイル編集判定部１８は、選択ソースファイルが参照するインクルードファイルが、前回のコンパイル時から編集されているか否かを判定する機能を有している。変更されている場合、インクルードファイル編集判定部１８は、選択ソースファイルをコンパイル対象ファイルとして設定する。
【００３０】
コンパイラ実行部１９は、コンパイル対象ファイルに設定されたソースファイルをコンパイルする機能を有している。ソースファイルがインクルードファイルを参照している場合には、コンパイラ実行部１９は、参照情報に基づいて参照先のインクルードファイルを特定し、特定したインクルードファイルを用いてソースファイルをコンパイルする。
【００３１】
続いて、本実施形態に係るビルド対象支援システムの動作方法を、概略的に説明する。図６は、ビルド対象支援システムの動作方法を概略的に示すフローチャートである。
【００３２】
ステップＳ１０：
ユーザが入力装置５を介してビルド指示をビルド実行支援システム１に入力したとする。ビルド指示が与えられると、ソースファイル解析部１４は、登録情報格納部８にアクセスし、登録ソースファイル情報２０及びインクルードパス情報２１が前回のビルド時から変更されているか否かを判定する。変更されている場合には、次のステップＳ２０の処理が実行され、参照情報が作成される。一方、変更が加えられていない場合、ステップＳ３０の処理が実行される。尚、登録ソースファイル情報２０が新たに登録されていた場合についても、変更が加えられたものとみなされ、ステップＳ２０の処理が実行される。
【００３３】
ステップＳ２０：
登録ソースファイル情報２０またはインクルードパス情報２１が変更されていた場合、ソースファイル解析部１４は、外部記憶装置６にアクセスし、登録ソースファイル情報２０によって特定されるソースファイル（登録ソースファイル）を、外部記憶装置６から読み込む。ソースファイル解析部１４は、読み込んだ各登録ソースファイルの構文を解析し、記述されているインクルードファイル名（参照先のインクルードファイル名）を特定する。更に、ソースファイル解析部１４は、特定したインクルードファイル名に基いて、外部記憶装置６から参照先のインクルードファイルを検索し、参照先のインクルードファイルが配置されているフォルダのパス（配置フォルダパス）を特定する。そして、ソースファイル解析部１４は、各登録ソースファイルについて、参照情報を生成し、参照情報格納部９に格納する。
【００３４】
ステップＳ３０：
次いで、ソースファイル変更判定部１６が、登録ソースファイル情報２０を参照し、登録ソースファイル群から選択ソースファイルを選択する。選択ソースファイルは、コンパイル対象とするか否かの判定対象になるファイルである。
【００３５】
ステップＳ４０：
ソースファイル変更判定部１６は、ソースファイル群１２にアクセスし、選択ソースファイルの記述内容が前回のコンパイル時のファイルから変更されているか否かを判定する。具体的には、外部記憶装置６に格納された選択ソースファイルのタイムスタンプ情報を、ソースファイルタイムスタンプ情報格納部１０に格納されたソースファイルタイムスタンプ情報と比較することにより、変更されているか否かを判定する。変更されていなかった場合、ステップＳ５０の処理が行われる。変更されていた場合、ステップＳ７０の処理が行われ、選択ソースファイルがコンパイル対象ファイルに設定される。
【００３６】
ステップＳ５０：
選択ソースファイルが変更されていなかった場合、配置パス変更判定部１７が、選択ソースファイルが参照するインクルードファイルを特定インクルードファイルとして特定する。そして、特定インクルードファイルの配置場所が、前回のコンパイル時から変更されているか否かを判定する。変更されていなかった場合、ステップＳ６０の処理が行われる。変更されていた場合、ステップＳ７０の処理が行われ、選択ソースファイルがコンパイル対象ファイルに設定される。
【００３７】
ステップＳ６０：
ステップＳ５０において、配置場所が変更されていなかった場合、インクルードファイル編集判定部１８が、特定インクルードファイルが前回のコンパイル時から編集されているか否かを判定する。編集されていなかった場合には、ステップＳ９０の処理が行われる。編集されていた場合には、ステップＳ７０の処理が行われ、選択ソースファイルがコンパイル対象ファイルに設定される。
【００３８】
ステップＳ７０：
既述のように、ステップＳ４０において変更ありと判定された場合には、ソースファイル変更判定部１６が、選択ソースファイルをコンパイルファイル対象ファイルとして設定する。すなわち、ソースファイル変更判定部１６は、選択ソースファイルのファイル名を示す情報を、コンパイル対象ファイル情報として、コンパイル対象ファイル情報格納部１１に登録する。同様に、ステップＳ５０において変更ありと判定された場合にも、配置パス変更判定部１７が、選択ソースファイルをコンパイルファイル対象ファイルとして設定する。また、ステップＳ６０において編集されていた場合にも、インクルードファイル編集判定部１８が、選択ソースファイルをコンパイルファイル対象ファイルとして設定する。その後、ステップＳ８０の処理が行われる。
【００３９】
ステップＳ８０：
選択ソースファイルがコンパイル対象ファイルとして設定された後、ソースファイルタイムスタンプ情報格納部１０に記述された前ソースファイルタイムスタンプ情報（図５参照）が、更新される。
【００４０】
ステップＳ９０：
次いで、インクルードファイル編集判定部１８が、登録ソースファイル群に含まれる全ての登録ソースファイルが選択ソースファイルとして選択されたか否かについて、判定する。すなわち、インクルードファイル編集判定部１８は、全ての登録ソースファファイルについて、ステップＳ４０〜Ｓ７０の処理が行われたか否かを判定する。未処理の登録ソースファイルが存在する場合には、ステップＳ３０に戻り、別の登録ソースファイルが新たな選択ソースファイルとして選択される。
【００４１】
ステップＳ１００：
未処理の登録ソースファイルが存在しない場合には、コンパイラ実行部１９が、コンパイル対象ファイル情報格納部１１を参照して、コンパイル対象ファイルを特定する。そして、コンパイラ実行部１９は、ソースファイル群１２の中からコンパイル対象ファイルを読み込み、コンパイルする。この際、コンパイラ実行部１９は、参照情報を参照することにより、参照先のインクルードファイルの配置場所を特定する。そして、特定結果に基いて参照先のインクルードファイルにアクセスし、コンパイル結果に参照先のインクルードファイルを取り込む。これにより、オブジェクトファイルが生成される。生成されたオブジェクトファイルは、外部記憶装置６に格納される。
【００４２】
以上説明した方法によれば、インクルードファイルの配置場所が変更されていた場合、ステップＳ５０において、そのインクルードファイルを参照するソースファイルが、コンパイル対象ファイルとして設定される。また、ステップＳ６０において、インクルードファイルが編集されていた場合、そのインクルードファイルを参照するソースファイルが、コンパイル対象ファイルに設定される。従って、ソースファイルの記述内容自体には変更がなかったとしても、参照先であるインクルードファイルが編集されていた場合及び参照先のインクルードファイルの配置場所が変更されていた場合には、ソースファイルがコンパイルされる。これにより、インクルードファイルに加えられた変更点を、確実に最終的なプログラムに反映させることができる。
【００４３】
続いて、ソースファイル解析部１４、ソースファイル変更判定部１６、配置パス変更判定部１７、及びインクルードファイル編集判定部１８について、詳細に説明する。
【００４４】
まず、図７及び図８を参照し、ソースファイル解析部１４について詳細に説明する。図７は、ステップＳ２０におけるデータの流れを示す図である。図８は、ステップＳ２０における動作を詳細に示すフローチャートである。
【００４５】
ステップＳ２１：
ステップＳ１０において、登録ソースファイル情報２０が変更されていた場合、ソースファイル解析部１４は、登録ソースファイル情報２０に基づいて、登録ソースファイル群から、処理対象ソースファイルを選択する。
【００４６】
ステップＳ２２：
次いで、ソースファイル解析部１４は、外部記憶装置６にアクセスし、ソースファイル群１２から、処理対象ソースファイルを読み込み、その構文を解析する。解析結果に基いて、ソースファイル解析部１４は、記述されているインクルードファイル名を特定する。
【００４７】
ステップＳ２３：
次いで、ソースファイル解析部１４は、インクルードパス情報２１を取得する。既述のように、インクルードパス情報２１には、インクルードファイル群１３が配置されているフォルダの配置パス群が、リストとして示されている。そこで、ソースファイル解析部１４は、外部記憶装置６にアクセスし、インクルードパス情報２１に示されるフォルダにリストの順番にアクセスする。そして、アクセスしたフォルダ内から、特定したインクルードファイル名を有するインクルードファイルを検索する。インクルードファイルが見つかった場合には、次のステップＳ２４の処理が行われ、見つからなかった場合にはステップＳ２５の処理が行われる。
【００４８】
ステップＳ２４：
インクルードファイルが発見された場合、ソースファイル解析部１４は、処理対象ソースファイルのファイル名、処理対象ソースファイルに記述されるインクルードファイル名、及び発見したインクルードファイルの配置フォルダパスとの対応関係を示す情報を、参照情報として生成する。生成された参照情報は、参照情報格納部９に格納される。
【００４９】
ステップＳ２５：
その後、ソースファイル解析部１４は、登録ソースファイル群に含まれる全ての登録ソースファイルについて、ステップＳ２１〜Ｓ２４の処理が行われたか否かを判別する。未処理の登録ソースファイルが存在する場合には、ステップＳ２１に戻り、登録ソースファイル群の中から未処理のファイルが新たに処理対象ソースファイルとして選択され、ステップＳ２２以降の処理が繰り返される。全ての登録ソースファイルについて処理が終了していた場合、ソースファイル解析部１４は、その旨をコンパイル対象判定部１５に通知し、処理を終了する。
【００５０】
以上のステップＳ２１〜２５の動作により、登録ソースファイル情報２０が変更された場合に、各登録ソースファイルについての参照情報が、参照情報格納部９に格納されることになる。
【００５１】
続いて、ソースファイル変更判定部１６について、詳細に説明する。図９は、ソースファイル変更判定部１６の構成を詳細に示すブロック図であり、図１０はステップＳ４０における動作を詳細に示すフローチャートである。図９に示されるように、ソースファイル変更判定部１６は、タイムスタンプ情報取得部２２、タイムスタンプ情報判定部２３、及びタイムスタンプ情報更新部２４を有している。
【００５２】
ステップＳ４１：
タイムスタンプ情報取得部２２は、ソースファイル群１２にアクセスし、ステップＳ３０（図６参照）で選択した選択ソースファイルに記載されたタイムスタンプ情報を取得する。そして、取得した情報を、選択タイムスタンプ情報として、タイムスタンプ情報判定部２３に通知する。
【００５３】
ステップＳ４２：
タイムスタンプ情報判定部２３は、ソースファイルタイムスタンプ情報格納部１０（図５参照）にアクセスし、選択ソースファイルに対応する前ソースファイルタイムスタンプ情報を取得する。タイムスタンプ情報判定部２３は、選択タイムスタンプ情報と前ソースファイルタイムスタンプ情報とが一致するか否かを判定する。選択ソースファイルの記述内容が前回のコンパイル時から変更されていれば、タイムスタンプ情報は一致しない。逆に、変更されていなければ、タイムスタンプ情報同士が一致するはずである。判定結果は、タイムスタンプ情報更新部２４に通知される。
【００５４】
尚、選択ソースファイルが新たにビルド対象として登録されたソースファイルである場合には、対応する前ソースファイルタイムスタンプ情報は存在しない。この場合、タイムスタンプ情報判定部２３は、タイムスタンプ情報同士が一致しないものと判定する。タイムスタンプ情報同士が一致する場合、タイムスタンプ情報更新部２４は、その旨を配置パス変更判定部１７に通知し、処理を終了する。一方、一致しない場合には、ステップＳ７０の処理が実行される。すなわち、タイムスタンプ情報更新部２４は、選択ソースファイルのファイル名を示す情報をコンパイル対象ファイル情報として生成し、コンパイル対象ファイル情報格納部１１に格納する。また、タイムスタンプ情報更新部２４は、前タイムスタンプ情報を更新する。
【００５５】
ソースファイルの記述内容が変更された場合には、記述されるタイムスタンプ情報も更新される。従って、上述のように、タイムスタンプ情報同士を比較することにより、選択ソースファイルの記述内容が前回のコンパイル時に対して変更されているか否かを判断することができる。
【００５６】
続いて、配置パス変更判定部１７について詳述する。図１１は、配置パス変更判定部１７を詳細に示すブロック図である。図１２は、ステップＳ５０における動作を詳細に示すフローチャートである。図１１に示されるように、配置パス変更判定部１７は、インクルードファイル名特定部２５、パス特定部２６、パス判定部２７、及びパス更新部２８を備えている。
【００５７】
ステップＳ５１：
ステップＳ４２（図１０参照）においてタイムスタンプ情報が一致した場合、インクルードファイル名特定部２５が、ソースファイル群１２から、選択ソースファイルを読み込み、構文を解析する。インクルードファイル名特定部２５は、選択ソースファイルに記述されたインクルードファイル名を特定インクルードファイル名として特定し、特定インクルードファイル名データとしてパス特定部２６に通知する。
【００５８】
ステップＳ５２：
パス特定部２６は、インクルードパス情報２１を取得する。そして、インクルードパス情報２１に記載されるリストの順番に従ってフォルダにアクセスし、特定インクルードファイル名を有するインクルードファイルを検索し、その配置場所を特定パスとして特定する。パス特定部２６は、特定パスを示す特定パスデータを生成し、パス判定部２７に通知する。
【００５９】
ステップＳ５３：
パス判定部２７は、参照情報格納部９を参照し、特定パスデータによって示される特定パスが、参照情報に記載される配置フォルダパスと一致するか否かを判定する。
【００６０】
ステップＳ５４：
特定パスが配置フォルダパスに一致しない場合、パス更新部２８が、参照情報に記載される配置フォルダパスを、特定パスに更新する。その後、ステップＳ７０の処理が行われ、選択ソースファイルがコンパイル対象ファイルに設定される。
【００６１】
ステップＳ５５：
一方、特定パスが配置フォルダパスに一致する場合、パス判定部２７は、選択ソースファイルが参照する全てのインクルードファイルについて、ステップＳ５１以降の処理が行われたか否かを確認する。未処理のインクルードファイルが存在する場合には、選択ソースファイルに記載される他のインクルードファイル名について、ステップＳ５１以降の処理が繰り返される。全てのインクルードファイルについて処理が行われていた場合、パス判定部２７は、その旨をインクルードファイル編集判定部１８に通知し、処理を終了する。
【００６２】
以上説明したステップＳ５１〜５５の処理により、参照先のインクルードファイルの保存場所が変更されている場合には、選択ソースファイルの記述内容に変更が無かったとしても、選択ソースファイルがコンパイル対象ファイルとして設定される。また、ステップＳ５４の処理により、参照情報において、インクルードファイルの配置フォルダパスは、最新の情報に更新されることになる。
【００６３】
続いて、図１３及び図１４を参照し、インクルードファイル編集判定部１８について詳細に説明する。図１３は、ステップＳ６０におけるデータの流れを示す図であり、図１４は、ステップＳ６０の動作を詳細に示すフローチャートである。
【００６４】
ステップＳ６１：
ステップＳ５５（図１２参照）において全てのインクルードファイルの確認が終了した場合、インクルードファイル編集判定部１８が、オブジェクトファイル群１４にアクセスし、選択ソースファイルがコンパイルされて生成されたオブジェクトファイルがオブジェクト群１４に含まれているか否かを判定する。含まれていなかった場合には、ステップＳ７０の処理が実行され、選択ソースファイル名を示す情報が、コンパイル対象ファイル情報として、コンパイル対象ファイル情報格納部１１に格納される。一方、含まれていた場合には、次のステップＳ６２の処理が行われる。
【００６５】
ステップＳ６２：
インクルードファイル編集判定部１８は、参照情報格納部９にアクセスし、選択ソースファイルが参照するインクルードファイルのファイル名、及び配置フォルダパスを特定する。インクルードファイル編集判定部１８は、特定したファイル名及び配置フォルダパスに基いて、インクルードファイル群１３にアクセスし、選択ソースファイルが参照するインクルードファイルに記述されたタイムスタンプ情報を取得する。選択ソースファイルが参照するインクルードファイルが複数存在する場合には、それぞれのインクルードファイルについて、タイムスタンプ情報を取得する。
【００６６】
ステップＳ６３：
次いで、インクルードファイル編集判定部１８は、オブジェクトファイル群１４にアクセスし、選択ソースファイルに対応するオブジェクトファイルに記述されたタイムスタンプ情報を取得する。
【００６７】
ステップＳ６４：
次いで、インクルードファイル編集判定部１８は、ステップＳ６２において取得したインクルードファイルのタイムスタンプ情報を、ステップＳ６３で取得したオブジェクトファイルのタイムスタンプ情報と比較し、インクルードファイルの作成日時がオブジェクトファイルの作成日時よりも新しいか否かを判定する。インクルードファイルの方が新しい場合には、前回のコンパイル時からインクルードファイルが編集されていることになる。従って、インクルードファイル編集判定部１８は、ステップＳ７０の処理を行い、選択ソースファイルをコンパイル対象ファイルとして設定する。一方、インクルードファイルが新しく無い場合には、前回のコンパイル時からインクルードファイルが編集されていないことになる。この場合には、選択ソースファイルを再度コンパイルする必要は無い。従って、ステップＳ９０（図６参照）の処理が実行される。尚、選択ソースファイルが参照するインクルードファイルが複数存在する場合、オブジェクトファイルのタイムスタンプ情報よりも新しいインクルードファイルが一つでも存在すれば、ステップＳ７０の処理が行われる。
【００６８】
以上のステップＳ６１〜６４の動作によれば、インクルードファイルとオブジェクトファイルとのタイムスタンプ情報同士を比較することにより、インクルードファイルが編集されたか否かを判定することが可能である。これにより、参照先のインクルードファイルが編集されている場合には、選択ソースファイルの記述内容に変更が無かったとしても、選択ソースファイルがコンパイル対象ファイルとして設定される。
【００６９】
以上説明したように、本実施形態によれば、ステップＳ４０の処理により、ソースファイルの記述内容に変更があった場合には、そのソースファイルがコンパイル対象として検出される。従って、ソースファイルに対してなされた変更を、確実に、最終的な目的プログラムに反映させることができる。
【００７０】
また、本実施形態によれば、ステップＳ５０の処理により、ソースファイルの記述内容に変更がなくても、参照するインクルードファイルの配置場所が変更されていた場合には、ソースファイルがコンパイル対象として選択される。また、参照情報において、配置フォルダパスが変更後のパスに更新される。
【００７１】
更に、本実施形態によれば、ステップＳ６０の処理により、ソースファイルの記述内容に変更がなくても、参照するインクルードファイルが編集されていれば、そのソースファイルがコンパイル対象として選択される。従って、インクルードファイルに対してなされた編集を、確実に、最終的な目的プログラムに反映させることが可能である。
【００７２】
加えて、本実施形態によれば、ソースファイル解析部１４によって、参照情報格納部９に格納される参照情報が生成される。更に、インクルードファイルの配置場所が変更されていた場合には、配置パス変更判定部１７が、参照情報における配置フォルダパスを、変更後のパスに更新する。すなわち、最新の参照情報が自動的に生成され、ユーザが、参照関係を示す情報を作成する必要がない。参照情報の作成間違いなどが生じず、コンパイル時において、ソースファイルが参照するインクルードファイルを確実に特定し、オブジェクトファイルに反映させることが可能となる。
【００７３】
続いて、本実施形態についてより具体的に説明するため、動作例について説明する。
【００７４】
＜動作例１＞
動作例１として、初回のビルド処理が行われる場合の動作について説明する。初回のビルド処理を行う場合、ユーザは、入力装置５を用いて、登録ソースファイル情報２０及びインクルードパス情報２１を登録情報格納部３に登録する（図３参照）。
【００７５】
ユーザがビルド指示を入力すると、ステップＳ１０（図６参照）により、ソースファイル解析部１４が、登録ソースファイル情報２０が変更されたか否かを判断する。本動作例では、登録ソースファイル情報２０が新規に登録されている。従って、ソースファイル解析部１４は、登録ソースファイル情報２０が変更されているもの判断し、ステップＳ２０の処理が行われる。
【００７６】
ステップＳ２０において、ソースファイル解析部１４が、各登録ソースファイルについて、参照情報（図４参照）を生成し、参照情報格納部９に格納する。
【００７７】
次いで、ステップＳ３０（図６参照）において、ソースファイル変更判定部１６が、選択ソースファイルを選択する。
【００７８】
次いで、ステップＳ４０（図１０参照）において、ソースファイル変更判定部１６が、選択ソースファイルのタイムスタンプ情報と、ソースファイルタイムスタンプ情報格納部１０に格納された前ソースファイルタイムスタンプ情報とを比較する。本動作例では、選択ソースファイルは、新たにビルド対象として登録されたソースファイルであるので、一致しないものと判定される。その結果、ステップＳ７０の処理が実行され、選択ソースファイルがコンパイル対象ファイルとして登録される。また、ステップＳ８０の処理により、ソースファイルタイムスタンプ情報格納部１０に格納されたソースファイルタイムスタンプ情報が、更新される。
【００７９】
その後、ステップＳ９０（図６参照）処理により、全ての登録ソースファイルについて、ステップＳ３０〜Ｓ７０の処理が行われる。本動作例では、登録ソースファイル群に含まれる全ての登録ソースファイルは、新規にビルド対象として登録されたものである。従って、全ての登録ソースファイルが、コンパイル対象ファイルとして設定されることになる。
【００８０】
その後、ステップＳ１００の処理により、コンパイラ実行部１９が、コンパイル対象ファイルをコンパイルし、オブジェクトファイルを生成する。本動作例では、全ての登録ソースファイルがコンパイルされ、オブジェクトファイル群が生成されることになる。オブジェクトファイル群は、外部記憶装置６に保存され、その後、リンクされて最終的な目的プログラムが得られる。
【００８１】
＜動作例２＞
動作例２として、ユーザが、登録ソースファイルが１つ追加されるように登録ソースファイル情報を変更し、その後、ビルド処理を実行する場合の動作について説明する。尚、本動作例２では、追加された登録ソースファイルは、以下、追加登録ソースファイルと呼ばれる。また、その他の登録ソースファイルは、既存ソースファイルと呼ばれる。また、既存ソースファイルについては、前回のコンパイル時からその記述内容が変更されておらず、参照先のインクルードファイルにも変更が無いものとする。
【００８２】
ユーザがビルド指示を入力すると、ステップＳ１０（図６参照）により、ソースファイル解析部１４が、登録ソースファイル情報２０が変更されたか否かを判断する。本動作例では、登録ソースファイル情報２０が変更されている。従って、ステップＳ２０の処理が行われる。
【００８３】
ステップＳ２０において、動作例１と同様に、参照情報が生成され、参照情報格納部９に格納された情報が更新される。
【００８４】
ステップＳ３０において、ソースファイル変更判定部１６が、選択ソースファイルを選択する。
【００８５】
ステップＳ４０において、ソースファイル変更判定部１６が、選択ソースファイルの記述内容が前回のコンパイル時から変更されているか否かを判定する。
【００８６】
ここで、選択ソースファイルが追加登録ソースファイルであった場合、ソースファイル変更判定部１６は、選択ソースファイルが変更されているものと判断する。そして、動作例１と同様に、ステップＳ７０において選択ソースファイルがコンパイル対象ファイルに設定され、ステップＳ８０においてソースファイルタイムスタンプ情報が更新される。
【００８７】
一方、選択ソースファイルが既存登録ソースファイルであった場合には、ソースファイル変更判定部１６は、選択ソースファイルの記述内容が変更されていないものと判断する。この場合には、ステップＳ５０において、配置パス変更判断部１７が、参照先のインクルードファイルの配置場所が変更されているか否かを判定する。本動作例では、参照先のインクルードファイルは変更されていないので、ステップＳ６０の処理が行われる。ステップＳ６０において、インクルードファイル編集判定部１８が、参照先のインクルードファイルが編集されているか否かを判定する。本動作例では、参照先のインクルードファイルは編集されていないため、ステップＳ９０の処理が実行される。
【００８８】
その後、ステップＳ９０（図６参照）処理により、全ての登録ソースファイルについて、ステップＳ３０〜Ｓ７０の処理が行われる。本動作例では、追加登録ソースファイルのみがコンパイル対象ファイルとして設定され、既存登録ソースファイルはコンパイル対象ファイルに設定されない。
【００８９】
その後、ステップＳ１００の処理により、コンパイラ実行部１９が、コンパイル対象ファイルをコンパイルし、オブジェクトファイルを生成する。本動作例では、追加登録ソースファイルのみがコンパイルされることになる。オブジェクトファイル群は、外部記憶装置６に保存され、その後、リンクされて最終的な目的プログラムが得られる。
【００９０】
＜動作例３＞
動作例３として、ユーザが、外部記憶装置６上において、インクルードファイル群１４に含まれるインクルードファイルを１つ追加し、その後ビルド処理を実行した場合の動作について説明する。尚、その他の情報等は、前回のコンパイル時から変更されていないものとする。
【００９１】
ユーザがビルド指示を入力すると、ステップＳ１０（図６参照）により、ソースファイル解析部１４が、登録ソースファイル情報２０が変更されたか否かを判断する。本動作例では、登録ソースファイル情報２０が変更されていない。従って、ステップＳ３０の処理が行われる。
【００９２】
ステップＳ３０において、ソースファイル変更判定部１６が、選択ソースファイルを選択する。
【００９３】
ステップＳ４０において、ソースファイル変更判定部１６が、ソースファイルタイムスタンプ情報に基づいて、選択ソースファイルの記述内容が前回のコンパイル時から変更されているか否かを判定する。本動作例では、選択ソースファイル自体の記述内容は、変更されていない。従って、ステップＳ５０の処理が行われる。
【００９４】
ステップＳ５０において、配置パス変更判定部１８が、選択ソースファイルが参照するインクルードファイルの配置場所が変更されているか否かを判定する。すなわち、図１２に示されるように、ステップＳ５１において、インクルードファイル名特定部２５が、選択ソースファイルに記載されるインクルードファイル名を特定インクルードファイル名として特定する。ステップＳ５２において、パス特定部が、特定したインクルードファイル名とインクルードパス情報２１とに基づいて、参照先のインクルードファイルの配置パスを特定パスとして特定する。ステップＳ５３において、パス判定部２７が、特定パスと、参照情報に記載される配置フォルダパスとが一致するか否かを判定する。この際、選択ソースファイルが、追加されたインクルードファイルを参照するソースファイルである場合には、参照情報において対応する配置フォルダパスが記載されていない。この場合、配置パス変更判定部１８は、パスが一致しないものとして判定する。本動作例では、選択ソースファイルが、追加されたインクルードファイルを参照しているファイルである場合にのみ、パスが一致しないと判定される。
【００９５】
選択ソースファイルが、追加されたインクルードファイルを参照しているファイルである場合には、ステップＳ５４において、パス更新部２８が、参照情報を更新する。そして、ステップＳ７０、及びＳ８０の処理が行われ、選択ソースファイルがコンパイル対象ファイルとして設定される。
【００９６】
一方、選択ソースファイルが参照するインクルードファイルが、追加されたインクルードファイルでは無い場合には、ステップＳ６０（図６参照）の処理が行われる。ステップＳ６０において、インクルードファイル編集判定部１８が、参照先のインクルードファイルが編集されているか否かを判定する。本動作例では、参照先のインクルードファイルは編集されていないため、既述の動作例と同様に、ステップＳ９０以降の処理が実行される。
【００９７】
本動作例によれば、参照先のインクルードファイルが追加されたインクルードファイルである登録ソースファイルのみ、コンパイル対象ファイルに設定されることになる。
【符号の説明】
【００９８】
１  ビルド実行支援システム
２  ＲＯＭ
３  格納部（ＲＡＭ）
４  ＣＰＵ
５  入力装置
６  外部記憶装置
７  ビルド実行支援プログラム
８  登録情報格納部
９  参照情報格納部
１０  ソースファイルタイムスタンプ情報格納部
１１  コンパイル対象ファイル情報格納部
１２  ビルド実行支援システム
１４  ソースファイル解析部
１５  コンパイル対象判定部
１６  ソースファイル変更判定部
１７  配置パス変更判定部
１８  インクルードファイル編集判定部
１９  コンパイラ実行部
２０  登録ソースファイル情報群
２１  インクルードパス情報
２２  タイムスタンプ情報取得部
２３  タイムスタンプ情報判定部
２４  タイムスタンプ情報更新部
２５  インクルードファイル名特定部
２６  パス特定部
２７  パス判定部
２８  パス更新部
２９  インクルードファイル変更判定部
１２１  元データ検索手段
１２２  修正データ検索手段
１２３  データファイルパス置換手段
１３０  リードオンリー記憶装置
１３１  元データファイル
１４０  記憶装置
１４１  修正情報データベース
１５０  ロード出力手段
【図１】
2012123664.tif 000003
【図２】
2012123664.tif 000004
【図３】
2012123664.tif 000005
【図４】
2012123664.tif 000006
【図５】
2012123664.tif 000007
【図６】
2012123664.tif 000008
【図７】
2012123664.tif 000009
【図８】
2012123664.tif 000010
【図９】
2012123664.tif 000011
【図１０】
2012123664.tif 000012
【図１１】
2012123664.tif 000013
【図１２】
2012123664.tif 000014
【図１３】
2012123664.tif 000015
【図１４】
2012123664.tif 000016