プログラム開発支援システム
【課題】プログラム部品をより簡単かつ大量に取得する。
【解決手段】インターネット経由でプログラム取得対象のURLなどにアクセスする。次いで、取得したインターネットプログラム部品素材データを解析し、インターネットプログラム部品素材データから、プログラム部分と、プログラムに関連する文章とを抽出する。ここで、プログラム部分に関しては、プログラム言語の判別、プログラムの機能・仕様の解析を行う。一方、関連する文章に関しては、プログラムの機能・仕様の解析、コピー使用可否の解析を行う。次いで、解析結果を参考にしてプログラム(ソースコード)を含む部分を取得する。一方、プログラムに関連する文章を取得する。ソースコードに関して、タグ情報・プログラム言語に特有の単語などを参考にして、プログラム部分のみを抽出する。
【解決手段】インターネット経由でプログラム取得対象のURLなどにアクセスする。次いで、取得したインターネットプログラム部品素材データを解析し、インターネットプログラム部品素材データから、プログラム部分と、プログラムに関連する文章とを抽出する。ここで、プログラム部分に関しては、プログラム言語の判別、プログラムの機能・仕様の解析を行う。一方、関連する文章に関しては、プログラムの機能・仕様の解析、コピー使用可否の解析を行う。次いで、解析結果を参考にしてプログラム(ソースコード)を含む部分を取得する。一方、プログラムに関連する文章を取得する。ソースコードに関して、タグ情報・プログラム言語に特有の単語などを参考にして、プログラム部分のみを抽出する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、プログラム開発支援システムに関し、特に、ネットワーク経由でプログラム素材を取得し、これらを解析してプログラム部品を得るプログラム開発支援技術に関する。
【背景技術】
【0002】
世の中には多数のプログラマが存在し、膨大な量のプログラムが開発されている。これらのプログラムは、実際には、以下のような方法で再利用されているのが一般的である。
【0003】
図14は、プログラム部品の再利用方法の流れの一例を示す図である。図14に示すように、あるプログラマが作成した作成プログラム205を部品化したプログラム部品203を生成し、プログラム資産データベース201内にプログラム部品の資産(データベース)として格納する。一方、あるプログラマが、あるプログラムを作成しようとした場合に、このプログラム資産データベース201から再利用したいプログラム部品を取得し、取得したプログラム部品207を再利用することにより、作成プログラムB211を効率良く作成することができる。
【0004】
下記特許文献1に記載の技術は、汎用コンピュータのプログラム資産を効率的に管理するために、プログラム資産データを収集し、表形式にするプログラム資産収集処理装置について開示している。このプログラム資産収集処理装置は、1)汎用コンピュータのプログラム資産の情報である格納プログラム情報が格納されたプログラムライブラリ、2)ユーザーから入力される検索情報値が示すプログラム言語の種類と、格納プログラム情報を参照して格納プログラム情報 に含まれるプログラム言語の種類とを比較し、一致した場合にその格納プログラム情報を取得する格納プログラム情報参照部、3)格納プログラム情報参照部から送られてきた格納プログラム情報から、プログラムを資産管理するうえで必要な情報を収集するプログラム資産情報編集部、4)プログラム資産情報編集部から送られてきた情報を表形式に編集するプログラム資産情報出力部、を有している。
【0005】
【特許文献1】特開2000−10765号公報
【発明の開示】
【発明が解決しようとする課題】
【0006】
しかしながら、実際には、図14の手法や特許文献1に記載の手法を実施するにあたっては以下のような問題があった。
【0007】
1)プログラム資産の量の不足:プログラムライブラリに格納されているプログラム情報の数が十分でない場合、十分に機能しない。例えば、蓄積されているプログラム部品の量が少ないと、再利用可能なプログラム部品数も少なくなり、実際にプログラムを開発する際に効率向上には至らない。すなわち、利用者側から積極的にプログラム部品数を多くすることは難しかった。
【0008】
2)プログラム資産の更新速度の遅さ:プログラムライブラリに十分な数のプログラム情報が格納されるまでには、長期に渡るプログラム開発や多人数でのプログラム開発による蓄積が必要である。他人が作成したプログラムを収集・蓄積するためには、機能・アルゴリズムの理解・コピー可否の判断等の、膨大な労力が必要となる。実際上、プログラム資産が更新される速度は、新しく開発する対象のプログラムの新しさに比べて遅くなるのが一般的である。特に最先端のプログラム開発者にとっては、この問題が深刻となる。
【0009】
3)新規に開発したプログラム、他人が作成したプログラムの新たな収集等でなければ、プログラムライブラリは更新されず、かつその更新速度は非常に遅いものである。
【0010】
本発明は、プログラム部品をより簡単かつ大量に取得することを目的とする。
【課題を解決するための手段】
【0011】
1.プログラム部品の情報取得元を、上記特許文献1に記載のプログラムライブラリのような、ローカルな環境でのプログラム資産ではなく、ホームページ、掲示板、ブログ等インターネット上の全てのコンテンツを対象とする。これらは、無数のユーザーによって日々更新されるものであるため、前述の従来技術の課題であるプログラム情報量の不足(従来課題1)、プログラム情報量蓄積までの労力・負担、新たなプログラム情報の追加・更新速度が遅いという問題が解消される。
【0012】
2.しかしながら、情報取得元をローカルな環境からインターネットとすることによる新たな問題が生じる。
A.インターネット上には無数のコンテンツがあり、プログラムとは無関係なもの、プログラムに関係するがユーザーの希望を満たす内容ではないもの、等がある
B.インターネット上にあるプログラムは、そのままプログラムとして使用できるものは非常に少なく、ほとんどの場合はプログラム部品の全体または一部分が、作者のコメント・説明文と混在して記載されている。
C.上記特許文献1のような、過去に作成し動作実績のあるプログラムではないため、そのまま使用することは非常に危険である。また他人が作成したものであるため、コピー使用して良いか否かの判断も必要である。
【0013】
3.新規課題Aを解消する手段として、本発明では「取得部」を使用する。この取得部は名前の通りインターネット上のコンテンツを取得する機能がメインだが、下記機能を有することで新規課題Aを解消する。
【0014】
ユーザーが指定したコンテンツからのみ、情報を取得する。ユーザーが指定したキーワード条件に該当するコンテンツからのみ、情報を取得する(本文中に「サンプルプログラム」を含む、等)の方法がある。
【0015】
新規課題Bを解消する手段として、本発明では「解析部」を使用する。この解析部では、取得したコンテンツ内の文章を解析し、分類を行う。主に下記機能により新規課題Bを解消する。
【0016】
コンテンツ内の文章を解析し、「プログラム部分」と「プログラム以外の部分」に分ける。「プログラム部分」は、図1の「ソースコード」に相当する。或いは、「プログラム部分」内をさらに解析し、「使用されているプログラム言語(C、Java等)」を解析する。この解析結果は図1の「言語」に相当する。「プログラム以外の部分」内をさらに解析し、「プログラムに関して説明・コメントしている部分」を抽出する。これは図1の「機能仕様・説明・コメント」に相当する。さらに、「プログラム以外の部分」に記載されているプログラムの「コピー使用可否」に関する記載があれば、その情報も抽出するこれは図1の「コピー使用可否」に相当する。
【0017】
5.新規課題Cを解決する手段として、本発明では「ビューワー」を使用する。「解析部」で分類されたデータは、txtファイル等の汎用的な形式や本システム独自の形式で出力される(図1の「データ出力」に相当)。ユーザーはこの出力されたデータをビューワー(専用ブラウザや汎用的なアプリケーション等)によって下記のような閲覧が可能となり、新規課題Cを解消する。
【0018】
「フォルダ自動振り分け」「〜〜行以上/以下のプログラムは廃棄」等、ユーザーの希望に応じたデータ管理方法を用いることができる。また、「言語別に表示」「コピー使用可能なもののみ表示」「機能別に表示」等、ユーザーの希望に合わせたデータ表示方法を用いることもできる。
【発明の効果】
【0019】
本発明によれば、情報元がインターネット上の膨大なコンテンツであるため、豊富な数・種類のプログラム部品の取得が可能である。また、プログラム部品の新規追加・更新等は、ユーザーが意識的に作業せずに行われるので作業が簡単になる。
【発明を実施するための最良の形態】
【0020】
以下、本実施の形態によるプログラム開発支援システムについて説明する前に、発明者の行った考察について説明を行う。図1は、インターネット上のプログラム部品素材(以下、「インターネットプログラム部品素材」と称する。)のソースについて示す図である。発明者は、近年のインターネット等の普及により、現在、プログラムに関する情報共有のホームページ7・掲示板3、個人がプログラム開発のメモ代わりに書いているブログ5等、多くのプログラム部品が、多種多様な形でインターネット上に公開されていることに着目した。これらのソース3・5・7には、プログラムに関連する情報3a・5a・7aが記載されている可能性が高い。
【0021】
しかしながら、図2に示すように、従来手法によってプログラム資産データベース101からプログラム部品103を取得する場合に比べて、これらインターネット上で公開されているインターネットプログラム部品素材の数・種類は膨大であるが、プログラムに関係のあるサイトの識別が難しい上に、プログラムソース部分とその他の文が混在していること、a)使用プログラム言語が多様であるなどデータ形式が多様であること、b)プログラムの機能の判別が難しいこと、c)コピー使用可否等の著作権上の問題があること、等の観点から、これらを、そのまま上記のような従来手法と同様の手順でプログラム部品11として使用することは難しいと考えられる。
【0022】
図3は、本発明の一実施の形態によるプログラム開発支援システムの概略的な概念図である。本実施の形態によるプログラム開発支援システムでは、プログラムソースS(掲示板3、ブログ5、ホームページ7)に、インターネット1を経由してアクセスする。プログラム開発支援システム15において、1)プログラム取得対象のURLを指定し、2)プログラムソース部分、その他の部分の解析・分離を行う。3)使用ブログラム言語の解析、4)プログラムの機能の解析を行うことにより、プログラム部品11を得ることができる。
【0023】
以下に、より具体的なシステム構成及び処理手順について説明する。図4は、本実施の形態によるプログラム開発支援システムの一構成例を示す機能ブロック図である。本実施の形態によるプログラム開発支援システム15は、インターネットプログラム部品素材を多数含むプログラムソースS(掲示板3・ブログ5・ホームページ7)に対してインターネット経由1でアクセスするとともに、必要なインターネットプログラム部品素材を取得する取得部21と、取得したインターネットプログラム部品素材を解析する解析処理部23と、解析により抽出されたプログラムソースを出力するデータ出力部37と、出力したデータを閲覧可能なビューワー41と、を有しており、利用したいユーザー(プログラマ)43がこのビューワー41により、プログラム部品を閲覧できるようになっている。解析処理部23は、解析部23aと、機能・説明・コメント解析部25と、ソースコード解析部27と、言語解析部31と、コピー使用可否解析部35と、を有している。
【0024】
図5は、プログラム開発支援システム15による処理の流れを示すフローチャート図である。まず、ステップS1において、ユーザーがURLなどを指定するなどの操作を契機として処理が開始されると、ステップS2において、インターネット経由でプログラム取得対象のURLなどにアクセスする。
【0025】
次いで、ステップS3において、取得したインターネットプログラム部品素材データを解析し、インターネットプログラム部品素材データから、プログラム部分と、プログラムに関連する文章と、を抽出する。
【0026】
ここで、プログラム部分に関しては、ステップS4において、プログラム言語の判別、プログラムの機能・仕様の解析を行う。一方、関連する文章に関しては、ステップS5において、プログラムの機能・仕様の解析、コピー使用可否の解析を行う。
【0027】
次いで、ステップS4からステップS6に進み、ステップS4における解析結果を参考にしてプログラム(ソースコード)を含む部分を取得する。一方、ステップS5からはステップS7に進み、プログラムに関連する文章を取得する。コピー使用可否により、可の場合にはプログラム部品として使用することができるが、否の場合にはプログラム部品として使用することはできない。
【0028】
次いで、ステップS6からステップS8に進み、ソースコードに関して、タグ情報・プログラム言語に特有の単語などを参考にして、プログラム部分のみを抽出する。一方、ステップS7からはステップS9に進み、プログラムの機能仕様の抽出を行う。
【0029】
ステップS8・S9により抽出されたプログラム部分とプログラムの機能仕様とに基づいて、ステップS10において、プログラムの機能・仕様を参照したソースコードの抽出精度を高める処理を行う。ステップS11において、ビューワーにソースコードを表示させ、適宜、編集処理などを行い、ステップS12において、処理を終了する。最終的に得られたソースコードは、機能・仕様などと関連付けて、プログラム部品記憶部などに記憶させておくことが好ましい。
【0030】
次に、上記の各処理について詳細に説明を行う。取得処理では、ユーザーの目的に応じ、データ取得対象のサイトが指定される。サイトの指定方法としては、1)取得対象のサイトのURLを直接ユーザーが指定する方法、2)ユーザーが条件を設定し、その条件を満たすサイトのみを対象とする方法、などがある。例えば、画像処理に関するプログラムを取得したい場合には、本文中に”サンプルプログラム”、 “画像処理”等をキーワードとして含み、URLのドメイン名が「****.jp」であるサイトなどである。或いは、最近1ヶ月以内に更新されたソースなどを指定条件にしても良い。
【0031】
上記の取得処理における条件指定による絞り込みで、プログラムと関係の無いサイトからのデータ取得を防止し、ユーザーの目的に合致するサイトのみからのデータ取得することができる。すなわち、不要な処理、不要なデータの蓄積を防止することができる。取得するデータは、HTML, XML等インターネット上で使用されているファイル形式のままで良い。取得する際にデータ変換等の処理は行わない。
【0032】
次に、解析部の処理の概要について説明する。解析部では、以下の処理を行う。
1)取得したデータを解析し、「プログラム部分(ソースコード)」と「プログラムに関連する文章」を抽出する。
【0033】
2)さらに、「プログラム部分(ソースコード)」、「プログラムに関連する文章」、を解析し、下記の情報を抽出する。
【0034】
a)「プログラム部分(ソースコード)」の解析
-プログラム言語(C言語, Java等)の判別を行う。
-プログラムを実行することにより発揮される機能の解析、プログラムの仕様の解析を行う。
【0035】
b)「プログラムに関連する文章」の解析
-プログラムの機能・仕様の解析(プログラムに対して付されたコメントなどから解析することができる。
-コピー使用可否の解析(コピーの可否がコメントなどに付されているかどうかを判定する。)
【0036】
以上の機能により、
1)プログラム部品として必要な箇所のみ(プログラムソースコード)を抽出することができる。
2)プログラムの機能、仕様の自動抽出が可能になる。
3)プログラムのコピー使用可否の自動判別が可能になる。
【0037】
図6は、本発明の観点から解析対象のデータ構成例をツリー構造で示した図である。HTML、XMLなどのファイルは、<font><center>等WEBブラウザでの閲覧時には表示されない各種タグ73と、WEBブラウザでの閲覧時に表示されるテキスト部分75に分けられる。さらに、テキスト部分75を、プログラム部分(ソースコード)77と、プログラム以外の部分81とに分けることができる。さらに、プログラム以外の部分81を、プログラムに関連する文章部分83と、プログラムとは無関係な文章部分85とに分けることができる。ここで、取得したい部分は、プログラム部分(ソースコード)77とプログラムに関連する文章部分83である。図7は、ブログをWEBブラウザで閲覧した際の画面の一例であり、図6との対応関係を表している。
【0038】
次に、解析部におけるプログラム部分(ソースコード)の抽出処理の詳細について説明する。図8、図9は、解析部におけるプログラム部分(ソースコード)の抽出に関する解析方法の第1解析例を示す図であり、元ファイル(HTML等)のタグ情報を利用する解析例を示す図である。図8は、WEBブラウザで閲覧したプログラム部分(ソースコード)の抽出の様子の例を示す図である。図8に示すように、WEBブラウザによる表示91においては、C言語93である旨の表示と、説明文(コメント)95と、実際のプログラム97とが表示されている。図9に示すように、図8の表示からHTMLソースファイルの表示101をさせた例を示す図である。ここで、タグ情報に着目すると、<code>タグ103は、プログラムソースの表示を目的したタグである。そのため、<code></code>タグで挟まれている部分は、プログラムソースコードである可能性が非常に高いので、この部分をプログラムソースコードと推定することができる。すなわち、タグで挟まれた部分を抽出候補とする。
【0039】
図10は、解析部におけるプログラム部分(ソースコード)の抽出に関る解析方法の第2解析例を示す図であり、プログラム言語特有の単語から判断する例を示す図である。前述した<code></code>タグを使用していないサイトも多数存在する。そのような場合には、テキスト文を解析し、プログラム部分を抽出する必要がある。例えば、“int”111a, “for”111b,“printf”111cのように、プログラム言語特有の単語がある(“int”はデータの型、“for”は繰り返し処理、“printf”は関数名を表す)。それらが集中して存在するような場合は、その部分はプログラム部分である可能性は高いと判断できる。そこで、例えば、プログラム言語特有の単語のリストを記憶しておき、これらのプログラム言語特有の単語を検索し、それらの単語のHTMLソースファイルにおける分布を調べ、これらの単語が多く現れる箇所をプログラム部分(ソースコード)と推定する。尚、プログラム言語特有の単語は、言語別に格納しておくことが好ましい。もし、言語が最初にわかっていれば、その言語特有の単語だけを検索すれば良いからである。
【0040】
図11は、解析部における処理であって、前の処理で抽出した「プログラム部分(ソースコード)のさらなる解析として、使用プログラミング言語の判別処理例を示す図である。プログラム言語には、同じ処理をする場合でも、プログラムの特性(手続き型、オブジェクト指向、等)、関数名、文法ルール等の違いにより、その記述内容は変わってくる。そこで、記述内容の違いを検出し、解析することにより、プログラム言語の判別が可能である。尚、この処理と前の処理との順番が入れ替わっても良い。符号115で示されるプログラム部分の表示は、Java115a言語による表示であり、単語“class”115bは、オブジェクト指向の単語ならではのものであり、手続き型の言語であるC言語では使われない言語である。従って、このプログラムの言語は、C言語ではなくオブジェクト指向の言語であり、Javaではないかという推定ができる。一方、符号117で示されるプログラム部分の表示は、C言語117aによる表示である。“class”などの表示はない。また、表示115では、“System.out.println”115cと表示され、一方、表示117では、“printf”117bと表示されており、両者は、共に、「文字列を表示する」という関数であるが、その関数名の相違により、言語を推定することができる。
【0041】
図12は、抽出した「プログラム部分(ソースコード)」のさらなる解析処理の一例を示す図であり、機能仕様の解析をプログラム中のコメントより行う例を示す図である。どのプログラム言語にも、「コメント」という概念がある。これは、ある文法ルールに従って(C言語では、コメントにしたい部分を、「/*」と「*/」で挟む。)文を書く。その部分は実際のプログラムの挙動には全く影響を与えない。そこで、主に、コメント部には、プログラムの注意書きや説明が記載されているため、この部分を解析することにより、プログラムの機能の解析が可能である。例えば、図12は、2つの数値を除算した余りを求める簡単なプログラムの例であるが、コメント部121として、「数値a,bを入力」、「aをbで割った余りを求める」、「結果を出力」などが記載されており、これらコメント部121の内容を解析することにより、図12は「2つの数値を入力し、除算した余りを求め、結果を出力するプログラムである」と、解析できる。
【0042】
尚、抽出した「プログラム部分(ソースコード)」のさらなる解析として、機能仕様の解析(プログラムの記述そのものより)を行うようにすることもできる。この解析手法は、プログラムの記述内容そのものを1行ずつ解析し、どのような機能であるかを判断するものであり、簡単なプログラムの場合にはこの手法による解析が可能である。
【0043】
次に、解析部による、プログラムに関連する文章の抽出処理について図6を参照しながら説明する。上記の処理において、「プログラム部分(ソースコード)」77の抽出が完了すると、「プログラムに関連する文章」83の抽出を行う。その手順としては、
1)元ファイル(html, xml)のテキスト部分75から、「プログラム部分」77の抽出が、前述の処理(「プログラム部分」の抽出処理)により実行済みである。これ処理を実行すると、「プログラム以外の部分の抽出」も行われていることになる。
2)次いで、「プログラム以外の部分」81から、「プログラムに関連する文章」83を抽出する。この際、「プログラム部分からの距離」、「書かれている文章の内容」等から、解析・抽出する。
【0044】
まず、「プログラム部分からの距離」に関して説明する。プログラム部分から、「前後5行以内」、「前後30文字以内」等、のように、求めたプログラム部分からの数値的な距離で、「プログラムに関連する文章」であるか否かを判断することができる。
【0045】
また、「書かれている文章の内容」を見て、「プログラム」、「ソフト」、「アルゴリズム」、「処理」等、プログラムに関連すると思われるキーワード(用語)が文章中に含まれるか否かにより「プログラムに関連する文章」であるかどうかを判断することができる。「プログラム部分からの距離」に基づく判定と、キーワードに基づく判定と、は性質の異なる判定方法である。そこで、両方の判定結果を組み合わせることにより、「プログラムに関連する文章」83であるか否かをより精度良く判定することができる。
【0046】
抽出された「プログラムに関連する文章」83をさらに解析する処理について説明する。例えば、「下記にバブルソートのサンプルを示します。」、「今日、大文字小文字変換プログラムを作成しました。メモ代わりにここに書きます。」などの記載、すなわち、プログラムの説明に関する文章があれば、これを検出・解析する(「機能仕様・説明・コメント」)。
【0047】
さらに、「コピー使用可否」判定処理部において、「複製は自由です」等のような、コピー使用の可否に関する文章を検出・解析する。このような文章があれば、コピーを行って良いかどうか、すなわち、プログラム部品として自由に利用できるか否かを判定することができる。
【0048】
プログラム部品として自由に使用できると判定された場合には、データ出力を行う。出力形式としては、独自の形式でも良いし、汎用形式でも良い。さらに、出力されたデータを、専用のブラウザ又は汎用のブラウザにより、ビューワーに表示させる。図13は、ビューワーに表示させた出力データの一例を示す図である。このビューワーの例では、メール閲覧用のアプリケーションソフトウェアを使用する場合の同様の間隔で、プログラム部品を閲覧・管理する。左側のエクスプローラのようなツリー表示131は、ルート133から、言語による区別のレベル、言語毎のアプリケーションなどのプログラムの種別の順番に階層構造となっている。ここでは、言語レベルとしては、C言語135、Java137の2つがその下流に示されており、Java137には、ゲーム141とグラフィック143との2つがその下流に示されている。ユーザーは、この階層構造(ツリー構造)の中からいずれかの項目を選択することができる(現在は「C言語」が選択(フォーカス)されている)。このツリーのそれぞれの項目はフォルダ形式となっており、種々の項目のデータを各フォルダに入れて階層構造を形成することができる。ツリー構造となっているため、ユーザーはデータ構造を把握しやすく、また、ツリー形式で整理しておくことが容易である。ここでは、ユーザーが「C言語」フォルダ135を選択している。すると、右側の上欄145に、バブルソート、○×ゲーム、hello worldなどの機能141と、言語151と、コピー可否情報153と、取得元アドレス155と、が示されている。ここでは、「バブルソート」143をポインタ147により選択し、情報を閲覧している。各フォルダは、ユーザーが作成し、フォルダへのデータ振り分けも、ユーザーが手動又は振り分け条件による自動化振り分けによって行うことができる。ここでは、バブルソート147が選択されており、中欄にその機能である、「バブルソートアルゴリズムによって、10個のデータを並び替える」という機能が表示されている。
【0049】
さらに、下欄には、実際のソースコード161が表示されており、このソースコード161を使用できるソースコードとして閲覧することができる。例えば、このソースコード161を閲覧し、使用できると考えると、ソースコード161の内容をプログラム部品記憶部などに記憶させ、プログラム部品として利用することができる。同じバブルソートなどの機能が2以上存在する場合には、両方を参照して、適切な方を選択してプログラム部品記憶部に記憶させることができる。また、ビューワー上に表示されたソースコード161を編集することも可能である。編集を行うことにより、ソースコードの抽出が不完全な場合には、ソースコード161を編集して修正することができる。修正後のソースコードをプログラム部品記憶部に記憶させることも可能である。このようにソースコードが修正された場合には、新たなソースコードを更新保存、別途保存、一時保存等を選択して実行することができるようにするのが好ましい。このように、言語毎、その下位のアプリケーション毎にフォルダの振り分けを行うことができる。特に、本実施の形態のように自動的に素材を取得し解析して抽出した場合には、ソースコードを抽出してフォルダに振り分けることから、振り分け時又は参照時にこのようにソースコードを表示させて編集を行うことができるようにするのが好ましい。
【0050】
(まとめ)
本実施の形態によるプログラム開発支援システムによれば、情報元がインターネット上の膨大なコンテンツであるため、豊富な数・種類のプログラム部品の取得が可能である。
【0051】
プログラム部品の新規追加・更新等は、ユーザーが意識的に作業しなくても自動的に行われる。また、プログラム部品の情報量が豊富である。さらに、プログラム部品の更新速度も速いという利点がある。
【0052】
また、ユーザー側の管理が容易であり、ユーザーの好みに応じた、プログラム部品の取得・管理が行いやすいという効果がある。
【産業上の利用可能性】
【0053】
本発明は、プログラム開発支援システムとして利用可能である。
【図面の簡単な説明】
【0054】
【図1】インターネット上のプログラム部品素材(以下、「インターネットプログラム部品素材」と称する。)のソースについて示す図である。
【図2】本実施の形態によるインターネット上で公開されているインターネットプログラム部品素材からプログラム部品を取得する例と従来手法によってプログラム資産データベースからプログラム部品を取得する例とを対比させて示す図である。
【図3】本発明の一実施の形態によるプログラム開発支援システムの概略的な概念図である。
【図4】本実施の形態によるプログラム開発支援システムの一構成例を示す機能ブロック図である。
【図5】プログラム開発支援システムによる処理の流れを示すフローチャート図である。
【図6】解析対象のデータ構成例をツリー構造で示した図である。
【図7】ブログをWEBブラウザで閲覧した際の画面の一例であり、図6との対応関係を表した図である。
【図8】WEBブラウザで閲覧したプログラム部分(ソースコード)の抽出の様子の例を示す図である。
【図9】図8の表示からHTMLソースファイルの表示をさせた例を示す図である。
【図10】解析部におけるプログラム部分(ソースコード)の抽出に関する解析方法の第2解析例を示す図であり、プログラム言語特有の単語から判断する例を示す図である。
【図11】解析部における処理であって、前の処理で抽出した「プログラム部分(ソースコード)のさらなる解析として、使用プログラミング言語の判別処理例を示す図である。
【図12】抽出した「プログラム部分(ソースコード)」のさらなる解析処理の一例を示す図であり、機能仕様の解析をプログラム中のコメントより行う例を示す図である。
【図13】ビューワーに表示させた出力データの一例を示す図である。
【図14】プログラム部品の再利用方法の流れの一例を示す図である。
【符号の説明】
【0055】
S…プログラム素材ソース、1…インターネット、3…掲示板、5…ブログ、7…ホームページ、11…プログラム部品、15…プログラム開発支援システム、21…取得部、23a…解析部、25…機能仕様説明・コメント解析部、27…ソースコード解析部、31…言語解析部、35…コピー使用可否解析部、37…データ出力部、41…ビューワー、43…ユーザー、101…プログラム資産データベース、103…プログラム部品。
【技術分野】
【0001】
本発明は、プログラム開発支援システムに関し、特に、ネットワーク経由でプログラム素材を取得し、これらを解析してプログラム部品を得るプログラム開発支援技術に関する。
【背景技術】
【0002】
世の中には多数のプログラマが存在し、膨大な量のプログラムが開発されている。これらのプログラムは、実際には、以下のような方法で再利用されているのが一般的である。
【0003】
図14は、プログラム部品の再利用方法の流れの一例を示す図である。図14に示すように、あるプログラマが作成した作成プログラム205を部品化したプログラム部品203を生成し、プログラム資産データベース201内にプログラム部品の資産(データベース)として格納する。一方、あるプログラマが、あるプログラムを作成しようとした場合に、このプログラム資産データベース201から再利用したいプログラム部品を取得し、取得したプログラム部品207を再利用することにより、作成プログラムB211を効率良く作成することができる。
【0004】
下記特許文献1に記載の技術は、汎用コンピュータのプログラム資産を効率的に管理するために、プログラム資産データを収集し、表形式にするプログラム資産収集処理装置について開示している。このプログラム資産収集処理装置は、1)汎用コンピュータのプログラム資産の情報である格納プログラム情報が格納されたプログラムライブラリ、2)ユーザーから入力される検索情報値が示すプログラム言語の種類と、格納プログラム情報を参照して格納プログラム情報 に含まれるプログラム言語の種類とを比較し、一致した場合にその格納プログラム情報を取得する格納プログラム情報参照部、3)格納プログラム情報参照部から送られてきた格納プログラム情報から、プログラムを資産管理するうえで必要な情報を収集するプログラム資産情報編集部、4)プログラム資産情報編集部から送られてきた情報を表形式に編集するプログラム資産情報出力部、を有している。
【0005】
【特許文献1】特開2000−10765号公報
【発明の開示】
【発明が解決しようとする課題】
【0006】
しかしながら、実際には、図14の手法や特許文献1に記載の手法を実施するにあたっては以下のような問題があった。
【0007】
1)プログラム資産の量の不足:プログラムライブラリに格納されているプログラム情報の数が十分でない場合、十分に機能しない。例えば、蓄積されているプログラム部品の量が少ないと、再利用可能なプログラム部品数も少なくなり、実際にプログラムを開発する際に効率向上には至らない。すなわち、利用者側から積極的にプログラム部品数を多くすることは難しかった。
【0008】
2)プログラム資産の更新速度の遅さ:プログラムライブラリに十分な数のプログラム情報が格納されるまでには、長期に渡るプログラム開発や多人数でのプログラム開発による蓄積が必要である。他人が作成したプログラムを収集・蓄積するためには、機能・アルゴリズムの理解・コピー可否の判断等の、膨大な労力が必要となる。実際上、プログラム資産が更新される速度は、新しく開発する対象のプログラムの新しさに比べて遅くなるのが一般的である。特に最先端のプログラム開発者にとっては、この問題が深刻となる。
【0009】
3)新規に開発したプログラム、他人が作成したプログラムの新たな収集等でなければ、プログラムライブラリは更新されず、かつその更新速度は非常に遅いものである。
【0010】
本発明は、プログラム部品をより簡単かつ大量に取得することを目的とする。
【課題を解決するための手段】
【0011】
1.プログラム部品の情報取得元を、上記特許文献1に記載のプログラムライブラリのような、ローカルな環境でのプログラム資産ではなく、ホームページ、掲示板、ブログ等インターネット上の全てのコンテンツを対象とする。これらは、無数のユーザーによって日々更新されるものであるため、前述の従来技術の課題であるプログラム情報量の不足(従来課題1)、プログラム情報量蓄積までの労力・負担、新たなプログラム情報の追加・更新速度が遅いという問題が解消される。
【0012】
2.しかしながら、情報取得元をローカルな環境からインターネットとすることによる新たな問題が生じる。
A.インターネット上には無数のコンテンツがあり、プログラムとは無関係なもの、プログラムに関係するがユーザーの希望を満たす内容ではないもの、等がある
B.インターネット上にあるプログラムは、そのままプログラムとして使用できるものは非常に少なく、ほとんどの場合はプログラム部品の全体または一部分が、作者のコメント・説明文と混在して記載されている。
C.上記特許文献1のような、過去に作成し動作実績のあるプログラムではないため、そのまま使用することは非常に危険である。また他人が作成したものであるため、コピー使用して良いか否かの判断も必要である。
【0013】
3.新規課題Aを解消する手段として、本発明では「取得部」を使用する。この取得部は名前の通りインターネット上のコンテンツを取得する機能がメインだが、下記機能を有することで新規課題Aを解消する。
【0014】
ユーザーが指定したコンテンツからのみ、情報を取得する。ユーザーが指定したキーワード条件に該当するコンテンツからのみ、情報を取得する(本文中に「サンプルプログラム」を含む、等)の方法がある。
【0015】
新規課題Bを解消する手段として、本発明では「解析部」を使用する。この解析部では、取得したコンテンツ内の文章を解析し、分類を行う。主に下記機能により新規課題Bを解消する。
【0016】
コンテンツ内の文章を解析し、「プログラム部分」と「プログラム以外の部分」に分ける。「プログラム部分」は、図1の「ソースコード」に相当する。或いは、「プログラム部分」内をさらに解析し、「使用されているプログラム言語(C、Java等)」を解析する。この解析結果は図1の「言語」に相当する。「プログラム以外の部分」内をさらに解析し、「プログラムに関して説明・コメントしている部分」を抽出する。これは図1の「機能仕様・説明・コメント」に相当する。さらに、「プログラム以外の部分」に記載されているプログラムの「コピー使用可否」に関する記載があれば、その情報も抽出するこれは図1の「コピー使用可否」に相当する。
【0017】
5.新規課題Cを解決する手段として、本発明では「ビューワー」を使用する。「解析部」で分類されたデータは、txtファイル等の汎用的な形式や本システム独自の形式で出力される(図1の「データ出力」に相当)。ユーザーはこの出力されたデータをビューワー(専用ブラウザや汎用的なアプリケーション等)によって下記のような閲覧が可能となり、新規課題Cを解消する。
【0018】
「フォルダ自動振り分け」「〜〜行以上/以下のプログラムは廃棄」等、ユーザーの希望に応じたデータ管理方法を用いることができる。また、「言語別に表示」「コピー使用可能なもののみ表示」「機能別に表示」等、ユーザーの希望に合わせたデータ表示方法を用いることもできる。
【発明の効果】
【0019】
本発明によれば、情報元がインターネット上の膨大なコンテンツであるため、豊富な数・種類のプログラム部品の取得が可能である。また、プログラム部品の新規追加・更新等は、ユーザーが意識的に作業せずに行われるので作業が簡単になる。
【発明を実施するための最良の形態】
【0020】
以下、本実施の形態によるプログラム開発支援システムについて説明する前に、発明者の行った考察について説明を行う。図1は、インターネット上のプログラム部品素材(以下、「インターネットプログラム部品素材」と称する。)のソースについて示す図である。発明者は、近年のインターネット等の普及により、現在、プログラムに関する情報共有のホームページ7・掲示板3、個人がプログラム開発のメモ代わりに書いているブログ5等、多くのプログラム部品が、多種多様な形でインターネット上に公開されていることに着目した。これらのソース3・5・7には、プログラムに関連する情報3a・5a・7aが記載されている可能性が高い。
【0021】
しかしながら、図2に示すように、従来手法によってプログラム資産データベース101からプログラム部品103を取得する場合に比べて、これらインターネット上で公開されているインターネットプログラム部品素材の数・種類は膨大であるが、プログラムに関係のあるサイトの識別が難しい上に、プログラムソース部分とその他の文が混在していること、a)使用プログラム言語が多様であるなどデータ形式が多様であること、b)プログラムの機能の判別が難しいこと、c)コピー使用可否等の著作権上の問題があること、等の観点から、これらを、そのまま上記のような従来手法と同様の手順でプログラム部品11として使用することは難しいと考えられる。
【0022】
図3は、本発明の一実施の形態によるプログラム開発支援システムの概略的な概念図である。本実施の形態によるプログラム開発支援システムでは、プログラムソースS(掲示板3、ブログ5、ホームページ7)に、インターネット1を経由してアクセスする。プログラム開発支援システム15において、1)プログラム取得対象のURLを指定し、2)プログラムソース部分、その他の部分の解析・分離を行う。3)使用ブログラム言語の解析、4)プログラムの機能の解析を行うことにより、プログラム部品11を得ることができる。
【0023】
以下に、より具体的なシステム構成及び処理手順について説明する。図4は、本実施の形態によるプログラム開発支援システムの一構成例を示す機能ブロック図である。本実施の形態によるプログラム開発支援システム15は、インターネットプログラム部品素材を多数含むプログラムソースS(掲示板3・ブログ5・ホームページ7)に対してインターネット経由1でアクセスするとともに、必要なインターネットプログラム部品素材を取得する取得部21と、取得したインターネットプログラム部品素材を解析する解析処理部23と、解析により抽出されたプログラムソースを出力するデータ出力部37と、出力したデータを閲覧可能なビューワー41と、を有しており、利用したいユーザー(プログラマ)43がこのビューワー41により、プログラム部品を閲覧できるようになっている。解析処理部23は、解析部23aと、機能・説明・コメント解析部25と、ソースコード解析部27と、言語解析部31と、コピー使用可否解析部35と、を有している。
【0024】
図5は、プログラム開発支援システム15による処理の流れを示すフローチャート図である。まず、ステップS1において、ユーザーがURLなどを指定するなどの操作を契機として処理が開始されると、ステップS2において、インターネット経由でプログラム取得対象のURLなどにアクセスする。
【0025】
次いで、ステップS3において、取得したインターネットプログラム部品素材データを解析し、インターネットプログラム部品素材データから、プログラム部分と、プログラムに関連する文章と、を抽出する。
【0026】
ここで、プログラム部分に関しては、ステップS4において、プログラム言語の判別、プログラムの機能・仕様の解析を行う。一方、関連する文章に関しては、ステップS5において、プログラムの機能・仕様の解析、コピー使用可否の解析を行う。
【0027】
次いで、ステップS4からステップS6に進み、ステップS4における解析結果を参考にしてプログラム(ソースコード)を含む部分を取得する。一方、ステップS5からはステップS7に進み、プログラムに関連する文章を取得する。コピー使用可否により、可の場合にはプログラム部品として使用することができるが、否の場合にはプログラム部品として使用することはできない。
【0028】
次いで、ステップS6からステップS8に進み、ソースコードに関して、タグ情報・プログラム言語に特有の単語などを参考にして、プログラム部分のみを抽出する。一方、ステップS7からはステップS9に進み、プログラムの機能仕様の抽出を行う。
【0029】
ステップS8・S9により抽出されたプログラム部分とプログラムの機能仕様とに基づいて、ステップS10において、プログラムの機能・仕様を参照したソースコードの抽出精度を高める処理を行う。ステップS11において、ビューワーにソースコードを表示させ、適宜、編集処理などを行い、ステップS12において、処理を終了する。最終的に得られたソースコードは、機能・仕様などと関連付けて、プログラム部品記憶部などに記憶させておくことが好ましい。
【0030】
次に、上記の各処理について詳細に説明を行う。取得処理では、ユーザーの目的に応じ、データ取得対象のサイトが指定される。サイトの指定方法としては、1)取得対象のサイトのURLを直接ユーザーが指定する方法、2)ユーザーが条件を設定し、その条件を満たすサイトのみを対象とする方法、などがある。例えば、画像処理に関するプログラムを取得したい場合には、本文中に”サンプルプログラム”、 “画像処理”等をキーワードとして含み、URLのドメイン名が「****.jp」であるサイトなどである。或いは、最近1ヶ月以内に更新されたソースなどを指定条件にしても良い。
【0031】
上記の取得処理における条件指定による絞り込みで、プログラムと関係の無いサイトからのデータ取得を防止し、ユーザーの目的に合致するサイトのみからのデータ取得することができる。すなわち、不要な処理、不要なデータの蓄積を防止することができる。取得するデータは、HTML, XML等インターネット上で使用されているファイル形式のままで良い。取得する際にデータ変換等の処理は行わない。
【0032】
次に、解析部の処理の概要について説明する。解析部では、以下の処理を行う。
1)取得したデータを解析し、「プログラム部分(ソースコード)」と「プログラムに関連する文章」を抽出する。
【0033】
2)さらに、「プログラム部分(ソースコード)」、「プログラムに関連する文章」、を解析し、下記の情報を抽出する。
【0034】
a)「プログラム部分(ソースコード)」の解析
-プログラム言語(C言語, Java等)の判別を行う。
-プログラムを実行することにより発揮される機能の解析、プログラムの仕様の解析を行う。
【0035】
b)「プログラムに関連する文章」の解析
-プログラムの機能・仕様の解析(プログラムに対して付されたコメントなどから解析することができる。
-コピー使用可否の解析(コピーの可否がコメントなどに付されているかどうかを判定する。)
【0036】
以上の機能により、
1)プログラム部品として必要な箇所のみ(プログラムソースコード)を抽出することができる。
2)プログラムの機能、仕様の自動抽出が可能になる。
3)プログラムのコピー使用可否の自動判別が可能になる。
【0037】
図6は、本発明の観点から解析対象のデータ構成例をツリー構造で示した図である。HTML、XMLなどのファイルは、<font><center>等WEBブラウザでの閲覧時には表示されない各種タグ73と、WEBブラウザでの閲覧時に表示されるテキスト部分75に分けられる。さらに、テキスト部分75を、プログラム部分(ソースコード)77と、プログラム以外の部分81とに分けることができる。さらに、プログラム以外の部分81を、プログラムに関連する文章部分83と、プログラムとは無関係な文章部分85とに分けることができる。ここで、取得したい部分は、プログラム部分(ソースコード)77とプログラムに関連する文章部分83である。図7は、ブログをWEBブラウザで閲覧した際の画面の一例であり、図6との対応関係を表している。
【0038】
次に、解析部におけるプログラム部分(ソースコード)の抽出処理の詳細について説明する。図8、図9は、解析部におけるプログラム部分(ソースコード)の抽出に関する解析方法の第1解析例を示す図であり、元ファイル(HTML等)のタグ情報を利用する解析例を示す図である。図8は、WEBブラウザで閲覧したプログラム部分(ソースコード)の抽出の様子の例を示す図である。図8に示すように、WEBブラウザによる表示91においては、C言語93である旨の表示と、説明文(コメント)95と、実際のプログラム97とが表示されている。図9に示すように、図8の表示からHTMLソースファイルの表示101をさせた例を示す図である。ここで、タグ情報に着目すると、<code>タグ103は、プログラムソースの表示を目的したタグである。そのため、<code></code>タグで挟まれている部分は、プログラムソースコードである可能性が非常に高いので、この部分をプログラムソースコードと推定することができる。すなわち、タグで挟まれた部分を抽出候補とする。
【0039】
図10は、解析部におけるプログラム部分(ソースコード)の抽出に関る解析方法の第2解析例を示す図であり、プログラム言語特有の単語から判断する例を示す図である。前述した<code></code>タグを使用していないサイトも多数存在する。そのような場合には、テキスト文を解析し、プログラム部分を抽出する必要がある。例えば、“int”111a, “for”111b,“printf”111cのように、プログラム言語特有の単語がある(“int”はデータの型、“for”は繰り返し処理、“printf”は関数名を表す)。それらが集中して存在するような場合は、その部分はプログラム部分である可能性は高いと判断できる。そこで、例えば、プログラム言語特有の単語のリストを記憶しておき、これらのプログラム言語特有の単語を検索し、それらの単語のHTMLソースファイルにおける分布を調べ、これらの単語が多く現れる箇所をプログラム部分(ソースコード)と推定する。尚、プログラム言語特有の単語は、言語別に格納しておくことが好ましい。もし、言語が最初にわかっていれば、その言語特有の単語だけを検索すれば良いからである。
【0040】
図11は、解析部における処理であって、前の処理で抽出した「プログラム部分(ソースコード)のさらなる解析として、使用プログラミング言語の判別処理例を示す図である。プログラム言語には、同じ処理をする場合でも、プログラムの特性(手続き型、オブジェクト指向、等)、関数名、文法ルール等の違いにより、その記述内容は変わってくる。そこで、記述内容の違いを検出し、解析することにより、プログラム言語の判別が可能である。尚、この処理と前の処理との順番が入れ替わっても良い。符号115で示されるプログラム部分の表示は、Java115a言語による表示であり、単語“class”115bは、オブジェクト指向の単語ならではのものであり、手続き型の言語であるC言語では使われない言語である。従って、このプログラムの言語は、C言語ではなくオブジェクト指向の言語であり、Javaではないかという推定ができる。一方、符号117で示されるプログラム部分の表示は、C言語117aによる表示である。“class”などの表示はない。また、表示115では、“System.out.println”115cと表示され、一方、表示117では、“printf”117bと表示されており、両者は、共に、「文字列を表示する」という関数であるが、その関数名の相違により、言語を推定することができる。
【0041】
図12は、抽出した「プログラム部分(ソースコード)」のさらなる解析処理の一例を示す図であり、機能仕様の解析をプログラム中のコメントより行う例を示す図である。どのプログラム言語にも、「コメント」という概念がある。これは、ある文法ルールに従って(C言語では、コメントにしたい部分を、「/*」と「*/」で挟む。)文を書く。その部分は実際のプログラムの挙動には全く影響を与えない。そこで、主に、コメント部には、プログラムの注意書きや説明が記載されているため、この部分を解析することにより、プログラムの機能の解析が可能である。例えば、図12は、2つの数値を除算した余りを求める簡単なプログラムの例であるが、コメント部121として、「数値a,bを入力」、「aをbで割った余りを求める」、「結果を出力」などが記載されており、これらコメント部121の内容を解析することにより、図12は「2つの数値を入力し、除算した余りを求め、結果を出力するプログラムである」と、解析できる。
【0042】
尚、抽出した「プログラム部分(ソースコード)」のさらなる解析として、機能仕様の解析(プログラムの記述そのものより)を行うようにすることもできる。この解析手法は、プログラムの記述内容そのものを1行ずつ解析し、どのような機能であるかを判断するものであり、簡単なプログラムの場合にはこの手法による解析が可能である。
【0043】
次に、解析部による、プログラムに関連する文章の抽出処理について図6を参照しながら説明する。上記の処理において、「プログラム部分(ソースコード)」77の抽出が完了すると、「プログラムに関連する文章」83の抽出を行う。その手順としては、
1)元ファイル(html, xml)のテキスト部分75から、「プログラム部分」77の抽出が、前述の処理(「プログラム部分」の抽出処理)により実行済みである。これ処理を実行すると、「プログラム以外の部分の抽出」も行われていることになる。
2)次いで、「プログラム以外の部分」81から、「プログラムに関連する文章」83を抽出する。この際、「プログラム部分からの距離」、「書かれている文章の内容」等から、解析・抽出する。
【0044】
まず、「プログラム部分からの距離」に関して説明する。プログラム部分から、「前後5行以内」、「前後30文字以内」等、のように、求めたプログラム部分からの数値的な距離で、「プログラムに関連する文章」であるか否かを判断することができる。
【0045】
また、「書かれている文章の内容」を見て、「プログラム」、「ソフト」、「アルゴリズム」、「処理」等、プログラムに関連すると思われるキーワード(用語)が文章中に含まれるか否かにより「プログラムに関連する文章」であるかどうかを判断することができる。「プログラム部分からの距離」に基づく判定と、キーワードに基づく判定と、は性質の異なる判定方法である。そこで、両方の判定結果を組み合わせることにより、「プログラムに関連する文章」83であるか否かをより精度良く判定することができる。
【0046】
抽出された「プログラムに関連する文章」83をさらに解析する処理について説明する。例えば、「下記にバブルソートのサンプルを示します。」、「今日、大文字小文字変換プログラムを作成しました。メモ代わりにここに書きます。」などの記載、すなわち、プログラムの説明に関する文章があれば、これを検出・解析する(「機能仕様・説明・コメント」)。
【0047】
さらに、「コピー使用可否」判定処理部において、「複製は自由です」等のような、コピー使用の可否に関する文章を検出・解析する。このような文章があれば、コピーを行って良いかどうか、すなわち、プログラム部品として自由に利用できるか否かを判定することができる。
【0048】
プログラム部品として自由に使用できると判定された場合には、データ出力を行う。出力形式としては、独自の形式でも良いし、汎用形式でも良い。さらに、出力されたデータを、専用のブラウザ又は汎用のブラウザにより、ビューワーに表示させる。図13は、ビューワーに表示させた出力データの一例を示す図である。このビューワーの例では、メール閲覧用のアプリケーションソフトウェアを使用する場合の同様の間隔で、プログラム部品を閲覧・管理する。左側のエクスプローラのようなツリー表示131は、ルート133から、言語による区別のレベル、言語毎のアプリケーションなどのプログラムの種別の順番に階層構造となっている。ここでは、言語レベルとしては、C言語135、Java137の2つがその下流に示されており、Java137には、ゲーム141とグラフィック143との2つがその下流に示されている。ユーザーは、この階層構造(ツリー構造)の中からいずれかの項目を選択することができる(現在は「C言語」が選択(フォーカス)されている)。このツリーのそれぞれの項目はフォルダ形式となっており、種々の項目のデータを各フォルダに入れて階層構造を形成することができる。ツリー構造となっているため、ユーザーはデータ構造を把握しやすく、また、ツリー形式で整理しておくことが容易である。ここでは、ユーザーが「C言語」フォルダ135を選択している。すると、右側の上欄145に、バブルソート、○×ゲーム、hello worldなどの機能141と、言語151と、コピー可否情報153と、取得元アドレス155と、が示されている。ここでは、「バブルソート」143をポインタ147により選択し、情報を閲覧している。各フォルダは、ユーザーが作成し、フォルダへのデータ振り分けも、ユーザーが手動又は振り分け条件による自動化振り分けによって行うことができる。ここでは、バブルソート147が選択されており、中欄にその機能である、「バブルソートアルゴリズムによって、10個のデータを並び替える」という機能が表示されている。
【0049】
さらに、下欄には、実際のソースコード161が表示されており、このソースコード161を使用できるソースコードとして閲覧することができる。例えば、このソースコード161を閲覧し、使用できると考えると、ソースコード161の内容をプログラム部品記憶部などに記憶させ、プログラム部品として利用することができる。同じバブルソートなどの機能が2以上存在する場合には、両方を参照して、適切な方を選択してプログラム部品記憶部に記憶させることができる。また、ビューワー上に表示されたソースコード161を編集することも可能である。編集を行うことにより、ソースコードの抽出が不完全な場合には、ソースコード161を編集して修正することができる。修正後のソースコードをプログラム部品記憶部に記憶させることも可能である。このようにソースコードが修正された場合には、新たなソースコードを更新保存、別途保存、一時保存等を選択して実行することができるようにするのが好ましい。このように、言語毎、その下位のアプリケーション毎にフォルダの振り分けを行うことができる。特に、本実施の形態のように自動的に素材を取得し解析して抽出した場合には、ソースコードを抽出してフォルダに振り分けることから、振り分け時又は参照時にこのようにソースコードを表示させて編集を行うことができるようにするのが好ましい。
【0050】
(まとめ)
本実施の形態によるプログラム開発支援システムによれば、情報元がインターネット上の膨大なコンテンツであるため、豊富な数・種類のプログラム部品の取得が可能である。
【0051】
プログラム部品の新規追加・更新等は、ユーザーが意識的に作業しなくても自動的に行われる。また、プログラム部品の情報量が豊富である。さらに、プログラム部品の更新速度も速いという利点がある。
【0052】
また、ユーザー側の管理が容易であり、ユーザーの好みに応じた、プログラム部品の取得・管理が行いやすいという効果がある。
【産業上の利用可能性】
【0053】
本発明は、プログラム開発支援システムとして利用可能である。
【図面の簡単な説明】
【0054】
【図1】インターネット上のプログラム部品素材(以下、「インターネットプログラム部品素材」と称する。)のソースについて示す図である。
【図2】本実施の形態によるインターネット上で公開されているインターネットプログラム部品素材からプログラム部品を取得する例と従来手法によってプログラム資産データベースからプログラム部品を取得する例とを対比させて示す図である。
【図3】本発明の一実施の形態によるプログラム開発支援システムの概略的な概念図である。
【図4】本実施の形態によるプログラム開発支援システムの一構成例を示す機能ブロック図である。
【図5】プログラム開発支援システムによる処理の流れを示すフローチャート図である。
【図6】解析対象のデータ構成例をツリー構造で示した図である。
【図7】ブログをWEBブラウザで閲覧した際の画面の一例であり、図6との対応関係を表した図である。
【図8】WEBブラウザで閲覧したプログラム部分(ソースコード)の抽出の様子の例を示す図である。
【図9】図8の表示からHTMLソースファイルの表示をさせた例を示す図である。
【図10】解析部におけるプログラム部分(ソースコード)の抽出に関する解析方法の第2解析例を示す図であり、プログラム言語特有の単語から判断する例を示す図である。
【図11】解析部における処理であって、前の処理で抽出した「プログラム部分(ソースコード)のさらなる解析として、使用プログラミング言語の判別処理例を示す図である。
【図12】抽出した「プログラム部分(ソースコード)」のさらなる解析処理の一例を示す図であり、機能仕様の解析をプログラム中のコメントより行う例を示す図である。
【図13】ビューワーに表示させた出力データの一例を示す図である。
【図14】プログラム部品の再利用方法の流れの一例を示す図である。
【符号の説明】
【0055】
S…プログラム素材ソース、1…インターネット、3…掲示板、5…ブログ、7…ホームページ、11…プログラム部品、15…プログラム開発支援システム、21…取得部、23a…解析部、25…機能仕様説明・コメント解析部、27…ソースコード解析部、31…言語解析部、35…コピー使用可否解析部、37…データ出力部、41…ビューワー、43…ユーザー、101…プログラム資産データベース、103…プログラム部品。
【特許請求の範囲】
【請求項1】
インターネット上のコンテンツから情報を取得する情報取得部であって、指定された条件に該当するコンテンツのみから情報を取得する情報取得部と、
該情報取得部により取得されたコンテンツ内の文章を解析する解析部であって、
コンテンツ内の文章を解析し、「プログラム部分」と「プログラム以外の部分」に分けるソースコード抽出部と、
該「プログラム部分」内をさらに解析し、使用されているプログラム言語を解析する言語解析部と、
前記「プログラム部分」内をさらに解析し、「プログラム中においてプログラムに関して説明・コメントしている部分」に基づいて、プログラムの機能を解析する第1の機能解析部と、
前記「プログラム以外の部分」に記載されているプログラムに関連する記載を抽出し、プログラムの機能を解析する第2の機能解析部と
を有することを特徴とするプログラム開発支援システム。
【請求項2】
前記指定された条件は、指定されたサイトのURL又は指定されたキーワードを含むことであることを特徴とする請求項1に記載のプログラム開発支援システム。
【請求項3】
前記情報取得部で取得する情報は、インターネット上で公開されているファイル自体であることを特徴とする請求項1又は2に記載のプログラム開発支援システム。
【請求項4】
前記ソースコード抽出部は、
タグ情報を用いて、タグに挟まれている部分をソースコードと推定することを特徴とする請求項1から3までのいずれか1項に記載のプログラム開発支援システム。
【請求項5】
前記ソースコード抽出部は、
プログラム言語特有の単語を検出し、該プログラム言語特有の単語が集中して存在する部分をソースコードと推定することを特徴とする請求項1から4までのいずれか1項に記載のプログラム開発支援システム。
【請求項6】
前記言語解析部は、プログラムの特性、関数名、文法の特徴のうち少なくともいずれかに基づいてプログラム言語を推定することを特徴とする請求項1から5までのいずれか1項に記載のプログラム開発支援システム。
【請求項7】
前記第1の機能解析部は、コメント部を検出し、該コメント部に記載されるプログラムの注意書き又は説明に基づいてプログラムの機能を解析することを特徴とする請求項1から6までのいずれか1項に記載のプログラム開発支援システム。
【請求項8】
前記第2の機能解析部は、元ファイルからソースコードを除いた部分をプログラム以外の部分とし、該プログラム以外の部分と、ソースコードとの距離が近い文章をプログラムに関連する文章と推定することを特徴とする請求項1から7までのいずれか1項に記載のプログラム開発支援システム。
【請求項9】
前記第2の機能解析部は、元ファイルからソースコードを除いた部分をプログラム以外の部分とし、該プログラム以外の部分内に含まれるプログラムに関連する内容の用語を含む部分をプログラムに関連する文章と推定することを特徴とする請求項1から8までのいずれか1項に記載のプログラム開発支援システム。
【請求項10】
前記プログラムに関連する文章に基づいて、プログラムの機能を推定することを特徴とする請求項8又は9に記載のプログラム開発支援システム。
【請求項11】
前記プログラムに関連する文章における、コピー可否の文章を検出してコピー使用の可否を推定することを特徴とする請求項8から10までのいずれか1項に記載のプログラム開発支援システム。
【請求項12】
さらに、請求項1から11までのプログラム開発支援システムにより抽出されたプログラム部品を表示させるとともに、編集処理を可能とするビューワーを備えることを特徴とするプログラム開発支援システム。
【請求項13】
前記表示には、言語と内容との階層構造を有するフォルダがツリー構造で表示され、該ツリー構造のフォルダアイコンにフォーカスすると、該当するプログラムの内容と属性とが表示されることを特徴とする請求項12に記載のプログラム開発支援システム。
【請求項14】
編集されたプログラム部品を新規追加又は更新して記憶するプログラム部品記憶部を有することを特徴とする請求項12又は13に記載のプログラム開発支援システム。
【請求項15】
前記インターネット上のコンテンツは、ホームページ、ブログ、掲示板のうちのいずれかを含むことを特徴とする請求項1から14までのいずれか1項に記載のプログラム開発支援システム。
【請求項1】
インターネット上のコンテンツから情報を取得する情報取得部であって、指定された条件に該当するコンテンツのみから情報を取得する情報取得部と、
該情報取得部により取得されたコンテンツ内の文章を解析する解析部であって、
コンテンツ内の文章を解析し、「プログラム部分」と「プログラム以外の部分」に分けるソースコード抽出部と、
該「プログラム部分」内をさらに解析し、使用されているプログラム言語を解析する言語解析部と、
前記「プログラム部分」内をさらに解析し、「プログラム中においてプログラムに関して説明・コメントしている部分」に基づいて、プログラムの機能を解析する第1の機能解析部と、
前記「プログラム以外の部分」に記載されているプログラムに関連する記載を抽出し、プログラムの機能を解析する第2の機能解析部と
を有することを特徴とするプログラム開発支援システム。
【請求項2】
前記指定された条件は、指定されたサイトのURL又は指定されたキーワードを含むことであることを特徴とする請求項1に記載のプログラム開発支援システム。
【請求項3】
前記情報取得部で取得する情報は、インターネット上で公開されているファイル自体であることを特徴とする請求項1又は2に記載のプログラム開発支援システム。
【請求項4】
前記ソースコード抽出部は、
タグ情報を用いて、タグに挟まれている部分をソースコードと推定することを特徴とする請求項1から3までのいずれか1項に記載のプログラム開発支援システム。
【請求項5】
前記ソースコード抽出部は、
プログラム言語特有の単語を検出し、該プログラム言語特有の単語が集中して存在する部分をソースコードと推定することを特徴とする請求項1から4までのいずれか1項に記載のプログラム開発支援システム。
【請求項6】
前記言語解析部は、プログラムの特性、関数名、文法の特徴のうち少なくともいずれかに基づいてプログラム言語を推定することを特徴とする請求項1から5までのいずれか1項に記載のプログラム開発支援システム。
【請求項7】
前記第1の機能解析部は、コメント部を検出し、該コメント部に記載されるプログラムの注意書き又は説明に基づいてプログラムの機能を解析することを特徴とする請求項1から6までのいずれか1項に記載のプログラム開発支援システム。
【請求項8】
前記第2の機能解析部は、元ファイルからソースコードを除いた部分をプログラム以外の部分とし、該プログラム以外の部分と、ソースコードとの距離が近い文章をプログラムに関連する文章と推定することを特徴とする請求項1から7までのいずれか1項に記載のプログラム開発支援システム。
【請求項9】
前記第2の機能解析部は、元ファイルからソースコードを除いた部分をプログラム以外の部分とし、該プログラム以外の部分内に含まれるプログラムに関連する内容の用語を含む部分をプログラムに関連する文章と推定することを特徴とする請求項1から8までのいずれか1項に記載のプログラム開発支援システム。
【請求項10】
前記プログラムに関連する文章に基づいて、プログラムの機能を推定することを特徴とする請求項8又は9に記載のプログラム開発支援システム。
【請求項11】
前記プログラムに関連する文章における、コピー可否の文章を検出してコピー使用の可否を推定することを特徴とする請求項8から10までのいずれか1項に記載のプログラム開発支援システム。
【請求項12】
さらに、請求項1から11までのプログラム開発支援システムにより抽出されたプログラム部品を表示させるとともに、編集処理を可能とするビューワーを備えることを特徴とするプログラム開発支援システム。
【請求項13】
前記表示には、言語と内容との階層構造を有するフォルダがツリー構造で表示され、該ツリー構造のフォルダアイコンにフォーカスすると、該当するプログラムの内容と属性とが表示されることを特徴とする請求項12に記載のプログラム開発支援システム。
【請求項14】
編集されたプログラム部品を新規追加又は更新して記憶するプログラム部品記憶部を有することを特徴とする請求項12又は13に記載のプログラム開発支援システム。
【請求項15】
前記インターネット上のコンテンツは、ホームページ、ブログ、掲示板のうちのいずれかを含むことを特徴とする請求項1から14までのいずれか1項に記載のプログラム開発支援システム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【公開番号】特開2009−237782(P2009−237782A)
【公開日】平成21年10月15日(2009.10.15)
【国際特許分類】
【出願番号】特願2008−81354(P2008−81354)
【出願日】平成20年3月26日(2008.3.26)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.JAVA
【出願人】(000005049)シャープ株式会社 (33,933)
【Fターム(参考)】
【公開日】平成21年10月15日(2009.10.15)
【国際特許分類】
【出願日】平成20年3月26日(2008.3.26)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.JAVA
【出願人】(000005049)シャープ株式会社 (33,933)
【Fターム(参考)】
[ Back to top ]