ソフトウェアのソースコードに含まれる問題が存在する不正関数の名称を含む問題種別と、前記問題に関連する前記不正関数の引数名を含む問題情報レコードを格納する問題情報格納手段と、前記問題種別と、前記問題を修正するための、引数名を含む修正汎用コードを対応付けた修正レコードと、を格納する修正情報格納手段と、前記問題情報レコードと前記問題種別が一致する、前記修正情報レコードを検索して、検索された前記修正レコード内の前記修正汎用コード内の前記引数名を、検索された前記問題情報レコード内の前記引数名で置換して修正実コードを生成する修正候補生成手段と、を備えるソフトウェア修正装置。前記問題情報レコードは、さらに、前記不正関数の前記ソースコードにおける位置を示す不正関数位置情報を包含し、前記修正情報レコードは、さらに、置換または挿入の区別を示す修正処理情報を包含し、検索された前記問題情報レコード内の前記不正関数位置情報と、検索された前記修正情報レコードに包含される前記修正処理情報に基づいて、前記ソースコードの前記不正関数を前記修正実コードで置換、または前記ソースコードの前記不正関数の前に前記修正実コードを挿入する修正反映手段を、さらに備える、請求項1のソフトウェア修正装置。前記問題種別は、前記不正関数の名称に加えて、ソフトウェア問題カテゴリを包含する、請求項1乃至2の何れかのソフトウェア修正装置。前記修正情報格納手段は、前記問題種別が同一であって、前記修正汎用コードが異なる複数の前記修正情報レコードを包含し、前記修正候補生成手段は、前記問題情報レコードと前記問題種別が一致する、前記複数の前記修正情報レコードを検索して、前記複数の前記修正実コードを生成して、表示装置に出力する、請求項1乃至3の何れかのソフトウェア修正装置。請求項1から4に記載のソフトウェア修正装置と、ソフトウェア問題解析ツールとを包含するソフトウェア修正システム。ソフトウェアのソースコードに含まれる問題が存在する不正関数の名称を含む問題種別と、前記問題に関連する前記不正関数の引数名を含む問題情報レコードを記憶域に格納し、前記問題種別と、前記問題を修正するための、引数名を含む修正汎用コードを対応付けた修正レコードと、を記憶域に格納し、前記問題情報レコードと前記問題種別が一致する、前記修正情報レコードを検索して、検索された前記修正レコード内の前記修正汎用コード内の前記引数名を、検索された前記問題情報レコード内の前記引数名で置換して修正実コードを生成する、ソフトウェア修正方法。前記問題情報レコードは、さらに、前記不正関数の前記ソースコードにおける位置を示す不正関数位置情報を包含し、前記修正情報レコードは、さらに、置換または挿入の区別を示す修正処理情報を包含し、検索された前記問題情報レコード内の前記不正関数位置情報と、検索された前記修正情報レコードに包含される前記修正処理情報に基づいて、前記ソースコードの前記不正関数を前記修正実コードで置換、または前記ソースコードの前記不正関数の前に前記修正実コードを挿入する、請求項6のソフトウェア修正方法。ソフトウェアのソースコードに含まれる問題が存在する不正関数の名称を含む問題種別と、前記問題に関連する前記不正関数の引数名を含む問題情報レコードを記憶域に格納する問題情報格納処理と、前記問題種別と、前記問題を修正するための、引数名を含む修正汎用コードを対応付けた修正レコードと、を記憶域に格納する修正情報格納処理と、前記問題情報レコードと前記問題種別が一致する、前記修正情報レコードを検索して、検索された前記修正レコード内の前記修正汎用コード内の前記引数名を、検索された前記問題情報レコード内の前記引数名で置換して修正実コードを生成する修正候補生成処理と、をコンピュータに実行させるソフトウェア修正プログラム。前記問題情報レコードは、さらに、前記不正関数の前記ソースコードにおける位置を示す不正関数位置情報を包含し、前記修正情報レコードは、さらに、置換または挿入の区別を示す修正処理情報を包含し、検索された前記問題情報レコード内の前記不正関数位置情報と、検索された前記修正情報レコードに包含される前記修正処理情報に基づいて、前記ソースコードの前記不正関数を前記修正実コードで置換、または前記ソースコードの前記不正関数の前に前記修正実コードを挿入する修正反映処理を、さらにコンピュータに実行させる、請求項8のソフトウェア修正プログラム。前述の特許文献1や特許文献2に記載された技術では、セキュリティ脆弱性の検出結果に対して、ソフトウェアのソースコードをどのように修正したらよいかまでは提示されず、修正内容の検討はソフトウェア開発者に委ねられる。したがって、特にセキュリティ領域に精通していないソフトウェア開発者がソースコードの修正を行う場合は、修正対応完了まで多くの時間を要するという問題がある。本願発明の目的は、これらの問題点を解決したソフトウェア修正装置、ソフトウェア修正システム、ソフトウェア修正方法、及び、ソフトウェア修正プログラムを提供することである。本願発明の一実施形態のソフトウェア修正装置は、ソフトウェアのソースコードに含まれる問題が存在する不正関数の名称を含む問題種別と、前記問題に関連する前記不正関数の引数名を含む問題情報レコードを格納する問題情報格納手段と、前記問題種別と、前記問題を修正するための、引数名を含む修正汎用コードを対応付けた修正レコードと、を格納する修正情報格納手段と、前記問題情報レコードと前記問題種別が一致する、前記修正情報レコードを検索して、検索された前記修正レコード内の前記修正汎用コード内の前記引数名を、検索された前記問題情報レコード内の前記引数名で置換して修正実コードを生成する修正候補生成手段と、を備える。本願発明の一実施形態のソフトウェア修正方法は、ソフトウェアのソースコードに含まれる問題が存在する不正関数の名称を含む問題種別と、前記問題に関連する前記不正関数の引数名を含む問題情報レコードを格納し、前記問題種別と、前記問題を修正するための、引数名を含む修正汎用コードを対応付けた修正レコードと、を格納し、前記問題情報レコードと前記問題種別が一致する、前記修正情報レコードを検索して、検索された前記修正レコード内の前記修正汎用コード内の前記引数名を、検索された前記問題情報レコード内の前記引数名で置換して修正実コードを生成する。本願発明の一実施形態のソフトウェア修正プログラムは、ソフトウェアのソースコードに含まれる問題が存在する不正関数の名称を含む問題種別と、前記問題に関連する前記不正関数の引数名を含む問題情報レコードを格納する問題情報格納処理と、前記問題種別と、前記問題を修正するための、引数名を含む修正汎用コードを対応付けた修正レコードと、を格納する修正情報格納処理と、前記問題情報レコードと前記問題種別が一致する、前記修正情報レコードを検索して、検索された前記修正レコード内の前記修正汎用コード内の前記引数名を、検索された前記問題情報レコード内の前記引数名で置換して修正実コードを生成する修正候補生成処理と、をコンピュータに実行させる。本願発明は、ソフトウェアのセキュリティ脆弱性等の問題を解消するソースファイル修正コードの候補を自動生成することを実現する。本願発明の第一の実施の形態について図面を参照して詳細に説明する。図1はセキュリティ脆弱性修正装置10と、オリジナルソースファイル11と、セキュリティ脆弱性検証ツール12と、検証ツール検証結果13と、修正後ソースファイル14と、ユーザコンソール15とから構成されたセキュリティ脆弱性修正システムの構成を示す。オリジナルソースファイル11は、セキュリティ脆弱性の検証、修正の対象であるソフトウェアのソースファイルであり、その2つの例を例1SampleXSS.java、例2SQLInjection.javaとしてそれぞれ図3、図4に示す。例1、例2は、プログラミング言語としてJAVA登録商標を使用しているが、C言語やhtmlなどのその他のプログラミング言語で書かれたソースファイルでもよい。例1のソースファイルの場合、24行目のリクエストパラメータから取得したデータを、そのまま26行目のsendErrorメソッドで使用しているため、クロスサイトスクリプティングの脆弱性が存在する。例2のソースファイルの場合、15行目のリクエストパラメータから取得したデータをそのまま22行目のprepareStatementメソッドで使用しているため、SQLインジェクションの脆弱性が存在する。セキュリティ脆弱性検証ツール12は、オリジナルソースファイル11のセキュリティ脆弱性を解析するパッケージソフトウェアであり、いくつかのツールが知られている。セキュリティ脆弱性検証ツール12が出力する検証ツール検証結果13は、図5に記載のセキュリティ脆弱性種別情報1020、セキュリティ脆弱性詳細情報1021を必ず包含する。検証ツール検証結果13は、その他に、セキュリティ脆弱性カテゴリの重要度レベル、脆弱性カテゴリの解説と対応方法の概要説明、不正データの入力から出力にいたるまでのプログラムの流れなどの様々な解析情報を包含してもよい。修正後ソースファイル14は、セキュリティ脆弱性修正装置10がオリジナルソースファイル11におけるセキュリティ脆弱性の存在する箇所のコードを修正して出力したファイルである。前記例1、例2のオリジナルソースファイル11が修正されて出力された修正後ソースファイル14を、それぞれ図8、図9に示す。図8に示す通り、例1のソースファイルの場合、セキュリティ脆弱性修正装置10が26行目のサニタイズ処理を追加することで、オリジナルソースファイル11に存在したクロスサイトスクリプティングの脆弱性を解消する。図9に示す通り、例2のソースファイルの場合、セキュリティ脆弱性修正装置10が22行目のサニタイズ処理を追加することで、オリジナルソースファイル11に存在したSQLインジェクションの脆弱性を解消する。ユーザコンソール15は、ソフトウェア開発者がセキュリティ脆弱性修正装置10を使用する時のユーザインターフェースとなる画面、キーボード、および、マウスである。セキュリティ脆弱性修正装置10は、セキュリティ脆弱性検証結果情報取得部100と、セキュリティ脆弱性修正ルール格納部101と、セキュリティ脆弱性検証結果情報格納部102と、セキュリティ脆弱性修正候補提示部103と、セキュリティ脆弱性修正コード104と、セキュリティ脆弱性修正箇所105と、セキュリティ脆弱性修正内容反映部106とを備えている。セキュリティ脆弱性検証結果情報取得部100は、検証ツール検証結果13からセキュリティ脆弱性種別情報1020とセキュリティ脆弱性詳細情報1021を抜き出して、セキュリティ脆弱性検証結果情報格納部102に格納する。セキュリティ脆弱性種別情報1020は、図5に記載の通り、セキュリティ脆弱性のカテゴリと不正関数名の情報とを包含している。オリジナルソースファイル11が前記例1の場合、セキュリティ脆弱性検証結果情報取得部100は、カテゴリにCrossSiteScripting、不正関数名にsendErrorを格納する。オリジナルソースファイル11が前記例2の場合、セキュリティ脆弱性検証結果情報取得部100は、カテゴリにSQLInjection、不正関数名にprepareStatementを格納する。セキュリティ脆弱性詳細情報1021は、図5に記載の通り、セキュリティ脆弱性が存在するファイル名と、そのファイルにおけるセキュリティ脆弱性が存在する箇所の行番号と、不正関数引数情報とを包含している。オリジナルソースファイル11が前記例1の場合、セキュリティ脆弱性検証結果情報取得部100は、ファイル名にSampleXSS.java、行番号に26、不正関数引数情報に図5に示す情報を格納する。オリジナルソースファイル11が前記例2の場合、セキュリティ脆弱性検証結果情報取得部100は、ファイル名にSampleSQL.java、行番号に22、不正関数引数情報に図5に示す情報を格納する。セキュリティ脆弱性検証結果情報格納部102は、セキュリティ脆弱性種別情報1020とセキュリティ脆弱性詳細情報1021を、セキュリティ脆弱性修正候補提示部103に出力する。セキュリティ脆弱性修正ルール格納部101は、セキュリティ脆弱性種別情報1010とセキュリティ脆弱性修正情報1011とを格納している。セキュリティ脆弱性種別情報1010とセキュリティ脆弱性修正情報1011は、ソフトウェア開発者がユーザコンソール15からセキュリティ脆弱性修正ルールとして登録したものである。セキュリティ脆弱性種別情報1010は、図6に記載の通り、セキュリティ脆弱性のカテゴリと不正関数名の情報とを包含している。セキュリティ脆弱性修正情報1011は、修正処理区分と修正汎用コードの情報とを包含している。修正汎用コードは、汎用的に表記された引数の記述を包含している。ソフトウェア開発者は、図6に記載の通り、クロスサイトスクリプティングの脆弱性に対する脆弱性修正ルールとして、カテゴリにCrossSiteScripting、不正関数名にsendError、修正処理区分にInsert、修正汎用コードに図6に示すコード文を登録する。ソフトウェア開発者は、SQLインジェクションの脆弱性に対する脆弱性修正ルールとして、カテゴリにSQLInjection、不正関数名にprepareStatement、修正処理区分にInsert、修正汎用コードに図6に示すコード文を登録する。クロスサイトスクリプティングやSQLインジェクションのカテゴリのセキュリティ脆弱性の場合、不正関数名として登録するのは各カテゴリに1つであり、各々の不正関数に対する修正汎用コードも1つあればよい。バッファオーバーフローの脆弱性に対する脆弱性修正ルールの場合は、図6に記載の通り、不正関数名として、strcpyとgetsの2つが存在し、strcpyの場合は、さらに修正汎用コードとして2つのものを登録する必要がある。セキュリティ脆弱性修正ルール格納部101は、セキュリティ脆弱性種別情報1010とセキュリティ脆弱性修正情報1011を、セキュリティ脆弱性修正候補提示部103に出力する。セキュリティ脆弱性修正候補提示部103は、セキュリティ脆弱性種別情報1020とセキュリティ脆弱性種別情報1010が一致するレコードをサーチする。サーチの結果一致するものがある場合、セキュリティ脆弱性修正候補提示部103は、一致したレコードについて、セキュリティ脆弱性詳細情報1011における修正汎用コードの中の引数の記述を、セキュリティ脆弱性詳細情報1021における不正関数引数情報の記述に置換して修正実コードを生成し、セキュリティ脆弱性修正コード104として出力する。セキュリティ脆弱性修正コード104は、対応するレコードのセキュリティ脆弱性修正情報1011における修正処理区分の情報も包含している。セキュリティ脆弱性修正候補提示部103は、前記の一致したレコードについて、セキュリティ脆弱性詳細情報1021のファイル名と行番号の情報を、セキュリティ脆弱性修正箇所105として出力する。セキュリティ脆弱性修正候補提示部103の前記動作をオリジナルソースファイル11が例1の場合で説明する。セキュリティ脆弱性種別情報1020とセキュリティ脆弱性種別情報1010は、カテゴリがCrossSiteScripting、不正関数名がsendErrorのレコードで一致する。セキュリティ脆弱性修正候補提示部103は、このレコードの不正関数引数情報のTaintArg=nameから、修正汎用コードにおけるTaintArgの表記をnameで置換して、Sanitizer.sanitizeHTMLname;の修正実コードを生成し、セキュリティ脆弱性修正コード104として出力する。セキュリティ脆弱性修正コード104は、このレコードの修正処理区分のInsertの情報も包含している。セキュリティ脆弱性修正候補提示部103は、前記レコードのファイル名のSampleXSS.javaと、行番号の26の情報を、セキュリティ脆弱性修正箇所105として出力する。オリジナルソースファイル11が例2の場合のセキュリティ脆弱性修正候補提示部103の動作も、例1の場合と同様である。例2の場合、セキュリティ脆弱性種別情報1020とセキュリティ脆弱性種別情報1010は、カテゴリがSQLInjection、不正関数名がprepareStatementのレコードで一致し、Sanitizer.sanitizeSQLstr;の修正実コードを生成し、修正処理区分のInsertの情報も包含させて、セキュリティ脆弱性修正コード104として出力する。あわせて、前記レコードのファイル名のSampleSQL.javaと、行番号の22の情報を、セキュリティ脆弱性修正箇所105として出力する。セキュリティ脆弱性修正内容反映部106は、オリジナルソースファイル11に対する修正内容の候補として、セキュリティ脆弱性修正コード104とセキュリティ脆弱性修正箇所105の情報をユーザコンソール15の画面に表示する。図7は、オリジナルソースファイル11が例1の時のユーザコンソール15の画面である。セキュリティ脆弱性修正内容反映部106は、セキュリティ脆弱性修正箇所105におけるファイル名の情報から、画面右上にオリジナルソースファイル11のファイル名を表示し、その下にオリジナルソースファイル11のソースコードを表示する。セキュリティ脆弱性修正内容反映部106は、セキュリティ脆弱性修正箇所105における行番号の情報から、セキュリティ脆弱性が存在する26行目を、その他の行とは別の文字色で表示させる。ソフトウェア開発者が、マウスカーソルを26行目の上に移動させると、セキュリティ脆弱性修正内容反映部106は、画面左側のModification欄に修正処理区分のInsertと、修正実コードのSanitizer.sanitizeHTMLname;を表示させる。ソフトウェア開発者は、表示された修正内容を確認し、マウスカーソルを修正実コードの表示部付近に移動させて、ダブルクリックする。セキュリティ脆弱性修正内容反映部106は、ダブルクリックを受けて、修正内容をオリジナルソースファイル11に反映し、修正後ソースファイル14を生成する。オリジナルソースファイル11が例1あるいは例2の場合は、図6に記載の通り修正内容の候補は1つとなるが、オリジナルソースファイル11のセキュリティ脆弱性カテゴリがBufferOverflowで不正関数名がstrcpyの場合は、修正候補は2つ存在する。この場合、セキュリティ脆弱性修正内容反映部106は、2つの修正候補を画面に表示し、ソフトウェア開発者がいずれかの修正候補を選択し、選択した方の修正実コードの表示部付近にマウスカーソルを移動させてダブルクリックする。セキュリティ脆弱性修正内容反映部106は、ソフトウェア開発者が選択した方の修正内容をオリジナルソースファイル11に反映させる。次に図2のフローチャートを参照して、本実施形態の動作について詳細に説明する。セキュリティ脆弱性検証ツール12は、オリジナルソースファイル11のセキュリティ脆弱性を解析し、検証ツール検証結果13を出力するS101。検証ツール検証結果13で、セキュリティ脆弱性が存在しない場合S102でNo、全体の処理は終了する。検証ツール検証結果13で、セキュリティ脆弱性が存在する場合S102でYes、検証結果情報取得部100は、検証ツール検証結果13からセキュリティ脆弱性種別情報1020とセキュリティ脆弱性詳細情報1021を取り出し、セキュリティ脆弱性検証結果情報格納部102に格納するS103。セキュリティ脆弱性修正候補提示部103は、セキュリティ脆弱性種別情報1020とセキュリティ脆弱性種別情報1010のレコードで一致するものをサーチするS104。一致したレコードが存在しない場合S105でNo、セキュリティ脆弱性修正候補提示部103は、ユーザコンソール15の画面にセキュリティ脆弱性修正情報が定義されていませんのメッセージを表示しS107、全体の処理は終了する。サーチ結果で一致したレコードが存在する場合S105でYes、セキュリティ脆弱性修正候補提示部103は、セキュリティ脆弱性修正情報1011の修正汎用コードの引数名を、セキュリティ脆弱性詳細情報1021の不正関数引数情報に置換して修正実コードを生成し、セキュリティ脆弱性修正情報1011における修正処理区分を添付して、セキュリティ脆弱性修正コード104を生成する。同時にセキュリティ脆弱性修正候補提示部103は、セキュリティ脆弱性詳細情報1021のファイル名と行番号のデータから、セキュリティ脆弱性修正箇所105を生成するS106。セキュリティ脆弱性修正内容反映部106は、セキュリティ脆弱性修正コード104とセキュリティ脆弱性修正箇所105をユーザコンソール15の画面に出力し、ソフトウェア開発者が、最適な修正コードを画面上で選択するS108。セキュリティ脆弱性修正内容反映部106は、ソフトウェア開発者が選択した修正コードをオリジナルソースファイル11に反映し、修正後ソースファイル14を出力するS109。尚、セキュリティ脆弱性修正コード104が1つの場合は、S108の処理は必須ではなく、セキュリティ脆弱性修正内容反映部106が、ユーザコンソール15の画面に出力せずに、セキュリティ脆弱性修正コード104とセキュリティ脆弱性修正箇所105をオリジナルソースファイル11に反映させる方式でもよい。本実施形態には、セキュリティ脆弱性が存在するソフトウェアの問題を解消する修正コードの候補を自動生成するという効果がある。なぜなら、セキュリティ脆弱性修正候補提示部103が、セキュリティ脆弱性検証結果情報格納部102に格納されたセキュリティ脆弱性解析結果とセキュリティ脆弱性修正ルール格納部101に格納された修正ルールを基にして、ソフトウェアソースファイルに対する修正箇所と修正コードを生成して提示するからである。修正コードの候補を自動生成することで、セキュリティ領域に精通していないソフトウェア開発者でも、セキュリティ脆弱性に関するソースコードの修正を短時間で行うことが可能となる。<第二の実施形態>次に、本願発明の第二の実施形態について図面を参照して詳細に説明する。図10は本実施形態のソフトウェア修正装置20の構成を示すブロック図である。修正情報格納部201は、1つ以上のレコードを包含する問題種別情報2010と、問題種別情報2010の各レコードに対応付けられた修正レコード2011を格納している。問題種別情報2010の各レコードは、不正関数の情報を包含している。修正レコード2011の各レコードは、引数名を含む修正汎用コードの情報を包含している。問題種別情報2010と修正レコード2011は、ソフトウェア開発者がソフトウェアの修正ルールとして入力したものである。修正問題情報格納部202は、1つ以上のレコードを包含する問題種別情報2020と、問題種別情報2020の各レコードに対応づけられた問題情報レコード2021を格納している。問題種別情報2020の各レコードは不正関数の情報を包含している。問題情報レコード2021の各レコードは、不正関数引数の情報を包含している。本実施形態では、ソフトウェア開発者が修正箇所の検討を行うため、問題情報レコード2021は第一の実施形態で記載したファイル名と行番号の情報を包含しなくてもよい。問題種別情報2020と問題情報レコード2021は、ソフトウェア問題解析ツールの出力を編集したものでもよいし、ソフトウェア開発者のソフトウェア解析結果を入力したものでもよい。修正候補生成部203は、問題種別情報2020と問題種別情報2010が一致するレコードをサーチする。一致するものがある場合、修正候補生成部203は、一致したレコードについて、修正レコード2011における汎用修正コードの引数名を、問題情報レコード2021における不正関数引数に置き換えて修正実コード204を生成する。修正実コード204は、ソフトウェア開発者がソースファイルへ適用する。次に図11のフローチャートを参照して、本実施形態の動作について詳細に説明する。修正候補生成部203は、問題種別情報2020と問題別情報2010が一致するレコードをサーチするS201。一致したレコードが存在しない場合S202でNo、全体の処理は終了する。一致したレコードが存在する場合S202でYes、修正候補生成部203は、修正レコード2011の修正汎用コードの引数名を、問題情報レコード2021の不正関数引数情報に置換して修正実コード204を生成するS203。本実施形態には、第一の実施形態と同様に、ソフトウェアの問題を解消する修正コードの候補を自動生成するという効果がある。なぜなら、修正候補生成部203が、修正問題情報格納部202に格納された問題解析情報と修正情報格納部201に格納された修正ルールを基にして、ソフトウェアソースファイルにおける修正コードを生成して提示するからである。以上、実施形態を参照して本願発明を説明したが、本願発明は上記実施形態に限定されたものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。