(57)【要約】【課題】ソフトウェアがライブラリを参照することによって機能を追加する場合に、追加する機能に関して、漏れ及び重複が発生しないように、柔軟に機能を追加する。【解決手段】ソフトウェア生成装置５０は、ソフトウェアから参照されることによって、そのソフトウェアに１以上の機能を追加するライブラリを、当該ソフトウェアが参照できるように当該ソフトウェアを生成する手順を示すライブラリ管理情報５７１が記憶された記憶部５７と、ライブラリが、特定の機能を備えているか否かを検証する検証部５１と、ライブラリから、特定の機能を実現する部分を抽出する抽出部５２と、検証部５１が検証した結果及びライブラリ管理情報５７１に基づいて、ソフトウェアが、抽出部５２によってライブラリから抽出された特定の機能を実現する部分を参照できるようにソフトウェアを生成する生成部５３と、を備える。【選択図】      図１５
2016133923.tif 000002
【特許請求の範囲】
【請求項１】
ソフトウェアから参照されることによって、そのソフトウェアに１以上の機能を追加するライブラリを、前記ソフトウェアが参照できるように前記ソフトウェアを生成する手順を示すライブラリ管理情報が記憶された記憶手段と、
前記ライブラリが、特定の前記機能を備えているか否かを検証する検証手段と、
前記ライブラリから、前記特定の機能を実現する部分を抽出する抽出手段と、
前記検証手段が検証した結果及び前記ライブラリ管理情報に基づいて、前記ソフトウェアが、前記抽出手段によって前記ライブラリから抽出された前記特定の機能を実現する部分を参照できるように前記ソフトウェアを生成する生成手段と、
を備えるソフトウェア生成装置。
【請求項２】
前記生成手段は、複数の前記ライブラリのうち、備えている機能の種類が最も多い特定のライブラリと、前記抽出手段によって、前記特定のライブラリを除くいずれかの前記ライブラリから抽出された、前記特定のライブラリが備えていない機能を実現する部分と、を参照できるように前記ソフトウェアを生成する、
請求項１に記載のソフトウェア生成装置。
【請求項３】
前記検証手段は、前記ライブラリを参照可能であり、前記特定の機能を使用する記述を含むテストプログラムが情報処理装置によって実行された実行結果が、前記特定の機能に応じた期待値と一致した場合に、前記ライブラリが前記特定の機能を備えていると判定する、
請求項１又は２に記載のソフトウェア生成装置。
【請求項４】
前記抽出手段は、前記ライブラリを参照可能であり、前記特定の機能を使用する記述を含むテストプログラムが情報処理装置によって実行されたときの実行網羅度を測定するツールを使用することによって、前記特定の機能を実現する部分を抽出する、
請求項１乃至２のいずれかに記載のソフトウェア生成装置。
【請求項５】
前記生成手段によって生成された前記ソフトウェアが情報処理装置によって実行されたときの実行性能を測定し、前記生成手段によって生成された複数種類の前記ソフトウェアのうち、前記実行性能が最もよい前記ソフトウェアを決定する性能評価手段をさらに備える、
請求項１乃至４のいずれかに記載のソフトウェア生成装置。
【請求項６】
前記特定の機能を備えた、複数の前記ライブラリに対する評価情報を外部から入手して、前記評価情報の内容を基に、評価基準を満たす少なくともいずれかの前記ライブラリを選別する選別手段をさらに備え、
前記生成手段は、前記選別手段が選別した前記ライブラリを対象として、前記ソフトウェアを生成する、
請求項１乃至５のいずれかに記載のソフトウェア生成装置。
【請求項７】
前記選別手段は、通信ネットワークを経由して入手可能な情報に対して、前記ライブラリを識別可能な情報と、所定のキーワードとを組み合わせて検索することによって、前記評価情報を入手する、
請求項６に記載のソフトウェア生成装置。
【請求項８】
前記選別手段は、通信ネットワークを経由して、前記ライブラリのソースコードリポジトリに関するログを参照することによって、開発に関する所定の期間内におけるコミット回数を前記評価情報として入手する、
請求項６に記載のソフトウェア生成装置。
【請求項９】
記憶手段が、ソフトウェアから参照されることによって、そのソフトウェアに１以上の機能を追加するライブラリを、前記ソフトウェアが参照できるように前記ソフトウェアを生成する手順を示すライブラリ管理情報を記憶し、
情報処理装置によって、
前記ライブラリが、特定の前記機能を備えているか否かを検証し、
前記ライブラリから、前記特定の機能を実現する部分を抽出し、
前記ライブラリが前記特定の前記機能を備えているか否かを検証した結果及び前記ライブラリ管理情報に基づいて、前記ソフトウェアが、前記ライブラリから抽出された前記特定の機能を実現する部分を参照できるように前記ソフトウェアを生成する、
ソフトウェア生成方法。
【請求項１０】
記憶手段が、ソフトウェアから参照されることによって、そのソフトウェアに１以上の機能を追加するライブラリを、前記ソフトウェアが参照できるように前記ソフトウェアを生成する手順を示すライブラリ管理情報を記憶し、
前記ライブラリが、特定の前記機能を備えているか否かを検証する検証処理と、
前記ライブラリから、前記特定の機能を実現する部分を抽出する抽出処理と、
前記検証処理によって検証された結果及び前記ライブラリ管理情報に基づいて、前記ソフトウェアが、前記抽出手段によって前記ライブラリから抽出された前記特定の機能を実現する部分を参照できるように前記ソフトウェアを生成する生成処理と、
をコンピュータに実行させる、ソフトウェア生成プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本願発明は、ソフトウェアに機能を追加するライブラリを当該ソフトウェアが参照できるように、当該ソフトウェアを生成するソフトウェア生成装置等に関する。
【背景技術】
【０００２】
現在、インターネットにおけるＷｅｂサイトでは、様々な仕様のＨＴＭＬ（ＨｙｐｅｒＴｅｘｔ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）、Ｊａｖａ（登録商標）スクリプト、及び、ＣＳＳ（Ｃａｓｃａｄｉｎｇ  Ｓｔｙｌｅ  Ｓｈｅｅｔｓ）等の言語が使用されている。このようなインターネットの環境においては、例えば、最新仕様の言語を使用して構築されたＷｅｂサイトに、仕様が古いブラウザを使用してアクセスした場合、そのＷｅｂサイトが提供する情報を正常に表示あるいは取得できない場合があるという問題がある。したがって、この問題を解決可能な技術への期待が高まってきている。
【０００３】
このような技術に関連する技術の一例として、特許文献１には、コンテンツサーバにより提供されるコンテンツの種別を判別し、当該コンテンツを表示するのに必要なモジュールが自装置にない場合は、通信ネットワークを経由して当該モジュールを取得するブラウザ装置が開示されている。これにより、このブラウザ装置は、仕様が新しい言語を使用したコンテンツを正常に表示あるいは取得する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開2004-46607号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
仕様が古いブラウザが、仕様が新しい言語によって生成されたコンテンツを取扱うことができるようにする技術の一つとして、ポリフィルライブラリが知られている。ポリフィルライブラリは、特許文献１におけるモジュールに相当する。このポリフィルライブラリは、仕様が古いブラウザと仕様が新しいブラウザとの間の機能に関する差分を吸収するライブラリである。仕様が古いブラウザは、自身が備える機能のみでは、正常に表示あるいは取得できないコンテンツにアクセスする際に、ポリフィルライブラリを参照することによって、当該コンテンツを取り扱うことができる。
【０００６】
現在のＷｅｂサイトにおいて使用される言語の仕様、及び、様々なユーザが使用するブラウザの仕様は多種多様である。したがって、１つのポリフィルライブラリが、多種多様な言語及びブラウザの全てをサポートすることは困難である。このことから、仕様が古いブラウザは、通常、複数のポリフィルファイブラリを参照する必要がある。
【０００７】
この場合、例えば、仕様が古いブラウザが参照する複数のポリフィルライブラリがサポートする機能に漏れがあった場合、このブラウザが取り扱うことができないコンテンツが発生する。また、仕様が古いブラウザが参照する複数のポリフィルライブラリの間で、サポートする機能が重複する場合、このブラウザは必要以上の機能を組み込むことになるので、ブラウザが使用する資源の量が必要以上に増加したり、ブラウザが処理するスピードが遅くなったりする虞がある。すなわち、仕様が古いブラウザが、ポリフィルライブラリから、必要な機能を、漏れがなく、かつ、重複しないように、柔軟に組み込めるようにすることが課題である。特許文献１に記載されたブラウザ装置は、この課題を解決できない。本願発明の主たる目的は、この課題を解決したソフトウェア生成装置等を提供することである。
【課題を解決するための手段】
【０００８】
本願発明の一態様に係るソフトウェア生成装置は、ソフトウェアから参照されることによって、そのソフトウェアに１以上の機能を追加するライブラリを、前記ソフトウェアが参照できるように前記ソフトウェアを生成する手順を示すライブラリ管理情報が記憶された記憶手段と、前記ライブラリが、特定の前記機能を備えているか否かを検証する検証手段と、前記ライブラリから、前記特定の機能を実現する部分を抽出する抽出手段と、前記検証手段が検証した結果及び前記ライブラリ管理情報に基づいて、前記ソフトウェアが、前記抽出手段によって前記ライブラリから抽出された前記特定の機能を実現する部分を参照できるように前記ソフトウェアを生成する生成手段と、を備える。
【０００９】
上記目的を達成する他の見地において、本願発明の一態様に係るソフトウェア生成方法は、記憶手段が、ソフトウェアから参照されることによって、そのソフトウェアに１以上の機能を追加するライブラリを、前記ソフトウェアが参照できるように前記ソフトウェアを生成する手順を示すライブラリ管理情報を記憶し、情報処理装置によって、前記ライブラリが、特定の前記機能を備えているか否かを検証し、前記ライブラリから、前記特定の機能を実現する部分を抽出し、前記ライブラリが前記特定の前記機能を備えているか否かを検証した結果及び前記ライブラリ管理情報に基づいて、前記ソフトウェアが、前記ライブラリから抽出された前記特定の機能を実現する部分を参照できるように前記ソフトウェアを生成する。
【００１０】
また、上記目的を達成する更なる見地において、本願発明の一態様に係るソフトウェア生成プログラムは、記憶手段が、ソフトウェアから参照されることによって、そのソフトウェアに１以上の機能を追加するライブラリを、前記ソフトウェアが参照できるように前記ソフトウェアを生成する手順を示すライブラリ管理情報を記憶し、前記ライブラリが、特定の前記機能を備えているか否かを検証する検証処理と、前記ライブラリから、前記特定の機能を実現する部分を抽出する抽出処理と、前記検証処理によって検証された結果及び前記ライブラリ管理情報に基づいて、前記ソフトウェアが、前記抽出手段によって前記ライブラリから抽出された前記特定の機能を実現する部分を参照できるように前記ソフトウェアを生成する生成処理と、をコンピュータに実行させる。
【００１１】
更に、本発明は、係るソフトウェア生成プログラム（コンピュータプログラム）が格納された、コンピュータ読み取り可能な、不揮発性の記録媒体によっても実現可能である。
【発明の効果】
【００１２】
本願発明は、ソフトウェアがライブラリを参照することによって機能を追加する場合に、追加する機能に関して、漏れ及び重複が発生しないように、柔軟に機能を追加することを可能とする。
【図面の簡単な説明】
【００１３】
【図１】本願発明の第１の実施形態に係るソフトウェア生成システムの構成を示すブロック図である。
【図２】本願発明の第１の実施形態に係るライブラリ管理情報の構成を例示する図である。
【図３】本願発明の第１の実施形態に係るプロパティ管理情報の構成を例示する図である。
【図４】本願発明の第１の実施形態に係るテストプログラムのソースコードを例示する図である。
【図５】本願発明の第１の実施形態に係るテストプログラムを実行したときの描画イメージを例示する図である。
【図６】本願発明の第１の実施形態に係るサポート検証結果情報の構成を例示する図である。
【図７】本願発明の第１の実施形態に係る抽出部が、ライブラリから特定のプロパティを実現する部分を抽出したソースコードを例示する図である。
【図８】本願発明の第１の実施形態に係る生成部が、テストプログラムがライブラリを参照できるようにテストプログラムを更新したソースコードを例示する図である。
【図９】本願発明の第１の実施形態に係る性能評価情報の構成を例示する図である。
【図１０】本願発明の第１の実施形態に係るソフトウェア生成システムが、サポート検証結果情報を生成する動作を示すフローチャートである。
【図１１】本願発明の第１の実施形態に係るソフトウェア生成システムが、目的のプロパティをサポートするライブラリを参照できるようにソフトウェアを生成する動作を示すフローチャートである。
【図１２】本願発明の第１の実施形態に係るソフトウェア生成システムが、生成したソフトウェアのうち、性能が最も良いソフトウェアを決定する動作を示すフローチャートである。
【図１３】本願発明の第２の実施形態に係るソフトウェア生成システムの構成を示すブロック図である。
【図１４】本願発明の第２の実施形態に係る評価基準情報の構成を例示する図である。
【図１５】本願発明の第３の実施形態に係るソフトウェア生成装置の構成を示すブロック図である。
【図１６】本願発明の各実施形態に係るソフトウェア生成装置を実行可能な情報処理装置の構成を例示するブロック図である。
【発明を実施するための形態】
【００１４】
以下、本願発明の実施の形態について図面を参照して詳細に説明する。
【００１５】
＜第１の実施形態＞
図１は、本発明の第一の実施の形態のソフトウェア生成システム１を概念的に示すブロック図である。本実施形態に係るソフトウェア生成システム１は、大別して、ソフトウェア生成装置１０、及び、情報処理装置２０を備えている。ソフトウェア生成装置１０は、情報処理装置２０と通信可能に接続されている。
【００１６】
情報処理装置２０は、サーバ装置、あるいは、クライアント端末装置等の、ＣＰＵ（Ｃｅｎｔｒａｌ＿Ｐｒｏｃｅｓｓｉｎｇ＿Ｕｎｉｔ）やメモリ等（いずれも不図示）を備えた装置である。情報処理装置２０は、複数種類のブラウザ２１−１乃至２１−ｍ（ｍは１以上の任意の整数）を実行することができる。ブラウザ２１−１乃至２１−ｍとしては、例えば、Ｉｎｔｅｒｎｅｔ  Ｅｘｐｌｏｒｅｒ（登録商標）、Ｆｉｒｅｆｏｘ（登録商標）、Ｃｈｒｏｍｅ（登録商標）等が知られている。
【００１７】
ソフトウェア生成装置１０は、検証部１１、抽出部１２、生成部１３、性能評価部１４、ソフトウェア記憶部１５、ライブラリ記憶部１６、及び、管理情報記憶部１７を備えている。検証部１１、抽出部１２、生成部１３、及び、性能評価部１４は、電子回路の場合もあれば、コンピュータプログラムとそのコンピュータプログラムに従って動作するプロセッサによって実現される場合もある。ソフトウェア記憶部１５、ライブラリ記憶部１６、及び、管理情報記憶部１７は、電子メモリあるいは磁気ディスク等の記憶デバイスである。ソフトウェア記憶部１５、ライブラリ記憶部１６、及び、管理情報記憶部１７は、ソフトウェア生成装置２０と通信可能に接続された、外部のストレージ装置等に備えられてもよい。
【００１８】
ソフトウェア記憶部１５は、ブラウザ２１−１乃至２１−ｍによって実行されるアプリケーションプログラム、及び、テストプログラム等の、様々なソフトウェアを記憶している。
【００１９】
ライブラリ記憶部１６は、ブラウザ２１−１乃至２１−ｍがソフトウェア記憶部１５に記憶されたソフトウェアを実行する際に参照するライブラリ１６０−１乃至１６０−ｎ（ｎは２以上の任意の整数）を格納している。ライブラリ１６０−１乃至１６０−ｎは、例えば、ポリフィルライブラリである。
【００２０】
管理情報記憶部１７は、ライブラリ管理情報１７１、プロパティ管理情報１７２、サポート検証結果情報１７３、及び、性能評価情報１７４を記憶している。
【００２１】
ライブラリ管理情報１７１の構成を図２に例示する。ライブラリ管理情報１７１は、ライブラリ１６０−１乃至１６０−ｎの各々について、ソースコードが格納されたライブラリ記憶部１６におけるパスを示す情報と、ソフトウェアがライブラリを参照可能にするためのソフトウェア変換ルールを示す情報と、が関連付けられた情報である。図２に示す例では、ライブラリ管理情報１７１は、例えば、ライブラリ１６０−１のソースコードが、ライブラリ記憶部１６における「/libraries/library1/」というパスに格納されていることを示している。そして、ライブラリ管理情報１７１は、ライブラリ１６０−１を参照可能にするためのソフトウェア変換ルールとして、「各ＣＳＳ定義の末尾にライブラリの読み込み処理を追加」することを示している。尚、図２では、説明における便宜上、このソフトウェア変換ルールを文章により示しているが、実際には、ライブラリ管理情報１７１は、ソフトウェア生成装置１０が解釈可能なフォーマットによって、このソフトウェア変換ルールを示している。
【００２２】
プロパティ管理情報１７２の構成を、図３に例示する。プロパティとは、ソフトウェアが備える機能のことであり、例えば関数等である。図３に例示するプロパティ管理情報１７２は、描画機能に関するプロパティを管理する情報である。プロパティ管理情報１７２は、プロパティごとに、以下のファイルが関連付けられた情報である。
・ソフトウェアが当該プロパティをサポートしている（備えている）か否かを検証可能なテストプログラムであるファイル、
・ソフトウェアが当該プロパティをサポートしている場合の描画イメージを表すファイル、
・ソフトウェアが当該プロパティをサポートしていない場合の描画イメージを表すファイル。
【００２３】
図４に、プロパティ「linear-gradient」をサポートしているか否かを検証するテストプログラム「/tests/testLinearGradient.html」のソースコードを例示する。プロパティ「linear-gradient」は、グラデーション表示を行うプロパティである。このプロパティにおいて、第１引数は、グラデーションの方向、第２及び第３引数は、順に、グラデーションの開始位置及び終了位置における色を表している。図４に示すテストプログラムは、「背景を画面下方向に向かって、白（#ffffff）から黒（#000000）にグラデーション表示を行うことを指定している（＃は１６進数表記を表す）。
【００２４】
図５（ａ）及び（ｂ）に、順に、ソフトウェアがプロパティ「linear-gradient」をサポートしている場合、及び、サポートしていない場合の描画イメージを例示する。これらの描画イメージは、図３に例示するプロパティ管理情報１７２が表す通り、ファイルとして管理情報記憶部１７に記憶されている。これらの描画イメージのファイルは、ソフトウェアがプロパティ「linear-gradient」をサポートしている、あるいは、サポートしていないことを判定する際の期待値を示す情報である。
【００２５】
検証部１１は、ライブラリ管理情報１７１に登録されているライブラリが、プロパティ管理情報１７２に登録されているプロパティをサポートしているか否かを検証し、検証結果を、サポート検証結果１７３として、管理情報記憶部１７に格納する。検証部１１は、ライブラリ管理情報１７１に登録され、ライブラリ記憶部１６に記憶されているライブラリのうち、いずれかのライブラリ１６０−ｉ（ｉは１乃至ｎのいずれかの整数）を検証対象として選択する。検証部１１は、プロパティ管理情報１７２に登録されているいずれかのプロパティを検証対象として選択する。
【００２６】
検証部１１が検証対象として選択したプロパティに関するテストプログラムは、プロパティ管理情報１７２に基づいて、生成部１３によって、ソフトウェア記憶部１５から読み出される。当該テストプログラムは、生成部１３によって、ライブラリ１６０−ｉを参照できるように更新される。検証部１１は、生成部１３によって更新された当該テストプログラムを、ブラウザ２１−ｋ（ｋは１乃至ｍのいずれかの整数）に実行させる。検証部１１は、ブラウザ２１−ｋが当該テストプログラムを実行することによって情報処理装置２０のディスプレイに表示した画面のスクリーンショットを採取する。検証部１１は、採取したスクリーンショットを、プロパティ管理情報１７２に登録された、検証対象であるプロパティに関連付けられた描画イメージを表すファイルと比較する。
【００２７】
検証部１１は、採取したスクリーンショットが、サポート有りの場合における描画イメージと一致する場合、ライブラリ１６０−ｉが検証対象であるプロパティをサポートしていることを示すサポート検証結果情報１７３を、管理情報記憶部１７に格納する。検証部１１は、採取したスクリーンショットが、サポート無しの場合における描画イメージと一致する場合、ライブラリ１６０−ｉが検証対象であるプロパティをサポートしていないことを示すサポート検証結果情報１７３を、管理情報記憶部１７に格納する。
【００２８】
サポート検証結果情報１７３の構成を、図６に例示する。サポート検証結果情報１７３は、ライブラリ１６０−１乃至１６０−ｎの各々について、個々のプロパティをサポートしているか否かを示す情報である。
【００２９】
検証部１１は、ライブラリ１６０−ｉと、検証対象であるプロパティと、ブラウザ２１−ｋとの組み合わせを変えながら、上述した検証処理を繰り返し実行する。本実施形態では、検証部１１は、ブラウザ２１−１乃至２１−ｍの全てについて、ライブラリ１６０−ｉが検証対象であるプロパティをサポートしている場合に、サポート有りと判定する。すなわち、検証部１１は、ブラウザ２１−１乃至２１−ｍの少なくともいずれかについて、ライブラリ１６０−ｉが検証対象であるプロパティをサポートしていない場合は、サポート無しと判定する。尚、サポート検証結果情報１７３が、ブラウザ２１−１乃至２１−ｍを識別可能な項目を含むことにより、ソフトウェア生成装置１０が、ブラウザの種別ごとに、サポート検証結果情報１７３を管理するようにしてもよい。
【００３０】
抽出部１２は、ライブラリ１６０−ｉのソースコードから、特定のプロパティを実現する部分を抽出する。図６に例示するサポート検証結果情報１７３は、ライブラリ１６０−１が、プロパティ「box-sizing」を除く３つのプロパティをサポートし、ライブラリ１６０−２が、プロパティ「background-size」及び「box-sizing」をサポートしていることを示している。この場合、ソフトウェア生成装置１０は、ライブラリ１６０−１、及び、ライブラリ１６０−２から抽出したプロパティ「box-sizing」を実現する部分を参照可能なソフトウェアを生成する。これにより、当該ソフトウェアは、これら４つのプロパティについて、漏れなくかつ重複しないように、ライブラリを参照することができる。
【００３１】
図７に、抽出部１２が、ライブラリ１６０−ｉから特定のプロパティ（プロパティＡ）を実現する部分を抽出したソースコードを例示する。図７（ａ）に、抽出元のライブラリ１６０−ｉのソースコードを示す。抽出部１２は、ブラウザ２１−ｋが、ライブラリ１６０−ｉを参照可能に生成された、プロパティＡを実行するテストプログラムを実行中に、当該プログラムの実行網羅度を測定する。実行網羅度は、プログラム全体の中で、どの部分が実行されたのかを示す指標である。実行網羅度を測定する既存のツールとしては、例えば、ＪＳＣｏｖｅｒａｇｅ等が知られている。これにより、抽出部１２は、ライブラリ１６０−ｉにおけるプロパティＡを実現する部分を特定し、特定した部分のソースコードを抽出する。
【００３２】
図７（ｂ）に、抽出元のライブラリ１６０−ｉのソースコードから、抽出部１２によって抽出された、プロパティＡを実現する部分のソースコードを示す。尚、抽出部１２が、ライブラリ１６０−ｉにおけるプロパティＡを実現する部分を特定する方法としては、実行網羅度を測定するツールを使用して動的に分析する方法の他、ライブラリ１６０−ｉのソースコードを所定の基準に基づいて静的に分析する方法などもある。抽出部１２は、ライブラリ１６０−ｉから抽出したプロパティＡを実現する部分のソースコードを、部分ライブラリとして、ライブラリ記憶部１６へ格納する。
【００３３】
生成部１３は、ライブラリ管理情報１７１に基づいて、ライブラリ１６０−ｉを参照可能なソフトウェアを生成（以降、既存ソフトウェアを更新する場合も含む）する。生成部１３は、例えば、ライブラリ１６０−１を参照可能なソフトウェアを生成する場合、図２に示すライブラリ管理情報１７１に基づいて、ライブラリ記憶部１６における「/libraries/library1/」に格納されたソースコードについて、「各ＣＳＳ定義の末尾にライブラリの読み込み処理を追加」する。生成部１３は、抽出部１２によってライブラリ１６０−ｉから抽出された部分ライブラリも、ライブラリ管理情報１７１が示す、ライブラリ１６０−ｉに関するソフトウェア変換ルールを適用する。
【００３４】
図８に、生成部１３が、図４に示すプロパティ「linear-gradient」をサポートしているか否かを検証するテストプログラム「/tests/testLinearGradient.html」を、ライブラリ１６０−１を参照可能なように更新したソースコードを例示する。テストプログラム「/tests/testLinearGradient.html」は、生成部１３によって１行追加されることによって、ライブラリ１６０−１を参照可能となる。
【００３５】
生成部１３は、ソフトウェア記憶部１５から、ライブラリ１６０−ｉが検証対象であるプロパティをサポートしているか否かを検証するテストプログラムを読み出して、当該テストプログラムがライブラリ１６０−ｉを参照できるように当該プログラムを更新する。
【００３６】
生成部１３は、ブラウザ２１−ｋが実行する通常のアプリケーションソフトウェアがプロパティ管理情報１７２に登録されたプロパティをサポートできるように、当該アプリケーションソフトウェアを生成する。この際、生成部１３は、サポート検証結果情報１７３に基づいて、サポートするプロパティの種類が最も多いライブラリ１６０−ｉを選択する。生成部１３は、ライブラリ１６０−ｉがサポートしていない未サポートプロパティを選択する。生成部１３は、未サポートプロパティをサポートするライブラリ１６０−ｊ（ｊは１乃至ｎのうち、ｉを除くいずれかの整数）を選択する。生成部１３は、ライブラリ管理情報１７１に基づいて、選択した未サポートプロパティをテストするテストプトグラムがライブラリ１６０−ｊを参照できるように、当該テストプログラムを更新する。ライブラリ１６０−ｊにおける当該未サポートプロパティを実現する部分は、抽出部１２によって抽出され、部分ライブラリとして、ライブラリ記憶部１６へ格納される。
【００３７】
生成部１３は、当該未サポートプロパティをサポートするライブラリが、ライブラリ１６０−ｊ以外にも存在する場合、そのライブラリについても、上述したライブラリ１６０−ｊに関する処理と同様の処理を行う。生成部１３は、ライブラリ１６０−ｉがサポートしていない未サポートプロパティが他にも存在する場合、その未サポートプロパティについても、上述した処理と同様の処理を行う。生成部１３は、また、サポートするプロパティの種類が最も多いライブラリが、ライブラリ１６０−ｉ以外にも存在する場合、そのライブラリについても、上述したライブラリ１６０−ｉに関する処理と同様の処理を行う。
【００３８】
尚、生成部１３は、最初に、サポートするプロパティの種類が最も多いライブラリ１６０−ｉを選択するのではなく、別の基準にしたがって、ライブラリ１６０−ｉを選択するようにしてもよい。生成部１３は、ライブラリ１６０−１乃至１６０−ｎ、及び、抽出部１２によってライブラリ１６０−１乃至１６０−ｎから抽出された部分ライブラリを様々に組み合わせて、それらのライブラリを参照できるようにソフトウェアを生成する。すなわち、生成部１３は、仕様が同様である１以上のソフトウェアを生成する。生成部１３は、生成したソフトウェアをソフトウェア記憶部１５へ格納する。
【００３９】
性能評価部１４は、生成部１３によって生成された、仕様が同様である１以上のソフトウェアのうち、実行性能が最もよいソフトウェアを決定する。
【００４０】
性能評価部１４は、仕様が同様である１以上のソフトウェアのうちの１つをソフトウェア記憶部１５から読み出す。性能評価部１４は、読み出したソフトウェアを、ブラウザ２１−ｋに実行させる。性能評価部１４は、ブラウザ２１−ｋが当該ソフトウェアを実行しているときの実行性能を、例えば、情報処理装置２０からログ情報を収集することによって測定する。性能評価部１４は、測定結果である性能評価情報１７４を、管理情報記憶部３７へ格納する。性能評価部１４は、仕様が同様である１以上のソフトウェアについて、上述した処理を繰り返し実行する。
【００４１】
図９に、性能評価情報１７４の構成を例示する。図９に例示する性能評価情報１７４は、ブラウザ２１−ｋが各ソフトウェアを実行したときの、表示時間、最大ＣＰＵ使用率、及び、メモリ使用率の値を含んでいる。性能評価情報１７４は、表示時間、最大ＣＰＵ使用率、及び、メモリ使用率以外の項目を含んでもよい。図９に示す例では、ブラウザ２１−１が、仕様が同様である４つのプログラムＡ乃至Ｄを実行したときの実行性能が示されている。
【００４２】
図９に示す例では、性能評価部１４は、表示時間、最大ＣＰＵ使用率、及び、メモリ使用量（ＫＢ：キロバイト）について、値が最も小さいプログラムＡが、４つのプログラムＡ乃至Ｄのうちで実行性能が最も高いと判定する。性能評価部１４は、この判定結果を、性能評価情報１７４に反映する。ソフトウェア生成装置１０は、生成部１３が生成あるいは更新した仕様が同様であるソフトウェアのうち、性能評価情報１７４を参照することによって、実行性能が最も高いソフトウェアをユーザに提示する。
【００４３】
次に図１０のフローチャートを参照して、本実施形態に係るソフトウェア生成システム１が、サポート検証結果情報１７３を生成する動作（処理）について詳細に説明する。
【００４４】
検証部１１は、ライブラリ１６０−１乃至１６０−ｎのうち、ライブラリ１６０−ｉを検証対象として選択する（ステップＳ１０１）。検証部１１は、プロパティ管理情報１７２に登録されているいずれかのプロパティを、検証対象とするプロパティとして選択する（ステップＳ１０２）。生成部１３は、選択された検証対象プロパティをテストするテストプログラムが、ライブラリ１６０−ｉを参照できるように、当該テストプログラムを更新する（ステップＳ１０３）。
【００４５】
検証部１１は、更新されたテストプログラムを、ブラウザ２１−ｋに実行させる（ステップＳ１０４）。検証部１１は、プラウザ２１−ｋが表示した画面のスクリーンショットを採取する（ステップＳ１０５）。検証部１１は、採取したスクリーンショットを、プロパティ管理情報１７２に登録されている描画イメージと比較する（ステップＳ１０６）。
【００４６】
採取したスクリーンショットが、「サポート有り」を示す描画イメージと一致しない（すなわち、「サポート無し」を示す描画イメージと一致する）場合（ステップＳ１０７でＮｏ）、検証部１１は、サポート検証結果情報１７３に、「サポート無し」であることを登録し（ステップＳ１０８）、処理はステップＳ１１１へ進む。
【００４７】
採取したスクリーンショットが、「サポート有り」を示す描画イメージと一致する場合（ステップＳ１０７でＹｅｓ）、処理はステップＳ１０９へ進む。未検証であるブラウザが存在する場合（ステップＳ１０９でＹｅｓ）、処理は、ｋの値を変更したのち、ステップＳ１０４へ戻る。未検証であるブラウザが存在しない場合（ステップＳ１０９でＮｏ）、検証部１１は、サポート検証結果情報１７３に、「サポート有り」であることを登録する（ステップＳ１１０）。
【００４８】
未検証であるプロパティが存在する場合（ステップＳ１１１でＹｅｓ）、処理はステップＳ１０２へ戻る。未検証であるプロパティが存在しない場合（ステップＳ１１１でＮｏ）、処理はステップＳ１１２へ進む。未検証であるライブラリが存在する場合（ステップＳ１１２でＹｅｓ）、処理はステップＳ１０１へ戻る。未検証であるライブラリが存在しない場合（ステップＳ１１２でＮｏ）、全体の処理は終了する。
【００４９】
次に図１１のフローチャートを参照して、本実施形態に係るソフトウェア生成システム１が、目的のプロパティをサポートするライブラリを参照できるようにソフトウェアを生成する動作（処理）について詳細に説明する。
【００５０】
生成部１３は、サポート検証結果情報１７３に基づき、サポートするプロパティの種類が最も多いライブラリ１６０−ｉを選択する（ステップＳ２０１）。生成部１３は、選択したライブラリ１６０−ｉがサポートしていない未サポートプロパティを選択する（ステップＳ２０２）。生成部１３は、選択した未サポートプロパティをサポートするライブラリ１６０−ｊを選択する（ステップＳ２０３）。
【００５１】
生成部１３は、選択した未サポートプロパティをテストするテストプログラムラムがライブラリ１６０−ｊを参照できるように、当該テストプログラムを更新する（ステップＳ２０４）。検証部１１は、更新されたテストプログラムをプラウザ２１−ｋに実行させる（ステップＳ２０５）。抽出部１２は、ライブラリ１６０−ｊにおいて、選択した未サポートプロパティを実現している部分を特定し、当該部分を抽出した部分ライブラリを、ライブラリ記憶部１６へ格納する（ステップＳ２０６）。
【００５２】
選択した未サポートプロパティをサポートするライブラリが他にも存在する場合（ステップＳ２０７でＹｅｓ）、処理はステップＳ２０３へ戻る。選択した未サポートプロパティをサポートするライブラリが他には存在しない場合（ステップＳ２０７でＮｏ）、処理はステップＳ２０８へ進む。
【００５３】
ライブラリ１６０−ｉがサポートしていないプロパティが他にも存在する場合（ステップＳ２０８でＹｅｓ）、処理はステップＳ２０２へ戻る。ライブラリ１６０−ｉがサポートしていないプロパティが他には存在しない場合（ステップＳ２０８でＮｏ）、生成部１３は、ライブラリ１６０−ｉと、１以上の部分ライブラリによる１以上の組み合わせを参照可能なようにソフトウェアを生成し、生成したソフトウェアをソフトウェア記憶部１５へ格納する（ステップＳ２０９）。
【００５４】
サポートするプロパティの種類が最も多いライブラリが他にも存在する場合（ステップＳ２１０でＹｅｓ）、処理はステップＳ２０１へ戻る。サポートするプロパティの数が最も多いライブラリが他には存在しない場合（ステップＳ２１０でＮｏ）、全体の処理は終了する。
【００５５】
次に図１２のフローチャートを参照して、本実施形態に係るソフトウェア生成システム１が、生成したソフトウェアのうち、性能が最も良いソフトウェアを決定する動作（処理）について詳細に説明する。
【００５６】
性能評価部１４は、生成部１３によって生成された仕様が同様である複数のソフトウェアのうちの１つを、ソフトウェア記憶部１５から読み出す（ステップＳ３０１）。検証部１１は、読み出されたソフトウェアをプラウザ２１−ｋに実行させる（ステップＳ３０２）。性能評価部１４は、ブラウザ２１−ｋが当該ソフトウェアを実行しているときの実行性能を測定し、その測定結果である性能評価情報１７４を管理情報記憶部１７に格納する（ステップＳ３０３）。
【００５７】
実行性能が未測定であるソフトウェアが存在する場合（ステップＳ３０４でＹｅｓ）、処理はステップＳ３０１へ戻る。実行性能が未測定であるソフトウェアが存在しない場合（ステップＳ３０４でＮｏ）、性能評価部１４は、性能評価情報１７４に基づき、実行性能が最も良いソフトウェアを決定し、その結果を性能評価情報１７４に反映する（ステップＳ３０５）。
【００５８】
未測定であるブラウザが存在する場合（ステップＳ３０６でＹｅｓ）、検証部１１は、読み出したソフトウェアを実行させるプラウザ２１−ｋを、別のブラウザに変更し（ステップＳ３０７）、処理はステップＳ３０１へ戻る。未測定であるブラウザが存在しない場合（ステップＳ３０６でＮｏ）、全体の処理は終了する。
【００５９】
本実施形態に係るソフトウェア生成装置１０は、ソフトウェアがライブラリを参照することによって機能を追加する場合に、追加する機能に関して、漏れ及び重複が発生しないように、柔軟に機能を追加することができる。その理由は、検証部１１がライブラリが特定の機能（プロパティ）をサポートしているか否かを検証し、抽出部１２がライブラリから特定の機能を実現する部分を抽出し、生成部１３が抽出部１２によってライブラリから抽出された部分を参照可能にソフトウェアを生成するからである。
【００６０】
現在のＷｅｂサイトにおいて使用される言語の仕様、及び、様々なユーザが使用するブラウザの仕様は多種多様である。したがって、仕様が古いブラウザは、通常、複数のポリフィルファイブラリを参照する必要がある。この際、例えば、仕様が古いブラウザが参照する複数のポリフィルライブラリがサポートする機能に漏れがあった場合、このブラウザが取り扱うことができないコンテンツが発生する。また、仕様が古いブラウザが参照する複数のポリフィルライブラリの間で、サポートする機能が重複する場合、このブラウザは必要以上の機能を組み込むことになるので、ブラウザが使用する資源の量が必要以上に増加したり、ブラウザが処理するスピードが遅くなったりする問題がある。
【００６１】
これに対して、本実施形態に係るソフトウェア生成装置１０では、検証部１１がライブラリが特定の機能をサポートしているか否かを検証し、サポート検証結果情報１７３を生成する。抽出部１２は、ライブラリから特定の機能を実現する部分を抽出し、抽出した部分を部分ライブラリとしてライブラリ記憶部１６へ格納する。そして、生成部１３は、サポート検証結果１７３及びライブラリ管理情報１７１に基づいて、ライブラリ及び部分ライブラリを参照可能なソフトウェアを生成する。これにより、本実施形態に係るソフトウェア生成装置１０は、ブラウザによって実行されるソフトウェアがライブラリを参照することによって機能を追加する場合に、追加する機能に関して、漏れ及び重複が発生しないように、柔軟に機能を追加することができる。
【００６２】
また、本実施形態に係る生成部１３は、ライブラリ１６０−１乃至１６０−ｎのうち、備えている機能の種類が最も多い特定のライブラリ１６０−ｉと、ライブラリ１６０−ｉを除くいずれかのライブラリから抽出部１２によって抽出された、ライブラリ１６０−ｉが備えていない機能を実現する部分ライブラリと、を参照できるようにソフトウェアを生成する。これにより、本実施形態に係るソフトウェア生成装置１０は、ソフトウェアに追加する機能に関して、漏れ及び重複が発生しないように、柔軟に機能を追加することを効率的に行うことができる。
【００６３】
また、本実施形態に係る検証部１１は、検証対象であるライブラリを参照可能であり、検証対象である機能を使用する記述を含むテストプログラムが情報処理装置２０によって実行された実行結果が、当該機能に応じた期待値と一致した場合に、当該ライブラリが当該機能を備えていると判定する。これにより、本実施形態に係るソフトウェア生成装置１０は、検証対象であるライブラリが検証対象である機能をサポートしているか否かを検証する処理を、確実かつ効率的に行うことができる。尚、本実施形態に係るソフトウェア生成装置１０は、サポート有りを示す期待値とサポート無しを示す期待値の両方を記憶しているが、サポート有りを示す期待値のみを記憶していてもよい。この場合、検証部１１は、情報処理装置２０によって実行された実行結果が期待値と一致しない場合は、サポート無しと判定する。
【００６４】
また、本実施形態に係る抽出部１２は、抽出対象であるライブラリを参照可能であり、抽出対象である機能を使用する記述を含むテストプログラムが情報処理装置２０によって実行されたときの実行網羅度を測定するツールを使用することによって、当該機能を実現する部分を部分ライブラリとして抽出する。これにより、本実施形態に係るソフトウェア生成装置１０は、ライブラリから目的の機能を実現する部分を抽出する処理を、確実かつ効率的に行うことができる。
【００６５】
さらに、本実施形態に係るソフトウェア生成装置１０は、ライブラリ及び部分ライブラリの組み合わせを変えることにより、同様の機能を有する複数種類のソフトウェアを生成する。これら複数種類のソフトウェアは、機能的に同様であっても、実行性能について大きく異なる可能性がある。本実施形態に係る性能評価部１４は、生成部１３によって生成されたソフトウェアが情報処理装置２０によって実行されたときの実行性能を測定し、生成された複数種類のソフトウェアのうち、実行性能が最もよいソフトウェアを決定する。これにより、本実施形態に係るソフトウェア生成装置１０は、生成した複数種類のうち、実行性能が最もよいソフトウェアを、ユーザに提供することができる。
【００６６】
尚、本実施形態に係るソフトウェア生成装置１０が生成するソフトウェアは、ブラウザにより実行されるソフトウェアに限定されない。本実施形態に係るソフトウェア生成装置１０が生成するソフトウェアは、一般的な情報処理装置において実行される様々なソフトウェアを対象とする。
【００６７】
＜第２の実施形態＞
図１３は、第２の実施形態に係るソフトウェア生成システム３の構成を概念的に示すブロック図である。以下の説明では、第１の実施形態と同様に動作する構成については、第１の実施形態と同じ番号を付与することにより、説明を省略する。
【００６８】
本実施形態に係るソフトウェア生成システム３は、大別して、ソフトウェア生成装置３０、及び、情報処理装置２０を備えている。ソフトウェア生成装置３０は、情報処理装置２０、及び、通信ネットワーク４０と通信可能に接続されている。通信ネットワーク４０は、例えばインターネットである場合もあれば、企業内ネットワーク等である場合もある。
【００６９】
ソフトウェア生成装置３０は、検証部１１、抽出部１２、生成部３３、性能評価部１４、ソフトウェア記憶部１５、ライブラリ記憶部１６、管理情報記憶部３７、及び、選別部３８を備えている。管理情報記憶部３７は、第１の実施形態に係る管理情報記憶部１７が記憶する情報に加えて、評価基準情報３７５を記憶している。
【００７０】
選別部３８は、通信ネットワーク４０を介して、ライブラリ１６０−１乃至１６０−ｎに関する様々な評価情報を入手する。ここで、評価情報とは、例えば、ライブラリ１６０−１乃至１６０−ｎの評判を表す情報である。評価情報は、あるいは、ライブラリの開発活発度を表す情報等である。
【００７１】
選別部３８は、ライブラリの評判を表す情報を評価情報として入手する場合、ライブラリを識別可能な情報（例えばライブラリ名称）と所定のキーワードとを組み合わせて、通信ネットワーク４０を介してアクセス可能な情報を検索することにより評価情報を入手する。所定のキーワードとしては、大別して、良い評判を表すポジティブワードと、悪い評判を表すネガティブワードとがある。ポジティブワードとしては、例えば、「速い」、「軽い」、「使いやすい」等がある。これに対してネガティブワードとしては、例えば、「遅い」、「重い」、「使いづらい」等がある。選別部３８は、入手した評価情報に基づき検索ポイントを算出する。検索ポイントとは、ポジティブワードを使用したＷｅｂページ数からネガティブワードを使用したＷｅｂページ数を減算した値であり、ライブラリに関する評判の良さを示す指標である。すなわち、ライブラリに関する評判が高いほど、検索ポイントの値は高くなる。
【００７２】
選別部３８は、算出した検索ポイントの値と、管理情報記憶部３７に記憶された評価基準情報３７５とに基づき、ライブラリに関する評判の良さを判断する。選別部３８がライブラリの評判を表す情報を評価情報として入手する場合における評価基準情報３７５の構成を図１４（ａ）に例示する。図１４（ａ）に示す通り、本実施形態では、ライブラリに関する評判は、検索ポイントの値によって、「特に良い」、「良い」、「普通」、「悪い」、「特に悪い」という５つのランクに分類されている。尚、評価基準情報３７５は、図１４（ａ）に示す内容とは異なる内容であってもよい。
【００７３】
選別部３８は、ライブラリの開発活発度を表す情報を評価情報として入手する場合、通信ネットワーク４０を介して、ライブラリのソースコードリポジトリに関するログを参照する。ソースコードリポジトリは、例えば、Subversion (SVN)、あるいは、Concurrent Versions System (CVS)等のツールによって管理される。選別部３８は、ライブラリのソースコードリポジトリに関するログから、当該ライブラリの開発に関する所定の期間内におけるコミット回数を入手する。このコミット回数は、ライブラリの開発活発度を示す指標であり、その値が多いほど、当該ライブラリの開発が活発であることを示している。
【００７４】
選別部３８は、入手したコミット回数の値と、管理情報記憶部３７に記憶された評価基準情報３７５とに基づき、ライブラリに関する開発活発度を判断する。選別部３８がライブラリの開発活発度を表す情報を評価情報として入手する場合における評価基準情報３７５の構成を図１４（ｂ）に例示する。図１４（ｂ）に示す通り、本実施形態では、ライブラリの開発活発度は、コミット回数の値によって、「特に高い」、「高い」、「普通」、「低い」、「特に低い」という５つのランクに分類されている。尚、評価基準情報３７５は、図１４（ｂ）に示す内容とは異なる内容であってもよい。
【００７５】
選別部３８は、ライブラリ管理情報１７１に登録されているライブラリ１６０−１乃至１６０−ｎのうち、評判のランクあるいは開発活発度のランクが所定の基準を満たすライブラリを選別し、選別した結果を生成部３３へ入力する。所定の基準としては、例えば、「ランクが「普通」以上」、あるいは、「ランクが「良い」以上」等である。
【００７６】
生成部３３は、選別部３８によって選別されたライブラリを対象として、第１の実施形態に係る生成部１３が行う処理と同様な処理を行う。
【００７７】
本実施形態に係るソフトウェア生成装置３０は、ソフトウェアがライブラリを参照することによって機能を追加する場合に、追加する機能に関して、漏れ及び重複が発生しないように、柔軟に機能を追加することができる。その理由は、検証部１１がライブラリが特定の機能をサポートしているか否かを検証し、抽出部１２がライブラリから特定の機能を実現する部分を抽出し、生成部３３が抽出部１２によってライブラリから抽出された部分を参照可能にソフトウェアを生成するからである。
【００７８】
また、本実施形態に係る選別部３８は、ライブラリ１６０−１乃至１６０−ｎに関する評判、あるいは、開発活発度等の評価情報を、通信ネットワーク４０を介して外部から入手する。選別部３８は、ライブラリ１６０−１乃至１６０−ｎのうち、評価が基準を満たすライブラリを選別する。生成部３３は、選別部３８によって選別されたライブラリを対象として、第１の実施形態と同様のソフトウェアを生成する処理を行う。これにより、本実施形態に係るソフトウェア生成装置３０は、評価が低い（すなわち品質が低い）ライブラリを、ソフトウェアが参照する対象から排除するので、高品質なソフトウェアを生成することができる。
【００７９】
尚、本実施形態に係るソフトウェア生成装置３０は、評判あるいは開発活発度のランクを設定せずに、検索ポイント数あるいはコミット回数の値が基準を満たすか否かによって、ライブラリを選別してもよい。
【００８０】
＜第３の実施形態＞
図１５は、第３の実施形態に係るソフトウェア生成装置５０の構成を概念的に示すブロック図である。
【００８１】
本実施形態に係るソフトウェア生成装置５０は、検証部５１、抽出部５２、生成部５３、及び、記憶部５７を備えている。
【００８２】
記憶部５７は、ライブラリ管理情報５７１を記憶している。ライブラリ管理情報５７１は、ソフトウェアから参照されることによって、そのソフトウェアに１以上の機能を追加するライブラリを、当該ソフトウェアが参照できるように当該ソフトウェアを生成する手順を示した情報である。
【００８３】
検証部５１は、ライブラリが、特定の機能を備えているか否かを検証する。
【００８４】
抽出部５２は、ライブラリから、特定の機能を実現する部分を抽出する。
【００８５】
生成部５３は、検証部５１が検証した結果及びライブラリ管理情報５７１に基づいて、ソフトウェアが、抽出部５２によってライブラリから抽出された特定の機能を実現する部分を参照できるように当該ソフトウェアを生成する。
【００８６】
本実施形態に係るソフトウェア生成装置５０は、ソフトウェアがライブラリを参照することによって機能を追加する場合に、追加する機能に関して、漏れ及び重複が発生しないように、柔軟に機能を追加することができる。その理由は、検証部５１がライブラリが特定の機能をサポートしているか否かを検証し、抽出部５２がライブラリから特定の機能を実現する部分を抽出し、生成部５３が抽出部５２によってライブラリから抽出された部分を参照可能にソフトウェアを生成するからである。
【００８７】
＜ハードウェア構成例＞
上述した各実施形態において図１、図１３、及び、図１５に示した各部は、専用のＨＷ（ＨａｗｄＷａｒｅ）（電子回路）によって実現することができる。また、少なくとも、検証部１１及び５１、抽出部１２及び５２、及び、生成部１３、３３及び５３は、ソフトウェアプログラムの機能（処理）単位（ソフトウェアモジュール）と捉えることができる。但し、これらの図面に示した各部の区分けは、説明の便宜上の構成であり、実装に際しては、様々な構成が想定され得る。この場合のハードウェア環境の一例を、図１６を参照して説明する。
【００８８】
図１６は、本発明の各実施形態に係るソフトウェア生成装置を実行可能な情報処理装置９００（コンピュータ）の構成を例示的に説明する図である。即ち、図１６は、図１、図１３及び図１５、及び、図１０乃至図１２に示したソフトウェア生成装置を実現可能なコンピュータ（情報処理装置）の構成であって、上述した実施形態における各機能を実現可能なハードウェア環境を表す。
【００８９】
図１６に示した情報処理装置９００は、構成要素として下記を備えている。
・ＣＰＵ（Ｃｅｎｔｒａｌ＿Ｐｒｏｃｅｓｓｉｎｇ＿Ｕｎｉｔ）９０１、
・ＲＯＭ（Ｒｅａｄ＿Ｏｎｌｙ＿Ｍｅｍｏｒｙ）９０２、
・ＲＡＭ（Ｒａｎｄｏｍ＿Ａｃｃｅｓｓ＿Ｍｅｍｏｒｙ）９０３、
・ハードディスク（記憶装置）９０４、
・外部装置との通信インタフェース９０５、
・ＣＤ−ＲＯＭ（Ｃｏｍｐａｃｔ＿Ｄｉｓｃ＿Ｒｅａｄ＿Ｏｎｌｙ＿Ｍｅｍｏｒｙ）等の記録媒体９０７に格納されたデータを読み書き可能なリーダライタ９０８、
・入出力インタフェース９０９、
情報処理装置９００は、これらの構成がバス９０６（通信線）を介して接続された一般的なコンピュータである。
【００９０】
そして、上述した実施形態を例に説明した本発明は、図１６に示した情報処理装置９００に対して、次の機能を実現可能なコンピュータプログラムを供給する。その機能とは、その実施形態の説明において参照したブロック構成図（図１、図１３、及び、図１５）における、検証部１１及び５１、抽出部１２及び５２、及び、生成部１３、３３及び５３、或いはフローチャート（図１０乃至図１２）の機能である。本発明は、その後、そのコンピュータプログラムを、当該ハードウェアのＣＰＵ９０１に読み出して解釈し実行することによって達成される。また、当該装置内に供給されたコンピュータプログラムは、読み書き可能な揮発性のメモリ（ＲＡＭ９０３）またはハードディスク９０４等の不揮発性の記憶デバイスに格納すれば良い。
【００９１】
また、前記の場合において、当該ハードウェア内へのコンピュータプログラムの供給方法は、現在では一般的な手順を採用することができる。その手順としては、例えば、ＣＤ−ＲＯＭ等の各種記録媒体９０７を介して当該装置内にインストールする方法や、インターネット等の通信回線を介して外部よりダウンロードする方法等がある。そして、このような場合において、本発明は、係るコンピュータプログラムを構成するコード或いは、そのコードが格納された記録媒体９０７によって構成されると捉えることができる。
【００９２】
以上、上述した実施形態を模範的な例として本発明を説明した。しかしながら、本発明は、上述した実施形態には限定されない。即ち、本発明は、本発明のスコープ内において、当業者が理解し得る様々な態様を適用することができる。
【符号の説明】
【００９３】
１    ソフトウェア生成システム
１０    ソフトウェア生成装置
１１    検証部
１２    抽出部
１３    生成部
１４    性能評価部
１５    ソフトウェア記憶部
１６    ライブラリ記憶部
１６０−１乃至１６０−ｎ    ライブラリ
１７    管理情報記憶部
１７１    ライブラリ管理情報
１７２    プロパティ管理情報
１７３    サポート検証結果情報
１７４    性能評価情報
２０    情報処理装置
２１−１乃至２１−ｍ    ブラウザ
３    ソフトウェア生成システム
３０    ソフトウェア生成装置
３３    生成部
３７    管理情報記憶部
３７５    評価基準情報
３８    選別部
４０    通信ネットワーク
５０    ソフトウェア生成装置
５１    検証部
５２    抽出部
５３    生成部
５７    記憶部
５７１    ライブラリ管理情報
９００    情報処理装置
９０１    ＣＰＵ
９０２    ＲＯＭ
９０３    ＲＡＭ
９０４    ハードディスク（記憶装置）
９０５    通信インタフェース
９０６    バス
９０７    記録媒体
９０８    リーダライタ
９０９    入出力インタフェース
【図１】
2016133923.tif 000003
【図２】
2016133923.tif 000004
【図３】
2016133923.tif 000005
【図４】
2016133923.tif 000006
【図５】
2016133923.tif 000007
【図６】
2016133923.tif 000008
【図７】
2016133923.tif 000009
【図８】
2016133923.tif 000010
【図９】
2016133923.tif 000011
【図１０】
2016133923.tif 000012
【図１１】
2016133923.tif 000013
【図１２】
2016133923.tif 000014
【図１３】
2016133923.tif 000015
【図１４】
2016133923.tif 000016
【図１５】
2016133923.tif 000017
【図１６】
2016133923.tif 000018