アプリケーションにおいて呼び出された呼び出し関数が、不正コーディング検知ライブラリにおける所定の関数に対応するか否かを判定するための関数判定部と、前記呼び出し関数が前記所定の関数に対応すると判定した場合には、前記不正コーディング検知ライブラリにおける前記所定の関数を実行することにより、前記呼び出し関数の呼び出し元が所定の条件を満たすか否かを判定し、前記呼び出し元が前記所定の条件を満たす場合に警告処理を行なうための警告処理部とを備える、情報処理装置。前記情報処理装置は、さらに、前記所定の条件を満たす場合であって前記呼び出し関数の代替関数が存在するときには、前記呼び出し関数の代わりに前記代替関数を実行するための代替関数実行部を備える、請求項1に記載の情報処理装置。前記代替関数実行部は、前記所定の条件を満たす場合であって前記呼び出し関数の代替関数が存在しないときには、前記呼び出し関数を実行する、請求項2に記載の情報処理装置。前記警告処理部は、前記警告処理として警告情報のログファイルへの出力を行なう、請求項1から3のいずれかに記載の情報処理装置。前記不正コーディング検知ライブラリは、前記所定の関数としてスレッドセーフでない関数を含み、前記所定の条件は、前記呼び出し元がマルチスレッドプログラムであることである、請求項1から4のいずれかに記載の情報処理装置。前記不正コーディング検知ライブラリは、前記所定の関数として非同期シグナルセーフでない関数を含み、前記所定の条件は、前記関数の呼び出し元がシグナルハンドラであることである、請求項1から4のいずれかに記載の情報処理装置。アプリケーションにおいて呼び出された呼び出し関数が、不正コーディング検知ライブラリにおける所定の関数に対応するか否かを判定するステップと、前記呼び出し関数が前記所定の関数に対応すると判定した場合には、前記不正コーディング検知ライブラリにおける前記所定の関数を実行することにより、前記呼び出し関数の呼び出し元が所定の条件を満たすか否かを判定し、前記呼び出し元が前記所定の条件を満たす場合に警告処理を行なうステップとを含む、プログラム不正検知方法。コンピュータに、アプリケーションにおいて呼び出された呼び出し関数が、不正コーディング検知ライブラリにおける所定の関数に対応するか否かを判定するステップと、前記呼び出し関数が前記所定の関数に対応すると判定した場合には、前記不正コーディング検知ライブラリにおける前記所定の関数を実行することにより、前記呼び出し関数の呼び出し元が所定の条件を満たすか否かを判定し、前記呼び出し元が前記所定の条件を満たす場合に警告処理を行なうステップとを実行させるための、プログラム不正検知プログラム。マルチスレッドプログラミングにおいては、開発者が、スレッドセーフである関数を確認しながらコーディングを行なうのが一般的である。ここで、スレッドセーフとは、たとえば、マルチスレッド環境において、一方のスレッドが、あるデータの処理または手続きを呼び出した場合に、他方のスレッドにおいてデータの破壊および異常動作が生じないように設計されていることを意味する。すなわち、マルチスレッドプログラムにおいて、スレッドセーフでない関数を使用した場合には、各関数の競合状況などによって動作が不定となる可能性がある。そして、明示的なエラーの出力等を行なわないと、このような不正なコーディングによって生成されたモジュールにおける不具合の原因究明が困難となる。また、このような警告処理を行なうためには、アプリケーションプログラムを修正してプログラム不正検知機能を実装する必要が生じてしまう。しかしながら、特許文献1~4には、このような問題点を解決するための構成は開示されていない。この発明は、上述の課題を解決するためになされたもので、その目的は、アプリケーションプログラムを修正することなく、当該プログラムの不正検知および警告処理を適切に行なうことが可能な情報処理装置、プログラム不正検知方法、およびプログラム不正検知プログラムを提供することである。上記課題を解決するために、この発明のある局面に係わる情報処理装置は、アプリケーションにおいて呼び出された呼び出し関数が、不正コーディング検知ライブラリにおける所定の関数に対応するか否かを判定するための関数判定部と、上記呼び出し関数が上記所定の関数に対応すると判定した場合には、上記不正コーディング検知ライブラリにおける上記所定の関数を実行することにより、上記呼び出し関数の呼び出し元が所定の条件を満たすか否かを判定し、上記呼び出し元が上記所定の条件を満たす場合に警告処理を行なうための警告処理部とを備える。上記課題を解決するために、この発明のある局面に係わるプログラム不正検知方法は、アプリケーションにおいて呼び出された呼び出し関数が、不正コーディング検知ライブラリにおける所定の関数に対応するか否かを判定するステップと、上記呼び出し関数が上記所定の関数に対応すると判定した場合には、上記不正コーディング検知ライブラリにおける上記所定の関数を実行することにより、上記呼び出し関数の呼び出し元が所定の条件を満たすか否かを判定し、上記呼び出し元が上記所定の条件を満たす場合に警告処理を行なうステップとを含む。上記課題を解決するために、この発明のある局面に係わるプログラム不正検知プログラムは、コンピュータに、アプリケーションにおいて呼び出された呼び出し関数が、不正コーディング検知ライブラリにおける所定の関数に対応するか否かを判定するステップと、上記呼び出し関数が上記所定の関数に対応すると判定した場合には、上記不正コーディング検知ライブラリにおける上記所定の関数を実行することにより、上記呼び出し関数の呼び出し元が所定の条件を満たすか否かを判定し、上記呼び出し元が上記所定の条件を満たす場合に警告処理を行なうステップとを実行させるためのプログラムである。本発明によれば、アプリケーションプログラムを修正することなく、当該プログラムの不正検知および警告処理を適切に行なうことができる。以下、本発明の実施の形態について図面を用いて説明する。なお、図中同一または相当部分には同一符号を付してその説明は繰り返さない。本発明の実施の形態に係る情報処理装置は、典型的には、汎用的なアーキテクチャを有するコンピュータを基本構造としており、予めインストールされたプログラムを実行することで、後述するような各種機能を提供する。一般的に、このようなプログラムは、フレキシブルディスクFlexibleDiskおよびCD-ROMCompactDiskReadOnlyMemoryなどの記録媒体に格納されて、あるいはネットワークなどを介して流通する。本発明の実施の形態に係るプログラムは、OS等の他のプログラムの一部に組み込まれて提供されるものであってもよい。この場合でも、本発明の実施の形態に係るプログラム自体は、上記のような組み込み先の他のプログラムが有するモジュールを含んでおらず、当該他のプログラムと協働して処理が実行される。すなわち、本発明の実施の形態に係るプログラムとしては、このような他のプログラムに組み込まれた形態であってもよい。なお、代替的に、プログラムの実行により提供される機能の一部もしくは全部を専用のハードウェア回路として実装してもよい。[装置構成]図1は、本発明の実施の形態に係る情報処理装置の概略構成図である。図1を参照して、情報処理装置101は、ハードウエアコンポーネントとして、ディスプレイ2と、キーボード3と、I/Oインタフェース5と、CPUCentralProcessingUnit6と、メモリ7と、ストレージ8とを備える。ディスプレイ2、キーボード3、ネットワーク4およびメモリ7は、I/Oインタフェース5を介して接続される。また、ストレージ8は、ソフトウェアコンポーネントとして、ユーザプログラム9と、不正コーディング検知ライブラリ10と、OS標準ライブラリ11と、ログファイル12と、設定ファイル13とを格納している。CPU6は、メモリ7に格納されたプログラムコードを所定順序で実行することにより、各種の演算を実施する。メモリ7は、典型的には、DRAMDynamicRandomAccessMemoryなどの揮発性の記憶装置であり、ストレージ8から読み出されたプログラムに加えて、各種の演算処理結果を示すデータなどを保持する。また、ストレージ8は不揮発性の磁気記憶装置であり、CPU6で実行されるプログラムに加えて、各種設定値などが格納される。このストレージ8にインストールされるプログラムは、記録媒体に格納された状態で流通する。この記録媒体は、たとえば、CFCompactFlashおよびSDSecureDigitalなどの汎用的な半導体記憶デバイス、フレキシブルディスクFlexibleDiskなどの磁気記憶媒体、またはCD-ROMCompactDiskReadOnlyMemoryなどの光学記憶媒体である。なお、記録媒体に格納されたプログラムを情報処理装置101にインストールする形態に代えて、ネットワーク4を介して配信サーバなどからダウンロードしたプログラムを情報処理装置101にインストールしてもよい。また、情報処理装置101には、必要に応じてプリンタなどの他の出力装置が接続されてもよい。[制御構造]次に、情報処理装置101におけるプログラム不正検知機能を提供するための制御構造について説明する。図2は、本発明の実施の形態に係る情報処理装置が提供する制御構造を示すブロック図である。図2に示す情報処理装置101における各ブロックは、ストレージ8に格納されたプログラムコードなどをメモリ7に展開して、CPU6に実行させることで提供される。なお、図2に示す情報処理装置101の制御構造の一部もしくは全部を専用ハードウェアおよび/または配線回路によって実現してもよい。図2を参照して、情報処理装置101は、その制御構造として、関数判定部21と、警告処理部22と、代替関数実行部23とを備える。関数判定部21は、アプリケーションにおいて呼び出された呼び出し関数が、不正コーディング検知ライブラリ10における所定の関数に対応するか否かを判定する。警告処理部22は、呼び出し関数が上記所定の関数に対応すると判定した場合には、不正コーディング検知ライブラリ10における上記所定の関数を実行することにより、呼び出し関数の呼び出し元が所定の条件を満たすか否かを判定し、当該呼び出し元が所定の条件を満たす場合に警告処理を行なう。たとえば、警告処理部22は、警告処理として警告情報のログファイルへの出力を行なう。代替関数実行部23は、呼び出し関数の呼び出し元が上記所定の条件を満たす場合であって呼び出し関数の代替関数が存在するときには、呼び出し関数の代わりに代替関数を実行する。一方、代替関数実行部23は、呼び出し関数の呼び出し元が上記所定の条件を満たす場合であって呼び出し関数の代替関数が存在しないときには、呼び出し関数を実行する。たとえば、不正コーディング検知ライブラリ10は、所定の関数としてスレッドセーフでない関数を含む。警告処理部22は、呼び出し関数が不正コーディング検知ライブラリ10における所定の関数に対応すると判定した場合には、呼び出し関数の呼び出し元がマルチスレッドプログラムであるか否かを判定し、マルチスレッドプログラムである場合に警告処理を行なう。具体的には、ユーザプログラム9は、利用者が開発したアプリケーションである。また、不正コーディング検知ライブラリ10は、OS標準ライブラリ11が提供するスレッドセーフでない関数をラッピングしたライブラリである。ユーザプログラム9を実行するCPU6は、優先的に不正コーディング検知ライブラリ10の関数を実行し、正しくないコーディングである場合にはログファイル12に警告を出力する。これにより、ユーザプログラム9の実行時に当該プログラムの問題を検知することが可能となる。すなわち、情報処理装置101では、オペレーティングシステムの標準ライブラリ11が提供するスレッドセーフでない関数をラッピングした不正コーディング検知ライブラリ10を新たに提供する。そして、ユーザプログラム9を実行するCPU6が優先的に不正コーディング検知ライブラリ10のラッパー関数を実行する。これにより、アプリケーションにおいてスレッドセーフでない関数が実行されたことを検知し、これをログファイル12に記録することができる。また、設定ファイル13に必要に応じて任意に設定を行なうことにより、OS標準ライブラリ11にスレッドセーフな代替関数が存在する場合において、当該代替関数を動的に実行する動作を選択可能となる。[動作]次に、本発明の実施の形態に係る情報処理装置の動作について図面を用いて説明する。本発明の実施の形態では、情報処理装置101を動作させることによって、本発明の実施の形態に係るプログラム不正検知方法が実施される。よって、本発明の実施の形態に係るプログラム不正検知方法の説明は、以下の情報処理装置101の動作説明に代える。なお、以下の説明においては、適宜図1を参照する。図3は、本発明の実施の形態に係る情報処理装置がプログラム不正検知を行なう際の動作手順を示すフローチャートである。図3を参照して、CPU6がユーザプログラム9を実行し、スレッドセーフでない関数を呼び出した場合にはステップS1でYES、CPU6は、不正コーディング検知ライブラリ10において提供される対応のラッパー関数を、不正コーディング検知ライブラリ10のプリロードを行なうことによって優先的に実行する。なお、このような動作を行なうための設定は、設定ファイル13に対して行なうことが可能である。次に、CPU6は、当該ラッパー関数において、当該スレッドセーフでない関数の呼び出し元がマルチスレッドプログラムであるか否かを判定し、マルチスレッドプログラムから呼び出された場合にはステップS3でYES、ログファイル12に警告を出力するステップS4。次に、CPU6は、当該ラッパー関数において、代替処理を実行するか否かの判定を行い、代替実行を行なう場合にはステップS5でYES、OS標準ライブラリ11に当該スレッドセーフでない関数と代替可能なスレッドセーフな代替関数が存在するか否かを確認する。そして、CPU6は、当該ラッパー関数において、スレッドセーフな代替関数が存在する場合にはステップS6でYES、当該代替関数を実行してステップS7処理を終了する。一方、CPU6は、当該スレッドセーフでない関数の呼び出し元がマルチスレッドプログラムでない場合ステップS3でNO、代替関数を実行しない設定である場合ステップS5でNOまたは代替関数が存在しない場合ステップS6でNOには、当該スレッドセーフでない関数を実行するステップS8。ところで、マルチスレッドプログラムにおいて、スレッドセーフでない関数を使用した場合には、各関数の競合状況などによって動作が不定となる可能性がある。そして、明示的なエラーの出力等を行なわないと、このような不正なコーディングによって生成されたモジュールにおける不具合の原因究明が困難となる。また、このような警告処理を行なうためには、アプリケーションプログラムを修正してプログラム不正検知機能を実装する必要が生じてしまう。これに対して、本発明の実施の形態に係る情報処理装置では、関数判定部21は、アプリケーションにおいて呼び出された呼び出し関数が、不正コーディング検知ライブラリ10における所定の関数に対応するか否かを判定する。そして、警告処理部22は、当該呼び出し関数が上記所定の関数に対応すると判定した場合には、不正コーディング検知ライブラリ10における上記所定の関数を実行することにより、呼び出し関数の呼び出し元が所定の条件を満たすか否かを判定し、当該呼び出し元が所定の条件を満たす場合に警告処理を行なう。このような構成により、アプリケーションプログラムを修正することなく、マルチスレッドプログラムにおけるスレッドセーフでない関数の実行を検知することが可能となる。すなわち、情報処理装置101では、不正コーディング検知ライブラリ10が提供するラッパー関数により、プログラム実行時にマルチスレッドプログラムからの関数呼び出しであるか否かを判断することが可能である。これにより、ユーザプログラム9がマルチスレッドプログラムである場合において、当該プログラムがスレッドセーフでない関数を呼び出したときには、ユーザプログラム9の修正を行なうことなく明示的な警告を出力することができる。たとえば、オペレーティングシステムの標準ライブラリが提供するスレッドセーフでない関数がマルチスレッドプログラムにおいて使用された場合において、当該プログラムの実行時に不正を検知し、マルチスレッドプログラムからスレッドセーフでない関数の実行が行われたという警告をログファイル12に記録することができる。これにより、プログラムのデバッグを効率的に行なうことが可能となる。すなわち、本発明の実施の形態に係る情報処理装置における各構成要素のうち、関数判定部21および警告処理部22からなる最小構成により、アプリケーションプログラムを修正することなく、当該プログラムの不正検知および警告処理を適切に行なう、という本発明の目的を達成することが可能となる。また、本発明の実施の形態に係る情報処理装置では、代替関数実行部23は、呼び出し関数の呼び出し元が所定の条件を満たす場合であって呼び出し関数の代替関数が存在するときには、呼び出し関数の代わりに代替関数を実行する。具体的には、情報処理装置101では、不正コーディング検知ライブラリ10が提供するラッパー関数により、代替関数の情報を保持し、当該代替関数を呼び出すことが可能である。これにより、マルチスレッドプログラムからスレッドセーフでない関数を呼び出した場合において、スレッドセーフな代替関数が提供されていれば、プログラム実行時に、スレッドセーフな代替関数に置き換えてプログラムを実行することができる。すなわち、スレッドセーフな代替関数が存在する場合には、設定ファイル13に対する設定内容に基づき、自動的にこの代替関数を実行することができる。これにより、アプリケーションプログラムを修正することなく、マルチスレッドプログラムにおいて、スレッドセーフでない関数の実行を検知することに加えて、スレッドセーフな関数を正しく実行することが可能となる。また、本発明の実施の形態に係る情報処理装置では、代替関数実行部23は、呼び出し関数の呼び出し元が所定の条件を満たす場合であって呼び出し関数の代替関数が存在しないときには、呼び出し関数を実行する。このような構成により、スレッドセーフな代替関数が存在しない場合に、アプリケーションにおいて呼び出されたスレッドセーフでない関数を実行し、処理を継続することができる。また、本発明の実施の形態に係る情報処理装置では、警告処理部22は、警告処理として警告情報のログファイルへの出力を行なう。このような構成により、プログラムの不正を示す警告情報をユーザに適切に提示することができる。また、本発明の実施の形態に係る情報処理装置では、不正コーディング検知ライブラリ10は、所定の関数としてスレッドセーフでない関数を含む。そして、警告処理部22は、呼び出し関数が不正コーディング検知ライブラリ10における所定の関数に対応すると判定した場合には、呼び出し関数の呼び出し元がマルチスレッドプログラムであるか否かを判定し、マルチスレッドプログラムである場合に警告処理を行なう。このような構成により、特にマルチスレッドプログラムの不正検知および警告処理を適切に行なうことができる。なお、本発明の実施の形態に係る情報処理装置は、スレッドセーフでない関数の実行検知に限らず、非同期シグナルセーフでない関数の実行検知などを行ってもよい。ここで、シグナルとは、たとえば、OSにおける非同期イベントの通知、すなわちアプリケーションレベルでの割り込みを意味する。非同期シグナルセーフな関数とは、たとえば、関数内でシグナルに割り込まれても、次回の関数コールにおいて問題の生じない関数を意味する。すなわち、不正コーディング検知ライブラリ10は、所定の関数として非同期シグナルセーフでない関数を含む。警告処理部22は、呼び出し関数が不正コーディング検知ライブラリ10における所定の関数に対応すると判定した場合には、呼び出し関数の呼び出し元がシグナルハンドラであるか否かを判定し、シグナルハンドラである場合に警告処理を行なう。図4は、本発明の実施の形態に係る情報処理装置がプログラム不正検知を行なう際の動作手順の他の例を示すフローチャートである。図4を参照して、CPU6がユーザプログラム9を実行し、非同期シグナルセーフでない関数を呼び出した場合にはステップS11でYES、CPU6は、不正コーディング検知ライブラリ10において提供される対応のラッパー関数を、不正コーディング検知ライブラリ10のプリロードを行なうことによって優先的に実行する。なお、このような動作を行なうための設定は、設定ファイル13に対して行なうことが可能である。次に、CPU6は、当該ラッパー関数において、当該非同期シグナルセーフでない関数の呼び出し元がシグナルハンドラであるか否かを判定し、シグナルハンドラから呼び出された場合にはステップS13でYES、ログファイル12に警告を出力するステップS14。ここで、シグナルハンドラとは、たとえば、プロセスがシグナルを受信したときに実行する関数を意味する。次に、CPU6は、当該ラッパー関数において、代替処理を実行するか否かの判定を行い、代替実行を行なう場合にはステップS15でYES、OS標準ライブラリ11に当該非同期シグナルセーフでない関数と代替可能な非同期シグナルセーフな代替関数が存在するか否かを確認する。そして、CPU6は、当該ラッパー関数において、非同期シグナルセーフな代替関数が存在する場合にはステップS16でYES、当該代替関数を実行してステップS17処理を終了する。一方、CPU6は、当該非同期シグナルセーフでない関数の呼び出し元がシグナルハンドラでない場合ステップS13でNO、代替関数を実行しない設定にしている場合ステップS15でNOまたは代替関数が存在しない場合ステップS16でNOには、当該非同期シグナルセーフでない関数を実行するステップS18。このように、本発明の実施の形態に係る情報処理装置では、不正コーディング検知ライブラリ10は、所定の関数として非同期シグナルセーフでない関数を含む。そして、警告処理部22は、呼び出し関数が不正コーディング検知ライブラリ10における所定の関数に対応すると判定した場合には、呼び出し関数の呼び出し元がシグナルハンドラであるか否かを判定し、シグナルハンドラである場合に警告処理を行なう。このような構成により、特に非同期シグナルを採用するプログラムの不正検知および警告処理を適切に行なうことができる。上記実施の形態は、すべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記説明ではなく特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。上記実施の形態の一部または全部は以下の付記のようにも記載されうるが、本発明の範囲は、以下の付記に限定されるものではない。[付記1]アプリケーションにおいて呼び出された呼び出し関数が、不正コーディング検知ライブラリにおける所定の関数に対応するか否かを判定するための関数判定部と、前記呼び出し関数が前記所定の関数に対応すると判定した場合には、前記不正コーディング検知ライブラリにおける前記所定の関数を実行することにより、前記呼び出し関数の呼び出し元が所定の条件を満たすか否かを判定し、前記呼び出し元が前記所定の条件を満たす場合に警告処理を行なうための警告処理部とを備える、情報処理装置。[付記2]前記情報処理装置は、さらに、前記所定の条件を満たす場合であって前記呼び出し関数の代替関数が存在するときには、前記呼び出し関数の代わりに前記代替関数を実行するための代替関数実行部を備える、付記1に記載の情報処理装置。[付記3]前記代替関数実行部は、前記所定の条件を満たす場合であって前記呼び出し関数の代替関数が存在しないときには、前記呼び出し関数を実行する、付記2に記載の情報処理装置。[付記4]前記警告処理部は、前記警告処理として警告情報のログファイルへの出力を行なう、付記1から3のいずれかに記載の情報処理装置。[付記5]前記不正コーディング検知ライブラリは、前記所定の関数としてスレッドセーフでない関数を含み、前記所定の条件は、前記呼び出し元がマルチスレッドプログラムであることである、付記1から4のいずれかに記載の情報処理装置。[付記6]前記不正コーディング検知ライブラリは、前記所定の関数として非同期シグナルセーフでない関数を含み、前記所定の条件は、前記関数の呼び出し元がシグナルハンドラであることである、付記1から4のいずれかに記載の情報処理装置。[付記7]アプリケーションにおいて呼び出された呼び出し関数が、不正コーディング検知ライブラリにおける所定の関数に対応するか否かを判定するステップと、前記呼び出し関数が前記所定の関数に対応すると判定した場合には、前記不正コーディング検知ライブラリにおける前記所定の関数を実行することにより、前記呼び出し関数の呼び出し元が所定の条件を満たすか否かを判定し、前記呼び出し元が前記所定の条件を満たす場合に警告処理を行なうステップとを含む、プログラム不正検知方法。[付記8]前記プログラム不正検知方法は、さらに、前記所定の条件を満たす場合であって前記呼び出し関数の代替関数が存在するときには、前記呼び出し関数の代わりに前記代替関数を実行するステップを含む、付記7に記載のプログラム不正検知方法。[付記9]前記代替関数を実行するステップにおいては、前記所定の条件を満たす場合であって前記呼び出し関数の代替関数が存在しないときには、前記呼び出し関数を実行する、付記8に記載のプログラム不正検知方法。[付記10]前記警告処理を行なうステップにおいては、前記警告処理として警告情報のログファイルへの出力を行なう、付記7から9のいずれかに記載のプログラム不正検知方法。[付記11]前記不正コーディング検知ライブラリは、前記所定の関数としてスレッドセーフでない関数を含み、前記所定の条件は、前記呼び出し元がマルチスレッドプログラムであることである、付記7から10のいずれかに記載のプログラム不正検知方法。[付記12]前記不正コーディング検知ライブラリは、前記所定の関数として非同期シグナルセーフでない関数を含み、前記所定の条件は、前記関数の呼び出し元がシグナルハンドラであることである、付記7から10のいずれかに記載のプログラム不正検知方法。[付記13]コンピュータに、アプリケーションにおいて呼び出された呼び出し関数が、不正コーディング検知ライブラリにおける所定の関数に対応するか否かを判定するステップと、前記呼び出し関数が前記所定の関数に対応すると判定した場合には、前記不正コーディング検知ライブラリにおける前記所定の関数を実行することにより、前記呼び出し関数の呼び出し元が所定の条件を満たすか否かを判定し、前記呼び出し元が前記所定の条件を満たす場合に警告処理を行なうステップとを実行させるための、プログラム不正検知プログラム。[付記14]前記プログラム不正検知プログラムは、さらに、コンピュータに、前記所定の条件を満たす場合であって前記呼び出し関数の代替関数が存在するときには、前記呼び出し関数の代わりに前記代替関数を実行するステップを実行させる、付記13に記載のプログラム不正検知プログラム。[付記15]前記代替関数を実行するステップにおいては、前記所定の条件を満たす場合であって前記呼び出し関数の代替関数が存在しないときには、前記呼び出し関数を実行する、付記14に記載のプログラム不正検知プログラム。[付記16]前記警告処理を行なうステップにおいては、前記警告処理として警告情報のログファイルへの出力を行なう、付記13から15のいずれかに記載のプログラム不正検知プログラム。[付記17]前記不正コーディング検知ライブラリは、前記所定の関数としてスレッドセーフでない関数を含み、前記所定の条件は、前記呼び出し元がマルチスレッドプログラムであることである、付記13から16のいずれかに記載のプログラム不正検知プログラム。[付記18]前記不正コーディング検知ライブラリは、前記所定の関数として非同期シグナルセーフでない関数を含み、前記所定の条件は、前記関数の呼び出し元がシグナルハンドラであることである、付記13から16のいずれかに記載のプログラム不正検知プログラム。