CPUを備えた装置を動作させるソフトウェアプログラムのソースコードを複数保存するソースコード保存手段と、前記装置に内蔵する周辺機能部であるデバイスのデバイス情報を有するプロジェクト情報を複数記憶するプロジェクト情報記憶手段と、前記デバイス情報には、前記デバイスを特定する情報と前記ソースコード保存手段に保存した前記デバイスを制御するプログラムのソースコード情報とが含まれ、前記プロジェクト情報記憶手段に記憶したプロジェクト情報の中から、検索対象のデバイスを特定する情報と一致するデバイス情報を検索する検索手段と、前記検索手段で検索した結果のデバイス情報に含まれたソースコード情報に基づき、前記ソースコード保存手段に保存されたソースコードを抽出する抽出手段と、を備えたことを特徴とするプログラム再利用システム。前記プロジェクト情報記憶手段に記憶したデバイス情報には、前記デバイスにアクセスするアドレス情報がさらに含まれ、前記検索手段により検索されたデバイス情報に含まれる前記アドレス情報を抽出し、前記抽出手段により前記抽出したソースコード中において、前記抽出したアドレス情報にアクセスしているソースコード部分を抽出するデバイスアクセスコード抽出手段と、を備えたことを特徴とする請求項1に記載のプログラム再利用システム。前記プロジェクト情報記憶手段に記憶したプロジェクト情報には、前記CPUの名前を示すCPU情報がさらに含まれ、複数のCPUのCPU名と命令コードと該命令コードの動作とで構成されるインストラクションコードテーブルと、前記検索手段により検索されたデバイス情報を有するプロジェクト情報に基づいて前記CPU名を抽出し、前記検索手段が抽出したソースコード中において、前記インストラクションコードテーブルから前記抽出したCPU名に対応する命令コードを使用しているソースコード部分を抽出する命令コード抽出手段と、を備えたことを特徴とする請求項1または2に記載のプログラム再利用システム。前記プロジェクト情報記憶手段に記憶したプロジェクト情報には、前記装置を構成するオペレーティングシステムを特定するOS名を含むオペレーティングシステム情報がさらに含まれ、複数のオペレーティングシステムのOS名とオペレーティングシステムが独自に持つシステムコール名と該システムコールの動作とで構成されるシステムコールテーブルと、前記検索手段により検索されたデバイス情報を有するプロジェクト情報に基づいて前記OS名を抽出し、前記検索手段が抽出したソースコード中において、前記システムコールテーブルから前記抽出したOS名のオペレーティングシステムが持つシステムコールを使用しているソースコード部分を抽出するシステムコールコード抽出手段と、を備えたことを特徴とする請求項1乃至3いずれかに記載のプログラム再利用システム。請求項1に記載の前記抽出手段、請求項2に記載のデバイスアクセス抽出手段、請求項3に記載の命令コード抽出手段、及び請求項4に記載のシステムコールコード抽出手段の少なくとも一つの抽出結果を表示する表示手段と、を備えたことを特徴とするプログラム再利用システム。CPUを備えた装置を動作させるソフトウェアプログラムのソースコードを複数保存するソースコード保存手段と、前記装置に内蔵する周辺機能部であるデバイスのデバイス情報を有するプロジェクト情報を複数記憶するプロジェクト情報記憶手段と、備えたプログラム再利用システムに使用される方法であって、前記デバイス情報には、前記デバイスを特定する情報と、前記ソースコード保存手段に保存した前記デバイスを制御するプログラムのソースコード情報と、が含まれ、検索対象のデバイスを特定する情報である検索情報を入力する入力ステップと、前記入力ステップで入力された検索情報と一致するデバイス情報を、前記プロジェクト情報記憶手段に記憶したプロジェクト情報の中から検索する検索ステップと、前記検索ステップで検索した結果のデバイス情報に含まれたソースコード情報に基づき、前記ソースコード保存手段に保存されたソースコードを抽出する抽出ステップと、を備えたことを特徴とするプログラム再利用方法。その際、過去に開発した製品を構成するデバイスと新規に開発する製品を構成するデバイスが同じであれば、そのデバイスを制御する部分のプログラムは流用が可能である。しかし、過去に開発したプログラムが多ければ多いほど流用できる可能性は大きくなるが、従来技術では該当するプログラムを抽出する作業は手動で行われていたという課題があった。また、プログラムの移植は、API関数のみではなく、CPUからデバイスへのアクセス方法の違い、CPUに依存したアセンブリ言語の違いやオペレーティングシステム以下OSと記すのシステムコールの違いなども考慮して行わなければならず、従来技術ではその変更箇所を探す作業を手動で実施していたという課題もあった。この発明は、上記のような課題を解決するためになされたもので、第1の目的は、デバイスの種別、名称などのデバイス情報を入力することで、過去に開発した同じデバイスの制御プログラムがあれば、そのソースコードを自動的に抽出することによりプログラム開発の作業を効率的に行うことができるプログラム再利用システムを得るものである。また、第2の目的は、CPUからデバイスへアクセスしている箇所、またはCPUに依存したアセンブリ言語が記述されている箇所、またはOSのシステムコールを行っている箇所、すなわち、ハードウェアやOSに依存するソースコードの記載箇所を移植対象となるソースコードに示すことにより、ソフトウェア開発者がプログラムの移植作業を効率的に行うことができるプログラム再利用システムを得るものである。この発明に係るプログラム再利用システムは、CPUを備えた装置を動作させるソフトウェアプログラムのソースコードを複数保存するソースコード保存手段と、装置に内蔵する周辺機能部であるデバイスのデバイス情報を有するプロジェクト情報を複数記憶するプロジェクト情報記憶手段と、デバイス情報には、そのデバイスを特定する情報と、ソースコード保存手段に保存した該デバイスを制御するプログラムのソースコード情報と、が含まれ、前記プロジェクト情報記憶手段に記憶したプロジェクト情報の中から、検索対象のデバイスを特定する情報と一致するデバイス情報を検索する検索手段と、前記検索手段で検索した結果のデバイス情報に含まれたソースコード情報に基づき、前記ソースコード保存手段に保存されたソースコードを抽出する抽出手段と、を備えたことを特徴とするものである。この発明のプログラム再利用システムは、デバイスの種別、名称などのデバイス情報を入力することにより、過去に開発した同じデバイスのプログラムがあれば、そのソースコードを自動的に抽出することでソフトウェア開発者がプログラム開発を効率的に行うことができるという効果がある。実施の形態1.まず、実施の形態1のプログラム再利用システムの構成について説明する。図1はこの発明の実施の形態1におけるプログラム再利用システムの構成図である。図1において、この発明の実施の形態1におけるプログラム再利用システム100は、今回開発するデバイスの情報を入力する検索情報入力手段101と、1つの製品に関するソフトウェア開発を1つのプロジェクトと定義すると、過去に開発した製品毎に、使用されているCPU、OS、デバイス情報などが記録された情報をプロジェクト情報として記憶してあるプロジェクト情報記憶手段102と、過去に開発した製品のプログラムのソースコードが保存してある既存ソースコード保存手段103と、検索情報入力手段101で入力されたデバイス情報からプロジェクト情報記憶手段102に記憶されているプロジェクト情報を検索して一致するデバイス情報に対応するソースコードを既存ソースコード保存手段103から抽出する検索抽出手段104と、CPUに依存したインストラクションを示したCPU情報記憶手段105と、OSのシステムコールに関する情報を記憶したOS情報記憶手段106と、検索抽出手段104により抽出したソースコードにおいて、CPU情報記憶手段105に記憶されているCPUに依存したインストラクションが記載されたコードを抽出し、OS情報記憶手段106に記憶されているOSのシステムコールが記載されたコードを抽出するコード抽出手段107と、検索抽出手段104により抽出したソースコードおよびコード抽出手段107により抽出した依存コードを表示する表示手段108とから構成される。次に動作について説明する。図2は、検索情報入力手段101によるデバイス情報入力画面200の例である。図2のように検索情報入力手段101では、デバイス情報としてUSBUniversalSerialBusやLANLocalAreaNetworkやRS-232C等のデバイスの種類を示すデバイス種別201、そのデバイスの製造会社名を示すデバイスメーカー202、そのデバイスの製品型名を示すデバイス型名203を入力する。ここでは、理解を容易化するため具体例として、デバイス種別201をUSB、デバイスメーカー202をMaker-1、デバイス型名203をUSB-1と入力した場合について説明する。図3は、プロジェクト情報記憶手段102に記憶されているプロジェクト情報の例である。プロジェクト情報記憶手段102には、前述のように、過去に開発した製品に対応して複数個のプロジェクト情報300が記憶されている。プロジェクト情報300には、各プロジェクト情報を構成する情報として、過去に開発された製品で使用されていたCPUの種類を示すCPU310、OSの種類を示すOS320、後述するデバイスに関する情報を示すデバイス情報330が記録されている。デバイス情報330には、そのデバイスの種類を示すデバイス種別331とそのデバイスの製造会社を示すメーカー332とそのデバイスの製品型名を示す型名333とCPUがデバイスにアクセスする方式であるアクセス方式334とCPUがデバイスにアクセスする場合のアクセス先のアドレスを示すアドレス情報335とソースコード情報としてそのデバイスの制御プログラムのソースコードが既存ソースコード保存手段103に保存されているファイル名を示すソースファイル名336が記録されている。アクセス方式334には、メモリマップド方式とポートマップドI/O方式がある。メモリマップド方式とは、デバイスを制御するレジスタをアドレスに配置し、CPUがメモリにアクセスするのと同様にそのアドレスに読み書きして制御する方式である。アクセス方式334にメモリマップドが記録されていた場合、アドレス情報335にはデバイスのレジスタが配置されたアドレスを記録する。ポートマップドI/O方式とは、デバイスを制御するポートがアドレスに配置され、CPUからそのアドレスに読み書きして制御する方式である。アクセス方式334にポートマップドが記録されていた場合、アドレス情報335にはデバイスのポートが配置されたアドレスを記録する。次に、図3の例により、プロジェクト情報300に記載された情報について説明する。すなわち、プロジェクト1における製品では、CPU310が示すCPUの種類がCPU-1、OS320が示すOSの種類がOS-1、デバイスは2種類で構成され、1つ目のデバイス情報330としてデバイス種別331が示すデバイスの種類がUSB、メーカー332が示すデバイスの製造会社がMaker-1、型名333が示すデバイスの製造型名がUSB-1、アクセス方式334が示すデバイスへのアクセス方式がメモリマップドメモリマップド方式、アドレス情報335が示すデバイスのレジスタが配置されたアドレス番地が0x800-0x80FF、ソースファイル名336が示すソースファイル名がファイル-01である。2つ目のデバイス情報、およびプロジェクト2についても同様である。図4は、既存ソースコード保存手段103に保存されているソースコードの例を示している。この例では、図3で示したソースファイル名336に示すファイル名がファイル-01であり、先頭の1行目から6行目まではコメント行で、デバイス情報330と同等の情報を記載している。7行目のdefine文で、レジスタのアドレスを定義し、プログラムからREGでレジスタにアクセスできるようになっていることを示す。また、11行目では、インラインアセンブラで、CPUインストラクションを使用していることを示す。また、12行目では、OSのシステムコールを使用していることを示す。図6は、CPU情報記憶手段105に記憶されているCPU情報400の例である。CPU情報400には過去に開発したプロジェクトで使用したすべてのCPUに関する情報が記録されており、この例では、CPUのアセンブリ言語のインストラクションコードを示し、CPU名401と命令分類402とインストラクションコード403と命令の意味404とから構成されている。ここでは、CPU名401がCPU-1の場合のインストラクションコードの一覧インストラクションコードテーブルを示している。図7は、OS情報記憶手段106に記憶されているOS情報500の例である。OS情報500には、過去に開発したプロジェクトで使用したすべてのOSについて記録されており、この例では、OSの名前であるOS名501とシステムコールの種別を示すシステムコール分類502とシステムコールであるAPI名503とシステムコールの意味504とから構成されている。ここでは、OS名501がOS-1の場合のシステムコールの一覧システムコールテーブルを示している。次に、図5に示すフローチャートにより、入力されたデバイス情報に一致するデバイスの制御プログラムのソースコードを検索する検索抽出手段104の動作を説明する。まず、検索情報入力手段101により新規に開発する機器装置で使用するデバイスのデバイス種別201とデバイスメーカー202とデバイス型名203をデバイス情報200として入力するS10。次に、検索抽出手段104は、プロジェクト情報記憶手段102に記憶されている過去に開発した製品に対応する複数のプロジェクト情報300の中からデバイス情報330を検索するS11。次に、プロジェクト情報300の中のデバイス情報330がステップS10で入力されたデバイス情報と一致するか確認するS12。ステップS12でデバイス情報が一致した場合には、そのデバイスの制御プログラムのソースファイル名336を表示し、終了するS13。一方、ステップS12でデバイス情報が一致しなかった場合には、同じプロジェクトの中の全てのデバイスについて検索したか確認しS14、まだデバイス情報がある場合にはステップS11に戻り、同じプロジェクトの次のデバイス情報を検索するS11。ステップS14で1つのプロジェクトの中の全てのデバイス情報を検索しても見つからなかった場合には、全てのプロジェクト情報について検索したか確認しS15、まだプロジェクト情報がある場合には、ステップ11に戻りS15でNoの場合、次のプロジェクト情報の中のデバイス情報を検索するS11。一方、ステップS15でプロジェクト情報記憶手段102に記憶されている全てのプロジェクト情報のデバイス情報を検索しても見つからない場合には終了するS16。なお、図5の例では、プロジェクト情報記憶手段102に記憶されているプロジェクト情報からのみ所望のデバイス情報を検索する例を示したが、図4に示すようにソースコード中のコメント行でデバイス情報を記載している場合には、既存ソースコード保存手段103に保存してあるすべてのソースコード中を所望のデバイス情報の検索を行うようにしても良い。ソースコード中のデバイス情報を検索する場合は、図5に示すすべてのプロジェクト情報のデバイス情報を検索した後にすべてのソースコード中のデバイス情報を検索するようにしても良いし、プロジェクト情報の記録が充分でない場合は、ソースコード中のみ所望のデバイス情報を検索するようにしても良い。次に、図8に示すフローチャートにより、検索抽出手段104で見つかったソースコードに対して、デバイスにアクセスしているソースコード部分およびCPUの命令コードを使用しているソースコード部分およびOSのシステムコールを使用しているソースコード部分を抽出するコード抽出手段107の動作を説明する。まず、検索抽出手段104で見つかったソースファイル名のファイルを開き、1行読み込むS50。次に、プロジェクト情報300から検索抽出手段104で見つかったソースファイル名のファイルが属するデバイス情報330のアドレス情報335に記載されているアドレス空間、例えば図2の例では0x8000-0x80FFのアドレス空間の文字列が含まれているかを調べるS51。該当する行であればステップS52へ移行し、ステップS51で該当していなければステップS53へ移行する。ステップS52では、その行にデバイスに依存するコードであることを示すマークをし、次のステップS53に移行する。次に、検索抽出手段104で見つかったソースファイル名のファイルが属するプロジェクト情報300のCPU310によりプロジェクトで使用されたCPU図2の例ではCPU-1からCPU情報記憶手段105に記憶されているインストラクションコード一覧を取得し、ステップS50で読み込んだ行に該当するインストラクションコードがあるか調べるS53。該当する行であればステップS54へ移行し、ステップS53で該当していなければステップS55へ移行する。ステップS54では、その行にCPUに依存するコードであることを示すマークをし、次のステップS55に移行する。次に、検索抽出手段104で見つかったソースファイル名のファイルが属するプロジェクト情報300のOS320によりプロジェクトで使用されたOS図2の例ではOS-1からOS情報記憶手段106に記憶されているシステムコールであるAPI名一覧を取得し、ステップS50で読み込んだ行に該当するシステムコールがあるか調べるS55。該当する行であればステップS56へ移行し、ステップS51で該当していなければステップS57へ移行する。ステップS56では、その行にOSに依存するコードであることを示すマークをし、次のステップS57に移行する。ステップS57では、ソースファイルのすべての行を調べていなければステップS50へ戻り次の行を読み込む。すべての行が調べ終わっていればコード抽出手段107は終了する。図9は、コード抽出手段107により抽出した結果を表示手段108に表示した例である。一番左の欄からデバイス欄は当該行がデバイスに依存した行を示し、CPU欄は当該行がCPUに依存したコードである行であることを示し、OS欄は当該行がOSに依存した行であることを示し、行欄はソースコードの行番号を示し、ソースコード欄は当該行のソースコードを示している。図9の例では、7行目にデバイスのアドレス情報0x8000-0x80FFのアドレス空間に一致した0x8000があるため、デバイス欄に○印が表示されてデバイスに依存したコードが記載された行であることを示している。11行目には、CPU-1のCPU情報400のインストラクションコード403であるCPU1_INS_1が使用されているため、CPU欄に○印が表示されてCPUに依存したコードが記載された行であることを示している。12行目には、OS-1のOS情報500のAPI名503であるOS1_API_1が使用されているため、OS欄に○印が表示されてOSに依存したコードが記載された行であることを示している。なお、実施の形態1の図1、図9の例では、デバイスにアクセスしているソースコード部分およびCPUの命令コードを使用しているソースコード部分およびOSのシステムコールを使用しているソースコード部分を抽出する機能をコード抽出手段107によりすべてを実施しているが、それぞれ、デバイスアクセスコード抽出手段、命令コード抽出手段、システムコールコード抽出手段として、別々の構成としても良い。また、図9の例では、該当する行に○印を付けてデバイス依存またはCPU依存またはOS依存を示すマークとしたが、該当する行を異なる色で表示することでデバイス依存またはCPU依存またはOS依存を示してもよい。以上のように、実施の形態1では、新規に開発する装置を構成するデバイスのデバイス情報を入力することにより、過去に開発した同じデバイスの制御プログラムのソースコードを検索し表示するようにしているので、新規開発の装置を構成するデバイスの制御プログラムを過去に開発した同じデバイスの制御プログラムを流用し移植する作業を効率的に行うことができる。また、CPUからデバイスへのアクセス方法の違いや、CPUに依存したアセンブリ言語の違い、または、OSのシステムコールの違いを、移植するソースコード上に示すようにしているので、移植作業を行う場合に修正すべきソースコード行を一目で見つけることができるようになるため、移植作業の効率をさらに向上することができる。