(57)【要約】      （修正有）【課題】プログラム部品をより簡単かつ大量に取得する。【解決手段】インターネット経由でプログラム取得対象のＵＲＬなどにアクセスする。次いで、取得したインターネットプログラム部品素材データを解析し、インターネットプログラム部品素材データから、プログラム部分と、プログラムに関連する文章とを抽出する。ここで、プログラム部分に関しては、プログラム言語の判別、プログラムの機能・仕様の解析を行う。一方、関連する文章に関しては、プログラムの機能・仕様の解析、コピー使用可否の解析を行う。次いで、解析結果を参考にしてプログラム（ソースコード）を含む部分を取得する。一方、プログラムに関連する文章を取得する。ソースコードに関して、タグ情報・プログラム言語に特有の単語などを参考にして、プログラム部分のみを抽出する。【選択図】図５
2009237782.tif 000002
【特許請求の範囲】
【請求項１】
インターネット上のコンテンツから情報を取得する情報取得部であって、指定された条件に該当するコンテンツのみから情報を取得する情報取得部と、
該情報取得部により取得されたコンテンツ内の文章を解析する解析部であって、
コンテンツ内の文章を解析し、「プログラム部分」と「プログラム以外の部分」に分けるソースコード抽出部と、
該「プログラム部分」内をさらに解析し、使用されているプログラム言語を解析する言語解析部と、
前記「プログラム部分」内をさらに解析し、「プログラム中においてプログラムに関して説明・コメントしている部分」に基づいて、プログラムの機能を解析する第１の機能解析部と、
前記「プログラム以外の部分」に記載されているプログラムに関連する記載を抽出し、プログラムの機能を解析する第２の機能解析部と
を有することを特徴とするプログラム開発支援システム。
【請求項２】
前記指定された条件は、指定されたサイトのＵＲＬ又は指定されたキーワードを含むことであることを特徴とする請求項１に記載のプログラム開発支援システム。
【請求項３】
前記情報取得部で取得する情報は、インターネット上で公開されているファイル自体であることを特徴とする請求項１又は２に記載のプログラム開発支援システム。
【請求項４】
前記ソースコード抽出部は、
タグ情報を用いて、タグに挟まれている部分をソースコードと推定することを特徴とする請求項１から３までのいずれか１項に記載のプログラム開発支援システム。
【請求項５】
前記ソースコード抽出部は、
プログラム言語特有の単語を検出し、該プログラム言語特有の単語が集中して存在する部分をソースコードと推定することを特徴とする請求項１から４までのいずれか１項に記載のプログラム開発支援システム。
【請求項６】
前記言語解析部は、プログラムの特性、関数名、文法の特徴のうち少なくともいずれかに基づいてプログラム言語を推定することを特徴とする請求項１から５までのいずれか１項に記載のプログラム開発支援システム。
【請求項７】
前記第１の機能解析部は、コメント部を検出し、該コメント部に記載されるプログラムの注意書き又は説明に基づいてプログラムの機能を解析することを特徴とする請求項１から６までのいずれか１項に記載のプログラム開発支援システム。
【請求項８】
前記第２の機能解析部は、元ファイルからソースコードを除いた部分をプログラム以外の部分とし、該プログラム以外の部分と、ソースコードとの距離が近い文章をプログラムに関連する文章と推定することを特徴とする請求項１から７までのいずれか１項に記載のプログラム開発支援システム。
【請求項９】
前記第２の機能解析部は、元ファイルからソースコードを除いた部分をプログラム以外の部分とし、該プログラム以外の部分内に含まれるプログラムに関連する内容の用語を含む部分をプログラムに関連する文章と推定することを特徴とする請求項１から８までのいずれか１項に記載のプログラム開発支援システム。
【請求項１０】
前記プログラムに関連する文章に基づいて、プログラムの機能を推定することを特徴とする請求項８又は９に記載のプログラム開発支援システム。
【請求項１１】
前記プログラムに関連する文章における、コピー可否の文章を検出してコピー使用の可否を推定することを特徴とする請求項８から１０までのいずれか１項に記載のプログラム開発支援システム。
【請求項１２】
さらに、請求項１から１１までのプログラム開発支援システムにより抽出されたプログラム部品を表示させるとともに、編集処理を可能とするビューワーを備えることを特徴とするプログラム開発支援システム。
【請求項１３】
前記表示には、言語と内容との階層構造を有するフォルダがツリー構造で表示され、該ツリー構造のフォルダアイコンにフォーカスすると、該当するプログラムの内容と属性とが表示されることを特徴とする請求項１２に記載のプログラム開発支援システム。
【請求項１４】
編集されたプログラム部品を新規追加又は更新して記憶するプログラム部品記憶部を有することを特徴とする請求項１２又は１３に記載のプログラム開発支援システム。
【請求項１５】
前記インターネット上のコンテンツは、ホームページ、ブログ、掲示板のうちのいずれかを含むことを特徴とする請求項１から１４までのいずれか１項に記載のプログラム開発支援システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラム開発支援システムに関し、特に、ネットワーク経由でプログラム素材を取得し、これらを解析してプログラム部品を得るプログラム開発支援技術に関する。  
【背景技術】
【０００２】
世の中には多数のプログラマが存在し、膨大な量のプログラムが開発されている。これらのプログラムは、実際には、以下のような方法で再利用されているのが一般的である。
【０００３】
図１４は、プログラム部品の再利用方法の流れの一例を示す図である。図１４に示すように、あるプログラマが作成した作成プログラム２０５を部品化したプログラム部品２０３を生成し、プログラム資産データベース２０１内にプログラム部品の資産（データベース）として格納する。一方、あるプログラマが、あるプログラムを作成しようとした場合に、このプログラム資産データベース２０１から再利用したいプログラム部品を取得し、取得したプログラム部品２０７を再利用することにより、作成プログラムＢ２１１を効率良く作成することができる。
【０００４】
下記特許文献１に記載の技術は、汎用コンピュータのプログラム資産を効率的に管理するために、プログラム資産データを収集し、表形式にするプログラム資産収集処理装置について開示している。このプログラム資産収集処理装置は、１）汎用コンピュータのプログラム資産の情報である格納プログラム情報が格納されたプログラムライブラリ、２）ユーザーから入力される検索情報値が示すプログラム言語の種類と、格納プログラム情報を参照して格納プログラム情報 に含まれるプログラム言語の種類とを比較し、一致した場合にその格納プログラム情報を取得する格納プログラム情報参照部、３）格納プログラム情報参照部から送られてきた格納プログラム情報から、プログラムを資産管理するうえで必要な情報を収集するプログラム資産情報編集部、４）プログラム資産情報編集部から送られてきた情報を表形式に編集するプログラム資産情報出力部、を有している。
【０００５】
【特許文献１】特開２０００−１０７６５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、実際には、図１４の手法や特許文献１に記載の手法を実施するにあたっては以下のような問題があった。
【０００７】
１）プログラム資産の量の不足：プログラムライブラリに格納されているプログラム情報の数が十分でない場合、十分に機能しない。例えば、蓄積されているプログラム部品の量が少ないと、再利用可能なプログラム部品数も少なくなり、実際にプログラムを開発する際に効率向上には至らない。すなわち、利用者側から積極的にプログラム部品数を多くすることは難しかった。
【０００８】
２）プログラム資産の更新速度の遅さ：プログラムライブラリに十分な数のプログラム情報が格納されるまでには、長期に渡るプログラム開発や多人数でのプログラム開発による蓄積が必要である。他人が作成したプログラムを収集・蓄積するためには、機能・アルゴリズムの理解・コピー可否の判断等の、膨大な労力が必要となる。実際上、プログラム資産が更新される速度は、新しく開発する対象のプログラムの新しさに比べて遅くなるのが一般的である。特に最先端のプログラム開発者にとっては、この問題が深刻となる。
【０００９】
３）新規に開発したプログラム、他人が作成したプログラムの新たな収集等でなければ、プログラムライブラリは更新されず、かつその更新速度は非常に遅いものである。
【００１０】
本発明は、プログラム部品をより簡単かつ大量に取得することを目的とする。
【課題を解決するための手段】
【００１１】
1．プログラム部品の情報取得元を、上記特許文献１に記載のプログラムライブラリのような、ローカルな環境でのプログラム資産ではなく、ホームページ、掲示板、ブログ等インターネット上の全てのコンテンツを対象とする。これらは、無数のユーザーによって日々更新されるものであるため、前述の従来技術の課題であるプログラム情報量の不足（従来課題１）、プログラム情報量蓄積までの労力・負担、新たなプログラム情報の追加・更新速度が遅いという問題が解消される。
【００１２】
２．しかしながら、情報取得元をローカルな環境からインターネットとすることによる新たな問題が生じる。
Ａ．インターネット上には無数のコンテンツがあり、プログラムとは無関係なもの、プログラムに関係するがユーザーの希望を満たす内容ではないもの、等がある
Ｂ．インターネット上にあるプログラムは、そのままプログラムとして使用できるものは非常に少なく、ほとんどの場合はプログラム部品の全体または一部分が、作者のコメント・説明文と混在して記載されている。
Ｃ．上記特許文献１のような、過去に作成し動作実績のあるプログラムではないため、そのまま使用することは非常に危険である。また他人が作成したものであるため、コピー使用して良いか否かの判断も必要である。
【００１３】
３．新規課題Ａを解消する手段として、本発明では「取得部」を使用する。この取得部は名前の通りインターネット上のコンテンツを取得する機能がメインだが、下記機能を有することで新規課題Ａを解消する。
【００１４】
ユーザーが指定したコンテンツからのみ、情報を取得する。ユーザーが指定したキーワード条件に該当するコンテンツからのみ、情報を取得する(本文中に「サンプルプログラム」を含む、等)の方法がある。
【００１５】
新規課題Ｂを解消する手段として、本発明では「解析部」を使用する。この解析部では、取得したコンテンツ内の文章を解析し、分類を行う。主に下記機能により新規課題Ｂを解消する。
【００１６】
コンテンツ内の文章を解析し、「プログラム部分」と「プログラム以外の部分」に分ける。「プログラム部分」は、図１の「ソースコード」に相当する。或いは、「プログラム部分」内をさらに解析し、「使用されているプログラム言語（Ｃ、Java等）」を解析する。この解析結果は図1の「言語」に相当する。「プログラム以外の部分」内をさらに解析し、「プログラムに関して説明・コメントしている部分」を抽出する。これは図１の「機能仕様・説明・コメント」に相当する。さらに、「プログラム以外の部分」に記載されているプログラムの「コピー使用可否」に関する記載があれば、その情報も抽出するこれは図１の「コピー使用可否」に相当する。
【００１７】
５．新規課題Ｃを解決する手段として、本発明では「ビューワー」を使用する。「解析部」で分類されたデータは、txtファイル等の汎用的な形式や本システム独自の形式で出力される（図１の「データ出力」に相当）。ユーザーはこの出力されたデータをビューワー（専用ブラウザや汎用的なアプリケーション等）によって下記のような閲覧が可能となり、新規課題Ｃを解消する。
【００１８】
「フォルダ自動振り分け」「〜〜行以上/以下のプログラムは廃棄」等、ユーザーの希望に応じたデータ管理方法を用いることができる。また、「言語別に表示」「コピー使用可能なもののみ表示」「機能別に表示」等、ユーザーの希望に合わせたデータ表示方法を用いることもできる。
【発明の効果】
【００１９】
本発明によれば、情報元がインターネット上の膨大なコンテンツであるため、豊富な数・種類のプログラム部品の取得が可能である。また、プログラム部品の新規追加・更新等は、ユーザーが意識的に作業せずに行われるので作業が簡単になる。
【発明を実施するための最良の形態】
【００２０】
以下、本実施の形態によるプログラム開発支援システムについて説明する前に、発明者の行った考察について説明を行う。図１は、インターネット上のプログラム部品素材（以下、「インターネットプログラム部品素材」と称する。）のソースについて示す図である。発明者は、近年のインターネット等の普及により、現在、プログラムに関する情報共有のホームページ７・掲示板３、個人がプログラム開発のメモ代わりに書いているブログ５等、多くのプログラム部品が、多種多様な形でインターネット上に公開されていることに着目した。これらのソース３・５・７には、プログラムに関連する情報３ａ・５ａ・７ａが記載されている可能性が高い。
【００２１】
しかしながら、図２に示すように、従来手法によってプログラム資産データベース１０１からプログラム部品１０３を取得する場合に比べて、これらインターネット上で公開されているインターネットプログラム部品素材の数・種類は膨大であるが、プログラムに関係のあるサイトの識別が難しい上に、プログラムソース部分とその他の文が混在していること、ａ）使用プログラム言語が多様であるなどデータ形式が多様であること、ｂ）プログラムの機能の判別が難しいこと、ｃ）コピー使用可否等の著作権上の問題があること、等の観点から、これらを、そのまま上記のような従来手法と同様の手順でプログラム部品１１として使用することは難しいと考えられる。
【００２２】
図３は、本発明の一実施の形態によるプログラム開発支援システムの概略的な概念図である。本実施の形態によるプログラム開発支援システムでは、プログラムソースＳ（掲示板３、ブログ５、ホームページ７）に、インターネット１を経由してアクセスする。プログラム開発支援システム１５において、１）プログラム取得対象のＵＲＬを指定し、２）プログラムソース部分、その他の部分の解析・分離を行う。３）使用ブログラム言語の解析、４）プログラムの機能の解析を行うことにより、プログラム部品１１を得ることができる。
【００２３】
以下に、より具体的なシステム構成及び処理手順について説明する。図４は、本実施の形態によるプログラム開発支援システムの一構成例を示す機能ブロック図である。本実施の形態によるプログラム開発支援システム１５は、インターネットプログラム部品素材を多数含むプログラムソースＳ（掲示板３・ブログ５・ホームページ７）に対してインターネット経由１でアクセスするとともに、必要なインターネットプログラム部品素材を取得する取得部２１と、取得したインターネットプログラム部品素材を解析する解析処理部２３と、解析により抽出されたプログラムソースを出力するデータ出力部３７と、出力したデータを閲覧可能なビューワー４１と、を有しており、利用したいユーザー（プログラマ）４３がこのビューワー４１により、プログラム部品を閲覧できるようになっている。解析処理部２３は、解析部２３ａと、機能・説明・コメント解析部２５と、ソースコード解析部２７と、言語解析部３１と、コピー使用可否解析部３５と、を有している。
【００２４】
図５は、プログラム開発支援システム１５による処理の流れを示すフローチャート図である。まず、ステップＳ１において、ユーザーがＵＲＬなどを指定するなどの操作を契機として処理が開始されると、ステップＳ２において、インターネット経由でプログラム取得対象のＵＲＬなどにアクセスする。
【００２５】
次いで、ステップＳ３において、取得したインターネットプログラム部品素材データを解析し、インターネットプログラム部品素材データから、プログラム部分と、プログラムに関連する文章と、を抽出する。
【００２６】
ここで、プログラム部分に関しては、ステップＳ４において、プログラム言語の判別、プログラムの機能・仕様の解析を行う。一方、関連する文章に関しては、ステップＳ５において、プログラムの機能・仕様の解析、コピー使用可否の解析を行う。
【００２７】
次いで、ステップＳ４からステップＳ６に進み、ステップＳ４における解析結果を参考にしてプログラム（ソースコード）を含む部分を取得する。一方、ステップＳ５からはステップＳ７に進み、プログラムに関連する文章を取得する。コピー使用可否により、可の場合にはプログラム部品として使用することができるが、否の場合にはプログラム部品として使用することはできない。
【００２８】
次いで、ステップＳ６からステップＳ８に進み、ソースコードに関して、タグ情報・プログラム言語に特有の単語などを参考にして、プログラム部分のみを抽出する。一方、ステップＳ７からはステップＳ９に進み、プログラムの機能仕様の抽出を行う。
【００２９】
ステップＳ８・Ｓ９により抽出されたプログラム部分とプログラムの機能仕様とに基づいて、ステップＳ１０において、プログラムの機能・仕様を参照したソースコードの抽出精度を高める処理を行う。ステップＳ１１において、ビューワーにソースコードを表示させ、適宜、編集処理などを行い、ステップＳ１２において、処理を終了する。最終的に得られたソースコードは、機能・仕様などと関連付けて、プログラム部品記憶部などに記憶させておくことが好ましい。
【００３０】
次に、上記の各処理について詳細に説明を行う。取得処理では、ユーザーの目的に応じ、データ取得対象のサイトが指定される。サイトの指定方法としては、１）取得対象のサイトのＵＲＬを直接ユーザーが指定する方法、２）ユーザーが条件を設定し、その条件を満たすサイトのみを対象とする方法、などがある。例えば、画像処理に関するプログラムを取得したい場合には、本文中に”サンプルプログラム”、 “画像処理”等をキーワードとして含み、ＵＲＬのドメイン名が「****.jp」であるサイトなどである。或いは、最近１ヶ月以内に更新されたソースなどを指定条件にしても良い。
【００３１】
上記の取得処理における条件指定による絞り込みで、プログラムと関係の無いサイトからのデータ取得を防止し、ユーザーの目的に合致するサイトのみからのデータ取得することができる。すなわち、不要な処理、不要なデータの蓄積を防止することができる。取得するデータは、ＨＴＭＬ, ＸＭＬ等インターネット上で使用されているファイル形式のままで良い。取得する際にデータ変換等の処理は行わない。
【００３２】
次に、解析部の処理の概要について説明する。解析部では、以下の処理を行う。
１）取得したデータを解析し、「プログラム部分（ソースコード）」と「プログラムに関連する文章」を抽出する。
【００３３】
２）さらに、「プログラム部分(ソースコード)」、「プログラムに関連する文章」、を解析し、下記の情報を抽出する。
【００３４】
ａ）「プログラム部分（ソースコード）」の解析
-プログラム言語(Ｃ言語, Java等)の判別を行う。
-プログラムを実行することにより発揮される機能の解析、プログラムの仕様の解析を行う。
【００３５】
ｂ）「プログラムに関連する文章」の解析
-プログラムの機能・仕様の解析（プログラムに対して付されたコメントなどから解析することができる。
-コピー使用可否の解析（コピーの可否がコメントなどに付されているかどうかを判定する。）
【００３６】
以上の機能により、
１）プログラム部品として必要な箇所のみ（プログラムソースコード）を抽出することができる。
２）プログラムの機能、仕様の自動抽出が可能になる。
３）プログラムのコピー使用可否の自動判別が可能になる。
【００３７】
図６は、本発明の観点から解析対象のデータ構成例をツリー構造で示した図である。ＨＴＭＬ、ＸＭＬなどのファイルは、<font><center>等ＷＥＢブラウザでの閲覧時には表示されない各種タグ７３と、ＷＥＢブラウザでの閲覧時に表示されるテキスト部分７５に分けられる。さらに、テキスト部分７５を、プログラム部分（ソースコード）７７と、プログラム以外の部分８１とに分けることができる。さらに、プログラム以外の部分８１を、プログラムに関連する文章部分８３と、プログラムとは無関係な文章部分８５とに分けることができる。ここで、取得したい部分は、プログラム部分（ソースコード）７７とプログラムに関連する文章部分８３である。図７は、ブログをＷＥＢブラウザで閲覧した際の画面の一例であり、図６との対応関係を表している。
【００３８】
次に、解析部におけるプログラム部分（ソースコード）の抽出処理の詳細について説明する。図８、図９は、解析部におけるプログラム部分（ソースコード）の抽出に関する解析方法の第１解析例を示す図であり、元ファイル（ＨＴＭＬ等）のタグ情報を利用する解析例を示す図である。図８は、ＷＥＢブラウザで閲覧したプログラム部分（ソースコード）の抽出の様子の例を示す図である。図８に示すように、ＷＥＢブラウザによる表示９１においては、Ｃ言語９３である旨の表示と、説明文（コメント）９５と、実際のプログラム９７とが表示されている。図９に示すように、図８の表示からＨＴＭＬソースファイルの表示１０１をさせた例を示す図である。ここで、タグ情報に着目すると、<code>タグ１０３は、プログラムソースの表示を目的したタグである。そのため、<code></code>タグで挟まれている部分は、プログラムソースコードである可能性が非常に高いので、この部分をプログラムソースコードと推定することができる。すなわち、タグで挟まれた部分を抽出候補とする。
【００３９】
図１０は、解析部におけるプログラム部分（ソースコード）の抽出に関る解析方法の第２解析例を示す図であり、プログラム言語特有の単語から判断する例を示す図である。前述した<code></code>タグを使用していないサイトも多数存在する。そのような場合には、テキスト文を解析し、プログラム部分を抽出する必要がある。例えば、“int”１１１ａ, “for”１１１ｂ,“printf”１１１ｃのように、プログラム言語特有の単語がある（“int”はデータの型、“for”は繰り返し処理、“printf”は関数名を表す）。それらが集中して存在するような場合は、その部分はプログラム部分である可能性は高いと判断できる。そこで、例えば、プログラム言語特有の単語のリストを記憶しておき、これらのプログラム言語特有の単語を検索し、それらの単語のＨＴＭＬソースファイルにおける分布を調べ、これらの単語が多く現れる箇所をプログラム部分（ソースコード）と推定する。尚、プログラム言語特有の単語は、言語別に格納しておくことが好ましい。もし、言語が最初にわかっていれば、その言語特有の単語だけを検索すれば良いからである。
【００４０】
図１１は、解析部における処理であって、前の処理で抽出した「プログラム部分（ソースコード）のさらなる解析として、使用プログラミング言語の判別処理例を示す図である。プログラム言語には、同じ処理をする場合でも、プログラムの特性（手続き型、オブジェクト指向、等）、関数名、文法ルール等の違いにより、その記述内容は変わってくる。そこで、記述内容の違いを検出し、解析することにより、プログラム言語の判別が可能である。尚、この処理と前の処理との順番が入れ替わっても良い。符号１１５で示されるプログラム部分の表示は、Ｊａｖａ１１５ａ言語による表示であり、単語“ｃｌａｓｓ”１１５ｂは、オブジェクト指向の単語ならではのものであり、手続き型の言語であるＣ言語では使われない言語である。従って、このプログラムの言語は、Ｃ言語ではなくオブジェクト指向の言語であり、Ｊａｖａではないかという推定ができる。一方、符号１１７で示されるプログラム部分の表示は、Ｃ言語１１７ａによる表示である。“ｃｌａｓｓ”などの表示はない。また、表示１１５では、“Ｓｙｓｔｅｍ．ｏｕｔ．ｐｒｉｎｔｌｎ”１１５ｃと表示され、一方、表示１１７では、“ｐｒｉｎｔｆ”１１７ｂと表示されており、両者は、共に、「文字列を表示する」という関数であるが、その関数名の相違により、言語を推定することができる。
【００４１】
図１２は、抽出した「プログラム部分（ソースコード）」のさらなる解析処理の一例を示す図であり、機能仕様の解析をプログラム中のコメントより行う例を示す図である。どのプログラム言語にも、「コメント」という概念がある。これは、ある文法ルールに従って(Ｃ言語では、コメントにしたい部分を、「/*」と「*/」で挟む。)文を書く。その部分は実際のプログラムの挙動には全く影響を与えない。そこで、主に、コメント部には、プログラムの注意書きや説明が記載されているため、この部分を解析することにより、プログラムの機能の解析が可能である。例えば、図１２は、２つの数値を除算した余りを求める簡単なプログラムの例であるが、コメント部１２１として、「数値a,bを入力」、「aをbで割った余りを求める」、「結果を出力」などが記載されており、これらコメント部１２１の内容を解析することにより、図１２は「２つの数値を入力し、除算した余りを求め、結果を出力するプログラムである」と、解析できる。
【００４２】
尚、抽出した「プログラム部分（ソースコード）」のさらなる解析として、機能仕様の解析（プログラムの記述そのものより）を行うようにすることもできる。この解析手法は、プログラムの記述内容そのものを１行ずつ解析し、どのような機能であるかを判断するものであり、簡単なプログラムの場合にはこの手法による解析が可能である。
【００４３】
次に、解析部による、プログラムに関連する文章の抽出処理について図６を参照しながら説明する。上記の処理において、「プログラム部分（ソースコード）」７７の抽出が完了すると、「プログラムに関連する文章」８３の抽出を行う。その手順としては、
１）元ファイル(html, xml)のテキスト部分７５から、「プログラム部分」７７の抽出が、前述の処理（「プログラム部分」の抽出処理）により実行済みである。これ処理を実行すると、「プログラム以外の部分の抽出」も行われていることになる。
２）次いで、「プログラム以外の部分」８１から、「プログラムに関連する文章」８３を抽出する。この際、「プログラム部分からの距離」、「書かれている文章の内容」等から、解析・抽出する。
【００４４】
まず、「プログラム部分からの距離」に関して説明する。プログラム部分から、「前後５行以内」、「前後３０文字以内」等、のように、求めたプログラム部分からの数値的な距離で、「プログラムに関連する文章」であるか否かを判断することができる。
【００４５】
また、「書かれている文章の内容」を見て、「プログラム」、「ソフト」、「アルゴリズム」、「処理」等、プログラムに関連すると思われるキーワード（用語）が文章中に含まれるか否かにより「プログラムに関連する文章」であるかどうかを判断することができる。「プログラム部分からの距離」に基づく判定と、キーワードに基づく判定と、は性質の異なる判定方法である。そこで、両方の判定結果を組み合わせることにより、「プログラムに関連する文章」８３であるか否かをより精度良く判定することができる。
【００４６】
抽出された「プログラムに関連する文章」８３をさらに解析する処理について説明する。例えば、「下記にバブルソートのサンプルを示します。」、「今日、大文字小文字変換プログラムを作成しました。メモ代わりにここに書きます。」などの記載、すなわち、プログラムの説明に関する文章があれば、これを検出・解析する（「機能仕様・説明・コメント」）。
【００４７】
さらに、「コピー使用可否」判定処理部において、「複製は自由です」等のような、コピー使用の可否に関する文章を検出・解析する。このような文章があれば、コピーを行って良いかどうか、すなわち、プログラム部品として自由に利用できるか否かを判定することができる。
【００４８】
プログラム部品として自由に使用できると判定された場合には、データ出力を行う。出力形式としては、独自の形式でも良いし、汎用形式でも良い。さらに、出力されたデータを、専用のブラウザ又は汎用のブラウザにより、ビューワーに表示させる。図１３は、ビューワーに表示させた出力データの一例を示す図である。このビューワーの例では、メール閲覧用のアプリケーションソフトウェアを使用する場合の同様の間隔で、プログラム部品を閲覧・管理する。左側のエクスプローラのようなツリー表示１３１は、ルート１３３から、言語による区別のレベル、言語毎のアプリケーションなどのプログラムの種別の順番に階層構造となっている。ここでは、言語レベルとしては、Ｃ言語１３５、Ｊａｖａ１３７の２つがその下流に示されており、Ｊａｖａ１３７には、ゲーム１４１とグラフィック１４３との２つがその下流に示されている。ユーザーは、この階層構造（ツリー構造）の中からいずれかの項目を選択することができる（現在は「Ｃ言語」が選択（フォーカス）されている）。このツリーのそれぞれの項目はフォルダ形式となっており、種々の項目のデータを各フォルダに入れて階層構造を形成することができる。ツリー構造となっているため、ユーザーはデータ構造を把握しやすく、また、ツリー形式で整理しておくことが容易である。ここでは、ユーザーが「Ｃ言語」フォルダ１３５を選択している。すると、右側の上欄１４５に、バブルソート、○×ゲーム、ｈｅｌｌｏ  ｗｏｒｌｄなどの機能１４１と、言語１５１と、コピー可否情報１５３と、取得元アドレス１５５と、が示されている。ここでは、「バブルソート」１４３をポインタ１４７により選択し、情報を閲覧している。各フォルダは、ユーザーが作成し、フォルダへのデータ振り分けも、ユーザーが手動又は振り分け条件による自動化振り分けによって行うことができる。ここでは、バブルソート１４７が選択されており、中欄にその機能である、「バブルソートアルゴリズムによって、１０個のデータを並び替える」という機能が表示されている。
【００４９】
さらに、下欄には、実際のソースコード１６１が表示されており、このソースコード１６１を使用できるソースコードとして閲覧することができる。例えば、このソースコード１６１を閲覧し、使用できると考えると、ソースコード１６１の内容をプログラム部品記憶部などに記憶させ、プログラム部品として利用することができる。同じバブルソートなどの機能が２以上存在する場合には、両方を参照して、適切な方を選択してプログラム部品記憶部に記憶させることができる。また、ビューワー上に表示されたソースコード１６１を編集することも可能である。編集を行うことにより、ソースコードの抽出が不完全な場合には、ソースコード１６１を編集して修正することができる。修正後のソースコードをプログラム部品記憶部に記憶させることも可能である。このようにソースコードが修正された場合には、新たなソースコードを更新保存、別途保存、一時保存等を選択して実行することができるようにするのが好ましい。このように、言語毎、その下位のアプリケーション毎にフォルダの振り分けを行うことができる。特に、本実施の形態のように自動的に素材を取得し解析して抽出した場合には、ソースコードを抽出してフォルダに振り分けることから、振り分け時又は参照時にこのようにソースコードを表示させて編集を行うことができるようにするのが好ましい。
【００５０】
（まとめ）
本実施の形態によるプログラム開発支援システムによれば、情報元がインターネット上の膨大なコンテンツであるため、豊富な数・種類のプログラム部品の取得が可能である。
【００５１】
プログラム部品の新規追加・更新等は、ユーザーが意識的に作業しなくても自動的に行われる。また、プログラム部品の情報量が豊富である。さらに、プログラム部品の更新速度も速いという利点がある。
【００５２】
また、ユーザー側の管理が容易であり、ユーザーの好みに応じた、プログラム部品の取得・管理が行いやすいという効果がある。
【産業上の利用可能性】
【００５３】
本発明は、プログラム開発支援システムとして利用可能である。
【図面の簡単な説明】
【００５４】
【図１】インターネット上のプログラム部品素材（以下、「インターネットプログラム部品素材」と称する。）のソースについて示す図である。
【図２】本実施の形態によるインターネット上で公開されているインターネットプログラム部品素材からプログラム部品を取得する例と従来手法によってプログラム資産データベースからプログラム部品を取得する例とを対比させて示す図である。
【図３】本発明の一実施の形態によるプログラム開発支援システムの概略的な概念図である。
【図４】本実施の形態によるプログラム開発支援システムの一構成例を示す機能ブロック図である。
【図５】プログラム開発支援システムによる処理の流れを示すフローチャート図である。
【図６】解析対象のデータ構成例をツリー構造で示した図である。
【図７】ブログをＷＥＢブラウザで閲覧した際の画面の一例であり、図６との対応関係を表した図である。
【図８】ＷＥＢブラウザで閲覧したプログラム部分（ソースコード）の抽出の様子の例を示す図である。
【図９】図８の表示からＨＴＭＬソースファイルの表示をさせた例を示す図である。
【図１０】解析部におけるプログラム部分（ソースコード）の抽出に関する解析方法の第２解析例を示す図であり、プログラム言語特有の単語から判断する例を示す図である。
【図１１】解析部における処理であって、前の処理で抽出した「プログラム部分（ソースコード）のさらなる解析として、使用プログラミング言語の判別処理例を示す図である。
【図１２】抽出した「プログラム部分（ソースコード）」のさらなる解析処理の一例を示す図であり、機能仕様の解析をプログラム中のコメントより行う例を示す図である。
【図１３】ビューワーに表示させた出力データの一例を示す図である。
【図１４】プログラム部品の再利用方法の流れの一例を示す図である。
【符号の説明】
【００５５】
Ｓ…プログラム素材ソース、１…インターネット、３…掲示板、５…ブログ、７…ホームページ、１１…プログラム部品、１５…プログラム開発支援システム、２１…取得部、２３ａ…解析部、２５…機能仕様説明・コメント解析部、２７…ソースコード解析部、３１…言語解析部、３５…コピー使用可否解析部、３７…データ出力部、４１…ビューワー、４３…ユーザー、１０１…プログラム資産データベース、１０３…プログラム部品。
【図１】
2009237782.tif 000003
【図２】
2009237782.tif 000004
【図３】
2009237782.tif 000005
【図４】
2009237782.tif 000006
【図５】
2009237782.tif 000007
【図６】
2009237782.tif 000008
【図７】
2009237782.tif 000009
【図８】
2009237782.tif 000010
【図９】
2009237782.tif 000011
【図１０】
2009237782.tif 000012
【図１１】
2009237782.tif 000013
【図１２】
2009237782.tif 000014
【図１３】
2009237782.tif 000015
【図１４】
2009237782.tif 000016