プログラムの中間コード同士を比較する比較部と、前記比較部による比較結果に基づいて、プログラム同士の類似度を算出する類似度算出部とを備える情報処理装置。前記類似度算出部により算出された前記類似度に基づいて、推薦するプログラムを決定する決定部と、前記決定部により決定された前記プログラムを推薦する推薦部とをさらに備える請求項1に記載の情報処理装置。前記類似度算出部により算出された前記類似度に基づいて、推薦するプログラムの候補を選択する候補選択部と、前記プログラムの付加情報を用いて、前記選択部により選択された前記候補を絞り込む絞り込み部とをさらに備え、前記決定部は、前記絞り込み部により絞り込まれた前記候補を、推薦するプログラムとして決定する請求項2に記載の情報処理装置。前記プログラムの付加情報に応じて、前記決定部により決定された前記プログラムの重み付けを設定する重み付け設定部と、前記重み付け設定部により設定された、各付加情報に対応する重み付けを用いて、前記決定部により決定された前記プログラムの優先度を決定する優先度決定部とをさらに備える請求項3に記載の情報処理装置。ユーザの指示に従って、前記重み付け設定部により設定された、各付加情報に対応する重み付けを更新する重み付け更新部をさらに備える請求項4に記載の情報処理装置。前記付加情報は、前記プログラムのソースコードの言語種別を含む請求項3に記載の情報処理装置。前記付加情報は、前記プログラムのソースコードの編集日時を含む請求項3に記載の情報処理装置。前記付加情報は、前記プログラムのソースコードが含まれるライブラリを示す情報を含む請求項3に記載の情報処理装置。前記付加情報は、前記プログラムのソースコードのライセンスを含む請求項3に記載の情報処理装置。前記付加情報は、前記プログラムの中間コードの種別を含む請求項3に記載の情報処理装置。前記付加情報は、前記プログラムの中間コードを生成するためのオプションを含む請求項3に記載の情報処理装置。前記付加情報は、前記プログラムのソースコードの実行結果を含む請求項3に記載の情報処理装置。前記付加情報は、前記プログラムのソースコードの使用実績を含む請求項3に記載の情報処理装置。前記付加情報は、前記プログラムのソースコードの改変度を含む請求項3に記載の情報処理装置。前記付加情報は、前記プログラムの更新に関する情報を含む請求項3に記載の情報処理装置。前記付加情報は、前記プログラムのソースコードの自信度を含む請求項3に記載の情報処理装置。プログラムのソースコードを中間コードに変換するコード変換部をさらに備え、前記比較部は、プログラムの、前記コード変換部によりソースコードが変換された中間コード同士を比較する請求項1に記載の情報処理装置。ユーザの指示を受け付ける受付部と、前記受付部により受け付けられた前記ユーザの指示に基づいて、プログラムのソースコードを作成するソースコード作成部とをさらに備え、前記コード変換部は、前記ソースコード作成部により作成されたソースコードを中間コードに変換する請求項17に記載の情報処理装置。情報処理装置の情報処理方法であって、前記比較部は、プログラムの中間コード同士を比較し、前記類似度算出部は、比較結果に基づいて、プログラム同士の類似度を算出する情報処理方法。しかしながら、ソースコードの記述が類似していても、実行ファイルも類似するとは限らない。ソフトウエア開発において重要なのは、ソースコードの記述ではなく、処理の内容処理の過程や実行結果である。そのため、非特許文献1に記載の方法によって常にユーザにとって適切なソースコードが推薦されるとは限らない恐れがあった。本開示は、このような状況に鑑みてなされたものであり、より望ましい処理内容や実行結果が得られるソースコードを推薦することができるようにすることを目的とする。本開示の一側面は、プログラムの中間コード同士を比較する比較部と、前記比較部による比較結果に基づいて、プログラム同士の類似度を算出する類似度算出部とを備える情報処理装置である。前記類似度算出部により算出された前記類似度に基づいて、推薦するプログラムを決定する決定部と、前記決定部により決定された前記プログラムを推薦する推薦部とをさらに備えることができる。前記類似度算出部により算出された前記類似度に基づいて、推薦するプログラムの候補を選択する候補選択部と、前記プログラムの付加情報を用いて、前記選択部により選択された前記候補を絞り込む絞り込み部とをさらに備え、前記決定部は、前記絞り込み部により絞り込まれた前記候補を、推薦するプログラムとして決定することができる。前記プログラムの付加情報に応じて、前記決定部により決定された前記プログラムの重み付けを設定する重み付け設定部と、前記重み付け設定部により設定された、各付加情報に対応する重み付けを用いて、前記決定部により決定された前記プログラムの優先度を決定する優先度決定部をさらに備えることができる。ユーザの指示に従って、前記重み付け設定部により設定された、各付加情報に対応する重み付けを更新する重み付け更新部をさらに備えることができる。前記付加情報は、前記プログラムのソースコードの言語種別を含むことができる。前記付加情報は、前記プログラムのソースコードの編集日時を含むことができる。前記付加情報は、前記プログラムのソースコードが含まれるライブラリを示す情報を含むことができる。前記付加情報は、前記プログラムのソースコードのライセンスを含むことができる。前記付加情報は、前記プログラムの中間コードの種別を含むことができる。前記付加情報は、前記プログラムの中間コードを生成するためのオプションを含むことができる。前記付加情報は、前記プログラムのソースコードの実行結果を含むことができる。前記付加情報は、前記プログラムのソースコードの使用実績を含むことができる。前記付加情報は、前記プログラムのソースコードの改変度を含むことができる。前記付加情報は、前記プログラムの更新に関する情報を含むことができる。プログラムのソースコードを中間コードに変換するコード変換部をさらに備え、前記比較部は、プログラムの、前記コード変換部によりソースコードが変換された中間コード同士を比較することができる。ユーザの指示を受け付ける受付部と、前記受付部により受け付けられた前記ユーザの指示に基づいて、プログラムのソースコードを作成するソースコード作成部とをさらに備え、前記コード変換部は、前記ソースコード作成部により作成されたソースコードを中間コードに変換することができる。本開示の一側面は、また、情報処理装置の情報処理方法であって、前記比較部は、プログラムの中間コード同士を比較し、前記類似度算出部は、比較結果に基づいて、プログラム同士の類似度を算出する情報処理方法である。本開示の一側面においては、プログラムの中間コード同士が比較され、比較結果に基づいて、プログラム同士の類似度が算出される。本開示によれば、情報を処理することができる。特に、より望ましい処理内容や実行結果が得られるソースコードを推薦することができる。以下、本技術を実施するための形態以下実施の形態とするについて説明する。なお、説明は以下の順序で行う。1.第1の実施の形態開発支援システム<1.第1の実施の形態>[開発支援システム]図1は、開発支援システムの主な構成例を示す図である。図1に示される開発支援システム100は、ソフトウエアやハードウエア等のシステム開発を支援するシステムである。図1に示されるように、この開発支援システム100は、端末装置101-1、端末装置101-2、およびデータサーバ102を有し、それらが互いにネットワーク103を介して通信可能な状態に接続される。端末装置101-1は、システム開発を行うエンジニアであるユーザ110-1に対してCUICharacterbasedUserInterfaceやGUIGraphicalUserInterface等のユーザインタフェースを提供する。端末装置101-2は、システム開発を行うエンジニアであるユーザ110-2に対してCUIやGUI等のユーザインタフェースを提供する。以下において、端末装置101-1および端末装置101-2を互いに区別して説明する必要が無い場合、単に端末装置101と称する。また、同様に、ユーザ110-1およびユーザ110-2を互いに区別して説明する必要が無い場合、単にユーザ110と称する。図1においては、開発支援システム100が端末装置101を2台有するように示しているが、端末装置101の台数は任意であり、1台であってもよいし、3台以上であってもよい。同様に、ユーザ110の人数も任意であり、1人であってもよいし、3人以上であっても良い。端末装置101は、ユーザ110に対してCUIやGUI等の画像をモニタに表示したり、音声をスピーカから出力したりし、さらに、キーボード等の入力デバイスにより、ユーザ110が入力した指示を受け付ける。また、端末装置101は、入力されたユーザ指示等に基づいて、ネットワーク103を介してデータサーバ102と通信を行い、情報の授受を行う。データサーバ102は、例えば端末装置101から供給される、ソースコード等を含むデータセットを記憶するデータベースを有する。また、データサーバ102は、例えば、端末装置101からの指示等に従って、データベースにおいて管理されるデータセット群の中から、ユーザに推薦するデータセットである推薦データセットを選択し、ネットワーク103を介して端末装置101に供給する。図1においては、開発支援システム100がデータサーバ102を1台有するように示しているが、データサーバ102の台数は任意であり、2台以上であってもよい。ネットワーク103は、LANLocalAreaNetworkやインターネット等により構成される通信回線である。このネットワーク103を介して、各端末装置101とデータサーバ102との間の通信が行われる。ネットワーク103は、有線若しくは無線、または、その両方の通信網により構成される。ネットワーク103の構成は任意であり、1つの通信網により構成されていても良いし、複数の通信網を組み合わせたものであってもよい。このような開発支援システム100を利用するシステム開発において、ユーザ110は、プログラム作成のために、端末装置101を操作して、そのプログラムのソースコード等を作成する。そのソースコード等を含むデータセットは、ネットワーク103を介してデータサーバ102に供給され、データベースに記憶され、管理される。データサーバ102は、そのデータベースにより管理されるデータセット群の中から、端末装置101から供給されたデータセットに関連する例えば類似する、推薦すべきデータセットを選択し、推薦データセットとして端末装置101に供給する。端末装置101は、その推薦データセットをユーザに提示する。ユーザは、提示された推薦データセットを適宜利用してシステム開発を行う。[端末装置]図2は、端末装置101の主な構成例を示すブロック図である。図2に示されるように、端末装置101は、CPUCentralProcessingUnit131、ROMReadOnlyMemory132、RAMRandomAccessMemory133およびバス134を有する。CPU131は、ROM132に記憶されているプログラム、または記憶部143からRAM133にロードされたプログラムに従って各種の処理を実行する。RAM133にはまた、CPU131が各種の処理を実行する上において必要なデータなども適宜記憶される。CPU131、ROM132、およびRAM133は、バス134を介して相互に接続されている。図2に示されるように、このバス134にはまた、入出力インタフェース140も接続されている。また、端末装置101は、入力部141、出力部142、記憶部143、および通信部144をさらに有する。これらは、入出力インタフェース140に接続される。入力部141は、例えば、キーボード、マウス、タッチパネル、カメラ、若しくはマイクロホン等の任意の入力デバイスよりなる。入力部141は、ユーザ110に操作されて、ユーザ110からの指示入力を受け付け、その受け付けたユーザ指示を、入出力インタフェース140を介して、例えばCPU131やRAM133等の適切な供給先に供給する。なお、入力部141を構成する入力デバイスの数および種類数は任意である。つまり、どのような入力デバイスを、いくつ、どのように組み合わせるようにしてもよい。出力部142は、例えば、CRTCathodeRayTubeディスプレイ、LCDLiquidCrystalDisplay、若しくは、有機ELディスプレイOELDOrganicElectroLuminescenceDisplay等のディスプレイ、プロジェクタ、またはスピーカ等の任意の出力デバイス等よりなる。出力部142は、入出力インタフェース140を介して、例えばCPU131やRAM133等から供給される出力情報を取得し、その出力情報を画像や音声等として端末装置101の外部に出力してユーザ110にその出力情報を提示する。なお、出力部142を構成する出力デバイスの数および種類数は任意である。つまり、どのような出力デバイスを、いくつ、どのように組み合わせるようにしてもよい。記憶部143は、例えば、RAMディスク、フラッシュメモリ、SSDSolidStateDrive、またはハードディスク等、任意の記憶媒体よりなる。記憶部143は、入出力インタフェース140を介して、例えばCPU131等から供給される情報を取得し、記憶する。また、記憶部143は、所定のタイミングにおいて、若しくは、例えばCPU131等の外部からの指示に基づいて、記憶している情報を、入出力インタフェース140を介して、例えばCPU131やRAM133等、適切な供給先に供給する。なお、記憶部133を構成する記憶媒体の数および種類数は任意である。つまり、どのような記憶媒体を、いくつ、どのように組み合わせるようにしてもよい。通信部144は、有線LAN、無線LAN、ブルートゥース、USBUniversalSerialBus、IEEEInstituteofElectricalandElectronicEngineers1394、若しくはHDMIHighDefinitionMultimediaInterface等の任意の通信規格の通信インタフェース、モデム、TATerminalAdapter、3G回線通信モジュール、赤外線通信用モジュール、非接触型ICIntegratedCircuitカード、外部入力端子、または、外部出力端子等、任意の通信デバイスよりなる。通信部144は、入出力インタフェース140を介して、例えばCPU131やRAM133等から供給される出力情報を取得し、その出力情報を他の装置に伝送したり、他の装置から伝送される入力情報を取得し、その入力情報を、入出力インタフェース140を介して、例えばCPU131やRAM133等の適切な供給先に供給したりする。なお、通信部144を構成する通信デバイスの数および種類数は任意である。つまり、どのような通信デバイスを、いくつ、どのように組み合わせるようにしてもよい。入出力インタフェース140にはまた、必要に応じてドライブ145が接続され、磁気ディスク、光ディスク、光磁気ディスク、或いは半導体メモリ等の任意のリムーバブルメディア146が適宜装着され、それらから読み出されたコンピュータプログラムが、必要に応じて記憶部143等にインストールされる。また、ドライブ145が、書き込み可能なリムーバブルメディア146に対する情報書き込み機能を有するようにしてもよい。その場合、ドライブ145は、入出力インタフェース140を介して、例えばCPU131やRAM133から供給される情報を、ドライブ145に装着されたリムーバブルメディア146に書き込み、記録する。[データサーバ]図3は、データサーバ102の主な構成例を示すブロック図である。図3に示されるように、データサーバ102は、基本的に、端末装置101と同様の構成を有する。つまり、データサーバ102は、CPU151、ROM152、RAM153、バス154、入出力インタフェース160、入力部161、出力部162、記憶部163、および通信部164を有する。また、入出力インタフェース160には、リムーバブルメディア166が適宜装着されるドライブ165が必要に応じて接続される。これらの各部は、それぞれ、図2を参照して説明した端末装置101の各部と同様である。したがってこれらの詳細な説明は、端末装置101の場合と同様であるので省略する。データサーバ102は、さらにデータベース167を有する。データベース167は、例えば、RAMディスク、フラッシュメモリ、SSD、またはハードディスク等、任意の記憶媒体を有する。データベース167は、例えば、CPU151やRAM153等から供給される情報を、入出力インタフェース160を介して取得して記憶媒体に記憶し、管理する。また、データベース167は、必要に応じて、管理している情報をCPU151やRAM153等、適切な供給先に供給する。データベース167は、例えば、ユーザ110により作成されたソースコードを含むデータセット等、システム開発に関するデータや設定等を記憶し、管理する。[開発支援サービス]次に、図1の開発支援システム100がユーザ110に対して提供する開発支援サービスの概要について説明する。端末装置101は、CPU131が記憶部143等に記憶されている所定のプログラム開発中のプログラムでは無いを実行することにより、統合開発環境181を実現する。統合開発環境181は、ユーザ110に対して、システム開発に関するCUIやGUI等を提供する。ユーザ110は、そのユーザインタフェースに従ってプログラムの開発を行う。例えば、ユーザ110は、そのプログラムのソースコードや設定データ等の作成、編集、削除等の各種操作を行う。また、ユーザ110は、そのユーザインタフェースに従って、例えばデータの保存や読み出し等といった任意の制御指示の入力等を行うこともできる。作成されるソースコードは、例えば、CCJava登録商標FortranPascalLispMLHaskelRuby等、統合開発環境181が対応可能なものであれば、どのようなプログラミング言語であってもよい。設定データは、統合開発環境181から選択できるフィールドやメニュー、入力できるフィールドなど、統合開発環境181でユーザが選択、入力することができるデータ群である。統合開発環境181は、作成されたソースコードや設定データ等をまとめ、作成されるプログラムのデータセットを生成する。このデータセットは、例えば、そのプログラムのソースコード、設定データ、中間コード、および付加情報を含む。統合開発環境181は、ユーザ110により作成若しくは更新されたソースコードを中間コードに変換する。中間コードは、ソースコードの種類やアーキテクチャ、コンパイラバージョンなど、ソースコード以外の要素に依存しないような、例えば構文木や仮想機械言語などの共通の形式を持つ情報である。付加情報は、例えば、ソースコードの言語種別、ソースコードの編集日時、ソースコードが含まれるライブラリ、ソースコードのライセンス、中間コードの種別、中間コードを生成するためのオプション、ソースコードの実行結果、参考にした推薦データセット、ソースコードの改変率、改変内容、データセットを登録更新したユーザとユーザ種別、更新時間、タイミング、並びに、ソースコードの自信度の内、一部または全部を含むことができる。ソースコードの言語種別は、そのソースコードのプログラミング言語が何であるかプログラミング言語の種類を示す情報である。ソースコードの編集日時は、そのソースコードが編集された日時を示す情報時刻情報である。ソースコードが含まれるライブラリは、そのソースコードが含まれるライブラリに関する情報例えばライブラリ名、関数名、または、そのライブラリのライセンスに関する情報等である。ソースコードのライセンスは、そのソースコードの公開の許可に関する情報例えば、公開可であるか否か、公開を許可する条件、ライセンスの名称等である。中間コードの種別は、中間コードに利用する形式例えば構文木や仮想機械言語等を指定する情報である。中間コードを生成するためのオプションは、中間コードが生成されたオプションを示す情報である。ソースコードの実行結果は、ソースコードの実行に関する情報である。例えば、ユーザ110が、そのソースコードが実行可能であるか、そのソースコードに対応する実行ファイルを実行したときの処理速度が速いか、実行ファイルのサイズが小さいか、FORTIFYなどの静的解析済みのものであるか等の情報を含む。参考にした推薦データセットは、データサーバ102により推薦された複数のデータセットの内、どのデータセットをユーザが選択したかを示す情報である。ソースコードの改変率、改変内容は、推薦されたソースコードを使用するにあたってユーザ110等により行われた改変の度合いや、その改変の内容に関する情報を含む。データセットを登録更新したユーザとユーザ種別、更新時間、タイミングは、データセットを登録更新したユーザ110の種別例えば、管理者、作成者、開発者、一般ユーザ等を示す情報を含む。また更新時間や更新のタイミングに関する情報が含まれていてもよい。ソースコードの自信度は、データセットをデータサーバ102に登録させたユーザによる、そのデータセットに対する自信度を示す情報である。付加情報に含まれる情報は任意である。上述した以外の情報が付加情報に含まれるようにしてもよい。例えば、ソースコードの検査回数や検査結果等、ソフトウエア品質保証に関する情報が付加情報に含まれるようにしてもよい。統合開発環境181は、ユーザにより作成若しくは更新されたデータセットを、ネットワーク103を介してデータサーバ102に供給する。データサーバ102は、CPU151が記憶部163等に記憶されているプログラム開発中のプログラムでは無いを実行することにより、推薦エンジン182を実現する。この推薦エンジン182は、データセットの推薦に関する処理を行う。推薦エンジン182は、統合開発環境181から供給されるデータセットを取得すると、それをデータベース167において管理する。また、推薦エンジン182は、統合開発環境181から供給されるデータセットのプログラムに関連する例えば類似するプログラムデータセットを、データベース167の中から検索する。推薦エンジン182は、そのプログラムデータセット同士の類似性の判定を、ソースコードの記述ではなく、中間コードを用いて行う。より具体的には、推薦エンジン182は、データベース167において管理されるプログラムデータセットの中間コードを、統合開発環境181から供給される、開発中のプログラムデータセットの中間コードと比較し、その比較結果に従って、両プログラムデータセットの類似性を判定する。そして、推薦エンジン182は、その判定結果に基づいて、推薦すべきプログラムデータセット、例えば、統合開発環境181から供給されるプログラムデータセットとの処理内容や実行結果の類似度が高いプログラムデータセットを選択し、推薦する。また、推薦エンジン182は、推薦するプログラムデータセットの選択を、類似性の判定結果だけでなく、その他の情報にも基づいて行うことができる。例えば、推薦エンジン182は、類似度が高いプログラムデータセットを推薦するプログラムデータセットの候補として選択し、さらに、そのデータセットに含まれる付加情報を用いて、その候補の絞り込みを行うことができる。推薦エンジン182は、このように絞り込まれた候補のプログラムデータセットを、統合開発環境181を介してユーザ110に推薦する。さらに、推薦エンジン182は、推薦するプログラムデータセットの優先度を判定し、それを、ネットワーク103を介して統合開発環境181に提供し、ユーザ110に提示させることもできる。[推薦処理の流れ]次に、このようなデータセットの推薦に関する処理の流れの例を、図5のフローチャートを参照して説明する。ここでは、ユーザ110がソースコードを作成する際に、データセットを推薦する場合について説明する。まず、端末装置101の統合開発環境181は、ステップS111において、ユーザ110に対して、GUIを表示する等、システム開発の環境を提供し、ユーザ110からの入力を受け付ける。これに対して、ユーザ110は、ステップS101において、プログラミングを行い、ソースコードを含むデータセットソースコードデータセットを作成する。ソースコードデータセットが作成されると、統合開発環境181は、ステップS112において、そのソースコードを中間コードに変換する。ステップS113において、統合開発環境181は、変換後の中間コードをソースコードデータセットに加え、中間コードデータセットとする。統合開発環境181は、そのデータセット中間コードデータセットを、ネットワーク103を介してデータサーバ102に供給する推薦エンジン182に提供する。推薦エンジン182は、ステップS121において、そのデータセットを取得すると、ステップS122において、そのデータセットをデータベース167に供給する。データベース167は、そのデータセットを取得すると、ステップS131において記憶する。また、データベース167は、ステップS132において、記憶管理しているデータセット中間コードデータセットを順に読み出し、推薦エンジン182に供給する。ステップS123において、推薦エンジン182は、統合開発環境181から供給されたデータセットと、データベース167から読み出されたデータセットとで、中間コードを比較する。ステップS124において、推薦エンジン182は、その比較結果に基づいて、類似度を算出する。すなわち、両プログラムの処理の内容処理の過程、並びに、実行結果がどの程度類似しているかが判定される。ステップS125において、推薦エンジン182は、算出された類似度に従って、推薦するデータセットの候補候補データセットを選択する。例えば、推薦エンジン182が、類似度が高い方から所定数のデータセットデータベース167から読み出されたデータセットを候補データセットとして選択するようにしてもよい。また、例えば、推薦エンジン182が、類似度が所定の閾値より大きなデータセットデータベース167から読み出されたデータセットを候補データセットとして選択するようにしてもよい。なお、このステップS125の処理により、推薦するデータセットを類似度のみに基づいて一気に決定するようにしてもよいが、推薦エンジン182は、より有用なデータセットを推薦することができるように、ここでは候補の選択に留める。ステップS126において、推薦エンジン182は、各候補データセットに含まれる付加情報を用いて候補を絞り込む。ステップS127において、推薦エンジン182は、その絞り込まれた候補を、推薦するデータセット推薦データセットとして決定する。なお、この推薦データセットの数は任意であり、単数であっても複数であってもよい。ステップS128において、推薦エンジン182は、推薦データセットの優先度を判定する。つまり、推薦エンジン182は、諸条件に従って、推薦データセットの優先度を算出する。優先度は、推薦データセットの有用性を絶対的に若しくは相対的に示す情報である。この優先度は、データセットの更新時刻、更新者、または使用頻度等に基づいて設定される。例えばソフトウエアの作成者や管理者により更新された場合、その更新は、正しく、かつ、より大きな意味があるものである可能性が高いので、優先度が高く設定される。もちろん、優先度の決定条件や決定方法は、任意である。この優先度によって、ユーザ110は、提示された推薦データセットの有用性をより容易に判断することができる。ステップS129において、推薦エンジン182は、推薦データセットを、その優先度とともに、統合開発環境181に供給する。統合開発環境181は、ステップS114において、その推薦データセットおよび優先度を取得する。ステップS115において、統合開発環境181は、その推薦データセットに関する情報を、任意のタイミングにおいて、画像や音声として出力部142から出力させ、ユーザ110に提示する。この推薦データセットは、ユーザ110が現在作成しているソースコードや設定データを補完するもの、もしくはその作成作業に有効な情報になる。なお、その際、統合開発環境181は、所定の条件に基づいて、推薦データセットをフィルタリングすることもできる。この所定の条件の内容は任意である。また、この所定の条件は、例えば、予め定められていてもよいし、統合開発環境181が、ユーザ110からの指示、実行環境、または処理内容等、任意の情報に基づいて設定するようにしてもよい。ステップS102において、ユーザ110は、提示された推薦データセットや優先度の情報を参照し、必要に応じて例えば点線矢印のように、新たなデータセットのプログラミング、若しくは、既存のデータセットの編集等の作業に反映させることができる。以上のように、推薦エンジン182は、ソースコードではなく中間コードが類似するデータセットを推薦する。このようにすることにより、ユーザ110は、自身が作成したソースコードに対して、単に記述が類似するだけでなく、実行時の動作処理内容や結果処理結果等が類似するソースコードを得ることができる。また、推薦エンジン182が、上述したように、付加情報を用いて推薦データセットの候補の絞り込みを行うことにより、ユーザ110は、より望ましい処理内容や実行結果が得られるソースコードデータセット、すなわち、より有用なソースコードデータセットを得ることができる。例えば、ある特定言語でプログラミングをしているユーザ110に対して、統合開発環境181は、そのプログラミングの内容に応じた、より有用なソースコードデータセットを推薦することができる。さらに、推薦データセットについて、諸条件に従って優先度が算出され、提示されるので、ユーザ110は、推薦されたデータセットの有用性をより容易に把握することができる。なお、以上においては、ユーザ110がソースコードを作成する際に、データセットを推薦する場合について説明したが、データセットの推薦は、これ以外の処理に対して行うことができる。例えば、ユーザ110が、データセットのソースコード以外の情報を作成する際にも、推薦エンジン182は、そのデータセットに含まれる中間コードに基づいてデータセットの推薦を行うことができる。また、例えば、ユーザが既にデータベース167に登録されている既存のデータセットの情報を更新する場合に、推薦エンジン182が、データセットの推薦を行うようにしてもよい。その場合、図5に示される各処理を実行する前に、データベース167からユーザに指定されたデータセットが読み出されて端末装置101に供給され、統合開発環境181によって編集可能な状態でユーザ110に提示される。データセットの編集は、データセットの作成の場合と同様に行われる。すなわち、それ以降の処理は、図5のフローチャートと同様に行われる。なお、以上においては、ユーザが作成したソースコードを統合開発環境181が中間データに変換し、中間コードデータセットを推薦エンジン182に供給するように説明したが、これに限らず、ソースコードを中間コードへ変換するコード変換処理は、データサーバ102例えば推薦エンジン182若しくはそれ以外のエンジンにおいて行うようにしてもよい。その場合、統合開発環境181は、ユーザに作成または更新されたソースコードソースコードデータセットを、データサーバ102に供給する。[候補絞り込み処理の流れ]次に、図5のステップS126において、推薦エンジン182が実行する候補絞り込み処理の流れの例を、図6のフローチャートを参照して説明する。なお、付加情報は、上述した例とする。候補絞り込み処理が開始されると、推薦エンジン182は、ステップS151において、各候補データセットに含まれる付加情報を確認し、ソースコードの言語種別例えばCCJava登録商標FortranPascalLispMLHaskelRuby等が、統合開発環境181から供給されたデータセットと同一の候補を選択する。このようにすることにより、推薦エンジン182は、ユーザ110が参考にするのに容易なソースコードデータセットを推薦することができる。ステップS152において、推薦エンジン182は、各候補データセットに含まれる付加情報を確認し、ソースコードの編集日時が所定の期間内の候補例えば、現在からX日前までの期間に編集された候補や、所定の基準日Yから基準日Zまでの間に編集された候補等。期間のスケールは分、時、日、週、月、年等任意。を選択する。このようにすることにより、推薦エンジン182は、より有用である可能性の高い、新しい情報を含むデータセットを推薦することができる。ステップS153において、推薦エンジン182は、各候補データセットに含まれる付加情報を確認し、ソースコードが含まれるライブラリを候補として選択する。例えば、ユーザ110が編集しているソースコードが既にライブラリとして作成されている場合、それを呼び出すだけで良く、ユーザ110が同じソースコードを作成する必要が無くなる。そこで推薦エンジン182は、そのようなライブラリを、関数名やライセンスなどと共に推薦する。このように、推薦エンジン182は、既存のライブラリもユーザに推薦することができる。ステップS154において、推薦エンジン182は、統合開発環境181から供給されたデータセットに含まれる付加情報を確認し、ソースコードの公開の許可設定に応じて候補を選択する。例えば、ユーザ110が作成しているソースコードが公開不可の場合、GPLなど公開を義務づけるソースコードを含むデータセットを候補から除外する。このようにすることにより、推薦エンジン182は、ユーザ110が所望するライセンスのデータセットを推薦することができる。ステップS155において、推薦エンジン182は、各候補データセットに含まれる付加情報を確認し、中間コードの種別が、ユーザ110等により指定される条件に適合する候補を選択する。例えば、ユーザ110は、構文木や仮想機械言語等、中間コードに利用する形式を条件として指定することができる。推薦エンジン182は、この条件に基づいて候補の絞込みを行う。これにより、推薦エンジン182は、推薦の効率化を図ることができる。ステップS156において、推薦エンジン182は、各候補データセットに含まれる付加情報を確認し、中間コード生成のオプションが、ユーザ110が指定する条件に適合する候補を選択する。ユーザ110による、中間コードが生成されたオプションの指定に従うことで、推薦エンジン182は、類似度計算の精度向上を図ることができる。ステップS157において、推薦エンジン182は、ソースコードが実行環境および実行条件に適合する候補を選択する。より具体的には、例えば、各候補データセットについて、端末装置101においてそのソースコードが実行可能であるか否か、処理速度が速いか否か、実行ファイルのサイズが小さいか否か、FORTIFYなどの静的解析済みのものであるか否か等が判定され、判定結果が許容範囲内であるものが候補として選択される。候補の選択基準は任意である。例えば、推薦エンジン182が、これらの各項目に対する判定結果をスコア化し、所定の点数以上の判定結果が得られるデータセットを候補として選択するようにしてもよいし、スコアが上位からNNは自然数番目までのデータセットを候補として選択するようにしてもよいし、これら以外の方法であってもよい。このようにすることにより、推薦エンジン182は、ユーザ110が参考にし易い、より有用なソースコードデータセットを推薦することができる。ステップS158において、推薦エンジン182は、過去の使用履歴において改変の程度改変度の少ない候補を選択する。推薦されたデータセットを利用する場合、ユーザ110は、その用途や環境に応じて、一部または全部変更する改変することができる。改変度は、その改変の程度改変率や改変内容の重要度を示す。この改変の量改変率が少ない実績を持つデータセット程、より少ない改変によって使用することができる可能性が高く、ユーザ110にとってより有用であるとみなすことができる。また、単に改変の量だけでなく、ソースコードのどの部分をどのように改変するか改変内容の重要度によっても、有用度の判断ができる。例えば、変数名のような軽微な改変と、関数や処理内容といった重要な改変とでは、仮に改変率が同一であっても、改変度改変の程度は異なるとみなすことができる。データセットには、このような過去の使用履歴改変に関する情報を含むが付加情報として含まれている。推薦エンジン182は、これを参照し、過去に使用された時の改変率や改変内容が少ないデータセットを候補として選択する。この選択基準は任意である。例えば、改変率や改変内容をスコア化し、そのスコアが所定の基準より低いデータセットを候補として選択するようにしてもよいし、そのスコアが低い方からNNは自然数番目までのデータセットを候補として選択するようにしてもよいし、これら以外の方法であってもよい。ステップS158の処理を終了すると、推薦エンジン182は、候補絞り込み処理を終了する。以上のように、付加情報に基づいて候補の絞り込みを行うことにより、推薦エンジン182は、より有用なソースコードデータセットを推薦することができる。なお、候補の絞り込みに用いる付加情報の項目は、上述した以外の項目が含まれるようにしてもよい。また、上述した各項目の内、一部の項目を省略するようにしてもよい。さらに、各項目の、候補の絞り込みに用いる順図6のフローチャートの各ステップの処理順は、任意であり、上述した以外であってもよい。例えば、ソースコードの検査回数や検査結果等、ソフトウエア品質保証に関する項目を追加するようにしてもよい。例えば、ソースコードの検査回数がより多くて検査結果がより良好であるデータセットを候補として選択するようにしてもよい。この選択基準は任意である。例えば、検査回数や検査結果をスコア化し例えば、検査回数が多いほど、かつ、検査結果が良好なほど、高スコアとし、そのスコアが所定の基準より高いデータセットを候補として選択するようにしてもよいし、そのスコアが高い方からNNは自然数番目までのデータセットを候補として選択するようにしてもよい。もちろん、これら以外の方法であってもよい。[優先度設定処理の流れ]次に、図7のフローチャートを参照して、図5のステップS128において行われる優先度設定処理の流れの例を説明する。優先度設定処理が開始されると、推薦エンジン182は、ステップS171において、ソースコードの言語種別例えばCCJava登録商標FortranPascalLispMLHaskelRuby等が、統合開発環境181から供給されたデータセットと同一の候補の重み付けを高くする。言語種別が同一のソースコードの方が、ユーザ110がより容易に参考にすることができるので、より有用であるとみなすことができる。ステップS172において、推薦エンジン182は、ソースコードの編集日時が現在に近い候補程、重み付けを高くする。編集日時が現在により近いもの程、情報が新しく、より有用であるとみなすことができる。ステップS173において、推薦エンジン182は、ソースコードの公開が許可されていない候補の重み付けを低くする。公開が許可されていないソースコードは、ユーザ110が利用しにくい場合が多い。なお、例えば、ユーザが作成しているプログラムが非公開の場合等、公開が許可されていない候補を選択する場合も考えられる。そのような場合、推薦エンジン182が、ソースコードの公開が許可されていない候補の重み付けを高く設定するようにすればよい。なお、推薦エンジン182が、ユーザが作成してるプログラムのライセンスタイプ例えば公開可であるか否かを判定し、その判定結果に応じて、ソースコードのライセンスタイプに基づいた重み付けを行うようにしてもよい。例えば、推薦エンジン182が、ユーザが作成してるプログラムが公開可である場合、ソースコードの公開が許可されている候補の重み付けを高くし、ソースコードの公開が許可されていない候補の重み付けを低くするようにしてもよい。また、例えば、推薦エンジン182が、ユーザが作成してるプログラムが公開不可である場合、ソースコードの公開が許可されている候補の重み付けを低くし、ソースコードの公開が許可されていない候補の重み付けを高くするようにしてもよい。ステップS174において、推薦エンジン182は、中間コード生成のオプションが適合する候補の重み付けを高くする。ユーザ110による、中間コードが生成されたオプションの指定に従うことで、推薦エンジン182は、類似度計算の精度向上を図ることができる。ステップS175において、推薦エンジン182は、ソースコードが実行環境および実行条件に適合する候補の重み付けを高くする。より具体的には、例えば、各候補データセットについて、端末装置101においてそのソースコードが実行可能であるか否か、処理速度が速いか否か、実行ファイルのサイズが小さいか否か、FORTIFYなどの静的解析済みのものであるか否か等が判定され、これらの各項目に対する判定結果がスコア化され、そのスコアが高いほど、重み付けが高くされる。ステップS176において、推薦エンジン182は、使用実績のある候補の重み付けを高くする。過去にユーザ110が使用したことのあるソースコードデータセット程若しくは、使用頻度が多いソースコードデータセット程、より有用であるとみなすことができる。ステップS177において、推薦エンジン182は、使用履歴において、改変度の少ない候補の重み付けを高くする。改変度が少ない実績を持つデータセット程、より少ない改変によって使用することができる可能性が高く、ユーザ110にとってより有用であるとみなすことができる。ステップS178において、推薦エンジン182は、データセットの登録更新履歴に応じた重み付けを行う。ソースコードデータセットを登録したり、更新したりした者の権限例えば、一般であるか、開発者であるか、管理者であるか、若しくは作成者であるか等によって、そのデータセットに含まれる情報の信頼性の高さが推定される。つまり、そのデータセットの有用度が推定される。なお、ユーザ110自身が登録若しくは更新したデータセットで有れば、そのユーザ110にとって有用である可能性がより高くなる。したがって、推薦エンジン182は、さらに、データセットを登録更新する者が誰かによっても重み付けを行うようにしてもよい。ステップS179において、推薦エンジン182は、ソースコードの自信度が高い候補の重み付けを高くする。ユーザ110が、データサーバ102に対し送るデータセットに対する自信度は、そのデータセットの、そのユーザ110に対する有用度を示すとみなすことができる。ステップS180において、推薦エンジン182は、推薦条件指定に従って重み付けを更新する。より具体的には、推薦エンジン182は、以上のように設定される、付加情報の各項目の重み付けを、ユーザ110により指定される推薦条件指定に従って更新する。このようにすることにより、推薦エンジン182は、ユーザの意向を重み付け優先度に、より直接的に反映させることができる。ステップS181において、推薦エンジン182は、以上のように設定される付加情報の各項目の重み付けを考慮して、推薦データセットの優先度を決定する。ステップS181の処理が終了すると、推薦エンジン182は、優先度設定処理を終了する。このように設定された優先度が、推薦データセットに付加されて、ユーザ110に提示されるので、ユーザ110は、推薦されたデータセットの有用性をより容易に把握することができる。[推薦条件指定更新処理の流れ]ユーザ110は、統合開発環境181が表示する設定画面やプルダウンメニューなどから、任意のタイミングにおいて、優先度の設定に用いられる推薦条件指定の設定を行うことができる。この推薦条件指定は、優先度の設定に用いられる、上述した付加情報の各項目の重み付けのユーザ設定である。つまり、上述したように重み付けの算出方法は予め定められているが、ユーザ110は、この推薦条件指定を用いることにより、各項目の重み付けの値を、ユーザ110自身の嗜好に応じて補正することができる。このような推薦条件指定をユーザ110が更新するために、開発支援システム100において行われる推薦条件指定更新処理の流れの例を、図8のフローチャートを参照して説明する。ステップS211において、統合開発環境181は、ユーザ110に対して、GUIを表示する等、推薦条件指定更新の環境を提供し、ユーザ110からの入力を受け付ける。これに対して、ユーザ110は、ステップS201において、推薦条件指定更新指示を入力する。統合開発環境181は、ステップS212において、入力された推薦条件指定更新指示を、ネットワーク103を介してデータサーバ102に供給する推薦エンジン182に提供する。推薦エンジン182は、ステップS221において、その推薦条件指定更新指示を取得すると、ステップS222において、その指示に基づいて推薦条件指定を更新する。この更新が成功した場合、推薦条件指定がユーザ110の所望する設定に更新される。すなわち、優先度の設定にユーザ110の意向を反映させることができるようになる。なお、この推薦条件指定は、推薦エンジン182が保持していていもよいし、データベース167において管理されるようにしてもよい。推薦条件指定が更新されると、推薦エンジン182は、更新結果通知を、ネットワーク103を介して端末装置101に供給する統合開発環境に更新結果を通知する。統合開発環境181は、ステップS213において、この更新結果通知を取得すると、ステップS214において、その更新結果を、任意のタイミングにおいて、画像や音声として出力部142から出力させ、ユーザ110に提示する。ステップS202において、ユーザ110は、提示された更新結果を参照する。例えば、その結果に満足しない場合、ユーザ110は、点線矢印のように、処理をステップS201に戻し、再度、更新指示を入力することができる。以上のように、ユーザ110は、推薦条件指定を所望の設定にすることができるので、ユーザ110の嗜好に応じた優先度の設定を行うことができる。この設定を用いることにより、推薦エンジン182は、ユーザ110にとってより有用なソースコードデータセットを推薦することができる。上述した一連の処理は、ハードウエアにより実行させることもできるし、ソフトウエアにより実行させることもできる。上述した一連の処理をソフトウエアにより実行させる場合には、そのソフトウエアを構成するプログラムが、ネットワークや記録媒体からインストールされる。この記録媒体は、例えば、図2や図3に示されるように、装置本体とは別に、端末装置101若しくはデータサーバ102の管理者にプログラムを配信するために配布される、プログラムが記録されている磁気ディスクフレキシブルディスクを含む、光ディスクCDROMDVDを含む、光磁気ディスクMDMiniDisc登録商標を含む、もしくは半導体メモリなどよりなるリムーバブルメディア146若しくはリムーバブルメディア166により構成されるだけでなく、装置本体に予め組み込まれた状態で管理者に配信される、プログラムが記録されているROM132若しくはROM152や、記憶部143若しくは記憶部163に含まれるハードディスクなどで構成される。なお、コンピュータが実行するプログラムは、本明細書で説明する順序に沿って時系列に処理が行われるプログラムであっても良いし、並列に、あるいは呼び出しが行われたとき等の必要なタイミングで処理が行われるプログラムであっても良い。また、本明細書において、記録媒体に記録されるプログラムを記述するステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。また、本明細書において、システムとは、複数のデバイス装置により構成される装置全体を表すものである。また、以上において、1つの装置または処理部として説明した構成が、複数の装置または処理部として構成されるようにしてもよい。逆に、以上において複数の装置または処理部として説明した構成が、まとめて1つの装置または処理部として構成されるようにしてもよい。また、各装置または各処理部の構成に上述した以外の構成が付加されるようにしてももちろんよい。さらに、システム全体としての構成や動作が実質的に同じであれば、ある装置または処理部の構成の一部が他の装置または他の処理部の構成に含まれるようにしてもよい。つまり、本開示の実施の形態は、上述した実施の形態に限定されるものではなく、本開示の要旨を逸脱しない範囲において種々の変更が可能である。例えば、以上においては、統合開発環境181が端末装置101において実現され、推薦エンジン182データベース167がデータサーバ102において実現されるように説明したが、これに限らず、上述した統合開発環境181および推薦エンジン182が1つの装置例えば端末装置101において実現されるようにしてもよい。なお、本技術は以下のような構成も取ることができる。1プログラムの中間コード同士を比較する比較部と、前記比較部による比較結果に基づいて、プログラム同士の類似度を算出する類似度算出部とを備える情報処理装置。2前記類似度算出部により算出された前記類似度に基づいて、推薦するプログラムを決定する決定部と、前記決定部により決定された前記プログラムを推薦する推薦部とをさらに備える前記1に記載の情報処理装置。3前記類似度算出部により算出された前記類似度に基づいて、推薦するプログラムの候補を選択する候補選択部と、前記プログラムの付加情報を用いて、前記選択部により選択された前記候補を絞り込む絞り込み部とをさらに備え、前記決定部は、前記絞り込み部により絞り込まれた前記候補を、推薦するプログラムとして決定する前記2に記載の情報処理装置。4前記プログラムの付加情報に応じて、前記決定部により決定された前記プログラムの重み付けを設定する重み付け設定部と、前記重み付け設定部により設定された、各付加情報に対応する重み付けを用いて、前記決定部により決定された前記プログラムの優先度を決定する優先度決定部とをさらに備える前記3に記載の情報処理装置。5ユーザの指示に従って、前記重み付け設定部により設定された、各付加情報に対応する重み付けを更新する重み付け更新部をさらに備える前記4に記載の情報処理装置。6前記付加情報は、前記プログラムのソースコードの言語種別を含む前記3乃至5のいずれかに記載の情報処理装置。7前記付加情報は、前記プログラムのソースコードの編集日時を含む前記3乃至6のいずれかに記載の情報処理装置。8前記付加情報は、前記プログラムのソースコードが含まれるライブラリを示す情報を含む前記3乃至7のいずれかに記載の情報処理装置。9前記付加情報は、前記プログラムのソースコードのライセンスを含む前記3乃至8のいずれかに記載の情報処理装置。10前記付加情報は、前記プログラムの中間コードの種別を含む前記3乃至9のいずれかに記載の情報処理装置。11前記付加情報は、前記プログラムの中間コードを生成するためのオプションを含む前記3乃至10のいずれかに記載の情報処理装置。12前記付加情報は、前記プログラムのソースコードの実行結果を含む前記3乃至11のいずれかに記載の情報処理装置。13前記付加情報は、前記プログラムのソースコードの使用実績を含む前記3乃至12のいずれかに記載の情報処理装置。14前記付加情報は、前記プログラムのソースコードの改変度を含む前記3乃至13のいずれかに記載の情報処理装置。15前記付加情報は、前記プログラムの更新に関する情報を含む前記3乃至14のいずれかに記載の情報処理装置。16前記付加情報は、前記プログラムのソースコードの自信度を含む前記3乃至15のいずれかに記載の情報処理装置。17プログラムのソースコードを中間コードに変換するコード変換部をさらに備え、前記比較部は、プログラムの、前記コード変換部によりソースコードが変換された中間コード同士を比較する前記1乃至16のいずれかに記載の情報処理装置。18ユーザの指示を受け付ける受付部と、前記受付部により受け付けられた前記ユーザの指示に基づいて、プログラムのソースコードを作成するソースコード作成部とをさらに備え、前記コード変換部は、前記ソースコード作成部により作成されたソースコードを中間コードに変換する前記17に記載の情報処理装置。19情報処理装置の情報処理方法であって、前記比較部は、プログラムの中間コード同士を比較し、前記類似度算出部は、比較結果に基づいて、プログラム同士の類似度を算出する情報処理方法。