(57)【特許請求の範囲】
【請求項１】
プログラムの部品であるコンポーネントに関する情報を記憶するコンポーネントリポジトリを備えるコンポーネント検索システムを利用してコンポーネントの検索を行うプログラムコンポーネント検索方法であって、
前記コンポーネント検索システムが備えるファイル抽出型検索インデックス登録部が、処理対象のソースファイルを読み込み、コンポーネント毎に、該ソースファイルから検索キーワードを抽出し、該検索キーワードと該コンポーネントのＩＤとを対応させて前記コンポーネントリポジトリへ検索インデックスとして登録するステップと、
前記コンポーネント検索システムが備えるキーワード検索部が、利用者により入力された検索キーワードを前記コンポーネントリポジトリの検索インデックスから検索し、検索結果のコンポーネントＩＤを提示するステップと、
前記コンポーネント検索システムが備える検索入力キーワード抽出／格納部が、前記利用者により入力された検索キーワードと該検索結果のコンポーネントＩＤとを、検索履歴情報に登録するステップと、
前記コンポーネント検索システムが備える利用ランク型検索インデックス登録部が、前記検索履歴情報から検索キーワードと検索結果のコンポーネントＩＤとを抽出し、前記検索履歴情報に当該検索キーワードとコンポーネントＩＤの検索履歴が多くあるほど高くなる優先度を付けて、前記コンポーネントリポジトリへ検索インデックスとして登録するステップとを備え、
前記キーワード検索部による検索で検索結果のコンポーネントＩＤを提示する際には、前記優先度が高い順に検索結果のコンポーネントＩＤを提示することを特徴とするプログラムコンポーネント検索方法。
【請求項２】
請求項１に記載のプログラムコンポーネント検索方法において、
前記コンポーネント検索システムが備えるコンポーネントインターフェイス情報登録部が、処理対象のソースファイルを読み込み、コンポーネント毎に、該ソースファイルからインターフェイス情報を抽出して、コンポーネントリポジトリへコンポーネントインターフェイス情報として登録するステップと、
前記コンポーネント検索システムが備えるインターフェイス検索部が、利用者により入力された検索キーワードを前記コンポーネントリポジトリのコンポーネントインターフェイス情報から前方一致検索で検索し、検索結果のコンポーネントＩＤを提示するステップと、
前記コンポーネント検索システムが備える検索入力キーワード抽出／格納部が、前記利用者により入力された検索キーワードと該検索結果のコンポーネントＩＤとを、検索履歴情報に登録するステップと
を、さらに備えることを特徴とするプログラムコンポーネント検索方法。
【請求項３】
請求項１または２に記載のプログラムコンポーネント検索方法において、
前記利用ランク型検索インデックス登録部が、前記検索履歴情報から抽出した情報を優先度を付けて前記コンポーネントリポジトリへ検索インデックスとして登録する場合、当該コンポーネントの使用実績を取得し、より使用実績のあるものほど高くなるような優先度を付けることを特徴とするプログラムコンポーネント検索方法。
【請求項４】
請求項２に記載のプログラムコンポーネント検索方法において、
処理対象のソースファイルを特定する情報と実行日時を含む実行定義情報に基づいて、前記コンポーネントインターフェイス情報登録部によるコンポーネントインターフェイス情報の登録、前記ファイル抽出型検索インデックス登録部による検索インデックスの登録、および、前記利用ランク型検索インデックス登録部による検索インデックスの登録のうちの少なくとも１つを自動実行することを特徴とするプログラムコンポーネント検索方法。
【請求項５】
プログラムの部品であるコンポーネントに関する情報を記憶するコンポーネントリポジトリを備えるコンポーネント検索システムであって、
処理対象のソースファイルを読み込み、コンポーネント毎に、該ソースファイルから検索キーワードを抽出し、該検索キーワードと該コンポーネントのＩＤとを対応させて前記コンポーネントリポジトリへ検索インデックスとして登録する、ファイル抽出型検索インデックス登録部と、
利用者により入力された検索キーワードを前記コンポーネントリポジトリの検索インデックスから検索し、検索結果のコンポーネントＩＤを提示する、キーワード検索部と、
前記利用者により入力された検索キーワードと該検索結果のコンポーネントＩＤとを、検索履歴情報に登録する、検索入力キーワード抽出／格納部と、
前記検索履歴情報から検索キーワードと検索結果のコンポーネントＩＤとを抽出し、前記検索履歴情報に当該検索キーワードとコンポーネントＩＤの検索履歴が多くあるほど高くなる優先度を付けて、前記コンポーネントリポジトリへ検索インデックスとして登録する、利用ランク型検索インデックス登録部とを備え、
前記キーワード検索部による検索で検索結果のコンポーネントＩＤを提示する際には、前記優先度が高い順に検索結果のコンポーネントＩＤを提示することを特徴とするプログラムコンポーネント検索システム。
【請求項６】
プログラムの部品であるコンポーネントに関する情報を記憶するコンポーネントリポジトリを備えたコンピュータをコンポーネント検索システムとして機能させるコンポーネント検索プログラムであって、
前記コンピュータを、
処理対象のソースファイルを読み込み、コンポーネント毎に、該ソースファイルから検索キーワードを抽出し、該検索キーワードと該コンポーネントのＩＤとを対応させて前記コンポーネントリポジトリへ検索インデックスとして登録する、ファイル抽出型検索インデックス登録部と、
利用者により入力された検索キーワードを前記コンポーネントリポジトリの検索インデックスから検索し、検索結果のコンポーネントＩＤを提示する、キーワード検索部と、
前記利用者により入力された検索キーワードと該検索結果のコンポーネントＩＤとを、検索履歴情報に登録する、検索入力キーワード抽出／格納部と、
前記検索履歴情報から検索キーワードと検索結果のコンポーネントＩＤとを抽出し、前記検索履歴情報に当該検索キーワードとコンポーネントＩＤの検索履歴が多くあるほど高くなる優先度を付けて、前記コンポーネントリポジトリへ検索インデックスとして登録する、利用ランク型検索インデックス登録部とを備え、
前記キーワード検索部による検索で検索結果のコンポーネントＩＤを提示する際には、前記優先度が高い順に検索結果のコンポーネントＩＤを提示するプログラムコンポーネント検索システムとして、機能させるコンポーネント検索プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、アプリケーションソフトウェアの部品である複数のコンポーネントを登録し、それらのコンポーネントの中から適切なコンポーネントを検索する技術に関するものである。
【背景技術】
【０００２】
ソフトウェア開発においては、効率的な開発を行うために、既存ソフトウェア開発で作成されたソフトウェアコンポーネントを再利用することや、共通利用できるコンポーネントを再利用することが有効とされている。そのような再利用の方法については、従来から種々の検討がなされている。一般的に、自分たちが必要としているコンポーネントを見つけ出すためには、機能名による検索を行うことが多い。技術者がコンポーネント群の全体を把握している場合は、必要なコンポーネントを適宜探し出すことは可能であるが、そのような技術者は高スキルを持つ技術者に限られることがほとんどである。一般技術者は、一個人としての経験を頼りに、機能名で検索したり、これまでに利用したことのあるものの中から必要なコンポーネントを探し出しているのが実情である。
【０００３】
結果として、同じチームやプロジェクト内でも他人が作成しているコンポーネントについて認識がないために類似コンポーネントを作り込んだり、適切なコンポーネントを選択できずに間違った実装をしたりするケースがあり、思うような再利用が行われていないのが現実である。
【０００４】
下記特許文献１，２には、再利用性を促すためのツールであるコンポーネント検索ツールが開示されている。特許文献１に記載の技術は、コンポーネント毎に適用分野と利用形態に応じた適合度を求めて利用情報リポジトリに格納しておき、検索時には、指定された適用分野と適合度に応じたコンポーネントを提示できるようにしたものである。また、特許文献２に記載の技術は、分類するに至った根拠を示す分類子により複数の分類概念へ分類する際の分類化の観点が明示されるようにし、この分類子が付随される統一的な階層構造に従った登録・検索が行えるようにしたものである。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００４−２５２５１２号公報
【特許文献２】特開２００７−２２６３７５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上記特許文献１に記載の技術では、機能仕様を中心に適合性を見ているために、仕様書の間違いや実際に利用者の利用結果が反映されることがない。また、上記特許文献２に記載の技術では、標準化された階層構造にコンポーネントを分析する必要があり、慣れるまでに時間がかかる。また検索方法も階層構造を理解する必要があり、直感的ではない。何れの検索システムも、登録情報やプログラムに対する情報の設定が多くなり、システム運用負荷や検索システムを利用できるまでの情報登録に対する負荷が大きい。また、初心者や技術的に一定レベルを満たしていない技術者にとっては慣れるまでに時間を要し、標準化した効果があまり得られない。
【０００７】
以上のように、従来のコンポーネント部品検索手法では、単純な名前などによる検索を行うか、あるいは事前に階層構造に分解した機能仕様やユーザの求める機能との適合度等を登録しておく必要があった。そのため、高度な分析スキルと機能仕様の理解が不可欠であり、スキルが千差万別な一般的な技術者への対応は難しかった。また、高度なスキルを有する人材で適用を開始して初期導入はうまく言っても、運用要員の入れ替えなどによりシステムの維持が困難になる場合もあった。
【０００８】
また、一般的なスキルの技術者だけでは、コンポーネントのデータ登録や仕組みの理解で時間がかかり、効果的な再利用まで結びついていないのが現状である。そのため、コンポーネント検索システムは、導入容易性と個人頼みの技術者たちの検索ノウハウを集約することがなければ、より実践的な検索機能を実現できないのである。
【０００９】
本発明の目的は、導入のための準備作業の時間や手間の軽減が図れ、継続的な利用を行うことで利用者にとって有益な検索が可能な技術を提供することにある。
【課題を解決するための手段】
【００１０】
上記目的を達成するため、本発明は、プログラムの部品であるコンポーネントに関する情報を記憶するコンポーネントリポジトリを備えるコンポーネント検索システムを利用してコンポーネントの検索を行う場合に、ファイル抽出型検索インデックス登録部で、処理対象のソースファイルを読み込み、コンポーネント毎に、該ソースファイルから検索キーワードを抽出し、該検索キーワードと該コンポーネントのＩＤとを対応させて前記コンポーネントリポジトリへ検索インデックスとして登録し、キーワード検索部で、利用者により入力された検索キーワードを前記コンポーネントリポジトリの検索インデックスから検索し、検索結果のコンポーネントＩＤを提示し、検索入力キーワード抽出／格納部で、前記利用者により入力された検索キーワードと該検索結果のコンポーネントＩＤとを、検索履歴情報に登録し、利用ランク型検索インデックス登録部で、前記検索履歴情報から検索キーワードと検索結果のコンポーネントＩＤとを抽出し、前記検索履歴情報に当該検索キーワードとコンポーネントＩＤの検索履歴が多くあるほど高くなる優先度を付けて、前記コンポーネントリポジトリへ検索インデックスとして登録するようにし、前記キーワード検索部による検索で検索結果のコンポーネントＩＤを提示する際には、前記優先度が高い順に検索結果のコンポーネントＩＤを提示することを特徴とする。
【００１１】
さらに、コンポーネントインターフェイス情報登録部で、処理対象のソースファイルを読み込み、コンポーネント毎に、該ソースファイルからインターフェイス情報を抽出して、コンポーネントリポジトリへコンポーネントインターフェイス情報として登録し、インターフェイス検索部で、利用者により入力された検索キーワードを前記コンポーネントリポジトリのコンポーネントインターフェイス情報から前方一致検索で検索し、検索結果のコンポーネントＩＤを提示し、検索入力キーワード抽出／格納部で、前記利用者により入力された検索キーワードと該検索結果のコンポーネントＩＤとを、検索履歴情報に登録するようにしてもよい。
【００１２】
また、前記利用ランク型検索インデックス登録部が、前記検索履歴情報から抽出した情報を優先度を付けて前記コンポーネントリポジトリへ検索インデックスとして登録する場合、当該コンポーネントの使用実績を取得し、より使用実績のあるものほど高くなるような優先度を付けるようにしてもよい。
【００１３】
さらに、処理対象のソースファイルを特定する情報と実行日時を含む実行定義情報に基づいて、前記コンポーネントインターフェイス情報登録部によるコンポーネントインターフェイス情報の登録、前記ファイル抽出型検索インデックス登録部による検索インデックスの登録、および、前記利用ランク型検索インデックス登録部による検索インデックスの登録のうちの少なくとも１つを自動実行するようにしてもよい。
【発明の効果】
【００１４】
本発明によれば、導入のための準備作業の時間や手間の軽減が図れ、継続的な利用を行うことで利用者にとって、有益な検索が可能になる。
【図面の簡単な説明】
【００１５】
【図１】本発明の一実施形態であるコンポーネント検索システムの全体構成図である。
【図２】コンポーネントリポジトリの構成図である。
【図３】検索履歴情報の構成図である。
【図４】コンポーネント利用情報の構成図である。
【図５】コンポーネントインターフェイス情報等登録部の処理の概要を示すフローチャートである。
【図６】ファイル抽出型検索インデックス登録部の処理の概要を示すフローチャートである。
【図７】利用ランク型検索インデックス登録部の処理の概要を示すフローチャートである。
【図８】コンポーネント検索部による検索処理の概要を示すフローチャートである。
【図９】更新操作端末の画面例である。
【図１０】検索操作端末の画面例である。
【図１１】検索結果一覧の画面例である。
【図１２】検索結果詳細の画面例である。
【発明を実施するための形態】
【００１６】
以下、本発明に係るコンポーネント検索システムの実施の形態について、図面を参照して説明する。なお、本実施の形態では、Java（登録商標）言語（Sun Microsystems社が開発したプログラミング言語）によって記述されたソフトウェア部品の検索のシステムおよび方法について説明する。もちろん他の言語で記述されたコンポーネントを検索対象にしてもよい。
【００１７】
図１は、本実施形態におけるコンポーネント検索システムの概略構成図である。コンポーネント検索システム１００は、コンポーネント検索部１０１とコンポーネント情報登録部１０２とを備える。コンポーネント検索部１０１は、インターフェイス検索部１０３、キーワード検索部１０４、および検索入力キーワード抽出／格納部１０５を備える。コンポーネント検索部１０１は、検索操作端末１１０で選択された検索方法に基づき、インターフェイス検索部１０３またはキーワード検索部１０４による検索処理を実行する。その際の検索対象は、コンポーネントリポジトリ１１５である。また、検索入力キーワード抽出／格納部１０５は、検索が実行された際に、ユーザＩＤなどのユーザを特定できる情報とともに、検索用に入力されたキーワードと抽出結果を、検索履歴情報１１４に格納する。
【００１８】
コンポーネント情報登録部１０２は、ファイル読込み部１０６、コンポーネントインターフェイス情報等登録部１０７、ファイル抽出型検索インデックス登録部１０８、および利用ランク型検索インデックス登録部１０９を備える。コンポーネント情報登録部１０２は、更新操作端末１１１からの利用者の指示により、または、実行定義情報１１６に基づく自動実行処理により、コンポーネントのコンポーネントリポジトリ１１５への登録処理を実行する。この登録処理では、ファイル読込み部１０６がソースファイル１１２およびコンパイルやテストの成否などのソースファイルの状態を保持するプロセス情報ファイル１１３を読み込み、各登録部１０７〜１０９により作成した登録情報をコンポーネントリポジトリ１１５へ登録する。
【００１９】
コンポーネントインターフェイス情報等登録部１０７は、ファイル読込み部１０６により読込んだソースファイル１１２から、コンポーネント毎に、インターフェイス情報を抽出し、コンポーネントリポジトリ１１５に登録する処理などを行う。
【００２０】
２つの検索インデックス登録部１０８および１０９は、それぞれの使い道が異なる。ファイル抽出型検索インデックス登録部１０８は、コンポーネントの初期登録時や更新時に、ソースファイルなどに含まれるｊａｖａｄｏｃ形式などの公知の書式に基づいた機能仕様情報から、検索用のインデックスを作成して登録する。一方、利用ランク型検索インデックス登録部１０９は、ユーザが検索操作端末１１０から検索した履歴を格納した検索履歴情報１１４やプロセス情報ファイル１１３を元に、ユーザが検索に利用したキーワードの中から、実績があってかつユーザに馴染みのあるキーワードを検索用のインデックスに追加登録していくものである。
【００２１】
なお、コンポーネント検索部１０１、コンポーネント情報登録部１０２、およびこれらに含まれる各部は、ハードウェアとして構成しても良いし、ソフトウェアとして構成しても良い。ソフトウェアとして構成される場合には、ソフトウェアとしての各部はＨＤＤ等の記憶装置からメモリ等の主記憶装置に読み出され、ＣＰＵ等の演算部により実行されることで実現される。後述する各図における処理動作も、これを前提としてハードウェアまたはソフトウェアとしての各部により実現されるものとする。
【００２２】
図２は、コンポーネントリポジトリ１１５のデータ構成例を示す。コンポーネントＩＤ２００は、コンポーネントを一意に識別するＩＤ（識別子）である。コンポーネントインターフェイス２０１は、コンポーネントの構成要素のうち、外部から利用する際に使用するインターフェイス等を記述したデータである。さらに、コンポーネントリポジトリ１１５は、各コンポーネントの付帯情報として、そのコンポーネントの開発状態を把握するための情報であるコンポーネント実績情報２０２と、検索キーワードを格納する検索インデックス２０３を備える。
【００２３】
コンポーネント実績情報２０２により、コンポーネントＩＤ毎に、そのコンポーネントの現在の状態をＶｅｒｓｉｏｎ  ＩＤ２０５やビルド日２０６やテスト完了日２０７で把握できる。ビルド日２０６は、未だビルドが行われていない状態ではＮＵＬＬが設定されている。同様に、テスト完了日２０７は、未だテストが行われていない状態ではＮＵＬＬが設定されている。これらの情報は、コンポーネントに変更が起きるたびに更新される。
【００２４】
検索インデックス２０３には、検索インデックス登録部１０８，１０９で作成された検索用のキーワードを格納する。優先度２１０は、”テスト完了”、”ビルド完了”、”情報登録のみ”の順番で優先度が低くなるような値を設定する。”テスト完了”はテスト完了日２０７にテスト完了した日付データが設定されている状態、”ビルド完了”はビルド完了日２０６にビルド完了した日付データが設定されている状態、”情報登録のみ”はビルド日２０６およびテスト完了日２０７の何れもＮＵＬＬの状態を示す。
【００２５】
なお、図２ではコンポーネントＩＤ２００のコンポーネントＡから伸びた矢印が指すブロック中にコンポーネントリポジトリ１１５の全体構成を図示している。コンポーネントＡのみについてのデータを図示したものではない。要するに、コンポーネント毎に、コンポーネントインターフェースとコンポーネント実績情報と検索インデックスが登録でき検索できるような構成であればよい。
【００２６】
図３は、検索履歴情報１１４のデータ構成例を示す。検索利用者のユーザＩＤ３０１と、そのユーザの利用情報を格納するデータベースである。利用情報としては、検索を利用した際の検索キーワード３０２、詳細まで照会した際のコンポーネントＩＤ３０３、および検索日時３０４を格納する。
【００２７】
図４は、実行定義情報１１６のデータ構成例を示す。このデータはコンポーネント情報登録部１０２の自動実行のためのものである。ジョブＩＤ４０１をキーにして、対象となるコンポーネントＩＤ４０２、ソースファイル名４０３、プロセス情報ファイル４０４、取り込み方法４０５、および実行日時４０６を事前に登録しておき、自動実行を行う。
【００２８】
次に、本システムの動作の内容について説明する。
【００２９】
まず、コンポーネント情報登録の詳細を以下で説明する。コンポーネント情報を登録したい利用者が更新操作端末１１１で所定の操作を行うことにより、図９の画面が表示される。
【００３０】
図９は、更新操作端末１１１の画面例９００である。プロジェクト名９０１は登録対象のプロジェクト名を入力する領域、プロジェクトＩＤ９０２は登録対象のプロジェクトＩＤを入力する領域、プログラム指定９０３はコンポーネントの利用情報を調査する対象のプログラム１１２やプロセス情報ファイル１１３を指定する領域である。検索開始ボタン９０４は、コンポーネント情報登録の更新の開始を指示するボタンである。
【００３１】
利用者が、図９の画面において、プロジェクト名９０１、プロジェクトＩＤ９０２、およびプログラム指定９０３の各入力領域に登録対象のプロジェクト情報を入力し、更新開始ボタン９０４を押すと、コンポーネント情報登録部１０２はコンポーネント情報登録の処理を開始する。
【００３２】
まず、ファイル読込み部１０６が、プログラム指定９０３で指定されたソースファイル１１２およびプロセス情報ファイル１１３を読み込む。ソースファイル１１２の形式はｊａｖａｄｏｃ形式のソースファイルにもとづいたモデル情報とするが、ＵＭＬなどの任意の形式を用いても良い。その後、コンポーネントインターフェイス情報等登録部１０７、ファイル抽出型検索インデックス登録部１０８、および利用ランク型検索インデックス登録部１０９を起動し、それぞれの登録処理を以下の図５〜図７に示す手順で実行する。
【００３３】
図５は、コンポーネントインターフェイス情報等登録部１０７の登録処理の手順を示す。この処理は、ファイル読込み部１０６で読み込んだ情報を元に、コンポーネントリポジトリ１１５へ登録可能な形式に加工した情報を登録する処理である。
【００３４】
コンポーネントインターフェイス情報等登録部１０７は、まずファイル読込み部１０６から、指定されたソースファイル１１２を解析用に取り込む（Ｓ５０１）。取り込んでからは、コンポーネントＩＤ毎（Ｓ５０２）に、インターフェイス情報をソースファイル１１２のコメントから抽出し（Ｓ５０３）、既にコンポーネントリポジトリ１１５に登録済みの既存コンポーネントかどうかを確認し（Ｓ５０４）、更新履歴が残るようにｖｅｒｓｉｏｎ  ＩＤを付与して（Ｓ５０５）、コンポーネントリポジトリ１１５に登録する（Ｓ５０６）。Ｓ５０６では、Ｓ５０３で抽出したインターフェイス情報をコンポーネントインターフェイス２０１に登録し、Ｓ５０５で付与したｖｅｒｓｉｏｎ  ＩＤをコンポーネント実績情報２０２に登録する。なお、ビルド日２０６とテスト完了日２０７には初期値としてＮＵＬＬを設定する。Ｓ５０４で既存コンポーネントの場合はＳ５０５，Ｓ５０６の処理は行わない。以上のＳ５０２〜Ｓ５０７の動作をコンポーネントＩＤ毎に繰り返す。
【００３５】
以上の処理により、ソースファイル１１２から抽出された各コンポーネントの情報が、図２のコンポーネントインターフェイス２０１とコンポーネント実績情報２０２に設定される。
【００３６】
次に、検索インデックスの作成と登録を行う。図６は、ファイル抽出型検索インデックス登録部１０８の登録処理の手順を示す。この処理は、コンポーネントインターフェイス情報等登録部１０７と同様に、ファイル読込み部１０６からソースファイル１１２を読み込み、該ソースファイル１１２のコメント情報から検索用のキーワードを抽出し、コンポーネントリポジトリ１１５の検索インデックス２０３に登録する処理である。
【００３７】
ファイル抽出型検索インデックス登録部１０８は、まずファイル読込み部１０６から、指定されたソースファイル１１２を解析用に取り込む（Ｓ６０１）。取り込んでからは、コンポーネントＩＤ毎（Ｓ６０２）に以下の処理を行う。まず、取り込んだソースファイルからコメントを抽出する（Ｓ６０３）。次に、コメントの書式や書かれている言語特性にあわせて、機能概要や入出力仕様などを解析する（Ｓ６０４）。日本語の場合、日本語の特徴に合せて、第一文もしくは末文を中心に文節毎に区切って、キーワードを抽出していく。その後、助詞や助動詞、ＩＴ用語などを分離し、特異性のあるキーワードのみを抽出する（Ｓ６０５）。そして、抽出したキーワードを検索インデックス２０３に登録する（Ｓ６０６）。優先度２１０には、初期値として”情報登録のみ”に対応する最低の優先度を示す値を設定する。以上のＳ６０２〜Ｓ６０７の動作をコンポーネントＩＤ毎に繰り返す。
【００３８】
以上の処理により、ソースファイル１１２から抽出された各コンポーネントのキーワードが、全て図２の検索インデックス２０３に設定される。なお、Ｓ６０１で取り込んだソースファイルが既に解析済みのものであった場合は、Ｓ６０２以降の処理は行わないようになっている。
【００３９】
次に、検索インデックスの追加または見直しの処理を行う。図７は、利用ランク型検索インデックス登録部１０９の登録処理の手順を示す。この処理は、検索履歴情報１１４とプロセス情報ファイル１１３を活用して行う。図３で説明した検索履歴情報１１４には、後述する検索処理が実行されたときに、その検索処理で指定された検索キーワードやその検索キーワードでヒットしたコンポーネントのＩＤなどが格納されている。プロセス情報ファイル１１３には、ソースファイル１１２を利用してビルドやテストを行った際の実績情報が格納されている。
【００４０】
利用ランク型検索インデックス登録部１０９は、まずファイル読込み部１０６から、指定されたソースファイル１１２とプロセス情報ファイル１１３を取り込む（Ｓ７０１，Ｓ７０２）。データの取込み後は、検索履歴情報１１４からユーザ毎の過去の検索用に入力した検索キーワード（図３の３０２）とその検索でヒットしたコンポーネントＩＤ（図３の３０３）を抽出するとともに、コンポーネント毎のビルドやテスト成否などの実績情報をプロセス情報ファイル１１３から抽出する（Ｓ７０３）。コンポーネント自身もコンポーネントの組み合わせであるため、コンポーネント内で依存関係を抽出し、利用されたコンポーネントを抽出する。なお、ビルドやテストはビルド日やテスト完了日がプロセス情報ファイル１１３に存在すれば、ビルドやテストが成功したものとする。その後、コンポーネントＩＤ毎に検索キーワードを抽出する（Ｓ７０４）。Ｓ７０４の処理は、検索履歴情報１１４から抽出した情報を、コンポーネントＩＤ毎に集約し、各コンポーネントでどのような検索キーワードが使用されているかをまとめる処理である。
【００４１】
次に、コンポーネントＩＤ毎に以下の処理を行う（Ｓ７０５）。まず、Ｓ７０３で抽出したコンポーネントの実績情報とＳ７０４で抽出した検索キーワードとをコンポーネントＩＤで結び付けて検索インデックスに登録するデータを作成していく（Ｓ７０６）。これにより、いま処理対象である１つのコンポーネントに対して、その検索に利用された検索キーワードとビルドやテストの実績情報とが結び付けられる。その後、助詞や助動詞、ＩＴ用語などを削除し、特異性のあるキーワードのみを登録用に抽出する（Ｓ７０７）。この処理は、検索履歴情報１１４から抽出した検索キーワードからキーワードとして適正な部分を取り出す処理であるが、もちろん検索履歴情報１１４から抽出した検索キーワードのままで良ければそれが登録用の検索キーワードになる。
【００４２】
次に、Ｓ７０７で取り出した検索キーワードの優先度を決定する（Ｓ７０８）。優先度は、後述する検索処理で検索結果を表示する際に、使用実績や検索実績があり有効な情報と評価できるものがより上位の優先順位で表示されるようにするために用いる指標である。優先度は、コンポーネントＩＤと検索キーワードの組に対して付与される値である。優先度は、同じ検索キーワードで同じコンポーネントを検索した回数（検索履歴情報１１４からカウントできる）が多いほど大きくなるような値とし、その場合、より多くのユーザで検索に用いられているものほど大きくなるような値とする。さらに、Ｓ７０６で対応付けたコンポーネントの実績情報（図２の２０２）に基づき、「情報登録のみ」、「ビルド完了」、「テスト完了」の順に大きくなるような値とする。本実施形態では、検索履歴から何度も繰り返し利用されている検索キーワードは優先度の値を大きく増やし、実績情報から使用実績が上がったコンポーネントに対応する検索キーワードは優先度の値を小さく増やすようにしている。
【００４３】
Ｓ７０８で優先度を決定した後、上記抽出した検索キーワードと、それに対応するコンポーネントＩＤおよび決定した優先度を、検索インデックス２０３に登録する（Ｓ７０９）。なお、既にそのコンポーネントＩＤと検索キーワードが登録済であった場合は、優先度２１０のみを書き替えるものとする。
【００４４】
以上により、利用者が検索に利用した検索キーワードを検索インデックス２０３に追加することができ、さらにコンポーネントを検索する上で、より使用実績や検索実績があるものほど値が大きい優先度を設定することができる。例えば、検索インデックス２０３に同じコンポーネントＩＤ２０８で異なる複数の検索キーワード２０９が登録されている場合、それらの検索キーワードの中では、検索履歴情報１１４に基づいて、より検索の回数が多いものほど（さらにその中では、より多くのユーザに検索で用いられているものほど）優先度２１０の値が大きくなる。また、検索インデックス２０３に同じ検索キーワード２０９で異なる複数のコンポーネントＩＤ２０８が登録されている場合、それらのコンポーネントＩＤの中では、コンポーネント実績情報２０２に基づいて、より使用実績（ビルドやテスト等）のあるものの優先度２１０の値が大きくなる。
【００４５】
なお、上記では図９の画面から更新開始ボタン９０４を押下することで、図５〜図７の処理を順に実行する例を説明したが、これらの各処理は続けて実行する必要はなく、それぞれ独立に実行してもよい。また、図４の実行定義情報１１６が設定されている場合は、実行日時４０６に至ったとき、ソースファイル名４０３とプロセス情報ファイル４０４で指定されたソースファイルとプロセス情報ファイルを対象として、自動で図５〜図７の処理が実行される。
【００４６】
次に、コンポーネント検索システム１００が実行する検索処理の概要について説明する。図８は、利用者が検索操作端末１１０により検索動作を指示したときのコンポーネント検索部１０１の処理手順を示す。利用者は、本システムを利用してコンポーネントの検索を行う際には、まず検索操作端末１１０において所定の操作を行って検索初期画面を表示する（Ｓ８０１）。
【００４７】
図１０は、検索操作端末１１０の検索初期画面例である。検索キーワード１００１は、検索のためのコンポーネントＩＤや名称その他のキーワードを入力するテキストボックスである。検索方法１００２は、検索方法を選択する選択肢である。検索開始ボタン１００３は、コンポーネント検索の検索動作の開始を指示するボタンである。
【００４８】
図８に戻って、検索処理の手順の説明を続ける。利用者が、Ｓ８０１で表示された図１０の画面で検索方法１００２とキーワード１００１を指定し、検索開始ボタン１００３を押すと、コンポーネント検索部１０１は、指定された検索方法１００２を判別し（Ｓ８０２）、キーワード検索（Ｓ８０３）またはインターフェイス検索（Ｓ８０４）を実行する。
【００４９】
Ｓ８０３のキーワード検索部１０４による検索処理では、予めキーワード検索用にコンポーネントリポジトリ１１５（図２）に登録されている検索インデックス２０３を活用して検索を行う。この検索では、検索インデックス２０３に登録されている検索キーワード２０９の中から、検索画面１０００で入力された検索キーワード１００１と一致するものを抽出する。抽出する際には、優先度２１０の値が大きいものが上位になるように順位付けを行う。図２や図７のＳ７０８で説明したが、優先度２１０は検索実績や使用実績のあるものほど大きい値であるので、より実績があるコンポーネントが上位の優先順位になるように検索結果が表示されることになる。
【００５０】
Ｓ８０４のインターフェイス検索部１０３による検索処理では、検索キーワード１００１に入力されたコンポーネントＩＤや名称その他のキーワードなどをコンポーネントリポジトリ１１５のコンポーネントインターフェイス２０１から検索する。その際の検索結果の優先順位は、検索キーワード１００１に対して、コンポーネントＩＤやコンポーネント名称などを前方一致検索した場合の適合する文字の数が多いほど、上位の優先順位になるように決定するものとする。インターフェイス検索は、コンポーネントインターフェイス２０１に存在する情報であれば検索可能である。
【００５１】
次に、Ｓ８０３，Ｓ８０４の検索の結果を表示する（Ｓ８０５）。まず、検索一覧表示として検索結果一覧画面を表示する。
【００５２】
図１１は、Ｓ８０５で表示する検索結果一覧画面の例である。検索条件１１０１の検索方法と入力情報には、それぞれ、利用者が図１０の検索方法１００２と検索キーワード１００１で指定した検索方法とキーワードが表示される。１１０２は検索結果の一覧表示である。検索されたコンポーネントのコンポーネントＩＤ１１０４と日本語名称１１０５と機能概略１１０６が、優先順位１１０３の順に一覧表示される。優先順位１１０３は、Ｓ８０３，Ｓ８０４で説明した通りに決めたものである。特に、キーワード検索部１０４の検索では、優先度２１０に基づいて優先順位が付けられるので、検索実績や使用実績があるコンポーネントが上位に表示される。
【００５３】
図１１の画面において、コンポーネントＩＤ１１０４の表示にはリンクが埋め込まれており、該リンクを選択することにより、選択されたコンポーネントの詳細表示画面が表示されるようになっている。図１２は、詳細表示画面の例である。検索条件１２０１の検索方法と入力情報は、図１１の検索条件１１０１の表示と同じである。コンポーネントＩＤ１２０２はリンクが選択されたコンポーネントのＩＤ、日本語名称１２０３は当該コンポーネントの日本語名称である。機能仕様１２０４には、当該コンポーネントの機能仕様の詳細が表示される。
【００５４】
なお、図１１の１１０３〜１１０６に示した表示項目や図１２の１２０２〜１２０４に示した表示項目は必要に応じて変更可能なものとする。また、各コンポーネントの日本語名称、機能概略、および機能仕様の詳細は、図２では図示していないが、コンポーネントリポジトリ１１５内に各コンポーネント毎に格納されているものとする。
【００５５】
図８に戻って、Ｓ８０５で図１１，１２に示すような表示を行った後、検索入力キーワード抽出／格納部１０５により、図３で説明した検索履歴情報１１４に、検索キーワードや検索結果データを登録する（Ｓ８０７）。Ｓ８０７からＳ８０２に戻る点線の矢印は、図１０の画面で別の検索キーワード１００１や検索方法１００２を入力して検索を繰り返すことが可能なことを示すものである。
【００５６】
なお、利用者が行った検索の中には所望のコンポーネントを見つけることができないケースもあるので、そのような失敗した検索履歴を検索履歴情報１１４に格納すると、ノイズになってしまうことが考えられる。そのような場合は、図８の処理で検索履歴情報１１４に検索履歴を登録する際に利用者に確認を求め、利用者が所望のコンポーネントを見つけることができたと確認した場合のみ、そのコンポーネントとそれまでに入力した検索キーワードを検索履歴として登録すればよい。また、図８の処理で繰り返し検索を行う間に入力された検索キーワードを一時的に保持しておき、それらの一連の検索において中間的に得られた検索結果は捨て（引き続き検索を実行しているのは、利用者が所望の結果を得られていないからであるとみなす）、最後の検索結果で得られたコンポーネントが最終的に利用者が所望のものであるとみなして、前記一時的に保持しておいた検索キーワードとともに検索履歴として登録するようにしてもよい。
【００５７】
なお、上記実施形態において、図１０の検索画面の検索キーワード１００１の欄には複数のキーワードを入力することもできる。その場合、複数の検索キーワードによるａｎｄ検索を行い、各検索キーワードでそれぞれ検索されたコンポーネントのａｎｄを採って検索結果とする。優先順位は、例えば、ａｎｄを取るときにそれぞれの優先度を加算するなどして求めた結合優先度に基づいて決めればよい。
【００５８】
以上のように、本発明の実施形態によれば、利用者が検索を行うたびに、検索キーワードとその検索でヒットしたコンポーネントＩＤを履歴情報として登録しておき、何回も使われるキーワードについては優先度が高くなるようにしているので、より利用者が想像し易いキーワードの優先度が高くなり、検索結果として上位に提示されるようになる。そのため、より利用者が想像し易いキーワードがコンポーネントリポジトリに登録されることになる。結果として、登録されるコンポーネントの増加や利用者の増加によるキーワードの集積によって、初級者から上級者まで利用できる幅広い検索インデックスが作成でき、運用者のスキルに依存しないコンポーネント再利用のナビゲートが可能になる。これらにより、導入のための準備作業の時間や手間の軽減が図れ、継続的な利用を行うことで利用者にとって、有益な検索が可能になる。
【符号の説明】
【００５９】
１００…コンポーネント検索システム、１０１…コンポーネント検索部、１０２…コンポーネント情報登録部、１０３…インターフェイス検索部、１０４…キーワード検索部、１０５…検索入力キーワード抽出／格納部、１０６…ファイル読込み部、１０７…コンポーネントインターフェイス情報等登録部、１０８…ファイル抽出型検索インデックス登録部、１０９…利用ランク型検索インデックス登録部、１１０…検索操作端末、１１１…更新操作端末、１１２…ソースファイル、１１３…プロセス情報ファイル、１１４…検索履歴情報、１１５…コンポーネントリポジトリ、１１６…実行定義情報。
【図１】
0005587744.tif 000002
【図２】
0005587744.tif 000003
【図３】
0005587744.tif 000004
【図４】
0005587744.tif 000005
【図５】
0005587744.tif 000006
【図６】
0005587744.tif 000007
【図７】
0005587744.tif 000008
【図８】
0005587744.tif 000009
【図９】
0005587744.tif 000010
【図１０】
0005587744.tif 000011
【図１１】
0005587744.tif 000012
【図１２】
0005587744.tif 000013