オブジェクト指向言語で書かれたプログラムの流用検出方法であって、検査対象プログラムを記憶装置からメモリに読み込むステップと、前記検査対象プログラムが複数の機能クラスによって継承される共通クラスに含まれる所定のメソッド名を含むか否かを判別するステップと、前記検査対象プログラムが前記所定のメソッド名を含むと判別されたことに応答して、前記検査対象プログラムは特定のプログラムを流用して作成されたものであると判定し、流用に対応するための所定の処理を行うステップと、を備えることを特徴とするプログラムの流用検出方法。前記検査対象プログラムの実行を開始するステップと、前記各機能クラスに含まれるメソッドの処理の中で、前記共通クラスに含まれる所定のメソッド名を有する認証メソッドを呼び出すステップと、前記呼び出された認証メソッドの処理の中で、前記共通クラスに付与された認証キーが引数に含まれるか否かを判別するステップと、前記呼び出された認証メソッドの処理の中で、前記共通クラスに付与された認証キーが引数に含まれていないと判別されたことに応答して、前記検査対象のプログラムは特定のプログラムを不正に流用して作成されたものであると判定し、不正流用に対応するための所定の処理を行うステップと、を備えることを特徴とする請求項1に記載のプログラムの流用検出方法。前記共通クラスに含まれる所定のメソッド名を有する認証メソッドが、初期化処理を行うメソッドであることを特徴とする請求項1または2に記載のプログラムの流用検出方法。前記共通クラスに含まれる所定のメソッド名を有する認証メソッドが、エラー処理を行うメソッドであることを特徴とする請求項1または2に記載のプログラムの流用検出方法。しかし、特許文献1に記載の透かし挿入方法では、ソースコードが変更されたことによってバグが生じていないことを検証するために莫大な時間を必要とする。また、プログラムをコンパイルする際に、実行速度を向上させるためにコンパイラが命令の順番を入れ替える場合がある。特許文献1に記載の透かし挿入方法では、このような場合、デコンパイルなどを通して復元されたソースコードでは、透かし情報が消滅しているおそれがある。また、特許文献2に記載のソフトウェア識別情報埋め込み方法では、ファイルの文字コードが変更された場合に、透かしとして埋め込んだビット列が有効にならない可能性があり、ちょっとしたソースコードの変更に弱いことが想定される。さらに各所に埋め込んでいるために、ソースコードの修正に弱いことが想定される。また、デコンパイルなどを通して復元されたソースコードでは、透かし情報が消滅するおそれがある点は特許文献1に記載の透かし挿入方法と同様である。以上の点から、特許文献1や特許文献2に開示されている方法によるソースコードへの透かし導入は実現していない。現状では、コメントによるコピーライト表記や、ソースコードを含めた、特殊な契約により不正な流用を防いでいることがほとんどある。しかし、従来のコメントによる著作者のコピーライト表記では、ソースコードを流用する際に安易にコピーライトの変更や削除が可能であり、流用され続けていると、本当の著作者を判別することが難しくなる。また、プログラムの不正な流用を防止するためには、著作者プログラムの開発元がはっきり分かることが最も重要であるが、保守や大規模開発を考慮すると、ソースコードの可読性への対応も行う必要がある。また、最近のソフトウェアの主流であるJava登録商標での実現性を考慮すると、デコンパイルなどを通して復元されたソースコードに対する著作権の証明も考慮に入れる必要がある。本発明の目的は、ソースコードの可読性を損なうことがなく、ソースコードの変更や修正に強く、デコンパイルなどを通してソースコードが復元されても消滅しない透かし情報を用いてプログラムの流用を検出するプログラムの流用検出方法を提供することである。上記目的を達成するため、本発明のプログラムの流用検出方法は、オブジェクト指向言語で書かれたプログラムの流用検出方法であって、検査対象プログラムを記憶装置からメモリに読み込むステップと、前記検査対象プログラムが複数の機能クラスによって継承される共通クラスに含まれる所定のメソッド名を含むか否かを判別するステップと、前記検査対象プログラムが前記所定のメソッド名を含むと判別されたことに応答して、前記検査対象プログラムは特定のプログラムを流用して作成されたものであると判定し、流用に対応するための所定の処理を行うステップと、を備えることを特徴とする。好ましくは、本発明のプログラムの流用検出方法は、前記検査対象プログラムの実行を開始するステップと、前記各機能クラスに含まれるメソッドの処理の中で、前記共通クラスに含まれる所定のメソッド名を有する認証メソッドを呼び出すステップと、前記呼び出された認証メソッドの処理の中で、前記共通クラスに付与された認証キーが引数に含まれるか否かを判別するステップと、前記呼び出された認証メソッドの処理の中で、前記共通クラスに付与された認証キーが引数に含まれていないと判別されたことに応答して、前記検査対象のプログラムは特定のプログラムを不正に流用して作成されたものであると判定し、不正流用に対応するための所定の処理を行うステップと、を備えることを特徴とする。好ましくは、本発明のプログラムの流用検出方法は、前記共通クラスに含まれる所定のメソッド名を有する認証メソッドが、初期化処理を行うメソッドであることを特徴とする。好ましくは、本発明のプログラムの流用検出方法は、前記共通クラスに含まれる所定のメソッド名を有する認証メソッドが、エラー処理を行うメソッドであることを特徴とする。本発明によれば、ソースコードの可読性を損なうことがなく、ソースコードの変更や修正に強く、デコンパイルなどを通してソースコードが復元されても消滅しない透かし情報を用いてプログラムの流用を検出することができる。以下、本発明の実施形態に係るプログラムの流用検出方法について図面を参照しながら詳細に説明する。本発明の実施形態に係るプログラムの流出検出方法は、検査用プログラムまたは検査対象プログラムをコンピュータで実行することにより実施される。図1は、プログラムを実行するコンピュータ1の構成の一例を示す。コンピュータ1は、CPUCentralProcessingUnit11とメモリ12とを含むコンピュータ本体10と、記憶部20と、入力部30と、表示部40とを有している。記憶部20は、ハードディスク装置やDVDDigitalVersatileDisc等の光ディスク装置等で構成される。記憶部20は、検査用プログラムと検査対象プログラムの両方、または検査対象プログラムを記憶する。メモリ12は、RAMRandomAccessMemoryやROMReadOnlyMemory等で構成される。CPU11は記憶部20から検査用プログラムと検査対象プログラムの両方、または検査対象プログラムをメモリ12に読み出し、メモリ12に記憶されている検査用プログラムまたは検査対象プログラムを実行する。入力部30は、キーボードやマウス等で構成される。表示部40は、ディスプレイやプリンタ等で構成される。利用者は、表示部40に検査用プログラムや検査対象プログラムを表示させ、入力部30を用いて検査用プログラムや検査対象プログラムを作成し、また修正する。本発明は、検査対象プログラムが、例えばJava登録商標言語SunMicrosystems社が開発したプログラミング言語のようなオブジェクト指向言語で書かれていることを前提とする。図2は、本発明の第1の実施形態に係る透かし情報が組み込まれた検査対象プログラムの構成の一例を示す。第1の実施形態に係る検査対象プログラムは、複数の機能クラス100と共通クラス200とを含む。各機能クラス100はメソッド101を含み、共通クラス200は認証メソッド201を含む。各機能クラス100は、共通クラス200を継承する。共通クラス200は、例えば基底クラスであるが、基底クラスを継承したクラスであってもよい。各機能クラス100は、システムやアプリケーションにおける所定の機能を実現するクラスである。共通クラス200は、複数の機能クラス100で共通に実行される処理を実現するクラスである。共通に実行される処理とは、例えば、エラー処理や初期化処理である。ただし、共通に実行される処理はエラー処理や初期化処理以外の処理であってもよい。プログラムではエラー処理や初期化処理は開発者の意識に関わらず、行われる。特に、Java登録商標ではエラー処理として、必ず例外処理が行われる。エラー処理や初期化処理は類似のソースコードを記述することが多く、共通化の対象となることが多い。なお、共通に実行される処理が初期化処理である場合、認証メソッド201はコンストラクタである。この場合には、Java登録商標の規約により認証メソッド201コンストラクタの名前は共通クラス200のクラス名と同一でなければならない。第1の実施形態では、認証メソッド201のメソッド名を透かし情報とみなす。すなわち、認証メソッド201のメソッド名を他の名前と識別可能な独自のものとする。例えば、認証メソッド201のメソッド名を64文字のランダムな英数字列とする。第1の実施形態では、各機能クラス100から共通クラス200を呼び出すため、認証メソッド201のメソッド名により独自性が見出せることになる。さらにメソッド名が独自であれば、中間コードなどからデコンパイルされても再生される。このため、デコンパイル後のソースコードをチェックすることによりプログラムが流用されたものであるか否かを判別することができる。第1の実施形態では、検査用プログラムにより認証メソッド201のメソッド名を検知する。CPU11は、検査用プログラムを記憶部20からメモリ12に読み込み、検査用プログラムを実行する。検査用プログラムが実行されると、図3に示すように、CPU11は、検査対象プログラムを記憶部20からメモリ11に読み込みS101、検査対象プログラムに認証メソッド201のメソッド名と一致するメソッド名が含まれるか否かを判別するS102。一致するメソッド名が含まれていた場合、CPU11は、検査対象プログラムは流用されたものであると判定しS102:Yes、流用されたものである旨のメッセージを表示する等の流用されたプログラムに対応するための所定の処理を行うS103。一方、一致するメソッド名が含まれていなかった場合、CPU11は、検査対象のプログラムは正当なものであって流用されたものではないと判定しS102:Yes、正当なものである旨のメッセージを表示する等の正当なプログラムに対応するための所定の処理を行うS104。図4は、本発明の第2の実施形態に係る透かし情報が組み込まれた検査対象プログラムの構成の一例を示す。第2の実施形態に係る検査対象プログラムは、複数の機能クラス110と共通クラス210とを含む。各機能クラス110はメソッド111を含み、共通クラス210は認証メソッド211を含む。機能クラス110と共通クラス210の関係は、第1の実施形態における機能クラス100と共通クラス200の関係と同様であり、説明を省略する。第2の実施形態では、共通クラス210毎に付与された認証キーと認証メソッド211とを透かし情報とみなす。すなわち、メソッド111は共通クラス210毎に付与された認証キーを引数として共通クラス210に含まれる認証メソッド211を呼び出す処理を含み、認証メソッド211は認証キーに基づいて認証を行う認証処理を含んでいる。本発明の第2の実施形態では、CPU11は検査対象プログラム自身を実行することによってその流用の有無を判定する。CPU11は、図5に示すように、検査対象プログラムを記憶部20からメモリ12に読み込み、検査対象プログラムの実行を開始するS201。検査対象プログラムの実行が開始されると、CPU11はメソッド111の処理の中で、共通クラス210に含まれる認証メソッド211を呼び出すS202。CPU11は呼び出された認証メソッド211の処理の中で、共通クラス210に付与された認証キーが引数に含まれるか否かを判別するS203。共通クラス210に付与された認証キーが引数に含まれていた場合S203:Yes、CPU11は、検査対象のプログラムは正当なものであって流用されたものではないと判定し、通常の処理を行うS204。一方、共通クラス210に付与された認証キーが引数に含まれてなかった場合、すなわち、共通クラス210に付与された認証キーと異なる認証キーが引数に含まれていた場合、および認証キーが引数に含まれていなかった場合S203:No、CPU11は、検査対象のプログラムは流用されたものであると判定して処理を中断する等、不正流用に対応するための所定の処理を行うS205。なお、第2の実施形態でも、第1の実施形態と同様に、認証メソッド211のメソッド名を独自のものとし、第1の実施形態に係る流用検出方法を実施した後、第2の実施形態に係る流用検出方法を実施することとしてもよい。検査対象のプログラムが開発元によって作成された正当なものである場合、当然ながらそれは認証メソッド201のメソッド名を含んでいる。このため、第1の実施形態に係るプログラムの流用検出方法では、CPU11は検査対象プログラムが開発元によって作成された正当なものであっても流用対応処理を行うS103。このため、第1の実施形態に係る流用検出方法によって流用と判定された後に、第2の実施形態に係る流用検出方法によって流用の有無を更に判定することにより、開発元によって作成された正当なものを流用と判定する誤判定を防ぐことができる。また、第1の実施形態に係る検査用プログラムの実行時間は一般に短く、第1の実施形態では検査対象のプログラムを動作させるためのテストパタンも不要である。このため、第1の実施形態に係る流用検出方法によって流用と判定されたもののみ、更に、第2の実施形態に係る流用検出方法によって検査することにより、検査の手間と時間を大幅に削減することができる。図6は、本発明の第2の実施形態の第1の変形例に係る検査対象プログラムの構成の一例を示す。第2の実施形態の第1の変形例に係る検査対象プログラムは、複数の機能クラス120と基底クラス220とを含む。各機能クラス120は、コンストラクタ121と、機能メソッド122とを含む。基底クラス220は、コンストラクタ221と、エラー処理メソッド222と、認証サブメソッド223とを含む。各機能クラス120は、基底クラス220を継承する。各機能クラス120は、システムやアプリケーションにおける所定の機能を実現するクラスである。機能メソッド122は、基底クラス220毎に付与された認証キーを引数として基底クラス220に含まれるエラー処理メソッド222を呼び出す処理を含む。基底クラス220は、複数の機能クラス120で共通に実行される処理を実現するクラスである。エラー処理メソッド222は、機能メソッド122から渡された認証キーを引数として認証サブメソッド223を呼び出す処理を含む。Java登録商標はエラー処理として、必ず例外処理を行う。これらの例外処理は類似のソースコードを記述することが多く、共通化の対象となることが多い。そのため、基底クラス220にエラー処理メソッド222を作成する意味が発生する。機能メソッド122がエラー処理を行う場合はエラー処理メソッド222を実行することで処理の共通化が図られ、効率的なソースコードとすることができる。認証サブメソッド223は、エラー処理メソッド222から呼び出され、不正流用に対する処理の中断等を行う。CPU11が検査対象プログラムを実行し、機能メソッド122の中で、エラーが発生すると、図7に示すように、CPU11は例外クラスと認証キーを引数としてエラー処理メソッド222を呼び出すS301。次に、CPU11は、呼び出されたエラー処理メソッド222の中で、もらった認証キーを引数として認証サブメソッド223を呼び出しS302、認証処理を行う。CPU11は、認証サブメソッド223の中で、基底クラス220に付与された認証キーが引数に含まれるか否かを判定するS303。基底クラス220に付与された認証キーが引数に含まれていた場合S303:Yes、CPU11は、エラー処理メソッド222に戻りS304、エラー解析処理を行って例外クラスを分析しS305、適切なメッセージをユーザに示せるようにメッセージを編集しS306、呼び出し元に戻り値等でエラーメッセージを引き渡すS307。一方、基底クラス220に付与された認証キーと異なる認証キーが引数に含まれていた場合、または認証キーが引数に含まれていなかった場合S303:No、CPU11は、検査対象のプログラムは流用されたものであると判定して処理を中断し、不正利用を防ぐS308。なお、エラー処理メソッド222は認証メソッドの一例である。エラー処理メソッド222と認証サブメソッド223を分離せず、エラー処理メソッド222の中で認証処理を行うこととしてもよい。図8は、本発明の第2の実施形態の第2の変形例に係る検査対象プログラムの構成の一例を示す。第2の実施形態の第2の変形例に係る検査対象プログラムは、複数の機能クラス130と基底クラス230とを含む。各機能クラス130は、コンストラクタ131と、機能メソッド132とを含む。基底クラス230は、コンストラクタ231と、認証サブメソッド232とを含む。各機能クラス130は、基底クラス230を継承する。各機能クラス130は、システムやアプリケーションにおける所定の機能を実現するクラスである。コンストラクタ131は、基底クラス230毎に付与された認証キーを引数として基底クラス230に含まれるコンストラクタ231を呼び出す処理を含む。基底クラス230は、複数の機能クラス130で共通に実行される処理を実現するクラスである。コンストラクタ231は、機能クラス130のコンストラクタ131から渡された認証キーを引数として認証サブメソッド232を呼び出す処理を含む。初期化もエラー処理同様に、クラスを使う上で必ず実行される。ただし、初期化処理はメソッドが使われる場合がなく、コンストラクタと呼ばれるクラス名と同じ名称のメソッドが動作する。この初期化処理はクラスファイルが記憶部20からコンピュータ1のメモリ12にロードされるタイミングで実行される。機能クラス130は基底クラス230を継承して作成されているため、機能クラス130のコンストラクタ131が実行されると、基底クラス230のコンストラクタ231が実行される。認証サブメソッド232は、基底クラス230のコンストラクタ231から呼び出され、不正流用に対する処理の中断等を行う。CPU11が検査対象プログラムを実行し、機能クラス130のコンストラクタ131が実行されると、図7に示すように、CPU11は認証キーを引数として基底クラス230のコンストラクタ231を呼び出すS401。次に、CPU11は呼び出された基底クラス230のコンストラクタ231の中で、もらった認証キーを引数として認証サブメソッド232を呼び出しS402、認証処理を行う。CPU11は認証サブメソッド232の中で、基底クラス230に付与された認証キーが引数に含まれるか否かを判定するS403。基底クラス230に付与された認証キーが引数に含まれていた場合S403:Yes、CPU11は、基底クラス230のコンストラクタ231に戻りS404、初期化処理を行ってS405、機能クラス130のコンストラクタ131に戻るS406。一方、基底クラス230に付与された認証キーと異なる認証キーが引数に含まれていた場合、または認証キーが引数に含まれていなかった場合S403:No、CPU11は、検査対象のプログラムは流用されたものであると判定して処理を中断し、不正利用を防ぐS407。なお、基底クラス230のコンストラクタ231は認証メソッドの一例である。コンストラクタ231と認証サブメソッド232を分離せず、コンストラクタ231の中で認証処理を行うとしてもよい。上述した実施形態ではJava登録商標言語を例として説明したが、C言語等他のオブジェクト指向言語で書かれたプログラムについても本発明を適用することができるのはもちろんである。以上の構成により、ソースコードを大幅に変更することなく、ソースコードに透かし情報を持たせることが可能になる。また、認証を行うことで、不正流用時の機能停止等を行うことも可能である。