(57)【要約】【課題】従来のライブラリは、プロセッサごとに最適化され、それぞれの環境に依存するものである。【解決手段】プロセッサ条件と、事前準備プログラム識別子とを有する事前準備プログラム管理情報を格納し得る事前準備プログラム管理情報格納部と、事前準備プログラムと、プログラムとを格納し得るプログラム格納部と、プログラム識別子を有する指示を受け付ける受付部と、当該プログラムをプログラム格納部から取得するプログラム取得部と、プロセッサ情報を取得するプロセッサ情報取得部と、プロセッサ情報が合致するプロセッサ条件に対応する事前準備プログラムを取得する事前準備プログラム取得部と、事前準備プログラム取得部が取得した事前準備プログラムを用いて、プログラム取得部が取得したプログラムを処理する処理部を具備するプログラム処理装置により、プロセッサに適合する事前準備プログラムを用いて、プログラムを処理することができる。【選択図】図１
2013073542.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサに関する条件である１以上のプロセッサ条件と、当該プロセッサにおいて実行され得るプログラムである１以上の事前準備プログラムを識別する事前準備プログラム識別子とを有する２以上の事前準備プログラム管理情報を格納し得る事前準備プログラム管理情報格納部と、
１以上の事前準備プログラムと、当該１以上の事前準備プログラムのうちの１以上の事前準備プログラムを使用する１以上のプログラムを格納し得るプログラム格納部と、
当該プログラムを識別する１以上のプログラム識別子を有する指示を受け付ける受付部と、
前記指示に含まれるプログラム識別子で識別されるプログラムを、前記プログラム格納部から取得するプログラム取得部と、
前記プログラムが動作するプロセッサに関する情報であるプロセッサ情報を取得するプロセッサ情報取得部と、
前記プログラム取得部が取得した１以上のプログラムが使用する１以上の事前準備プログラムであり、前記プロセッサ情報取得部が取得したプロセッサ情報が合致するプロセッサ条件に対応する１以上の事前準備プログラム識別子により識別される事前準備プログラムを取得する事前準備プログラム取得部と、
前記事前準備プログラム取得部が取得した１以上の事前準備プログラムを用いて、前記プログラム取得部が取得した１以上のプログラムを処理する処理部とを具備するプログラム処理装置。
【請求項２】
前記プログラムは、同一の処理を行う２以上の事前準備プログラムであり、２以上の各プロセッサに対応する２以上の事前準備プログラムと、当該２以上の事前準備プログラムのうち、プログラムが動作するプロセッサに対応する１以上の事前準備プログラムとを使用するプログラムであり、
前記事前準備プログラム管理情報格納部は、
プロセッサに関する条件である２以上のプロセッサ条件と、各プロセッサ条件に対応する２以上の事前準備プログラム識別子とを有する１以上の事前準備プログラム管理情報を格納しており、
前記受付部は、
１以上のプログラム識別子を有するプログラムを実行する指示を受け付け、
前記事前準備プログラム取得部は、
前記プログラムの実行中に、前記プログラム取得部が取得したプログラムが使用する１以上の事前準備プログラムであり、前記プロセッサ情報取得部が取得したプロセッサ情報が合致するプロセッサ条件に対応する１以上の事前準備プログラム識別子により識別される事前準備プログラムを取得し、
前記処理部は、
前記プログラム取得部が取得したプログラムを、当該プログラムが使用する事前準備プログラムであり、前記事前準備プログラム取得部が取得した事前準備プログラムと共に実行する請求項１記載のプログラム処理装置。
【請求項３】
前記処理部は、
前記プログラム取得部が取得した１以上のプログラムと、前記事前準備プログラム取得部が取得した１以上の事前準備プログラムとを結合する請求項１記載のプログラム処理装置。
【請求項４】
前記処理部は、
１以上の事前準備プログラムを使用するプログラムと、１以上の事前準備プログラムとを結合した結合プログラムを格納し得る結合プログラム格納手段と、
前記プログラム取得部が取得した１以上のプログラムと、前記事前準備プログラム取得部が取得した１以上の事前準備プログラムとを結合する結合手段と、
前記プログラムと、前記事前準備プログラムとを結合した結合プログラムを、前記結合プログラム格納手段に蓄積する蓄積手段とを具備する請求項３記載のプログラム処理装置。
【請求項５】
前記プログラム取得部は、
前記指示に含まれるプログラム識別子で識別されるプログラムの実行時に、当該プログラムを前記プログラム格納部から取得し、
前記事前準備プログラム取得部は、
前記指示に含まれるプログラム識別子で識別されるプログラムの実行時に、１以上の事前準備プログラムを前記事前準備プログラム管理情報格納部から取得し、
前記処理部は、
前記プログラム取得部が取得した１以上のプログラムと、前記事前準備プログラム取得部が取得した１以上の事前準備プログラムとを、前記プログラムの実行時に結合する結合手段と、
前記結合手段が結合した結合プログラムを実行する実行手段とを具備する請求項３記載のプログラム処理装置。
【請求項６】
前記結合手段は、
前記実行手段の前記結合プログラムの実行前に、前記プログラムと、前記１以上の事前準備プログラムとを結合する請求項５記載のプログラム処理装置。
【請求項７】
前記結合手段は、
前記実行手段の前記結合プログラムの実行中に、前記プログラムと、前記１以上の各事前準備プログラムとを結合する請求項５記載のプログラム処理装置。
【請求項８】
前記プロセッサ情報は、プロセッサを識別するプロセッサ識別情報であり、
前記プロセッサ条件は、当該プロセッサ識別情報を有する条件である請求項１から請求項７いずれか記載のプログラム処理装置。
【請求項９】
前記プロセッサ情報は、プロセッサの属性を示す１以上のプロセッサ属性情報であり、
前記プロセッサ条件は、当該プロセッサ属性情報を有する条件である請求項１から請求項７いずれか記載のプログラム処理装置。
【請求項１０】
記録媒体に、
プロセッサに関する条件である１以上のプロセッサ条件と、当該プロセッサにおいて実行され得るプログラムである１以上の事前準備プログラムを識別する事前準備プログラム識別子とを有する２以上の事前準備プログラム管理情報と、
１以上の事前準備プログラムと、当該１以上の事前準備プログラムのうちの１以上の事前準備プログラムを使用する１以上のプログラムとが格納されており、
受付部と、プログラム取得部と、プロセッサ情報取得部と、事前準備プログラム取得部と、処理部とを用いて行われるプログラム処理方法であって、
前記受付部が、プログラムを識別する１以上のプログラム識別子を有する指示を受け付ける受付ステップと、
前記プログラム取得部が、前記指示に含まれるプログラム識別子で識別されるプログラムを、前記記録媒体から取得するプログラム取得ステップと、
前記プロセッサ情報取得部が、前記プログラムが動作するプロセッサに関する情報であるプロセッサ情報を取得するプロセッサ情報取得ステップと、
前記事前準備プログラム取得部が、前記プログラム取得部が取得した１以上のプログラムが使用する１以上の事前準備プログラムであり、前記プロセッサ情報取得部が取得したプロセッサ情報が合致するプロセッサ条件に対応する１以上の事前準備プログラム識別子により識別される事前準備プログラムを取得する事前準備プログラム取得ステップと、
前記処理部が、前記事前準備プログラム取得部が取得した１以上の事前準備プログラムを用いて、前記プログラム取得部が取得した１以上のプログラムを処理する処理ステップとを具備するプログラム処理方法。
【請求項１１】
記録媒体に、
プロセッサに関する条件である１以上のプロセッサ条件と、当該プロセッサにおいて実行され得るプログラムである１以上の事前準備プログラムを識別する事前準備プログラム識別子とを有する２以上の事前準備プログラム管理情報と、
１以上の事前準備プログラムと、当該１以上の事前準備プログラムのうちの１以上の事前準備プログラムを使用する１以上のプログラムとが格納されており、
コンピュータを、
当該プログラムを識別する１以上のプログラム識別子を有する指示を受け付ける受付部と、
前記指示に含まれるプログラム識別子で識別されるプログラムを、前記プログラム格納部から取得するプログラム取得部と、
前記プログラムが動作するプロセッサに関する情報であるプロセッサ情報を取得するプロセッサ情報取得部と、
前記プログラム取得部が取得した１以上のプログラムが使用する１以上の事前準備プログラムであり、前記プロセッサ情報取得部が取得したプロセッサ情報が合致するプロセッサ条件に対応する１以上の事前準備プログラム識別子により識別される事前準備プログラムを取得する事前準備プログラム取得部と、
前記事前準備プログラム取得部が取得した１以上の事前準備プログラムを用いて、前記プログラム取得部が取得した１以上のプログラムを処理する処理部として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ライブラリ等を使用するプログラム処理装置等に関するものである。
【背景技術】
【０００２】
従来、様々なライブラリが開発されている（非特許文献１、非特許文献２参照）。このようなライブラリを用いることによって、ユーザは、様々なアプリケーションを開発することができた。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】“ＯｐｅｎＣＶ”、［online］、［２０１１年９月１５日検索］、インターネット［URL：http://opencv.willowgarage.com/］
【非特許文献２】“ＬＡＰＡＣＫ−Ｌｉｎｅａｒ  Ａｌｇｅｂｒａ  ＰＡＣＫａｇｅ”、［online］、［２０１１年９月１５日検索］、インターネット［URL：http://www.netlib.org/lapack/］
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、従来のライブラリは、プロセッサごとに最適化され、それぞれの環境に依存するものであった。
【課題を解決するための手段】
【０００５】
本第一の発明のプログラム処理装置は、プロセッサに関する条件である１以上のプロセッサ条件と、プロセッサにおいて実行され得るプログラムである１以上の事前準備プログラムを識別する事前準備プログラム識別子とを有する２以上の事前準備プログラム管理情報を格納し得る事前準備プログラム管理情報格納部と、１以上の事前準備プログラムと、１以上の事前準備プログラムのうちの１以上の事前準備プログラムを使用する１以上のプログラムを格納し得るプログラム格納部と、プログラムを識別する１以上のプログラム識別子を有する指示を受け付ける受付部と、指示に含まれるプログラム識別子で識別されるプログラムを、プログラム格納部から取得するプログラム取得部と、プログラムが動作するプロセッサに関する情報であるプロセッサ情報を取得するプロセッサ情報取得部と、プログラム取得部が取得した１以上のプログラムが使用する１以上の事前準備プログラムであり、プロセッサ情報取得部が取得したプロセッサ情報が合致するプロセッサ条件に対応する１以上の事前準備プログラム識別子により識別される事前準備プログラムを取得する事前準備プログラム取得部と、事前準備プログラム取得部が取得した１以上の事前準備プログラムを用いて、プログラム取得部が取得した１以上のプログラムを処理する処理部とを具備するプログラム処理装置である。
【０００６】
このような構成により、プロセッサに適合する事前準備プログラムを用いて、プログラムを処理することができる。また、ユーザは、当該事前準備プログラムを、当該プロセッサの種類や性能等を意識することなく使用することができる。
【０００７】
また、本第二の発明のプログラム処理装置は、第一の発明に対して、プログラムは、同一の処理を行う２以上の事前準備プログラムであり、２以上の各プロセッサに対応する２以上の事前準備プログラムと、２以上の事前準備プログラムのうち、プログラムが動作するプロセッサに対応する１以上の事前準備プログラムとを使用するプログラムであり、事前準備プログラム管理情報格納部は、プロセッサに関する条件である２以上のプロセッサ条件と、各プロセッサ条件に対応する２以上の事前準備プログラム識別子とを有する１以上の事前準備プログラム管理情報を格納しており、受付部は、１以上のプログラム識別子を有するプログラムを実行する指示を受け付け、事前準備プログラム取得部は、プログラムの実行中に、プログラム取得部が取得したプログラムが使用する１以上の事前準備プログラムであり、プロセッサ情報取得部が取得したプロセッサ情報が合致するプロセッサ条件に対応する１以上の事前準備プログラム識別子により識別される事前準備プログラムを取得し、処理部は、プログラム取得部が取得したプログラムを、プログラムが使用する事前準備プログラムであり、事前準備プログラム取得部が取得した事前準備プログラムと共に実行するプログラム処理装置である。
【０００８】
このような構成により、プロセッサに適合する事前準備プログラムを用いて、プログラムを実行することができる。また、ユーザは、当該事前準備プログラムを、当該プロセッサの種類や性能等を意識することなく使用することができる。
【０００９】
また、本第三の発明のプログラム処理装置は、第一の発明に対して、処理部は、プログラム取得部が取得した１以上のプログラムと、事前準備プログラム取得部が取得した１以上の事前準備プログラムとを結合するプログラム処理装置である。
【００１０】
このような構成により、プロセッサに適合する事前準備プログラムを用いて、プログラムを結合することができる。また、ユーザは、当該事前準備プログラムを、当該プロセッサの種類や性能等を意識することなく使用することができる。
【００１１】
また、本第四の発明のプログラム処理装置は、第三の発明に対して、処理部は、１以上の事前準備プログラムを使用するプログラムと、１以上の事前準備プログラムとを結合した結合プログラムを格納し得る結合プログラム格納手段と、プログラム取得部が取得した１以上のプログラムと、事前準備プログラム取得部が取得した１以上の事前準備プログラムとを結合する結合手段と、プログラムと、事前準備プログラムとを結合した結合プログラムを、結合プログラム格納手段に蓄積する蓄積手段とを具備するプログラム処理装置である。
【００１２】
このような構成により、プロセッサに適合する事前準備プログラムを用いて結合したプログラムを、蓄積することができる。また、ユーザは、当該プログラムを、当該プロセッサの種類や性能等を意識することなく実行することができる。
【００１３】
また、本第五の発明のプログラム処理装置は、第三の発明に対して、プログラム取得部は、指示に含まれるプログラム識別子で識別されるプログラムの実行時に、プログラムをプログラム格納部から取得し、事前準備プログラム取得部は、指示に含まれるプログラム識別子で識別されるプログラムの実行時に、１以上の事前準備プログラムを事前準備プログラム管理情報格納部から取得し、処理部は、プログラム取得部が取得した１以上のプログラムと、事前準備プログラム取得部が取得した１以上の事前準備プログラムとを、プログラムの実行時に結合する結合手段と、結合手段が結合した結合プログラムを実行する実行手段とを具備するプログラム処理装置である。
【００１４】
このような構成により、プロセッサに適合する事前準備プログラムを使用するプログラムを実行することができる。また、ユーザは、当該プログラムを、当該プロセッサの種類や性能等を意識することなく実行することができる。
【００１５】
また、本第六の発明のプログラム処理装置は、第五の発明に対して、結合手段は、実行手段の結合プログラムの実行前に、プログラムと、１以上の事前準備プログラムとを結合するプログラム処理装置である。
【００１６】
このような構成により、プロセッサに適合する事前準備プログラムを使用するプログラムを実行することができる。また、ユーザは、当該プログラムを、当該プロセッサの種類や性能等を意識することなく実行することができる。
【００１７】
また、本第七の発明のプログラム処理装置は、第五の発明に対して、結合手段は、実行手段の結合プログラムの実行中に、プログラムと、１以上の各事前準備プログラムとを結合するプログラム処理装置である。
【００１８】
このような構成により、プロセッサに適合する事前準備プログラムを使用するプログラムを実行することができる。また、ユーザは、当該プログラムを、当該プロセッサの種類や性能等を意識することなく生成し、実行することができる。
【００１９】
また、本第八の発明のプログラム処理装置は、第一から第七いずれかの発明に対して、プロセッサ情報は、プロセッサを識別するプロセッサ識別情報であり、プロセッサ条件は、プロセッサ識別情報を有する条件であるプログラム処理装置である。
【００２０】
このような構成により、プロセッサ識別情報を用いて、プロセッサを判別することができる。また、ユーザは、プログラムが動作するプロセッサに適合する事前準備プログラムを、当該プロセッサの種類や性能等を意識することなく使用することができる。
【００２１】
また、本第九の発明のプログラム処理装置は、第一から第七いずれかの発明に対して、プロセッサ情報は、プロセッサの属性を示す１以上のプロセッサ属性情報であり、プロセッサ条件は、プロセッサ属性情報を有する条件であるプログラム処理装置である。
【００２２】
このような構成により、プロセッサ属性情報を用いて、プロセッサを判別することができる。また、ユーザは、プログラムが動作するプロセッサに適合する事前準備プログラムを、当該プロセッサの種類や性能等を意識することなく使用することができる。
【発明の効果】
【００２３】
本発明によるプログラム処理装置等によれば、プロセッサに適合する事前準備プログラムを用いて、プログラムを処理することができる。また、ユーザは、当該事前準備プログラムを、当該プロセッサの種類や性能等を意識することなく使用することができる。
【図面の簡単な説明】
【００２４】
【図１】実施の形態１におけるプログラム処理装置１のブロック図
【図２】同プログラム処理装置１の全体動作について説明するフローチャート
【図３】同結合プログラムの生成と蓄積の処理について説明するフローチャート
【図４】同事前準備プログラム管理情報の例を示す図
【図５】同プログラムの例を示す図
【図６】同事前準備プログラム管理情報の例を示す図
【図７】同プログラムの例を示す図
【図８】同実施の形態２におけるプログラム処理装置２のブロック図
【図９】同プログラム処理装置２の全体動作について説明するフローチャート
【図１０】同結合プログラムの生成と実行の処理について説明するフローチャート
【図１１】同事前準備プログラム管理情報の例を示す図
【図１２】同実施の形態３におけるプログラム処理装置３のブロック図
【図１３】同プログラム処理装置３の全体動作について説明するフローチャート
【図１４】同事前準備プログラム管理情報の例を示す図
【図１５】各実施の形態におけるコンピュータシステムの概観図
【図１６】各実施の形態におけるコンピュータシステムのブロック図
【発明を実施するための形態】
【００２５】
以下、本発明によるプログラム処理装置等の実施形態について図面を参照して説明する。なお、実施の形態において同じ符号を付した構成要素は同様の動作を行うので、再度の説明を省略する場合がある。また、所定の情報が格納され得る格納部等において、当該格納部に情報が記憶される過程は問わないものとする。例えば、記録媒体を介して情報が格納部等で記憶されるようになってもよい。また、通信回線などを介して送信された情報が格納部等で記憶されるようになってもよい。さらに、入力デバイスを介して入力された情報が格納部等で記憶されるようになってもよい。また、本実施の形態において説明する各情報の形式、内容などは、あくまで例示であり、各情報の持つ意味を示すことができれば、形式、内容などは問わない。
【００２６】
また、以下の実施の形態において、「プロセッサ」とは、通常、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）のことであるが、例えば、ＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）や、ＦＰＵ（Ｆｌｏａｔｉｎｇ  Ｐｏｉｎｔ  Ｎｕｍｂｅｒ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、ＭＰＵ（Ｍｉｃｒｏ−Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、ＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）などであってもよい。
【００２７】
また、以下の実施の形態において、「プログラム」とは、コンピュータプログラムのことであり、ソースコードや、バイナリコード、オブジェクトコードなどである。また、プログラムの形態は問わない。また、これらのコードが示すものは、関数や、メソッド、クラス、命令などであり、その内容は問わない。また、当該プログラムは、通常、プログラム識別子を有しており、当該プログラム識別子により識別される。当該プログラム識別子は、例えば、ファイル名や、関数名、メソッド名、クラス名などである。
【００２８】
（実施の形態１）
本実施の形態において、プロセッサに適合する事前準備プログラムを取得し、ユーザ開発のプログラムと、事前準備プログラムとを結合し、蓄積するプログラム処理装置について説明する。
【００２９】
なお、本実施の形態において、プログラム処理装置は、例えば、コンパイラや、リンカなどのプログラム結合装置である。
【００３０】
図１は、本実施の形態におけるプログラム処理装置１のブロック図である。プログラム処理装置１は、事前準備プログラム管理情報格納部１１、プログラム格納部１２、受付部１３、プログラム取得部１４、プロセッサ情報取得部１５、事前準備プログラム取得部１６、処理部１７を備える。処理部１７は、結合プログラム格納手段１７１、結合手段１７２、蓄積手段１７３を備える。
【００３１】
事前準備プログラム管理情報格納部１１は、２以上の事前準備プログラム管理情報を格納し得る。事前準備プログラム管理情報とは、１以上のプロセッサ条件と、当該プロセッサ条件に対応する１以上の事前準備プログラムとを有する情報である。また、事前準備プログラム管理情報は、１以上のプロセッサ条件と、当該プロセッサ条件に対応する１以上の事前準備プログラム識別子とを有する情報であってもよい。
【００３２】
プロセッサ条件とは、プロセッサに関する条件である。プロセッサ条件は、通常、プロセッサに関する情報であるプロセッサ情報を有する。プロセッサ情報は、例えば、プロセッサを識別するプロセッサ識別情報や、プロセッサの属性を示す１以上のプロセッサ属性情報などである。プロセッサ識別情報は、例えば、プロセッサの型番や、シリアルナンバー、プロセッサ名などである。また、プロセッサ属性情報は、例えば、製造メーカー名や、プロセッサ名、動作周波数、キャッシュメモリのサイズ、ＦＳＢ（Ｆｒｏｎｔ  Ｓｉｄｅ  Ｂｕｓ）の通信速度、ソケット形状、消費電力、命令セットの種類、コア数などである。
【００３３】
また、プロセッサ条件は、２以上のプロセッサ条件を連結する連結情報を有していてもよい。プロセッサ条件は、例えば、（１）「プロセッサ型番＝（ＰＲＣ００１）ｏｒプロセッサ型番＝（ＰＲＣ００３）」や、（２）「コア数＝２〜４」や、（３）「（コア数＝４）ｏｒ（コア数＝８）」、（４）「（コア数＝２〜４）＆（２次キャッシュ＝２５６ＫＢ〜５１２ＫＢ）」などである。（１）は、「プロセッサの型番が『ＰＲＣ００１』、またはプロセッサの型番が『ＰＲＣ００２』」であることを示す。また、（２）は、「コア数が２個から４個」であることを示す。また、（３）は、「コア数が４個、またはコア数が８個」であることを示す。また、（４）は、「コア数が２個から４個であり、２次キャッシュメモリのサイズが２５６ＫＢから５１２ＫＢ」であることを示す。
【００３４】
また、事前準備プログラムとは、ユーザまたはシステムが事前に準備した１以上のプログラムであり、プロセッサ条件に合致するプロセッサにおいて実行され得る１以上のプログラムである。当該システムは、通常、ＯＳである。また、事前準備プログラムは、いわゆるライブラリであってもよい。また、事前準備プログラムは、例えば、画像処理プログラムや、数値解析プログラム、流体解析プログラムなどである。なお、事前準備プログラムが行う処理の内容や対象などは問わない。また、事前準備プログラムは、事前準備プログラムを識別するプログラム識別子である事前準備プログラム識別子を有していてもよい。
【００３５】
また、事前準備プログラム管理情報が、１以上のプロセッサ条件と、１以上の事前準備プログラム識別子を有する場合、事前準備プログラムは、事前準備プログラム管理情報格納部１１に格納されていてもよいし、後述のプログラム格納部１２に格納されていてもよいし、任意の記憶領域（プログラム処理装置１では無い外部装置も含む）に格納されていてもよい。
【００３６】
プログラム格納部１２は、１以上のプログラムを格納し得る。当該プログラムは、１以上の事前準備プログラムを使用するプログラムである。ここで、「事前準備プログラムを使用する」とは、事前準備プログラムを呼び出すことや、事前準備プログラムに対応するメッセージの発行、事前準備プログラム識別子を有すること、事前準備プログラムを有することなどを含む概念であり、事前準備プログラムの使用態様は問わない。また、当該プログラムは、事前準備プログラム識別子を有していてもよい。なお、プログラム格納部１２は、通常、プログラムと、当該プログラムを識別するプログラム識別子とを対応付けて格納している。
【００３７】
事前準備プログラム管理情報格納部１１、およびプログラム格納部１２は、揮発性の記録媒体、または不揮発性の記録媒体で実現可能である。
【００３８】
受付部１３は、１以上のプログラム識別子を有する指示を受け付ける。当該指示は、通常、当該プログラム識別子で識別されるプログラムと、事前準備プログラムとを結合する指示である。また、当該指示は、例えば、当該プログラム識別子で識別されるプログラムをコンパイルする指示や、当該プログラムを実行する指示などであってもよい。また、当該指示は、１以上のプログラム識別子を有するファイルのファイル名を有していてもよい。
【００３９】
例えば、プログラム処理装置１が、ＯＳ上で動作するアプリケーションなどである場合、当該指示は、例えば、プログラムを示すアイコンの当該装置へのドラッグ＆ドロップや、当該装置が有するボタンのクリックなどである。また、例えば、プログラム処理装置１が、プログラムが実行されるときに必ず実行されるようなミドルウェアなどである場合、当該指示は、例えば、プログラムを示すアイコンのダブルクリックや、当該アイコンのシングルクリックなどである。なお、プログラム識別子を有する指示の形式は問わない。また、指示がプログラム識別子を有する形態は問わない。
【００４０】
また、受け付けとは、キーボードやマウス、タッチパネルなどの入力デバイスから入力された情報の受け付け、有線もしくは無線の通信回線を介して送信された情報の受信、光ディスクや磁気ディスク、半導体メモリなどの記録媒体から読み出された情報の受け付けなどを含む概念である。
【００４１】
受付部１３における指示の入力手段は、マウスなどのポインティングデバイスや、キーボード、メニュー画面によるものなど、何でもよい。受付部１３は、ポインティングデバイス等の入力手段のデバイスドライバーや、メニュー画面の制御ソフトウェアなどで実現され得る。
【００４２】
プログラム取得部１４は、受付部１３が受け付けた指示が有する１以上のプログラム識別子で識別されるプログラムを、プログラム格納部１２から取得する。プログラム取得部１４は、通常、受付部１３がプログラム識別子を有する指示を受け付けると、当該プログラムを取得する。なお、以下、プログラム取得部１４が取得したプログラムを、取得プログラムとする。
【００４３】
プロセッサ情報取得部１５は、プロセッサ情報を取得する。プロセッサ情報の取得の方法や手順などは問わない。例えば、プロセッサ情報取得部１５は、システムファイルやシステム変数などのシステム情報から取得してもよいし、いわゆるファームウェアから取得してもよいし、ユーザから入力されたプロセッサ情報を取得してもよい。また、例えば、事前準備プログラム管理情報格納部１１に、プロセッサ識別情報を有するプロセッサ情報が格納されている場合、プロセッサ情報取得部１５は、プロセッサ識別情報を取得してもよい。また、例えば、事前準備プログラム管理情報格納部１１に、プロセッサ属性情報を有するプロセッサ情報が格納されている場合、プロセッサ情報取得部１５は、１以上のプロセッサ属性情報を取得してもよい。
【００４４】
また、プロセッサ情報取得部１５は、通常、受付部１３がプログラム識別子を有する指示を受け付けた直後に、プロセッサ情報を取得する。なお、プロセッサ情報を取得する方法や手順などは、公知であるので、詳細な説明を省略する。
【００４５】
事前準備プログラム取得部１６は、プロセッサ情報取得部１５が取得したプロセッサ情報に対応する１以上の事前準備プログラムを、事前準備プログラム管理情報格納部１１から取得する。また、当該事前準備プログラムは、通常、取得プログラムが使用するプログラムである。
【００４６】
例えば、プロセッサ情報取得部１５が取得したプロセッサ情報が、プロセッサ識別情報である場合、事前準備プログラム取得部１６は、当該プロセッサ識別情報が合致するプロセッサ条件に対応する１以上の事前準備プログラムを取得する。また、例えば、プロセッサ情報取得部１５が取得したプロセッサ情報が、属性情報である場合、事前準備プログラム取得部１６は、当該プロセッサ属性情報が合致するプロセッサ条件に対応する１以上の事前準備プログラムを取得する。
【００４７】
ここで、「プロセッサ識別情報が合致するプロセッサ条件」とは、当該プロセッサ識別情報により、条件が満たされるプロセッサ条件のことである。つまり、例えば、プロセッサ情報取得部１５が取得したプロセッサ識別情報が、プロセッサの型番「ＣＰＲＣ００１」であり、事前準備プログラム管理情報格納部１１に格納されているプロセッサ条件が、「型番＝｛（ＰＲＣ００１）ｏｒ（ＰＲＣ００２）｝」である場合、当該プロセッサ条件は、「プロセッサ識別情報が合致するプロセッサ条件」である。
【００４８】
また、「プロセッサ属性情報が合致するプロセッサ条件」とは、当該プロセッサ属性情報により、条件が満たされるプロセッサ情報のことである。つまり、例えば、プロセッサ情報取得部１５が取得したプロセッサ属性情報が、動作周波数「３．２ＧＨｚ」、コア数「８」であり、事前準備プログラム管理情報格納部１１に格納されているプロセッサ条件が、「コア数＝８」である場合、当該プロセッサ条件は、「プロセッサ属性情報が合致するプロセッサ条件」である。
【００４９】
また、例えば、事前準備プログラム管理情報が、１以上のプロセッサ属性条件を有する場合、事前準備プログラム取得部１６は、当該プロセッサ属性条件が、プロセッサ情報取得部１５が取得したプロセッサ属性情報に合致するプロセッサ属性条件に対応する事前準備プログラムを取得する。
【００５０】
なお、例えば、事前準備プログラム管理情報が、１以上のプロセッサ情報と、１以上の事前準備プログラム識別子とを有している場合、事前準備プログラム取得部１６は、まず、プロセッサ情報取得部１５が取得したプロセッサ情報に対応する１以上の事前準備プログラム識別子を取得する。そして、事前準備プログラム取得部１６は、当該事前準備プログラム識別子で識別される事前準備プログラムを、事前準備プログラムが格納されている記憶領域等から取得する。当該記憶領域等とは、事前準備プログラム管理情報格納部１１や、プログラム格納部１２、その他の任意の記憶領域などである。
【００５１】
また、事前準備プログラム取得部１６は、通常、プロセッサ情報取得部１５が取得したプロセッサ情報に対応し、かつ、取得プログラムが有する事前準備プログラム識別子で識別される事前準備プログラムを取得することが好適である。
【００５２】
事前準備プログラム取得部１６は、通常、次のような処理により事前準備プログラムを取得する。
（１）プロセッサ情報取得部１５が取得したプロセッサ情報に対応する１以上の事前準備プログラム識別子を、事前準備プログラム管理情報格納部１１から取得する。
（２）取得プログラムから、事前準備プログラム識別子を取得する。
（３）（１）と（２）で取得した事前準備プログラム識別子のうち、重複する事前準備プログラム識別子を取得する。
（４）（３）で取得した事前準備プログラム識別子で識別される事前準備プログラムを、事前準備プログラム管理情報格納部１１から取得する。
【００５３】
処理部１７は、事前準備プログラム取得部１６が取得した１以上の事前準備プログラムを用いて、取得プログラムを処理する。処理部１７は、例えば、１以上の取得プログラムと、事前準備プログラム取得部１６が取得した１以上の事前準備プログラムとを結合する。本実施の形態において、結合とは、通常、いわゆる静的リンクのことであるが、２以上のプログラムを１つのプログラムに統合することや、１以上のプログラムと他の１以上のプログラムとの関連付けを示す情報を生成することなどを含み、広く解する。関連付けを示す情報とは、例えば、１以上のプログラムが１以上のプログラムを使用することを示す情報である。なお、静的リンクの方法や手順などは、公知であるので、詳細な説明を省略する。また、取得プログラムと、事前準備プログラム取得部１６が取得した事前準備プログラムとの結合の方法や手順の詳細については、後述する。
【００５４】
結合プログラム格納手段１７１は、結合プログラムを格納し得る。結合プログラムとは、１以上の事前準備プログラムを使用するプログラムと、１以上の事前準備プログラムとを結合したプログラムである。また、事前準備プログラムを使用するプログラムとは、通常、取得プログラムである。
【００５５】
結合プログラム格納手段１７１は、揮発性の記録媒体、または不揮発性の記録媒体で実現可能である。
【００５６】
結合手段１７２は、１以上の取得プログラムと、事前準備プログラム取得部１６が取得した１以上の事前準備プログラムとを結合し、結合プログラムを生成する。結合手段１７２は、通常、まず、各取得プログラムから事前準備プログラム識別子を取得する。そして、結合手段１７２は、当該事前準備プログラム識別子で識別される事前準備プログラムを、事前準備プログラム取得部１６が取得した１以上の事前準備プログラムから取得する。そして、結合手段１７２は、１以上の取得プログラムと、当該取得した事前準備プログラムとを結合し、結合プログラムを生成する。
【００５７】
蓄積手段１７３は、結合手段１７２が生成した結合プログラムを、結合プログラム格納手段１７１に蓄積する。
【００５８】
なお、プログラム取得部１４、プロセッサ情報取得部１５、事前準備プログラム取得部１６、処理部１７、結合手段１７２、蓄積手段１７３は、通常、プロセッサやメモリ等から実現され得る。また、プログラム取得部１４などの処理手順は、通常、ソフトウェアで実現され、当該ソフトウェアはＲＯＭ等の記録媒体に記録されている。但し、ハードウェア（専用回路）で実現してもよい。
【００５９】
次に、プログラム処理装置１の動作について説明する。なお、所定の情報におけるｉ番目の情報は、「情報［ｉ］」と記載するものとする。図２は、プログラム処理装置１の全体動作を示すフローチャートである。
【００６０】
（ステップＳ２０１）受付部１３は、指示を受け付けたか否かを判断する。受け付けた場合は、ステップＳ２０２に進み、そうでない場合は、Ｓ２０１に戻る。
【００６１】
（ステップＳ２０２）受付部１３は、ステップＳ２０１で受け付けた指示が、プログラム識別子を有するか否かを判断する。有する場合は、ステップＳ２０３に進み、そうでない場合は、ステップＳ２０１に戻る。
【００６２】
（ステップＳ２０３）プログラム取得部１４は、ステップＳ２０１で受け付けた指示が有するプログラム識別子で識別される１以上のプログラムを、プログラム格納部１２から取得する。
【００６３】
（ステップＳ２０４）プロセッサ情報取得部１５は、プロセッサ情報を取得する。
【００６４】
（ステップＳ２０５）事前準備プログラム取得部１６は、プロセッサ情報取得部１５が取得したプロセッサ情報が合致するプロセッサ条件に対応する１以上の事前準備プログラムを、事前準備プログラム管理情報格納部１１から取得する。
【００６５】
（ステップＳ２０６）処理部１７は、ステップＳ２０３で取得した１以上のプログラムと、ステップＳ２０５で取得した１以上の事前準備プログラムとを結合し、結合プログラムを生成し、蓄積し、ステップＳ２０１に戻る。この処理の詳細は、図３のフローチャートを用いて説明する。
【００６６】
なお、図２のフローチャートにおいて、電源オフや処理終了の割り込みにより処理を終了してもよい。
【００６７】
図３は、図２のフローチャートのステップＳ２０６の結合プログラムの生成と蓄積の処理を示すフローチャートである。
【００６８】
（ステップＳ３０１）結合手段１７２は、ステップＳ２０３で取得した１以上のプログラムを取得する。
【００６９】
（ステップＳ３０２）結合手段１７２は、ステップＳ３０１で取得した１以上のプログラムが有する事前準備プログラム識別子を取得する。ここで、ｍ個の事前準備プログラム識別子が取得できたものとする。
【００７０】
（ステップＳ３０３）結合手段１７２は、ステップＳ２０５で取得した１以上の事前準備プログラムを取得する。ここで、ｎ個の事前準備プログラムが取得できたものとする。
【００７１】
（ステップＳ３０４）結合手段１７２は、変数ｃｏｕｎｔに１をセットする。
【００７２】
（ステップＳ３０５）結合手段１７２は、カウンタｉに１をセットする。
【００７３】
（ステップＳ３０６）結合手段１７２は、カウンタｊに１をセットする。
【００７４】
（ステップＳ３０７）結合手段１７２は、事前準備プログラム識別子［ｉ］が、事前準備プログラム管理情報［ｊ］が有する事前準備プログラム識別子と同じであるか否かを判断する。同じである場合は、ステップＳ３０８に進み、そうでない場合は、ステップＳ３１０に進む。
【００７５】
（ステップＳ３０８）結合手段１７２は、ｃｏｕｎｔを１インクリメントする。
【００７６】
（ステップＳ３０９）結合手段１７２は、取得した取得事前準備プログラムである取得事前準備プログラム［ｃｏｕｎｔ］に、事前準備プログラム［ｊ］をセットする。
【００７７】
（ステップＳ３１０）結合手段１７２は、ｊがｎであるか否かを判断する。ｎである場合は、ステップＳ３１２に進み、そうでない場合は、ステップＳ３１１に進む。
【００７８】
（ステップＳ３１１）結合手段１７２は、ｊを１インクリメントし、ステップＳ３０７に戻る。
【００７９】
（ステップＳ３１２）結合手段１７２は、ｉがｍであるか否かを判断する。ｍである場合は、ステップＳ３１４に進み、そうでない場合は、ステップＳ３１３に進む。
【００８０】
（ステップＳ３１３）結合手段１７２は、ｉを１インクリメントし、ステップＳ３０６に戻る。
【００８１】
（ステップＳ３１４）結合手段１７２は、ステップＳ３０１で取得したプログラムと、ステップＳ３０９で取得した事前準備プログラムとを結合し、結合プログラムを生成する。
【００８２】
（ステップＳ３１５）蓄積手段１７３は、ステップＳ３１４で生成した結合プログラムを、結合プログラム格納手段１７１に蓄積し、上位処理にリターンする。
【００８３】
（具体例）
次に、プログラム処理装置１の動作の具体例について説明する。なお、本具体例において、プログラム処理装置１は、リンク機能を有するコンパイラであるものとする。
【００８４】
（例１）
本例において、事前準備プログラム管理情報格納部１１には、図４に示す事前準備プログラム管理情報が格納されているものとする。当該事前準備プログラム管理情報は、各レコードを一意に特定するためのＩＤと、プログラム格納部１２に格納されているプログラムが有する可能性のあるプログラム識別子（項目名：識別子）と、プロセッサ条件（項目名：プロセッサ）と、事前準備プログラム取得部１６が取得し得る事前準備プログラムの識別子（項目名：プログラム）とを有する。なお、事前準備プログラム識別子（項目名：プログラム）で識別される事前準備プログラムは、事前準備プログラム管理情報格納部１１に格納されているものとする。
【００８５】
まず、ユーザが、プログラムをコンパイルするために、当該プログラムのアイコンを、マウスを用いてコンパイラのアイコンの上にドラッグ＆ドロップしたとする。すると、受付部１３は、当該プログラムを識別するプログラム識別子を有するプログラムをコンパイルする指示を受け付ける。
【００８６】
次に、プログラム取得部１４は、受付部１３が受け付けたプログラム識別子で識別されるプログラムを、プログラム格納部１２から取得し、図５に示すプログラムを取得したものとする。当該プログラムは、１行目と２行目に、使用する事前準備プログラムのファイル名「Ｌｉｂｒａｒｙ．ｈ」、「Ｌｉｂｒａｒｙ．ｈｐｐ」が記述されている。当該ファイル名は、プログラム識別子である。
【００８７】
次に、プロセッサ情報取得部１５は、プロセッサ情報であるプロセッサ識別情報を取得し、プロセッサ識別情報「ＣＰＵ＿Ｂ」を取得したものとする。
【００８８】
次に、事前準備プログラム取得部１６は、まず、図５のプログラムに記述されている事前準備プログラム識別子を有する図４の「ＩＤ＝０１２」から「ＩＤ＝０１７」までのレコードを取得する。次に、事前準備プログラム取得部１６は、図４の「ＩＤ＝０１２」から「ＩＤ＝０１７」までのレコードのうち、プロセッサ情報取得部１５が取得したプロセッサ識別情報「ＣＰＵ＿Ｂ」が合致するプロセッサ条件「ＣＰＵ＿Ｂ」を有する「ＩＤ＝０１３」、「ＩＤ＝０１６」のレコードから、事前準備プログラム識別子（項目名：プログラム）「Ｌｉｂｒａｒｙ＿Ｂ．ｈ」、「Ｌｉｂｒａｒｙ＿Ｂ．ｈｐｐ」を取得する。そして、事前準備プログラム取得部１６は、取得した事前準備プログラム識別子「Ｌｉｂｒａｒｙ＿Ｂ．ｈ」、「Ｌｉｂｒａｒｙ＿Ｂ．ｈｐｐ」で識別される事前準備プログラムを、事前準備プログラム管理情報格納部１１から取得する。
【００８９】
次に、結合手段１７２は、図５のプログラムと、事前準備プログラム識別子「Ｌｉｂｒａｒｙ＿Ｂ．ｈ」、「Ｌｉｂｒａｒｙ＿Ｂ．ｈｐｐ」で識別される事前準備プログラムとを結合し、結合プログラムを生成する。そして、蓄積手段１７３は、結合手段１７２が生成した結合プログラムを、結合プログラム格納手段１７１に蓄積する。
【００９０】
（例２）
本例において、事前準備プログラム管理情報格納部１１には、図６に示す事前準備プログラム管理情報が格納されているものとする。当該事前準備プログラム管理情報は、各レコードを一意に特定するためのＩＤと、プロセッサ条件（項目名：プロセッサ）と、事前準備プログラム取得部１６が取得し得る事前準備プログラムの識別子（項目名：プログラム）とを有する。なお、事前準備プログラム識別子（項目名：プログラム）で識別される事前準備プログラムは、事前準備プログラム管理情報格納部１１に格納されているものとする。
【００９１】
まず、ユーザが、（例１−１）と同様の操作を行い、プログラム取得部１４は、図７に示すプログラムを、プログラム格納部１２から取得したものとする。当該プログラムは、１行目と２行目に、使用する事前準備プログラムのファイル名「Ｌｉｂｒａｒｙ０１８．ｈ」、「Ｌｉｂｒａｒｙ０２０．ｈ」が記述されている。当該ファイル名は、プログラム識別子である。
次に、プロセッサ情報取得部１５は、プロセッサ識別情報であるプロセッサ名「ＣＰＵ＿Ｃ」を取得したものとする。
【００９２】
次に、事前準備プログラム取得部１６は、まず、プロセッサ情報取得部１５が取得したプロセッサ名「ＣＰＵ＿Ｃ」が合致するプロセッサ条件「ＣＰＵ＿Ｃ」を有する図６の「ＩＤ＝０１８」から「ＩＤ＝０２０」までのレコードを取得する。次に、事前準備プログラム取得部１６は、図６の「ＩＤ＝０１８」から「ＩＤ＝０２０」までのレコードのうち、図７のプログラムが有する事前準備プログラム識別子を有する「ＩＤ＝０１３」、「ＩＤ＝０１６」のレコードから、事前準備プログラム識別子（項目名：プログラム）「Ｌｉｂｒａｒｙ０１８．ｈ」、「Ｌｉｂｒａｒｙ０２０．ｈ」を取得する。そして、事前準備プログラム取得部１６は、取得した事前準備プログラム識別子「Ｌｉｂｒａｒｙ０１８．ｈ」、「Ｌｉｂｒａｒｙ０２０．ｈ」で識別される事前準備プログラムを、事前準備プログラム管理情報格納部１１から取得する。
【００９３】
次に、結合手段１７２は、図７のプログラムと、事前準備プログラム識別子「Ｌｉｂｒａｒｙ０１８．ｈ」、「Ｌｉｂｒａｒｙ０２０．ｈ」で識別される事前準備プログラムとを結合し、結合プログラムを生成する。そして、蓄積手段１７３は、結合手段１７２が生成した結合プログラムを、結合プログラム格納手段１７１に蓄積する。
【００９４】
なお、本具体例において、プロセッサ識別情報として、プロセッサ名を取得する例を示したが、プロセッサの型番や、シリアルナンバーなどを取得してもよい。
【００９５】
また、本具体例において、事前準備プログラム管理情報は、事前準備プログラム識別子を有する例を示したが、事前準備プログラムを有していてもよい。
【００９６】
また、本具体例のように、事前準備プログラム取得部１６は、プログラム取得部１４が取得したプログラムが使用する事前準備プログラム（当該プログラムが有する事前準備識別子で識別される事前準備プログラム）であって、プロセッサ情報取得部１５が取得したプロセッサ情報が合致するプロセッサ条件に対応する事前準備プログラムを、事前準備プログラム管理情報格納部１１から取得できればよく、その方法や手順などは問わない。
【００９７】
以上、本実施の形態によるプログラム処理装置１によれば、プロセッサに適合する事前準備プログラムを使用するプログラムを生成することができる。
【００９８】
また、本実施の形態によるプログラム処理装置１によれば、プロセッサに適合する画像処理プログラムを、ユーザに提供することができる。
【００９９】
また、本実施の形態によるプログラム処理装置１によれば、ユーザは、事前準備プログラムを、プロセッサの種類や性能等を意識することなく使用することができる。
【０１００】
また、本実施の形態によるプログラム処理装置１によれば、ユーザは、事前準備プログラムを使用するプログラムを、プロセッサの種類や性能等を意識することなく生成することができる。
【０１０１】
（実施の形態２）
本実施の形態において、プロセッサに適合する事前準備プログラムを取得し、ユーザ開発のプログラムと、事前準備プログラムとを結合し、実行するプログラム処理装置について説明する。
【０１０２】
なお、本実施の形態において、プログラム処理装置は、例えば、いわゆるプラットフォームや、実行環境などのプログラム実行装置である。
【０１０３】
図８は、本実施の形態におけるプログラム処理装置２のブロック図である。プログラム処理装置２は、事前準備プログラム管理情報格納部１１、プログラム格納部１２、受付部１３、プログラム取得部１４、プロセッサ情報取得部１５、事前準備プログラム取得部２６、処理部２７を備える。処理部２７は、結合手段２７１、実行手段２７２を備える。
【０１０４】
事前準備プログラム取得部２６は、プロセッサ情報取得部１５が取得したプロセッサ情報が合致するプロセッサ条件に対応する１以上の事前準備プログラムを、事前準備プログラム管理情報格納部１１から取得する。当該事前準備プログラムは、通常、取得プログラムが使用するプログラムである。また、事前準備プログラム取得部２６は、通常、受付部１３が受け付けた指示が有するプログラム識別子で識別されるプログラムの実行時に、事前準備プログラムを取得する。ここでの「実行時」とは、例えば、受付部１３がプログラム識別子を有する指示を受け付けた直後や、後述の実行手段２７２が当該プログラムや結合プログラムを実行する直前、後述の実行手段２７２が当該プログラムや結合プログラムを実行している最中などである。また、当該事前準備プログラムを取得するタイミングは、ユーザからの指示であってもよいし、予め決められていてもよい。なお、事前準備プログラム取得部２６は、事前準備プログラムを取得するタイミング以外は、事前準備プログラム取得部１６と同様の方法や手順により、事前準備プログラムを取得する。
【０１０５】
処理部２７は、事前準備プログラム取得部２６が取得した１以上の事前準備プログラムを用いて、１以上の取得プログラムを処理する。処理部２７は、例えば、１以上の取得プログラムと、事前準備プログラム取得部２６が取得した１以上の事前準備プログラムとを結合する。本実施の形態において、結合とは、通常、いわゆる動的リンクのことであるが、２以上のプログラムを１つのプログラムに統合することや、１以上のプログラムと他の１以上のプログラムとの関連付けを示す情報を生成することなどを含み、広く解する。なお、動的リンクの方法や手順などは、公知であるので、詳細な説明を省略する。また、取得プログラムと、事前準備プログラム取得部２６が取得した事前準備プログラムとの結合の方法や手順の詳細については、後述する。
【０１０６】
結合手段２７１は、１以上の取得プログラムと、事前準備プログラム取得部２６が取得した１以上の事前準備プログラムとを、プログラムの実行時に結合し、結合プログラムを生成する。ここでの「実行時」とは、例えば、当該プログラムの実行の直前や、当該プログラムの実行の最中などである。また、結合手段２７１は、例えば、生成した結合プログラムと、事前準備プログラム取得部２６が取得した１以上の事前準備プログラムとを、当該結合プログラムの実行時に結合してもよい。
【０１０７】
また、例えば、結合手段２７１は、以下のようにして結合プログラムを生成してもよい。
【０１０８】
（Ａ）プログラムの実行の直前に生成する場合
（１）１以上の取得プログラムが有する１以上の事前準備プログラム識別子を、取得プログラムから取得する。
（２）（１）で取得した１以上の事前準備プログラム識別子で識別される１以上の事前準備プログラムを、事前準備プログラム取得部２６が取得した１以上の事前準備プログラムから取得する。
（３）１以上の取得プログラムと、（２）で取得した１以上の事前準備プログラムとを結合する。
【０１０９】
（Ｂ）プログラムの実行の最中に生成する場合
（１）１以上の取得プログラムを、後述の実行手段２７２により実行する。
（２）（１）で実行中の１以上の取得プログラムが、事前準備プログラムを呼び出すか否かを判断する。ここでは、例えば、実行中のプログラムが有する命令が、事前準備プログラムを呼び出す命令であるか否かを判断する。
（３）（２）で呼び出す場合は、当該呼び出す事前準備プログラムを識別する事前準備プログラム識別子であり、取得プログラムが有する事前準備プログラム識別子を、実行中の取得プログラムから取得する。
（４）（３）で取得した事前準備プログラム識別子で識別される事前準備プログラムを、事前準備プログラム取得部２６が取得した１以上の事前準備プログラムから取得する。
（５）１以上の取得プログラムと、（４）で取得した事前準備プログラムとを結合する。
【０１１０】
また、結合手段２７１は、例えば、取得プログラムの実行の前に、取得プログラムから事前準備プログラム識別子が取得できるか否かを判断し、取得できる場合は、前述の（Ａ）であると判断し、取得できない場合は、前述の（Ｂ）であると判断してもよい。
【０１１１】
また、結合手段２７１は、１以上の取得プログラムと１以上の事前準備プログラムとが結合できればよく、その方法や手順などは問わない。また、結合手段２７１は、結合プログラムと１以上の事前準備プログラムとが結合できればよく、その方法や手順などは問わない。
【０１１２】
実行手段２７２は、結合手段２７１が結合した結合プログラムを実行する。また、実行手段２７２は、取得プログラムを実行してもよい。なお、プログラムを実行する方法や手順などは、公知であるので、詳細な説明を省略する。
【０１１３】
なお、プログラム取得部１４、事前準備プログラム取得部２６、処理部２７、結合手段２７１、実行手段２７２は、通常、プロセッサやメモリ等から実現され得る。また、プログラム取得部などの処理手順は、通常、ソフトウェアで実現され、当該ソフトウェアはＲＯＭ等の記録媒体に記録されている。但し、ハードウェア（専用回路）で実現してもよい。
【０１１４】
次に、プログラム処理装置２の動作について説明する。なお、所定の情報におけるｉ番目の情報は、「情報［ｉ］」と記載するものとする。図９は、プログラム処理装置２の全体動作を示すフローチャートである。
【０１１５】
（ステップＳ９０１）受付部１３は、指示を受け付けたか否かを判断する。受け付けた場合は、ステップＳ９０２に進み、そうでない場合は、Ｓ９０１に戻る。
【０１１６】
（ステップＳ９０２）受付部１３は、ステップＳ９０１で受け付けた指示が、プログラム識別子を有するか否かを判断する。有する場合は、ステップＳ９０３に進み、そうでない場合は、ステップＳ９０１に戻る。
【０１１７】
（ステップＳ９０３）受付部１３は、ステップＳ９０１で受け付けた指示が、プログラムを実行する指示であるか否かを判断する。プログラムを実行する指示である場合は、ステップＳ９０４に進み、そうでない場合は、ステップＳ９０１に戻る。
【０１１８】
（ステップＳ９０４）プログラム取得部１４は、ステップＳ２０１で受け付けた指示が有するプログラム識別子で識別される１以上のプログラムを、プログラム格納部１２から取得する。
【０１１９】
（ステップＳ９０５）プロセッサ情報取得部１５は、プロセッサ情報を取得する。
【０１２０】
（ステップＳ９０６）事前準備プログラム取得部２６は、プロセッサ情報取得部１５が取得したプロセッサ情報が合致するプロセッサ条件に対応する１以上の事前準備プログラムを、事前準備プログラム管理情報格納部１１から取得する。
【０１２１】
（ステップＳ９０７）処理部２７は、ステップＳ９０４で取得した１以上のプログラムと、ステップＳ９０６で取得した１以上の事前準備プログラムとを結合し、結合プログラムを生成し、実行し、ステップＳ９０１に戻る。この処理の詳細は、図８のフローチャートを用いて説明する。
【０１２２】
なお、図９のフローチャートにおいて、電源オフや処理終了の割り込みにより処理を終了してもよい。
【０１２３】
図１０は、図９のフローチャートのステップＳ９０７の結合プログラムの生成と実行の処理を示すフローチャートである。
【０１２４】
（ステップＳ１００１）結合手段２７１は、ステップＳ７０４で取得した１以上のプログラムを取得する。
【０１２５】
（ステップＳ１００２）結合手段２７１は、ステップＳ７０６で取得した１以上の事前準備プログラムを取得する。
【０１２６】
（ステップＳ１００３）結合手段２７１は、ステップＳ１００１で取得したプログラムから、事前準備プログラム識別子が取得できるか否かを判断する。取得できる場合は、ステップＳ１００４に進み、そうでない場合は、ステップＳ１００８に進む。
【０１２７】
（ステップＳ１００４）結合手段２７１は、ステップＳ１００１で取得したプログラムから、事前準備プログラム識別子を取得する。
【０１２８】
（ステップＳ１００５）結合手段２７１は、ステップＳ１００４で取得した事前準備プログラム識別子で識別される事前準備プログラムを、ステップＳ１００２で取得した１以上の事前準備プログラムから取得する。
【０１２９】
（ステップＳ１００６）結合手段２７１は、ステップＳ１００１で取得したプログラムと、ステップＳ１００５で取得した事前準備プログラムとを結合し、結合プログラムを生成する。
【０１３０】
（ステップＳ１００７）実行手段２７２は、ステップＳ１００６で生成した結合プログラムを実行し、上位処理にリターンする。
【０１３１】
（ステップＳ１００８）実行手段２７２は、ステップＳ１００１で取得したプログラムを実行する。
【０１３２】
（ステップＳ１００９）結合手段２７１は、実行中のプログラムが、事前準備プログラムを呼び出すタイミングであるか否かを判断する。呼び出すタイミングである場合は、ステップＳ１０１０に進み、そうでない場合は、ステップＳ１０１４に進む。
【０１３３】
（ステップＳ１０１０）結合手段２７１は、実行中のプログラムが呼び出す事前準備プログラムを識別する事前準備プログラム識別子を、実行中のプログラムから取得する。
【０１３４】
（ステップＳ１０１１）結合手段２７１は、ステップＳ１０１０で取得した事前準備プログラム識別子で識別される事前準備プログラムを、ステップＳ１００２で取得した１以上の事前準備プログラムから取得する。
【０１３５】
（ステップＳ１０１２）結合手段２７１は、実行中のプログラムと、ステップＳ１０１１で取得した事前準備プログラムとを結合し、結合プログラムを生成する。
【０１３６】
（ステップＳ１０１３）実行手段２７２は、ステップＳ１０１２で生成した結合プログラムを実行する。
【０１３７】
（ステップＳ１０１４）実行手段２７２は、ステップＳ１０１３で実行した結合プログラムが実行中であるか否かを判断する。実行中である場合は、ステップＳ１００９に戻り、そうでない場合は、上位処理にリターンする。
【０１３８】
（具体例）
次に、プログラム処理装置２の動作の具体例について説明する。なお、本具体例において、プログラム処理装置１は、任意のプログラムを実行するための実行環境であるものとする。また、本具体例において、事前準備プログラム管理情報格納部１１には、図１１に示す事前準備プログラム管理情報が格納されているものとする。当該事前準備プログラム管理情報は、各レコードを一意に特定するためのＩＤと、プログラム格納部１２に格納されているプログラムが有する可能性のあるプログラム識別子（項目名：識別子）と、プロセッサ条件（項目名：プロセッサ）と、事前準備プログラム取得部２６が取得し得る事前準備プログラムの識別子（項目名：プログラム）とを有する。なお、プロセッサ条件は、上から順に、動作クロック、命令セットの種類、コア数の条件を示す。また、当該プロセッサ条件が有する各条件は、論理積（ＡＮＤ）である。また、事前準備プログラム識別子（項目名：プログラム）で識別される事前準備プログラムは、事前準備プログラム管理情報格納部１１に格納されているものとする。
【０１３９】
（例１）
まず、ユーザが、プログラムを実行するために、当該プログラムのアイコンを、マウスを用いてダブルクリックしたとする。すると、受付部１３は、当該プログラムを識別するプログラム識別子を有するプログラムを実行する指示を受け付ける。
【０１４０】
次に、プログラム取得部１４は、受付部１３が受け付けたプログラム識別子で識別されるプログラムを、プログラム格納部１２から取得し、バイナリコードであるプログラムを取得したものとする。当該プログラムは、使用する事前準備プログラムのファイル名「Ｌｉｂｒａｒｙ．ｈ」を有しているものとする。
【０１４１】
次に、プロセッサ情報取得部１５は、プロセッサ属性情報である動作クロック「３．２ＧＨｚ」、２次キャッシュ「２５６ＫＢ」、命令セットの種類「ＩＳＡ＿６４」、コア数「８」を取得したものとする。
【０１４２】
次に、事前準備プログラム取得部２６は、まず、プログラム取得部１４が取得したバイナリコードが有する事前準備プログラム識別子を有する図１１の「ＩＤ＝０１２」から「ＩＤ＝０１４」までのレコードを取得する。次に、事前準備プログラム取得部２６は、図１１の「ＩＤ＝０１２」から「ＩＤ＝０１４」までのレコードのうち、プロセッサ情報取得部１５が取得した動作クロック「３．２ＧＨｚ」、２次キャッシュ「２５６ＫＢ」、命令セットの種類「ＩＳＡ＿６４」、コア数「８」が合致するプロセッサ条件を有する「ＩＤ＝０１３」のレコードから、事前準備プログラム識別子（項目名：プログラム）「Ｌｉｂｒａｒｙ＿３２＿６４＿８．ｈ」を取得する。そして、事前準備プログラム取得部２６は、取得した事前準備プログラム識別子「Ｌｉｂｒａｒｙ＿３２＿６４＿８．ｈ」で識別される事前準備プログラムを、事前準備プログラム管理情報格納部１１から取得する。
【０１４３】
次に、結合手段２７１は、プログラム取得部１４が取得したバイナリコードと、事前準備プログラム識別子「Ｌｉｂｒａｒｙ＿３２＿６４＿８．ｈ」で識別される事前準備プログラムとを結合し、結合プログラムを生成する。そして、実行手段２７２は、結合手段２７１が生成した結合プログラムを実行する。
【０１４４】
（例２）
まず、ユーザが、（例２−１）と同様の操作を行い、プログラム取得部１４は、事前準備プログラムのファイル名「Ｌｉｂｒａｒｙ．ｈ」を有するバイナリコードであるプログラムを取得したものとする。
【０１４５】
次に、プロセッサ情報取得部１５は、プロセッサ情報であるプロセッサ属性情報を取得し、動作周波数「３．２ＧＨｚ」、２次キャッシュのサイズ「２５６ＫＢ」、命令セットの種類「ＩＳＡ＿６４」、コア数「８」を取得したものとする。
【０１４６】
次に、事前準備プログラム取得部２６は、プロセッサ情報取得部１５が取得した動作周波数「３．２ＧＨｚ」、２次キャッシュのサイズ「２５６ＫＢ」、命令セットの種類「ＩＳＡ＿６４」、コア数「８」が合致するプロセッサ条件を有する「ＩＤ＝０１３」のレコードを取得から、事前準備プログラム識別子（項目名：プログラム）「Ｌｉｂｒａｒｙ＿３２＿６４＿８．ｈ」を取得する。そして、事前準備プログラム取得部２６は、取得した事前準備プログラム識別子「Ｌｉｂｒａｒｙ＿３２＿６４＿８．ｈ」で識別される事前準備プログラムを、事前準備プログラム管理情報格納部１１から取得する。
【０１４７】
次に、実行手段２７２は、プログラム取得部１４が取得したバイナリコードを実行する。そして、結合手段２７１は、実行中のバイナリコードが、事前準備プログラムを呼び出すか否かを判断する。ここで、結合手段２７１は、実行中のバイナリコードが、事前準備プログラム識別子「Ｌｉｂｒａｒｙ．ｈ」を呼び出すと判断したとする。すると、結合手段２７１は、当該事前準備プログラム識別子を有する図１１の「ＩＤ＝０１３」のレコードから、事前準備プログラム識別子（項目名：プログラム）「Ｌｉｂｒａｒｙ＿３２＿６４＿８．ｈ」を取得する。そして、結合手段２７１は、取得した事前準備プログラム識別子「Ｌｉｂｒａｒｙ＿３２＿６４＿８．ｈ」で識別される事前準備プログラムを、事前準備プログラム取得部２６が取得した事前準備プログラムから取得する。この結果、結合手段２７１は、事前準備プログラム識別子「Ｌｉｂｒａｒｙ＿３２＿６４＿８．ｈ」で識別される事前準備プログラムを取得する。
【０１４８】
次に、結合手段２７１は、実行中のバイナリコードと、事前準備プログラム識別子「Ｌｉｂｒａｒｙ＿３２＿６４＿８．ｈ」で識別される事前準備プログラムとを結合し、結合プログラムを生成する。そして、実行手段２７２は、結合手段２７１が生成した結合プログラムを実行する。
【０１４９】
なお、本具体例において、プロセッサ属性情報として、動作周波数、２次キャッシュのサイズ、命令セットの種類、コア数を取得する例を示したが、ＦＳＢの通信速度や、ソケット形状などを取得してもよい。
【０１５０】
また、本具体例において、事前準備プログラム管理情報は、事前準備プログラム識別子を有する例を示したが、事前準備プログラムを有していてもよい。
【０１５１】
また、本具体例のように、事前準備プログラム取得部２６は、プログラム取得部１４が取得したプログラムが使用する事前準備プログラム（当該プログラムが有する事前準備識別子で識別される事前準備プログラム）であって、プロセッサ情報取得部１５が取得したプロセッサ情報が合致するプロセッサ条件に対応する事前準備プログラムを、事前準備プログラム管理情報格納部１１から取得できればよく、その方法や手順などは問わない。
【０１５２】
以上、本実施の形態によるプログラム処理装置２によれば、プロセッサに適合する事前準備プログラムを使用するプログラムを実行することができる。
【０１５３】
また、本実施の形態によるプログラム処理装置２によれば、プロセッサに適合する画像処理プログラムを、ユーザに提供することができる。
【０１５４】
また、本実施の形態によるプログラム処理装置２によれば、ユーザは、事前準備プログラムを使用するプログラムを、プロセッサの種類や性能等を意識することなく実行することができる。
【０１５５】
（実施の形態３）
本実施の形態において、プロセッサに適合する事前準備プログラムを取得し、ユーザ開発のプログラムと共に、取得した事前準備プログラムを実行するプログラム処理装置について説明する。
【０１５６】
なお、本実施の形態におけるプログラム処理装置は、例えば、プログラム選択装置や、プログラム実行装置などである。
【０１５７】
図１２は、本実施の形態におけるプログラム処理装置３のブロック図である。プログラム処理装置３は、事前準備プログラム管理情報格納部３１、プログラム格納部３２、受付部３３、プログラム取得部３４、プロセッサ情報取得部１５、事前準備プログラム取得部３６、処理部３７、蓄積部３８、取得事前準備プログラム格納部３９を備える。
【０１５８】
事前準備プログラム管理情報格納部３１は、１以上の事前準備プログラム管理情報を格納し得る。当該事前準備プログラム管理情報は、通常、２以上のプロセッサ条件と、各プロセッサ条件に対応する２以上の事前準備プログラム識別子とを有する。また、事前準備プログラム管理情報は、通常、後述のプログラムが有する可能性のある事前準備プログラム識別子と、当該識別子に対応する２以上の事前準備プログラム識別子であって、後述のプログラムが使用する可能性のある事前準備プログラムを識別する２以上の事前準備プログラム識別子とを有する。
【０１５９】
プログラム格納部３２は、１以上のプログラムを格納し得る。当該プログラムは、通常、２以上の事前準備プログラムを有している。また、当該プログラムは、通常、当該１以上の事前準備プログラムのうちの１以上の事前準備プログラムを使用する。なお、当該プログラムは、同一の処理を行う２以上の事前準備プログラムであり、２以上の各プロセッサ上で動作する２以上の事前準備プログラムの集合を有していることが好適である。また、当該プログラムは、通常、当該事前準備プログラムのうち、当該プログラムが動作するプロセッサに対応する１以上の事前準備プログラムを使用する。
【０１６０】
また、プログラム格納部３２は、事前準備プログラムを有していない１以上のプログラムを格納してもよい。この場合、プログラム格納部３２は、通常、当該１以上のプログラムが使用する１以上の事前準備プログラムを格納する。
【０１６１】
受付部３３は、１以上のプログラム識別子を有する指示を受け付ける。当該指示は、通常、当該プログラム識別子により識別されるプログラムを実行する指示である。なお、受付部３３が受け付けるその他の指示等は、受付部１３と同様であるので、説明を省略する。
【０１６２】
受付部３３における指示の入力手段は、マウスなどのポインティングデバイスや、キーボード、メニュー画面によるものなど、何でもよい。受付部３３は、ポインティングデバイス等の入力手段のデバイスドライバーや、メニュー画面の制御ソフトウェアなどで実現され得る。
【０１６３】
プログラム取得部３４は、受付部３３が受け付けた指示が有する１以上のプログラム識別子で識別されるプログラムを、プログラム格納部３２から取得する。プログラム取得部３４は、通常、受付部３３がプログラム識別子を有する指示を受け付けると、当該プログラムを取得する。なお、以下、プログラム取得部３４が取得したプログラムを、取得プログラムとする。
【０１６４】
事前準備プログラム取得部３６は、例えば、取得プログラムが１以上の事前準備プログラムを有している場合は、当該取得プログラムが有する１以上の事前準備プログラムの中から、取得プログラムが使用する１以上の事前準備プログラムを取得する（選択する）。また、事前準備プログラム取得部３６は、例えば、取得プログラムが１以上の事前準備プログラムを有していない場合は、プログラム格納部３２に格納されている１以上の事前準備プログラムの中から、取得プログラムが使用する１以上の事前準備プログラムを取得する。また、事前準備プログラム取得部３６は、通常、後述の処理部３７が取得プログラムを実行中に、事前準備プログラムを取得するが、後述の処理部３７が取得プログラムの実行を開始した直後に、事前準備プログラムを取得してもよい。また、事前準備プログラム取得部３６は、取得プログラムが使用する１以上の事前準備プログラムを識別する事前準備プログラム識別子を取得してもよい。
【０１６５】
取得プログラムが１以上の事前準備プログラムを有している場合、事前準備プログラム取得部３６は、例えば、以下の（Ａ１）または（Ａ２）のいずれかの手順により事前準備プログラムを取得する。
【０１６６】
（Ａ１）取得プログラムの実行中に事前準備プログラムを取得する場合
（１）処理部３７が実行を開始する取得プログラム中の命令を取得する。
（２）（１）で取得した命令が、事前準備プログラム識別子を含むか否かを判断する。
（３）（２）で「含む」と判断した場合、（１）で取得した命令から事前準備プログラム識別子を取得する。
（４）（３）で取得した事前準備プログラム識別子を有する事前準備プログラム管理情報を、事前準備プログラム管理情報格納部３１から取得する。
（５）（４）で取得した事前準備プログラム管理情報が有するプロセッサ条件が、プロセッサ情報取得部１５が取得したプロセッサ情報に合致するか否かを判断する。
（６）（４）で取得した事前準備プログラム管理情報から、（５）で「合致する」と判断した事前準備プログラム管理情報を取得する。
（７）（６）で取得した事前準備プログラム管理情報が有する事前準備プログラム識別子であって、（３）で取得した事前準備プログラム識別子に対応する事前準備プログラム識別子を取得する。
（８）（７）で取得した事前準備プログラム識別子で識別される事前準備プログラムを、取得プログラムから取得する。
【０１６７】
なお、（２）において、「含む」とは、一致することも含み広く解する。また、（７）において取得する事前準備プログラム識別子は、つまりは、取得プログラムが有している事前準備プログラムを識別する事前準備プログラム識別子である。また、事前準備プログラム取得部３６は、（Ａ１）の処理を行う場合、処理部３７が取得プログラム中の命令を実行する度に、上記（１）〜（８）の処理を行う。
【０１６８】
（Ａ２）取得プログラムの実行開始の直後に事前準備プログラムを取得する場合
（１）取得プログラムから、当該プログラムが有する１以上の命令が含む１以上の事前準備プログラム識別子を取得する。
（２）（１）で取得した各事前準備プログラム識別子を有する１以上の事前準備プログラム管理情報を、事前準備プログラム管理情報格納部３１から取得する。
（３）（２）で取得した各事前準備プログラム管理情報が有するプロセッサ条件が、プロセッサ情報取得部１５が取得したプロセッサ情報に合致するか否かを判断する。
（４）（２）で取得した１以上の事前準備プログラム管理情報から、（３）で「合致する」と判断した事前準備プログラム管理情報を取得する。
（５）（４）で取得した事前準備プログラム管理情報が有する事前準備プログラム識別子であって、（１）で取得した事前準備プログラム識別子に対応する事前準備プログラム識別子を取得する。
（６）（５）で取得した事前準備プログラム識別子で識別される事前準備プログラムを、取得プログラムから取得する。
【０１６９】
なお、（７）において取得する事前準備プログラム識別子は、つまりは、取得プログラムが有している事前準備プログラムを識別する事前準備プログラム識別子である。また、事前準備プログラム取得部３６は、（Ａ２）の処理を行う場合、処理部３７が取得プログラムの実行を開始した直後に、上記（１）〜（６）の処理を行う。
【０１７０】
また、取得プログラムが１以上の事前準備プログラムを有していない場合、事前準備プログラム取得部３６は、例えば、以下の（Ｂ１）または（Ｂ２）のいずれかの手順により事前準備プログラムを取得する。
【０１７１】
（Ｂ１）取得プログラムの実行中に事前準備プログラムを取得する場合
（１）〜（７）：前述の（Ａ１）の（１）〜（７）と同様であるので、説明を省略する。
（８）（７）で取得した事前準備プログラム識別子で識別される事前準備プログラムを、プログラム格納部３２から取得する。
【０１７２】
（Ｂ２）取得プログラムの実行開始の直後に事前準備プログラムを取得する場合
（１）〜（５）：前述の（Ａ２）の（１）〜（５）と同様であるので、説明を省略する。
（６）（５）で取得した事前準備プログラム識別子で識別される事前準備プログラムを、プログラム格納部３２から取得する。
【０１７３】
なお、プロセッサ情報がプロセッサ条件を満たすか否かの判断等は、事前準備プログラム取得部１６、および事前準備プログラム取得部２６が行う判断と同様であるので、説明を省略する。
【０１７４】
処理部３７は、事前準備プログラム取得部３６が取得した１以上の事前準備プログラムを用いて、１以上の取得プログラムを処理する。処理部３７は、例えば、１以上の取得プログラムを、事前準備プログラム取得部３６が取得した事前準備プログラムと共に実行する。つまり、処理部３７は、取得プログラムが、事前準備プログラム取得部３６が取得した１以上の事前準備プログラムを使用するように、取得プログラムを実行する。
【０１７５】
例えば、取得プログラムが事前準備プログラム識別子「ｆｕｎｃ」を有しているとする（例えば、取得プログラムが有する命令に、当該識別子「ｆｕｎｃ」が含まれているような場合）。また、当該取得プログラムが、当該事前準備プログラム識別子に対応する事前準備プログラムであり、「ｆｕｎｃ＿Ａ」、「ｆｕｎｃ＿Ｂ」、「ｆｕｎｃ＿Ｃ」のそれぞれで識別される事前準備プログラムを有しているとする。そして、事前準備プログラム取得部３６が取得した事前準備プログラムの識別子が「ｆｕｎｃ＿Ｂ」であったとする。すると、処理部３７は、取得プログラムが使用する事前準備プログラムであり、「ｆｕｎｃ」に対応する事前準備プログラムとして、「ｆｕｎｃ＿Ｂ」で識別される事前準備プログラムを使用するように、取得プログラムを実行する。
【０１７６】
また、処理部３７は、例えば、１以上の取得プログラムと共に実行する事前準備プログラムを、後述の取得事前準備プログラム格納部３９から取得してもよい。また、処理部３７は、当該事前準備プログラムの代わりに、当該事前準備プログラムを識別する事前準備プログラム識別子を取得してもよい。これらの取得は、例えば、処理部３７が過去に処理したことのある取得プログラムを、再度、処理するような場合に行う。
【０１７７】
例えば、取得プログラムが事前準備プログラム識別子「ｆｕｎｃ」を有しているとする（例えば、取得プログラムが有する命令に、当該識別子「ｆｕｎｃ」が含まれているような場合）。また、当該識別子「ｆｕｎｃ」に対応する事前準備プログラム識別子「ｆｕｎｃ＿Ｂ」が取得事前準備プログラム格納部３９に格納されている場合、処理部３７は、取得プログラムが使用する事前準備プログラムであり、「ｆｕｎｃ」に対応する事前準備プログラムとして、「ｆｕｎｃ＿Ｂ」で識別される事前準備プログラムを使用するように、取得プログラムを実行する。
【０１７８】
なお、プログラムの実行の方法や手順などは、公知であるので、詳細な説明を省略する。
【０１７９】
蓄積部３８は、事前準備プログラム取得部３６が取得した１以上の事前準備プログラムであり、処理部３７が１以上の取得プログラムと共に実行する１以上の事前準備プログラムを、後述の取得事前準備プログラム格納部３９に蓄積する。蓄積部３８は、通常、処理部３７が処理する１以上の取得プログラムが有する事前準備プログラム識別子と対応付けて、当該事前準備プログラムを蓄積する。また、蓄積部３８は、当該事前準備プログラムの代わりに、当該事前準備プログラムを識別する事前準備プログラム識別子を蓄積してもよい。
【０１８０】
取得事前準備プログラム格納部３９は、事前準備プログラム取得部３６が取得した１以上の事前準備プログラムであり、処理部３７が１以上の取得プログラムと共に実行する１以上の事前準備プログラムを格納し得る。当該事前準備プログラムは、通常、取得プログラムが有する事前準備プログラム識別子と対応付けられている。また、取得事前準備プログラム格納部３９には、当該事前準備プログラムの代わりに、当該事前準備プログラムを識別する事前準備プログラム識別子が格納されてもよい。
【０１８１】
なお、事前準備プログラム管理情報格納部３１、プログラム格納部３２、取得事前準備プログラム格納部３９は、揮発性の記録媒体、または不揮発性の記録媒体で実現可能である。
【０１８２】
また、プログラム取得部３４、事前準備プログラム取得部３６、処理部３７、蓄積部３８は、通常、プロセッサやメモリ等から実現され得る。プログラム取得部３４などの処理手順は、通常、ソフトウェアで実現され、当該ソフトウェアはＲＯＭ等の記録媒体に記録されている。但し、ハードウェア（専用回路）で実現してもよい。
【０１８３】
次に、プログラム処理装置３の動作について説明する。なお、所定の情報におけるｉ番目の情報は、「情報［ｉ］」と記載するものとする。図１３は、プログラム処理装置３の全体動作を示すフローチャートである。なお、図１３において、ステップＳ１３０１からステップＳ１３０３までは、図９のステップＳ９０１からステップＳ９０３までと同様であるので、説明を省略する。
【０１８４】
（ステップＳ１３０４）プログラム取得部３４は、ステップＳ１３０１で受け付けた指示が有するプログラム識別子で識別される１以上のプログラムを、プログラム格納部３２から取得する。ここで、ｍ個の命令を有するプログラムが取得できたものとする。
【０１８５】
（ステップＳ１３０５）プロセッサ情報取得部１５は、プロセッサ情報を取得する。
【０１８６】
（ステップＳ１３０６）処理部３７は、カウンタｉに１をセットする。
【０１８７】
（ステップＳ１３０７）処理部３７は、命令［ｉ］が事前準備プログラム識別子を含むか否かを判断する。含む場合は、ステップＳ１３０８に進み、そうでない場合は、ステップＳ１３１０に進む。
【０１８８】
（ステップＳ１３０８）事前準備プログラム取得部３６は、命令［ｉ］が含む事前準備プログラム識別子を取得する。
【０１８９】
（ステップＳ１３０９）事前準備プログラム取得部３６は、ステップＳ１３０５で取得したプロセッサ情報が合致するプロセッサ条件に対応する事前準備プログラムであり、ステップＳ１３０８で取得した事前準備プログラム識別子に対応する事前準備プログラムを取得する。
【０１９０】
（ステップＳ１３１０）処理部３７は、ステップＳ１３０９で取得した事前準備プログラムを実行する。
【０１９１】
（ステップＳ１３１１）処理部３７は、命令［ｉ］を実行する。
【０１９２】
（ステップＳ１３１２）処理部３７は、ｉがｍであるか否かを判断する。ｍである場合は、ステップＳ１３０１に戻り、そうでない場合は、ステップＳ１３１３に進む。
【０１９３】
（ステップＳ１３１３）処理部３７は、ｉを１インクリメントし、ステップＳ１３０７に戻る。
【０１９４】
なお、図１３のフローチャートにおいて、電源オフや処理終了の割り込みにより処理を終了してもよい。
【０１９５】
また、図１３のフローチャートにおいて、ステップＳ１３０５の処理は、ステップＳ１３０９の処理の前であれば、そのタイミングは問わない。つまり、例えば、ステップＳ１３０５の処理は、ステップＳ１３０１の処理の前に行ってもよいし、ステップＳ１３０４の処理の前に行ってもよい。
【０１９６】
また、図１３のフローチャートにおいて、ステップＳ１３０９の後に、蓄積部３８が、ステップＳ１３０８で取得した事前準備プログラム識別子と、ステップＳ１３０９で取得した事前準備プログラムとを対応付けて、取得事前準備プログラム格納部３９に蓄積してもよい。
【０１９７】
また、図１３のフローチャートにおいて、ステップＳ１３０７からステップＳ１３０９までの処理により、ステップＳ１３０４が取得したプログラムが有するすべての事前準備プログラム識別子に対応する事前準備プログラムを取得し、当該取得したすべての事前準備プログラムを、ステップＳ１３１０の処理により実行してもよい。
【０１９８】
（具体例）
次に、プログラム処理装置３の動作の具体例について説明する。なお、本具体例において、プログラム処理装置３は、プログラムを実行するプログラム実行装置であるものとする。また、本具体例において、事前準備プログラム管理情報格納部３１には、図１４に示す事前準備プログラム管理情報が格納されているものとする。当該事前準備プログラム管理情報は、各レコードを一意に特定するためのＩＤと、プログラム格納部３２に格納されているプログラムが有する可能性のある事前準備プログラム識別子（項目名：識別子）と、プロセッサ条件（項目名：プロセッサ）と、当該プログラムが使用する可能性のある事前準備プログラムの識別子（項目名：プログラム）とを有する。また、プログラム格納部３２には、１以上の事前準備プログラムを有するバイナリコードである１以上のプログラムが格納されているものとする。
【０１９９】
まず、ユーザが、プログラムを実行するために、当該プログラムのアイコンを、マウスを用いてダブルクリックしたとする。すると、受付部３３は、当該プログラムを識別するプログラム識別子を有するプログラムを実行する指示を受け付ける。
【０２００】
次に、プログラム取得部３４は、受付部３３が受け付けたプログラム識別子で識別されるプログラムを、プログラム格納部３２から取得し、バイナリコードであるプログラムを取得する。ここで、当該プログラムは、例えば、事前準備プログラム識別子「ＥｄｇｅＦｉｌｔｅｒ」を有しているものとする。また、当該プログラムは、事前準備プログラム識別子「ＥｄｇｅＦｉｌｔｅｒ」に対応する事前準備プログラムであって、当該プログラムが使用する可能性のある２以上の事前準備プログラムを有しているものとする。なお、当該２以上の各事前準備プログラムを識別する事前準備プログラム識別子は、「ＥｄｇｅＦｉｌｔｅｒ＿Ａ」、「ＥｄｇｅＦｉｌｔｅｒ＿Ｂ」、「ＥｄｇｅＦｉｌｔｅｒ＿Ｃ」であるものとする。
【０２０１】
次に、プロセッサ情報取得部１５は、プロセッサ情報であるプロセッサ識別情報を取得し、プロセッサ識別情報「ＣＰＵ＿Ｂ」を取得したものとする。
【０２０２】
次に、事前準備プログラム取得部３６は、まず、プログラム取得部３４が取得したバイナリコードが有する事前準備プログラム識別子「ＥｄｇｅＦｉｌｔｅｒ」を、当該バイナリコードから取得する。次に、事前準備プログラム識別子は、当該事前準備プログラム識別子「ＥｄｇｅＦｉｌｔｅｒ」を有する図１４の「ＩＤ＝０１５」から「ＩＤ＝０１７」までのレコードを取得する。次に、事前準備プログラム取得部３６は、図１４の「ＩＤ＝０１５」から「ＩＤ＝０１７」までのレコードのうち、プロセッサ識別情報「ＣＰＵ＿Ｂ」が合致するプロセッサ条件を有する「ＩＤ＝０１６」のレコードを特定する。そして、事前準備プログラム取得部３６は、当該「ＩＤ＝０１６」のレコードから、事前準備プログラム識別子（項目名：プログラム）「ＥｄｇｅＦｉｌｔｅｒ＿Ｂ」を取得する。
【０２０３】
次に、処理部３７は、プログラム取得部３４が取得したバイナリコードが有する事前準備プログラム識別子「ＥｄｇｅＦｉｌｔｅｒ」に対応する事前準備プログラムは、事前準備プログラム識別子「ＥｄｇｅＦｉｌｔｅｒ＿Ｂ」で識別される事前準備プログラムであるとして、プログラム取得部３４が取得したバイナリコードを実行する。
【０２０４】
なお、本具体例において、プロセッサ識別情報を取得する例を示したが、プロセッサ属性情報を取得してもよい。
【０２０５】
また、本具体例において、プログラム取得部３４が取得したプログラムが、１以上の事前準備プログラムを有する例を示したが、当該プログラムは、１以上の事前準備プログラムを有していなくてもよい。当該場合、当該１以上の事前準備プログラムは、通常、プログラム格納部３２に格納されている。
【０２０６】
また、本具体例において、事前準備プログラム取得部３６が、プログラム取得部３４が取得したプログラムが使用する事前準備プログラムを識別する事前準備プログラム識別子を取得する例を示したが、事前準備プログラム取得部３６は、プログラム取得部３４が取得したプログラムが使用する事前準備プログラムを取得してもよい。当該場合、事前準備プログラム取得部３６は、通常、プログラム取得部３４が取得したプログラム、またはプログラム格納部３２から、事前準備プログラムを取得する。
【０２０７】
以上、本実施の形態によるプログラム処理装置３によれば、プロセッサに適合する事前準備プログラムを用いて、プログラムを実行することができる。
【０２０８】
また、本実施の形態によるプログラム処理装置３によれば、プロセッサに適合する画像処理プログラムを、ユーザに提供することができる。
【０２０９】
また、本実施の形態によるプログラム処理装置３によれば、ユーザは、事前準備プログラムを使用するプログラムを、プロセッサの種類や性能等を意識することなく実行することができる。
【０２１０】
なお、本実施の形態において、処理部３７は、通常、取得プログラムから、当該プログラムが有する命令を１つずつ取得しながら、当該命令を実行する。また、事前準備プログラム取得部３６は、当該命令の取得毎に、当該命令が事前準備プログラム識別子を含むか否かを判断し、含む場合は、当該事前準備プログラム識別子に対応付けられている事前準備プログラム（事前準備プログラム識別子でもよい）であって、取得プログラムが動作するプロセッサに対応する事前準備プログラム（事前準備プログラム識別子でもよい）を取得する。
【０２１１】
つまり、プログラム処理装置３は、プログラムが有する命令を１つずつ実行しながら、当該命令が事前準備プログラム識別子を含むか否かを判断し、含む場合は、当該事前準備プログラム識別子に対応付けられている事前準備プログラム（事前準備プログラム識別子でもよい）であって、プログラム処理装置３、および当該プログラムが動作するプロセッサに対応する事前準備プログラム（事前準備プログラム識別子でもよい）を、実行するプログラムから取得してもよい。
【０２１２】
また、本実施の形態において、事前準備プログラム取得部３６は、例えば、処理部３７が取得プログラムの実行を開始した直後に、当該取得プログラムが有する命令が含む事前準備プログラム識別子を取得し、当該事前準備プログラム識別子に対応付けられている事前準備プログラム（事前準備プログラム識別子でもよい）であって、取得プログラムが動作するプロセッサに対応する事前準備プログラム（事前準備プログラム識別子でもよい）を取得してもよい。この場合、事前準備プログラム取得部３６は、通常、取得プログラムが有する命令に含まれる事前準備プログラム識別子と、取得した事前準備プログラム識別子（事前準備プログラム識別子でもよい）とを対応付ける。また、処理部３７は、通常、取得プログラムから、当該プログラムが有する命令を１つずつ取得しながら、当該命令を実行する。そして、処理部３７は、実行する命令が事前準備プログラム識別子を含む場合、当該事前準備プログラム識別子を、対応付いている事前準備プログラム（事前準備プログラム識別子でもよい）に変更し、当該命令を実行する。
【０２１３】
また、本実施の形態において、事前準備プログラム取得部３６は、例えば、処理部３７が取得プログラムの実行を開始した直後に、当該取得プログラムが有する命令が含むすべての事前準備プログラム識別子を取得し、当該事前準備プログラム識別子に対応付けられている事前準備プログラムであって、取得プログラムが動作するプロセッサに対応する事前準備プログラムを取得してもよい。この場合、処理部３７は、通常、取得プログラムから、当該プログラムが有する命令を１つずつ取得しながら当該命令を実行する。そして、処理部３７は、実行する命令が事前準備プログラム識別子を含む場合、当該事前準備プログラム識別子に対応する事前準備プログラムを、事前準備プログラム取得部３６が取得した事前準備プログラムから取得し、実行する。
【０２１４】
また、上記各実施の形態において、一の装置に存在する２以上の通信手段は、物理的に一の媒体で実現されてもよいことは言うまでもない。
【０２１５】
また、上記各実施の形態において、各処理または各機能は、単一の装置または単一のシステムによって集中処理されることによって実現されてもよいし、あるいは、複数の装置または複数のシステムによって分散処理されることによって実現されてもよい。
【０２１６】
また、上記各実施の形態において、各構成要素は専用のハードウェアにより構成されてもよいし、あるいは、ソフトウェアにより実現可能な構成要素については、プログラムを実行することによって実現されてもよい。例えば、ハードディスクや半導体メモリ等の記録媒体に記録されたソフトウェア・プログラムをＣＰＵ等のプログラム実行部が読み出して実行することによって、各構成要素が実現され得る。
【０２１７】
また、上記各実施の形態におけるプログラム処理装置を実現するソフトウェアは、以下のようなプログラムである。つまり、このプログラムは、記録媒体に、プロセッサに関する条件である１以上のプロセッサ条件と、当該プロセッサにおいて実行され得るプログラムである１以上の事前準備プログラムを識別する事前準備プログラム識別子とを有する２以上の事前準備プログラム管理情報と、１以上の事前準備プログラムと、当該１以上の事前準備プログラムのうちの１以上の事前準備プログラムを使用する１以上のプログラムとが格納されており、コンピュータを、当該プログラムを識別する１以上のプログラム識別子を有する指示を受け付ける受付部と、前記指示に含まれるプログラム識別子で識別されるプログラムを、前記プログラム格納部から取得するプログラム取得部と、前記プログラムが動作するプロセッサに関する情報であるプロセッサ情報を取得するプロセッサ情報取得部と、前記プログラム取得部が取得した１以上のプログラムが使用する１以上の事前準備プログラムであり、前記プロセッサ情報取得部が取得したプロセッサ情報が合致するプロセッサ条件に対応する１以上の事前準備プログラム識別子により識別される事前準備プログラムを取得する事前準備プログラム取得部と、前記事前準備プログラム取得部が取得した１以上の事前準備プログラムを用いて、前記プログラム取得部が取得した１以上のプログラムを処理する処理部として機能させるためのプログラムである。
【０２１８】
なお、上記プログラムにおいて、情報を送信する送信ステップや、情報を受信する受信ステップなどでは、ハードウェアでしか行われない処理、例えば、送信ステップにおけるモデムやインターフェースカードなどで行われる処理は少なくとも含まれない。
【０２１９】
また、上記プログラムは、サーバなどからダウンロードされることによって実行されてもよいし、所定の記録媒体（例えば、ＣＤ−ＲＯＭなどの光ディスクや磁気ディスク、半導体メモリなど）に記録されたプログラムが読み出されることによって実行されてもよい。また、このプログラムは、プログラムプロダクトを構成するプログラムとして用いられてもよい。
【０２２０】
また、上記プログラムを実行するコンピュータは、単数であってもよいし、複数であってもよい。つまり、集中処理を行ってもよいし、あるいは分散処理を行ってもよい。
【０２２１】
また、図１５は、前述のプログラムを実行して、前述の実施の形態のプログラム処理装置等を実現するコンピュータシステム９の概観図である。前述の実施の形態は、コンピュータハードウェア及びその上で実行されるコンピュータプログラムで実現され得る。
【０２２２】
図１５において、コンピュータシステム９は、ＣＤ−ＲＯＭ（Ｃｏｍｐａｃｔ  Ｄｉｓｋ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）ドライブ９０１１、ＦＤ（Ｆｌｅｘｉｂｌｅ  Ｄｉｓｋ）ドライブ９０１２を含むコンピュータ９０１と、キーボード９０２と、マウス９０３と、モニタ９０４とを備える。
【０２２３】
図１６は、コンピュータシステム９のブロック図である。図１６において、コンピュータ９０１は、ＣＤ−ＲＯＭドライブ９０１１、ＦＤドライブ９０１２に加えて、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）９０１３と、ブートアッププログラム等のプログラムを記憶するためのＲＯＭ（Ｒｅａｄ−Ｏｎｌｙ  Ｍｅｍｏｒｙ）９０１４と、ＣＰＵ９０１３に接続され、アプリケーションプログラムの命令を一時的に記憶するとともに一時記憶空間を提供するためのＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）９０１５と、アプリケーションプログラム、システムプログラム、及びデータを記憶するためのハードディスク９０１６と、ＣＤ−ＲＯＭドライブ９０１１、ＦＤドライブ９０１２、ＣＰＵ９０１３等を相互に接続するバス９０１７とを備える。ここでは図示しないが、コンピュータ９０１は、さらに、ＬＡＮへの接続を提供するネットワークカードを備えていてもよい。
【０２２４】
コンピュータシステム９に、前述の実施の形態のプログラム処理装置等の機能を実行させるプログラムは、ＣＤ−ＲＯＭ９１０１、またはＦＤ９１０２に記憶されて、ＣＤ−ＲＯＭドライブ９０１１またはＦＤドライブ９０１２に挿入され、さらにハードディスク９０１６に転送されてもよい。これに代えて、プログラムは、図示しないネットワークを介してコンピュータ９０１に送信され、ハードディスク９０１６に記憶されてもよい。プログラムは実行の際にＲＡＭ９０１５にロードされる。プログラムは、ＣＤ−ＲＯＭ９１０１、ＦＤ９１０２またはネットワークから直接、ロードされてもよい。
【０２２５】
プログラムは、コンピュータ９０１に、前述の実施の形態のプログラム処理装置等の機能を実行させるオペレーティングシステム（ＯＳ）、またはサードパーティープログラム等は、必ずしも含まなくてもよい。プログラムは、制御された態様で適切な機能（モジュール）を呼び出し、所望の結果が得られるようにする命令の部分のみを含んでいればよい。コンピュータシステム９がどのように動作するかは周知であり、詳細な説明は省略する。
【０２２６】
本発明は、以上の実施の形態に限定されることなく、種々の変更が可能であり、それらも本発明の範囲内に包含されるものであることは言うまでもない。
【産業上の利用可能性】
【０２２７】
以上のように、本発明にかかるプログラム処理装置は、プロセッサに依存することなく、事前準備プログラムを使用することができるという効果を有し、コンパイラや、リンカ、プログラムの実行環境として有用である。
【符号の説明】
【０２２８】
１、２、３  プログラム処理装置
１１、３１  事前準備プログラム管理情報格納部
１２、３２  プログラム格納部
１３、３３  受付部
１４、３４  プログラム取得部
１５  プロセッサ情報取得部
１６、２６、３６  事前準備プログラム取得部
１７、２７、３７  処理部
１７１  結合プログラム格納手段
１７２、２７１  結合手段
１７３  蓄積手段
２７２  実行手段
【図１】
2013073542.tif 000003
【図２】
2013073542.tif 000004
【図３】
2013073542.tif 000005
【図４】
2013073542.tif 000006
【図５】
2013073542.tif 000007
【図６】
2013073542.tif 000008
【図７】
2013073542.tif 000009
【図８】
2013073542.tif 000010
【図９】
2013073542.tif 000011
【図１０】
2013073542.tif 000012
【図１１】
2013073542.tif 000013
【図１２】
2013073542.tif 000014
【図１３】
2013073542.tif 000015
【図１４】
2013073542.tif 000016
【図１５】
2013073542.tif 000017
【図１６】
2013073542.tif 000018