以下図面について、本発明の一実施の形態を詳述する。本実施の形態は、ビジュアルプログラミングツールによって作成されたアプリケーションの雛形(テンプレート)の検索を支援する技術に関する。本実施の形態に示す技術では、例えば、テンプレートの内容を説明したテンプレートの情報とテンプレートで利用されるノードの情報とから類推した単語の類似関係に基づいて検索を行う。また、例えば、フロー内の重要なノードと入出力関係とから類推したフローの類似関係に基づいて検索を行う。かかる検索によれば、テンプレートに付随したテキストに登録されていない情報をアプリケーションから補うことができ、ユーザの目的により適したテンプレートを提示することが可能となる。以下、詳細について説明する。
なお、以下の説明では、同種の要素を区別しないで説明する場合には、枝番を含む参照符号のうちの共通部分(枝番を除く部分)を使用し、同種の要素を区別して説明する場合は、枝番を含む参照符号を使用することがある。例えば、ユーザを特に区別しないで説明する場合には、「ユーザ140」と記載し、個々のユーザを区別して説明する場合には、「ユーザ140−1」、「ユーザ140−2」のように記載することがある。
(1)第1の実施の形態
図1において、1は全体として第1の実施の形態によるテンプレート検索システムを示す。
<システムの説明>
図1を用いてテンプレート検索システム1の概要を説明する。
テンプレート検索システム1は、フローテンプレート(テンプレートの一例)の記憶、検索などを行うフローテンプレートマネージャ100と、ビジュアルプログラミングツールのノードの管理を行うノードマネージャ120とを含んで構成される。
フローテンプレートマネージャ100は、利用ノード抽出処理部101、テキスト検索処理部102、類似フロー検索処理部103、類義語算出処理部104、表示フローテンプレート選択処理部105、フロー簡略化処理部106、フロー抽象化処理部107、フロー分割処理部108、フロー類似関係探索処理部109、フロー類似度算出処理部110、フローテンプレートテーブル111、およびフローテーブル112を有する。ノードマネージャ120は、ノードテーブル121を有する。
本テンプレート検索システム1は、ユーザ140がフローテンプレートを検索するために入力した検索語に基づいた、フローテンプレートマネージャ100が管理するフローテンプレートの検索を支援するシステムである。かかる検索を支援する技術を構成する各処理部の概要を以下に示す。
利用ノード抽出処理部101では、フローテーブル112の情報を取得し、フローテンプレートで利用されているノードを抽出する。これによって、ノードマネージャ120が管理する大量のノードの情報からフローテンプレートの検索で利用する情報を選択的に取得でき、利用する情報を厳選することが可能となる。
テキスト検索処理部102は、類義語算出処理部104と表示フローテンプレート選択処理部105とを呼び出し、テキスト情報に基づいたフローテンプレートの検索処理を行う。
類義語算出処理部104は、利用ノード抽出処理部101を呼び出し、抽出されたノードに関するテキスト情報をノードマネージャ120のノードテーブル121から取得し、取得したノードの情報とフローテンプレートテーブル111から得られるテキスト情報とから、単語間の類似関係を算出する。フローテンプレートで利用するノードの情報と、フローテンプレートの情報とを用いることで、各フローテンプレートに特有の用語、単語の使い方などを単語ごとの事前の登録なしに単語の類似関係に反映することが可能である。また、類義語算出処理部104は、前述の処理によって得られた単語間の類似関係に基づいて、検索語に対する類義語を算出する。
表示フローテンプレート選択処理部105は、類義語算出処理部104の処理結果によって得られた類義語と検索語とからフローテンプレートを検索する。検索語に対する類義語に基づいてフローテンプレートの検索を行うことで、登録者、開発者などの複数ユーザ間の利用語句の違いを考慮したフローテンプレートの検索が可能である。さらに、フローテンプレートで利用するノードの情報と、フローテンプレートの情報とを用いて単語の類似関係を算出する類義語算出処理部104の処理結果を用いることで、フローテンプレートに特化した検索が可能となる。
類似フロー検索処理部103では、利用ノード抽出処理部101とフロー簡略化処理部106とフロー類似関係探索処理部109とフロー類似度算出処理部110とを呼び出し、フロー情報に基づいてフロー間の類似関係を探索し、その結果に基づいてフローテンプレートの検索を行う。
フロー簡略化処理部106は、フローテーブル112とノードテーブル121とに基づいて、類似フロー検索処理部103によって抽出されたノードがフローの中でどれだけ重要な役割を行っているかを計算し、フロー抽象化処理部107を呼び出して、フローを重要なノードで表して抽象化する処理を行う。
また、フロー簡略化処理部106は、フロー分割処理部108を呼び出し、フロー抽象化処理部107によって抽象化されたフローを入出力の組毎に分割する。
ノードの重要度の算出結果に基づいてフロー抽象化処理部107の処理を行うことで、フロー内で特徴的な処理を行っているノードを抽出したフローを作成することができ、フロー全体の処理の流れがわかりやすくなる。また、フロー分割処理部108によってフローを分割することで、フローの部分的な検索が可能となる。
フロー類似関係探索処理部109では、フロー簡略化処理部106の処理によって簡略化されたフロー間の類似度関係を探索する。フロー類似度算出処理部110では、フロー類似関係探索処理部109の処理結果によって類似関係が認められたフローの組について類似度を定量的に求める。
類似フロー検索処理部103は、以上の処理を行うことで、フローの処理内容に基づいたフローテンプレートの検索が可能となる。
フローテンプレートマネージャ100は、フローテンプレート出力部130を有する。フローテンプレート出力部130は、例えば、テキスト検索処理部102の結果として得られたフローテンプレート131と、類似フロー検索処理部103の結果として得られたフローテンプレート131に類似したフローを持つフローテンプレート132とを出力(例えば、フローテンプレート一覧画面として表示)する。ここで、フローテンプレート132は、単純な単語検索では検索できない、本テンプレート検索システム1を特徴づける出力の1つである。
なお、フロー簡略化処理部106で行う処理は、フローを重要なノードで表すフロー抽象化処理部107と、フローを入出力の組毎に分割するフロー分割処理部108との何れか一方を行うように構成してもよい。また、フロー簡略化処理部106の処理を行わずにフロー類似関係探索処理部109およびフロー類似度算出処理部110によるフローの類似関係の算出を行ってもよい。
さらに、フローテンプレート出力部130については、結果として得られたフローテンプレート131およびフローテンプレート132を表示する構成に限られるものではなく、フローテンプレート131およびフローテンプレート132をデータとしてユーザ140に提供する構成であってもよい。
図2は、テンプレート検索システム1に係る構成の一例を示す図である。テンプレート検索システム1では、フローテンプレートマネージャ100と、ノードマネージャ120と、ユーザ140が操作する端末210と、フロー開発マネージャ220とが、ネットワークスイッチ230を介して通信可能に接続される。
ユーザ140は、端末210で動作する後述のクライアントプログラム601により、フローテンプレートマネージャ100にアクセスし、フローテンプレートの検索、フローテンプレートのデータの取得などができる。
フローテンプレートマネージャ100は、フローテンプレートの表示機能(GUI)と、フローテンプレートの管理機能と、フローテンプレートの検索機能とを有する。フローテンプレートマネージャ100の機能の詳細については後述する。
ノードマネージャ120は、ビジュアルプログラミングツールのノードの管理機能を有する。ノードマネージャ120は、フローテンプレートマネージャ100に対するノード情報の提供、フロー開発マネージャ220へのノード情報の提供、ノードの登録、削除、更新などを行う。前述のNode−REDに対するノードマネージャ120の例として、npmリポジトリ(https://www.npmjs.com/search?q=keywords:node−red)が挙げられる。
フロー開発マネージャ220は、フローの実行環境と、フローエディタGUIとを有する。フロー開発マネージャ220の詳細については後述する。
<画面の説明>
図3A〜図3Cは、フローテンプレートマネージャ100のGUI(フローテンプレート出力部130により出力され、ユーザ140の端末210に表示される画面)の一例を示す図である。図3Aに示すフローテンプレート一覧画面300をホーム画面として、ユーザ140の画面操作により、図3Bに示す表示オプション選択画面310、図3Cに示すフローテンプレート情報表示画面320等が開く。
フローテンプレート一覧画面300は、フローテンプレートを表示する画面の一例である。フローテンプレート一覧画面300では、検索されたフローテンプレート301が表示される。
ユーザ140は、フローテンプレート一覧画面300に表示されている検索語入力窓302に検索語を入力すると、登録されているフローテンプレートを検索することが可能である。フローテンプレート一覧画面300より、検索されたフローテンプレート301をマウスでクリックすると、フローテンプレート情報表示画面320が開く。フローテンプレート一覧画面300より表示オプション303をマウスでクリックすると、表示オプション選択画面310が開く。
表示オプション選択画面310は、フローテンプレートの検索結果を表示する際の表示オプションを選択する画面の一例である。
ユーザ140は、ソート順311を指定することができる。また、ユーザ140は、カテゴリフィルター312を選択し、フローテンプレートに紐づいたカテゴリに応じて表示フローテンプレートを絞り込むことができる。さらに、ユーザ140は、テキスト検索処理部102による検索結果であるテキスト類似結果313の表示の有無と、類似フロー検索処理部103による検索結果であるフロー類似結果314の表示の有無とを選択することができる。これにより、ユーザ140は、大量の検索結果を絞り込むことが可能となり、目的とするフローテンプレートを見つけやすくなる。
フローテンプレート情報表示画面320は、フローテンプレートの情報表示とフローテンプレートのデータのダウンロードとを実行する画面の一例である。
ユーザ140は、フローテンプレート名321、フローテンプレートカテゴリ322等を参照できる。フローテンプレート概要画面323からは、ユーザ140は、当該フローテンプレートの概要を参照できる。さらに、説明画面324では、ユーザ140は、説明表示領域325において当該フローテンプレートの内容、開発の背景、目的、適用場面例などの詳細説明を参照できる。また、フロー画像画面326および関連資料327からは、ユーザ140は、フロー画像情報の参照、ドキュメント等のコンテンツの取得ができる。また、ユーザ140は、ダウンロードボタン328をクリックすると、フローテンプレートのデータをダウンロードできる。ダウンロードしたデータをビジュアルプログラミングの実行環境にデプロイすることにより、アプリケーションを動作させることができる。
図4は、ビジュアルプログラミングのフローを開発するGUIの一例(フローエディタ画面400)を示す図である。フローエディタ画面400は、フロー開発マネージャ220によって端末210に提供される。
フローエディタ画面400には、利用可能なノードの一覧画面410とフローの開発を行うフロー編集画面420とが設けられている。一覧画面410には、利用可能なノード411が一覧表示される。ノードがカテゴライズされている場合には、カテゴリ412ごとに一覧表示される。
フローの開発は、フロー編集画面420で行う。フローのノード411を一覧画面410からフロー編集画面420にドラッグアンドドロップすることでノードが利用可能(ノード421)となる。また、ノード421同士をマウスのドラッグ操作により線422で結線することで、ノード421の処理順序を定義することができる。
例えば、図4に示すフローにおいては、ノード421−2の処理が終了すると、次に、ノード421−2の右側の線422−2で結線されたノード421−3の処理が実行される。
ユーザ140がノード421をクリックすると、ノード情報表示画面423が開く。ノード情報表示画面423では、ノード421の情報を参照することが可能であり、ユーザ140は、ノード情報表示画面423の内容を参考にフローを開発する。例えば、ノード情報表示画面423では、ノード421の機能詳細、入力値の詳細、出力値の詳細、変数の説明などを参照可能である。
<計算機の説明>
図5は、図2に示すコンポーネント(端末210、フローテンプレートマネージャ100、ノードマネージャ120、フロー開発マネージャ220)の機能を実現可能な計算機500に係る構成の一例を示す図である。
計算機500は、プロセッサであるCPU(Central Processing Unit)510と、主記憶デバイスであるメモリ520と、不揮発性の2次記憶装置530と、入出力装置540と、ポート550とを有する。これらの各構成要素は、バス560により相互に接続される。
CPU510は、制御装置の一例であり、メモリ520に記憶されているプログラムを実行することによって、計算機500の所定の機能を実現する。メモリ520は、CPU510よって実行されるプログラムおよびプログラムの実行に必要なデータを記憶する。プログラムは、2次記憶装置530からメモリ520にロードされる。なお、メモリ520および2次記憶装置530は、記憶装置の一例である。
入出力装置540は、ディスプレイ、ポインタ、キーボード等のデバイスの1つまたは複数のデバイスを含む。ユーザ140は、入出力装置540により、計算機500を操作することができる。
ポート550は、ネットワーク(例えば、図2のネットワークスイッチ230)に接続される。計算機500は、ポート550を介して、他の計算機500と通信することができる。なお、各コンポーネントが動作する各計算機500は、仮想マシン、コンテナ等の仮想環境であってもよい。
<記憶装置のデータ構成の説明>
図6A〜図6Dは、計算機500の記憶装置に格納されている情報(メモリ520または2次記憶装置530に格納されているプログラム、データなど)の一例を示す図である。図6Aは、端末210の記憶装置600に格納される情報の一例を示す。図6Bは、フローテンプレートマネージャ100の記憶装置610に格納される情報の一例を示す。図6Cは、ノードマネージャ120の記憶装置620に格納される情報の一例を示す。図6Dは、フロー開発マネージャ220の記憶装置630に格納される情報の一例を示す。
端末210の記憶装置600は、図3および図4に示した画面を表示するためのクライアントプログラム601を有する。クライアントプログラム601の一例は、ウェブブラウザである。
フローテンプレートマネージャ100の記憶装置610は、GUI表示処理部611、利用ノード抽出処理部101、テキスト検索処理部102、類似フロー検索処理部103、類義語算出処理部104、表示フローテンプレート選択処理部105、フロー簡略化処理部106、フロー抽象化処理部107、フロー分割処理部108、フロー類似関係探索処理部109、フロー類似度算出処理部110、フローテンプレートテーブル111、フローテーブル112、コンテンツテーブル612、利用ノードリスト613、類義語リスト614、表示フローテンプレートリスト615、ノード重要度リスト616、抽象フローリスト617、分割フローリスト618、および類似フローテンプレートリスト619を有する。
GUI表示処理部611は、フローテンプレート出力部130の一例であり、クライアントプログラム601と連携してGUIを実現するものである。例えば、GUI表示処理部611は、クライアントプログラム601からの検索要求に対する検索結果を画面情報としてクライアントプログラム601に送信する。なお、GUI表示処理部611が送信する画面情報は、JAVASCRIPT(登録商標)のように端末210の記憶装置600上のクライアントプログラム601で動作してもよいし、専用アプリケーションなど、端末210の記憶装置600上のクライアントプログラム601以外のクライアントGUIを用いて動作してもよい。
ノードマネージャ120の記憶装置620は、ノード管理処理部621、ノードテーブル121、ノードカテゴリテーブル622、および外部サービステーブル623を有する。
フロー開発マネージャ220の記憶装置630は、フローの実行環境であるフロー実行環境631、およびフローエディタGUIを提供するフローエディタGUI表示処理部632を有する。
フローエディタGUI表示処理部632は、クライアントプログラム601と連携してGUIを実現するものである。例えば、クライアントプログラム601がウェブブラウザである場合、フローエディタGUI表示処理部632は、クライアントプログラム601のリクエストに応じてHTML(HyperText Markup Language)、JAVASCRIPT等を返すことでクライアントプログラム601に画面を表示する。この他、クライアントプログラム601が専用のクライアントアプリケーション(デスクトップアプリケーションなど)である場合、フローエディタGUI表示処理部632は、APIサーバなどであってもよい。
上記の各プログラム、テーブル、およびリストの詳細については後述する。
なお、端末210の記憶装置600、フローテンプレートマネージャ100の記憶装置610、ノードマネージャ120の記憶装置620、フロー開発マネージャ220の記憶装置630は、記憶装置であってもよいし、ネットワーク接続されたデータベース、仮想サーバのようなものの上で動作してもよい。
<テーブルおよびリストの説明>
図7A〜図7Jは、フローテンプレートマネージャ100の記憶装置610が保持するテーブルおよびリストの一例を示す図である。テーブルは、フローテンプレートマネージャ100が予め有しているものであり、リストは、フローテンプレートマネージャ100の処理の過程または処理の結果によって作成されるものである。
図7Aに示すフローテンプレートテーブル111は、フローテンプレートの情報を管理するテーブルである。
フローテンプレートテーブル111は、各フローテンプレートに割り当てられた固有のフローテンプレートID701と、フローテンプレート名702と、フローテンプレート概要703と、フローテンプレート説明704と、フローテンプレートのカテゴリ705と、フローテーブル112に紐づくフローID706と、コンテンツテーブル612に紐づくコンテンツID707と、フローテンプレートテーブル111への登録日708とを有する。
フローテンプレート名702は、フローテンプレート情報表示画面320のフローテンプレート名321に表示される。
フローテンプレート概要703は、フローテンプレートの概要を記述したテキスト文章そのものであってもよいし、当該テキスト文章を記述したファイルの格納場所を示すポインタのようなものであってもよい。フローテンプレート概要703は、フローテンプレート情報表示画面320のフローテンプレート概要画面323に表示される。
フローテンプレート説明704は、当該フローテンプレートの内容、開発の背景、目的、適用場面例などの詳細説明そのものであるテキスト文章であってもよいし、当該テキスト文章を記述したファイルの格納場所を示すポインタのようなものであってもよい。また、ファイル形式は、テキスト形式であってもよいし、ブラウザ表示を前提としたHTML形式、Markdown形式のようなマークアップ言語の形式であってもよい。フローテンプレート説明704は、フローテンプレート情報表示画面320の説明画面324において説明表示領域325に表示される。
カテゴリ705は、フローテンプレートの管理者が事前に定義した1つまたは複数のカテゴリ名を有する。または、フローテンプレートマネージャ100は、管理者により定義されたカテゴリ名とそれぞれに割り当てられたカテゴリIDから成るテーブルを有し、これに対応するカテゴリIDが登録されていてもよい。または、1つまたは複数のカテゴリをフローテンプレートの登録者が自由に定義してもよいし、管理者が事前に定義したカテゴリと登録者が定義したカテゴリとの両方を有していてもよい。カテゴリ705は、表示オプション選択画面310のカテゴリフィルター312の選択部と、フローテンプレート情報表示画面320のフローテンプレートカテゴリ322の表示部とに表示される。
複数のフローからなるフローテンプレートである場合は、フローID706の値は、複数であってもよい。
フローテンプレートテーブル111は、登録者に関する情報、バージョンに関する情報、これまでの累積ダウンロード数など、フローテンプレートに関する上記以外の情報を有していてもよい。
図7Bに示すフローテーブル112は、各フローテンプレートのフローに係るデータ(フローデータ)を管理するテーブルである。
フローテーブル112は、各フローに割り当てられた固有のフローID711と、フローで使用されるノードID712と、フロー内でのノード接続関係713と、各ノードのインスタンスオブジェクト情報714とを有する。
ノードID712は、後述するノードマネージャ330のノードテーブル121に紐づき、1つのノードに対して1つのIDが割り当てられる。
ノード接続関係713は、フロー編集画面420でノード421同士を線422で結線してノード421の処理順序を定義したときの、ノード421間の接続関係を保持する。ノード接続関係713は、ノード識別ID713−1、入力713−2、および出力713−3を有する。
ノード識別ID713−1は、フローの中でインスタンス化したノードを一意に表す識別子である。
入力713−2は、当該ノードの前に実行されるノードのノード識別ID713−1を有する。当該ノードがフローの最初のノードであり、当該ノードの前に実行されるノードが存在しない場合、空値、またはフローの始めを示す値を有する。
出力713−3は、当該ノードの後に実行されるノードのノード識別ID713−1を有する。当該ノードがフローの最後のノードであり、当該ノードの後に実行されるノードが存在しない場合、空値、またはフローの終わりを示す値を有する。
なお、入力713−2と出力713−3とは、どちらか一方の値だけで接続関係がわかる場合は、両方の値を持たなくてもよい。
インスタンスオブジェクト情報714は、各フローのノードを実行するインスタンスの宛て先を示すURL(Uniform Resource Locator)、変数定義、コメント文などの定義情報を有する。また、インスタンスオブジェクト情報714は、当該ノードが呼び出す先の外部サービスをフローの開発者がノード毎に任意に指定できる場合には、外部サービスの接続方法、接続先情報などを有する。また、ノードマネージャ120が有する外部サービステーブル623(詳細は後述)のようなものをフローテンプレートマネージャ100が有し、その情報を参照する形でもよい。
図7Cに示すコンテンツテーブル612は、各フローテンプレートの関連資料等のコンテンツを管理するテーブルである。コンテンツテーブル612は、コンテンツID721と、コンテンツ722とを有する。コンテンツ722には、関連資料のアクセス先の情報の実体、またはリンク情報が格納される。
以降に述べる利用ノードリスト613、類義語リスト614、表示フローテンプレートリスト615、ノード重要度リスト616、抽象フローリスト617、分割フローリスト618、および類似フローテンプレートリスト619は、一時処理として記憶される情報である。よって、フローテンプレートマネージャ100の記憶装置610上に常駐せず、各計算プログラムに内包される形であってもよい。
図7Dに示す利用ノードリスト613は、利用ノード抽出処理部101の処理結果として得られるリストである。利用ノードリスト613は、フローテンプレートマネージャ100が管理するフローテンプレートのフローで利用されているノードを管理する。
利用ノードリスト613は、フローテンプレートマネージャ100が管理する全フローテンプレートのフローで利用されているノードのIDである利用ノードID731と、各ノードが利用されている回数を示す利用回数732とを有する。なお、作成方法については後述する。
図7Eに示す類義語リスト614は、テキスト検索処理部102が行う処理の過程で呼び出される類義語算出処理部104の処理結果として得られるリストである。類義語リスト614は、ユーザ140が入力した検索語741と、検索語741に対する類義語742と、検索語741と類義語742との類似度743とを有する。なお、作成方法については後述する。
図7Fに示す表示フローテンプレートリスト615は、テキスト検索処理部102が行う処理の過程で呼び出される表示フローテンプレート選択処理部105の処理結果として得られるリストである。ユーザ140が入力した検索語に対するフローテンプレートの検索結果を管理する。表示フローテンプレートリスト615は、フローテンプレートID751と、検索結果として表示するかどうかの判定に用いるためのスコア752と、検索結果として表示するかどうかの判定結果である検索結果表示判定753とを有する。なお、作成方法の詳細については後述する。
図7Gに示すノード重要度リスト616は、類似フロー検索処理部103におけるノードの重要度の計算処理の結果として得られるリストである。ノード重要度リスト616は、フローテンプレートマネージャ100が管理するフローテンプレートで利用されているノードの重要度を管理する。ノード重要度リスト616は、フローテンプレートマネージャ100の利用ノードリスト613の利用ノードID731を参照して登録された利用ノードID761と、ノードの重要度の計算結果である重要度762と、各ノードが重要であるかの判定結果である判定763とを有する。なお、作成方法の詳細については後述する。
図7Hに示す抽象フローリスト617は、類似フロー検索処理部103が行う処理の過程で呼び出されるフロー抽象化処理部107の処理結果として得られるリストである。抽象フローリスト617は、各フローに割り当てられた固有のフローID771と、フローで使用されるノードID772と、フロー内でのノード接続関係773と、各ノードのインスタンスオブジェクト情報774とを有する。ノード接続関係773は、ノード識別ID773−1と、入力773−2と、出力773−3とを有する。なお、作成方法の詳細については後述する。
図7Iに示す分割フローリスト618は、類似フロー検索処理部103が行う処理の過程で呼び出されるフロー分割処理部108の処理結果として得られるリストである。分割フローリスト618は、分割前のフローのフローID781と、分割後のフローIDである分割ID782と、フローで使用されるノードID783と、フロー内でのノード接続関係784と、各ノードのインスタンスオブジェクト情報785とを有する。ノード接続関係784は、ノード識別ID784−1と、入力784−2と、出力784−3とを有する。なお、作成方法の詳細については後述する。
図7Jに示す類似フローテンプレートリスト619は、類似フロー検索処理部103の処理結果として得られるリストである。類似フローテンプレートリスト619は、表示フローテンプレートリスト615のフローテンプレートIDと同一の内容であるテキスト検索フローテンプレートID791と、後述する処理によって類似関係が認められた簡略化されたフローのIDである類似簡略化フローID792と、簡略化されたフローの元であるフローテンプレートのIDである類似フローテンプレートID793と、フロー間の類似度を示すフロー類似度794と、検索結果に表示するかの判定結果である検索結果表示判定795とを有する。
図8A〜図8Cは、ノードマネージャ120の記憶装置620が保持するテーブルの一例を示す図である。
図8Aに示すノードテーブル121は、ビジュアルプログラミングツールで利用するノードの情報を管理する。
ノードテーブル121は、各ノードに一意に割り当てられたノードID801と、各ノードのカテゴリを示すノードカテゴリID802と、各ノードの名称であるノード名803と、ノードの内容を説明したノード説明文804と、ノードが接続する外部サービスID805と、ノードが実行する処理コード806とを有する。
ノードカテゴリID802は、ノードカテゴリテーブル622に紐づく。なお、ノードテーブル121では、ノードカテゴリ名そのものを保持していてもよいし、ノードカテゴリID802が設けられていなくてもよい(カテゴライズされていなくてもよい)。
ノード説明文804は、当該ノードの機能、入力値、出力値、変数などについての詳細説明を有する。これらの形式は、ノードの説明文そのものであるテキスト文章であってもよいし、当該テキスト文章を記述したファイルの格納場所を示すポインタのようなものであってもよい。また、ファイル形式は、テキスト形式であってもよいし、ブラウザによる表示を前提としたHTML形式、Markdown形式のようなマークアップ言語の形式であってもよい。ノード説明文804は、フロー編集画面420のノード情報表示画面423に表示される。
外部サービスID805は、ノードが呼び出す1つまたは複数の外部サービスのIDを有し、外部サービステーブル623に紐づく。外部サービスID805は、ノードが外部サービスを呼び出さない場合は空値または呼び出しがないことを示す値を有してもよいし、呼び出さないことを示す外部サービスIDを有してもよい。なお、外部サービスID805には、当該ノードが呼び出す外部サービスが一意に決まっている場合の外部サービスが登録されるものとする。フローの開発者がノード毎に任意に呼び出し先の外部サービスを指定できる場合には、外部サービスID805は、そのことを示す特殊な値または外部サービスIDを有し、任意の呼び出し先の外部サービスは、フローテーブル112のインスタンスオブジェクト情報714に指定される。
処理コード806は、ノードが実行されたときに行う処理コードを有する。処理コード806は、処理コードそのものであってもよいし、処理コードを記述したファイルの格納場所を示すポインタのようなものであってもよい。
なお、ノードテーブル121は、ノードのタグ、作成者情報などのメタ情報を有していてもよい。
図8Bに示すノードカテゴリテーブル622は、ノードのカテゴリ情報を管理する。
ノードカテゴリテーブル622は、各カテゴリに一意に割り当てられたノードカテゴリID811と、カテゴリの名称を示すカテゴリ名812とを有する。ノードカテゴリテーブル622は、各カテゴリの説明文などを有していてもよい。
図8Cに示す外部サービステーブル623は、ノードが外部サービスを呼び出す際の情報を管理する。
外部サービステーブル623は、各外部サービスに一意に割り当てられた外部サービスID821と、外部サービス名822と、接続先の外部サービスのURL、接続方法などの接続情報823とを有する。外部サービステーブル623には、外部サービスに接続しないことを示す特殊IDや、フローの開発者がノード毎に任意に呼び出し先の外部サービスを指定できることを示す特殊IDが存在してもよい。外部サービステーブル623は、外部サービスの説明文、提供者名、連絡先、更新日、バージョン情報、その他外部サービスに関連する情報を有する場合もある。
<<フローチャートの説明>>
<利用ノード一覧の作成処理>
図9は、利用ノード抽出処理部101が行う処理に係るフローチャートの一例を示す図である。以下の処理は、フローテンプレートマネージャ100からの利用ノードリスト613の作成命令(利用ノード抽出処理部101の呼び出し)を契機に実行される。
まず、ステップS901において、利用ノード抽出処理部101は、フローテンプレートマネージャ100のフローテーブル112を参照し、フローID711(フロー)を1つ選択する。
次に、ステップS902において、利用ノード抽出処理部101は、選択したフローID711で利用されているノードID712(ノード)を1つ選択する。
次に、ステップS903において、利用ノード抽出処理部101は、選択したノードID712が利用ノードリスト613の利用ノードID731に含まれているかを確認する。利用ノード抽出処理部101は、含まれていない場合、ステップS904に処理を移し、含まれている場合、ステップS905に処理を移す。
次に、ステップS904において、利用ノード抽出処理部101は、選択したノードID712を利用ノードリスト613の利用ノードID731に追加する。
次に、ステップS905において、利用ノード抽出処理部101は、利用ノードリスト613の対応する利用回数732に「1」を加算する。
次に、ステップS906において、利用ノード抽出処理部101は、選択したノードID712のノードが選択したフローID711の最後のノードであるかを確認する。利用ノード抽出処理部101は、最後のノードである場合、ステップS907に処理を移し、最後のノードでない場合、ステップS902に処理を戻す。
次に、ステップS907において、利用ノード抽出処理部101は、選択したフローID711のフローがフローテーブル112の最後のフローであるかを確認する。利用ノード抽出処理部101は、最後のフローである場合、ステップS908に処理を移し、最後のフローでない場合、ステップS901に処理を戻す。
最後に、ステップS908において、利用ノード抽出処理部101は、結果を返し、処理を終了する。
<テキスト情報を使った検索>
図10は、テキスト情報を使った検索処理に係るフローチャートの一例を示す図である。以下の処理は、ユーザ140が端末210のクライアントプログラム601により表示されたフローテンプレート一覧画面300の検索語入力窓302に検索語を入力したことを契機に実行される。
まず、ステップS1001において、フローテンプレートマネージャ100は、ユーザ140が入力した検索語を受信する。
次に、ステップS1002において、フローテンプレートマネージャ100は、テキスト検索処理部102を呼び出し、検索語に基づくフローテンプレートの検索を行って表示フローテンプレートリスト615を作成する。なお、処理の詳細については後述する。
最後に、ステップS1003において、フローテンプレートマネージャ100は、結果を返す。例えば、フローテンプレートマネージャ100は、検索結果として、表示フローテンプレートリスト615をクライアントプログラム601に送信し、クライアントプログラム601は、フローテンプレート一覧画面300に検索結果を表示する。
ここで、フローテンプレートの表示順は、ユーザ140が表示オプション選択画面310のソート順311で選択した順に従うものである。例えば、ユーザ140がおすすめ順を選択した場合、GUI表示処理部611またはクライアントプログラム601は、表示フローテンプレートリスト615のスコア752が高い順にソートする。なお、スコア752の値は、GUI上でユーザ140が参照できてもよいし、できなくてもよい。また、フローテンプレートテーブル111がこれまでのダウンロード数を有する場合、GUI表示処理部611またはクライアントプログラム601は、ダウンロードが多い順にフローテンプレートを並び替えてもよい。
なお、検索結果については、端末210に表示することなく、ユーザ140は、表示フローテンプレートリスト615をデータとして受け取ってもよい。
また、入力される検索語は、1つでなくてもよい。フローテンプレートマネージャ100は、複数の検索語を受け付けた場合、それぞれの検索語に対してステップS1002のテキスト検索処理部102の呼び出しを行い、それぞれの検索語に対する表示フローテンプレートリスト615を結合してステップS1003の処理を行う。
図11は、テキスト検索処理部102が行う処理に係るフローチャートの一例を示す図である。以下の処理は、フローテンプレートマネージャ100によってテキスト検索処理部102が呼び出されたことを契機に実行される。
まず、ステップS1101において、テキスト検索処理部102は、類義語算出処理部104を呼び出し、検索語に対する類義語を算出して類義語リスト614を作成する。なお、処理の詳細については後述する。
次に、ステップS1102において、テキスト検索処理部102は、表示フローテンプレート選択処理部105を呼び出し、フローテンプレートテーブル111と類義語リスト614とを参照して検索結果として表示するフローテンプレートを選択し、表示フローテンプレートリスト615を作成する。なお、処理の詳細については後述する。
最後に、ステップS1103において、テキスト検索処理部102は、結果を返し、処理を終了する。例えば、テキスト検索処理部102は、表示フローテンプレートリスト615をフローテンプレートマネージャ100に返す。
図12は、類義語算出処理部104が検索語に対する類義語を算出し、類義語リスト614を作成する処理に係るフローチャートの一例を示す図である。以下の処理は、フローテンプレートマネージャ100のテキスト検索処理部102によって類義語算出処理部104が呼び出されたことを契機に実行される。
検索語に対する類義語の算出は、フローテンプレートテーブル111に登録されているテキスト情報とフローテンプレート(フロー)で利用しているノードの情報とに基づいて算出した単語の類似関係を用いて行う。単語の類似関係の算出方法の例として、word2vec(MIKOLOV, Tomas, et al, “Efficient estimation of word representations in vector space”, arXiv preprint arXiv:1301.3781, 2013.)がある。これは、文章中の単語の並びから、語意をベクトル表現する手法であり、単語間の類似度の算出が可能である。以下では、word2vecを用いて単語の類似関係を算出する場合を例に挙げて述べる。
ステップS1201において、類義語算出処理部104は、利用ノード抽出処理部101を呼び出し、利用ノードリスト613を作成する。
ステップS1201の次に、類義語算出処理部104は、ステップS1202を行い、利用ノードリスト613を参照してノードの情報の取得対象とするノードを決定する。これにより、フローテンプレートマネージャ100が管理するフローの情報を用いてノードを厳選することが可能となる。情報の取得対象とするノードは、利用ノードリスト613に含まれるノード全てであってもよいし、利用回数、ノードのカテゴリ、後述するノード重要度リスト616などに基づいて、情報を取得するノードをさらに厳選してもよい。
ステップS1202の次に、類義語算出処理部104は、ステップS1203を行い、ステップS1202で情報取得の対象としたノードのノードIDをキーとしてノードマネージャ120のノードテーブル121を参照し、対象のノードのノード名803、ノード説明文804などのテキスト情報を取得する。このとき、対応するノードカテゴリテーブル622がノードカテゴリ名やその説明文を有している場合、外部サービステーブル623が外部サービス名やその説明文を有している場合、類義語算出処理部104は、それらの文章を取得してもよい。また、開発者が独自に作成したノードについては、GitHub(https://github.com/)を例としたソフトウェア開発のソースコード管理サービス、開発者独自のデータベースに登録されると考えられるため、類義語算出処理部104は、これらを参照してノード名803、ノード説明文804などのテキスト情報に該当する情報を取得してもよい。
また、ステップS1204において、類義語算出処理部104は、フローテンプレートテーブル111を参照し、フローテンプレート名702、フローテンプレート概要703、フローテンプレート説明704などのテキスト情報を取得する。また、各フローテンプレートに紐づいたコンテンツ722からテキスト情報を抽出してもよい。
なお、ステップS1201、ステップS1202、およびステップS1203と、ステップS1204とは互いに並行して行うことが可能である。
次に、ステップS1205において、類義語算出処理部104は、ステップS1203およびステップS1204で取得したテキスト情報を用いてテキスト情報に含まれる単語に対してベクトルを算出する。なお、類義語算出処理部104は、テキスト情報に含まれる全ての単語に対してベクトルを算出してもよいし、テキスト情報に含まれる一部の単語(例えば、単語の品詞、出現回数、出現頻度などによるフィルタリングにより抽出した単語)に対してベクトルを算出してもよい。このとき、ステップS1203およびステップS1204で取得したテキスト情報に加え、語彙の不足を補うために一般的な技術文書、ドキュメントなどを利用してもよい。
次に、ステップS1206において、類義語算出処理部104は、検索語のベクトルとその他の単語のベクトルとの類似度を算出する。類義語算出処理部104は、ベクトル距離が近い順に並べ変えたときの順位で閾値を設け、閾値以内である単語を検索語に対する類義語とし、ベクトル距離を検索語に対する類似度として、類義語リスト614を作成する。なお、ベクトル距離そのものに対して閾値を設けてもよいし、順位と値の両方に閾値を設けてもよい。
最後に、ステップS1207において、類義語算出処理部104は、結果を返し、処理を終了する。例えば、類義語算出処理部104は、類義語リスト614をテキスト検索処理部102に渡す。
図13は、表示フローテンプレート選択処理部105がフローテンプレートテーブル111と類義語リスト614とを参照して検索結果として表示するフローテンプレートを選択し、表示フローテンプレートリスト615を作成する処理に係るフローチャートの一例を示す図である。以下の処理は、フローテンプレートマネージャ100のテキスト検索処理部102によって表示フローテンプレート選択処理部105が呼び出されたことを契機に実行される。
まず、ステップS1301において、表示フローテンプレート選択処理部105は、類義語算出処理部104で作成された類義語リスト614の検索語741または類義語742を1つ選択する。
次に、ステップS1302において、表示フローテンプレート選択処理部105は、フローテンプレートマネージャ100のフローテンプレートテーブル111を参照し、フローテンプレートID701(フローテンプレート)を1つ選択する。
次に、ステップS1303において、表示フローテンプレート選択処理部105は、選択した単語(検索語741または類義語742)が、ステップS1302で選択したフローテンプレートの、フローテンプレート名702、フローテンプレート概要703、またはフローテンプレート説明704に含まれているかを確認する。表示フローテンプレート選択処理部105は、含まれている場合、ステップS1304に処理を移し、含まれていない場合、ステップS1305に処理を移す。
次に、ステップS1304において、表示フローテンプレート選択処理部105は、表示フローテンプレートリスト615の、対応するフローテンプレートID751のスコア752にスコア値を加算する。加算は、類義語リスト614の類似度743を足しあわせるものとする。なお、含まれる語が検索語である場合は類似度「1」(100%)を足しあわせる。
その他のスコア値の加算方法として、含まれる単語が検索語であるか類義語であるかの別、類義語の類似度に依らず一定の値(例えば「1」)を加算していく方法、検索語である場合だけ大きなスコア値(第1の値、例えば、「10」)を加算し、類義語である場合には小さなスコア値(第1の値より小さい第2の値、例えば、「1」)を加算する方法、事前に基準値を決めておき、含まれる単語が検索語であるか類義語であるかの別、類義語の類似度に応じて基準値にバイアス値を掛け合わせた値をスコア値に加算する方法、含まれる類義語の個数によって類似度を変化させる方法、などをとってもよい。さらに、単語が含まれている項目によってスコア値を変化させてもよい。
次に、ステップS1305において、表示フローテンプレート選択処理部105は、選択したフローテンプレートが最後のフローテンプレートであるかを確認する。表示フローテンプレート選択処理部105は、最後のフローテンプレートである場合、ステップS1306に処理を移し、最後のフローテンプレートでない場合、ステップS1302に処理を戻す。
次に、ステップS1306において、表示フローテンプレート選択処理部105は、選択した単語が類義語リスト614の最後の単語(類義語)であるかを確認する。表示フローテンプレート選択処理部105は、最後の単語である場合、ステップS1307に処理を移し、最後の単語でない場合、ステップS1301に処理を戻す。
次に、ステップS1307において、表示フローテンプレート選択処理部105は、表示するフローテンプレートを決定する。例えば、表示フローテンプレート選択処理部105は、表示フローテンプレートリスト615のスコア752を事前に定めた閾値と比較して検索結果として表示するかどうかの判定を行い、その結果を検索結果表示判定753に格納する。
最後に、ステップS1308において、表示フローテンプレート選択処理部105は、結果を返し、処理を終了する。例えば、表示フローテンプレート選択処理部105は、表示フローテンプレートリスト615をテキスト検索処理部102に渡す。
<テキスト情報およびフロー情報を使った検索>
図14は、テキスト情報とフロー情報とを使った検索処理に係るフローチャートの一例を示す図である。以下の処理は、ユーザ140が端末210のクライアントプログラム601に表示されたフローテンプレート一覧画面300の検索語入力窓302に検索語を入力したことを契機に実行される。
まず、ステップS1401において、フローテンプレートマネージャ100は、ユーザ140が入力した検索語を受信する。
次に、ステップS1402において、フローテンプレートマネージャ100は、テキスト検索処理部102を呼び出し、検索語に基づいて類義語リスト614および表示フローテンプレートリスト615を作成する。
なお、このときテキスト検索処理部102は、ステップS1101において類義語算出処理部104の呼び出しをせずに類義語リスト614に検索語741の登録を行い、ステップS1102で呼び出す表示フローテンプレート選択処理部105では検索語741に対して表示するフローテンプレートを選択してもよい。また、後述するステップS1403において類似フロー検索処理部103を呼び出して類似したフローの検索を行うことによって、フローテンプレートの検索時にフローテンプレートマネージャ100に登録されているフローの情報を考慮することが可能であることから、テキスト検索処理部102がステップS1101において呼び出す類義語算出処理部104のステップS1205において単語の類似関係を算出する際には、ステップS1201、ステップS1202、ステップS1203で取得するフローに使われているノードの情報は利用しなくてもよい。
次に、ステップS1403において、フローテンプレートマネージャ100は、類似フロー検索処理部103を呼び出して、表示フローテンプレートリスト615の検索結果表示判定753において検索結果に表示するとされているフローテンプレートのフローに類似したフローを持つフローテンプレートを検索し、類似フローテンプレートリスト619を作成する。なお、処理の詳細については後述する。
最後に、ステップS1404において、フローテンプレートマネージャ100は、結果を返し、処理を終了する。例えば、フローテンプレートマネージャ100は、検索結果として、表示フローテンプレートリスト615と類似フローテンプレートリスト619とをクライアントプログラム601に送信する。クライアントプログラム601は、フローテンプレート一覧画面300に検索結果を表示する。
フローテンプレートの表示順は、ユーザ140が表示オプション選択画面310のソート順311で選択した順に従うものである。例えば、ユーザ140がおすすめ順を選択した場合、GUI表示処理部611またはクライアントプログラム601は、テキストによるフローテンプレートの検索結果については表示フローテンプレートリスト615のスコア752が高い順にソートする。そして、テキストによるフローテンプレートの検索結果を前に、続いて対応する類似フローの検索結果を類似フローテンプレートリスト619に基づいてフロー類似度794が高い順に表示する。
また、テキストによるフローテンプレートの検索結果である表示フローテンプレートリスト615のフローテンプレートを表示の前半に固めておき、後半に類似フローテンプレートリスト619のフローテンプレートをまとめて表示してもよい。なお、スコア752およびフロー類似度794の値は、GUI上でユーザ140が参照できてもよいし、できなくてもよい。また、フローテンプレートテーブル111がこれまでのダウンロード数を有する場合、GUI表示処理部611またはクライアントプログラム601は、ダウンロードが多い順にフローテンプレートを並び替えてもよい。
なお、検索結果については、端末210に表示することなく、ユーザ140は、表示フローテンプレートリスト615と類似フローテンプレートリスト619とをデータとして受け取ってもよい。
また、入力される検索語は、1つでなくてもよい。フローテンプレートマネージャ100は、複数の検索語を受け付けた場合、それぞれの検索語に対してステップS1402のテキスト検索処理部102の呼び出しとステップS1403の類似フロー検索処理部103の呼び出しとを行い、それぞれの検索語に対する表示フローテンプレートリスト615と類似フローテンプレートリスト619とを結合してステップS1405の処理を行う。
図15は、類似フロー検索処理部103が、表示フローテンプレートリスト615の検索結果表示判定753において検索結果に表示するとされているフローテンプレートのフローに類似したフローを有するフローテンプレートを検索し、類似フローテンプレートリスト619を作成する処理に係るフローチャートの一例を示す図である。以下の処理は、フローテンプレートマネージャ100が類似フロー検索処理部103を呼び出したことを契機に実行される。
まず、ステップS1501において、類似フロー検索処理部103は、利用ノード抽出処理部101を呼び出し、利用ノードリスト613を作成する。
次に、ステップS1502において、類似フロー検索処理部103は、利用ノードリスト613と、ノードマネージャ120のノードテーブル121と、ノードカテゴリテーブル622と、外部サービステーブル623とを用いて、ノード重要度リスト616を作成する。ノードの重要度762の計算例を以下に示す。
ノードの重要度の計算方法の一例として、各利用ノードの利用ノードリスト613の利用回数732を、利用回数732の合計で割ってノードごとに利用頻度を算出し、活用する方法がある。類似フロー検索処理部103は、利用頻度の算出結果に応じて重要度を定める。例えば、使用頻度の高いノードは、単純な四則計算、フローのキックを行うなど、汎用的な使い方が可能であり、反対に使用頻度の低いノードは、フロー内での特徴的な処理を担っている可能性が高いと考えられる。よって、使用頻度が低いほど重要度を高く、使用頻度が高いほど重要度を低くすることが考えられる。
他の例として、類似フロー検索処理部103は、ノードマネージャ120のノードカテゴリテーブル622を参照し、フロー内で特徴的な処理を行う可能性が高いカテゴリに属するノードの重要度を高くすることが考えられる。さらに、類似フロー検索処理部103は、ノードマネージャ120の外部サービステーブル623を参照し、外部サービスの呼び出しを行うノードは、接続先で重要な処理を行っていると考え、ノードの重要度を高くすることが考えられる。
上記例のようなノードの重要度の算出方法は、単独で用いてもよいし、複数の算出方法を組み合わせてもよい。
判定763の算出方法の一例は、重要度762の計算結果に対して閾値を設けて判定を行うことである。また、特定のノード、ノードカテゴリテーブル622の特定のカテゴリ、外部サービステーブル623の特定の外部サービスに該当するノードは、重要と判定することを事前に定義していてもよい。さらに、重要度762と事前の定義との両方に基づいて判断してもよい。
次に、ステップS1503において、類似フロー検索処理部103は、ステップS1502で作成したノード重要度リスト616に基づいて、フロー簡略化処理部106を呼び出し、フローの類似関係を算出する際に用いるために簡略化したフローを作成する。なお、処理の詳細については後述する。
次に、ステップS1504において、類似フロー検索処理部103は、ステップS1402で作成した表示フローテンプレートリスト615からフローテンプレートID751(フローテンプレート)を1つ選択する(テキスト検索によるフローテンプレートの検索結果を1つ選択する)。
次に、ステップS1505において、類似フロー検索処理部103は、フロー類似関係探索処理部109を呼び出す。フロー類似関係探索処理部109は、フロー簡略化処理部106で簡略化されたフローを使って、ステップS1504で選択したフローテンプレートの簡略化フローと、その他のフローテンプレートの簡略化フローとの間に類似関係が認められるかを確認する。フロー類似関係探索処理部109は、類似関係が認められるフローが見つかった場合、類似フローテンプレートリスト619の類似簡略化フローID792に該当する簡略化フローIDを、類似フローテンプレートID793に、該当するフローテンプレートIDをそれぞれ登録する。なお、フロー類似関係探索処理部109は、1つのフローテンプレートに対して簡略化されたフローが複数存在する場合、全ての簡略化されたフローに対して類似関係を確認する。
フロー類似関係探索処理部109で行うフローの類似関係の確認方法の例として、グラフ編集距離(Graph Edit Distance:GED)を用いることが考えられる。なお、このときには、ノードテーブル121のノードID801の完全な一致を用いてもよいし、ノードテーブル121のノードカテゴリID802、外部サービスID805を活用してノードの類似性を用いてもよい。
次に、ステップS1506において、類似フロー検索処理部103は、フロー類似度算出処理部110を呼び出して、フロー類似関係探索処理部109でフロー間に類似関係が認められたペアについて、フローの類似度を算出し、類似フローテンプレートリスト619のフロー類似度794に類似度を、検索結果表示判定795に該当するフローテンプレートを類似フローテンプレートとして表示するか否かを登録する。このときに用いるフローについては、フロー類似度算出処理部110は、ステップS1503のフロー簡略化処理部106で作成した簡略化されたフローであってもよいし、完全なフローを用いてもよい。なお、処理の詳細については後述する。
次に、ステップS1507において、類似フロー検索処理部103は、ステップS1504で選択したフローテンプレートが表示フローテンプレートリスト615の最後のフローテンプレート(検索結果)であるかを確認する。類似フロー検索処理部103は、最後のフローテンプレートである場合、処理を終了し、最後のフローテンプレートでない場合、ステップS1504に処理を戻す。
なお、ステップS1503のフロー簡略化処理部106を行わず、ステップS1505およびステップS1506で呼び出されるフロー類似関係探索処理部109とフロー類似度算出処理部110とを完全なフローを用いて行ってもよい。また、完全なフローと簡略化されたフローの両方を用いて行ってもよい。
図16は、フロー簡略化処理部106が行う処理に係るフローチャートの一例を示す図である。以下の処理は、フローテンプレートマネージャ100の類似フロー検索処理部103において、フロー簡略化処理部106が呼び出されたことを契機に実行される。フロー簡略化処理部106では、類似フロー検索処理部103のステップS1502で作成したノード重要度リスト616に基づいて、各フローを簡略化する。これらの処理によって作成されるフローの模式図は、図17Cおよび図17Dに示すようなものになる。
まず、ステップS1601において、フロー簡略化処理部106は、フロー抽象化処理部107を呼び出し、ノード重要度リスト616に基づいて、各フローを、特徴的な働きをしていると考えられる重要なノードで表して抽象化し、抽象フローリスト617を作成する。
次に、ステップS1602において、フロー簡略化処理部106は、フロー分割処理部108を呼び出し、各フローを、フローの始点または終点のノードが分岐しないフローの組に分割し、分割フローリスト618を作成する。
最後に、ステップS1603において、フロー簡略化処理部106は、結果を返し、処理を終了する。例えば、フロー簡略化処理部106は、類似フロー検索処理部103に分割フローリスト618を渡す。
図17は、フローの簡略化を説明するための図である。なお、図17については、図18および図19において適宜に参照して説明する。
図18は、フロー抽象化処理部107が、各フローを、ノード重要度リスト616に基づいて、特徴的な働きをしていると考えられる重要なノードで表して抽象化する処理に係るフローチャートの一例を示す図である。
図18に示す処理は、図17Aに示す抽象化前のフロー1700を図17Cに示す抽象化後のフロー1720に変換する処理に該当する。以下の処理は、フロー簡略化処理部106において、フロー抽象化処理部107が呼び出されたことを契機に実行される。
まず、ステップS1801において、フロー抽象化処理部107は、フローテンプレートマネージャ100のフローテーブル112をコピーし、抽象フローリスト1710とする。図17Bに示すリストは、フローテーブル112のコピーによって作成された抽象フローリスト1710の例である。以下では、図17Aのフロー1700が図17Bの抽象フローリスト1710において、フローID771が「flow−100」のフローに該当すると仮定して説明を行う。抽象フローリスト1710は、以降のフローの抽象化処理によって書き換えられ、最終的には図7Hに示す抽象フローリスト617になり、抽象化後のフロー1720を表す情報が残る。
次に、ステップS1802において、フロー抽象化処理部107は、抽象フローリスト1710のフローID771(フロー)を1つ選択する。
次に、ステップS1803において、フロー抽象化処理部107は、選択したフローIDのノードID772(ノード)を1つ選択する。
次に、ステップS1804において、フロー抽象化処理部107は、選択したノードID772を、ノード重要度リスト616の利用ノードID761と照らし合わせ、該当するノードの判定763を参照して重要なノードであるかを確認する。フロー抽象化処理部107は、重要なノードでない場合、削除対象のノードであるため、ステップS1805に処理を移し、重要なノードである場合、ステップS1806に処理を移す。なお、説明の都合上、図17Aでは、重要なノード1701にアスタリスク(*)を付け、削除対象のノード1702は無印として表している。
次に、ステップS1805において、フロー抽象化処理部107は、結合関係を保持したまま、抽象フローリスト1710から該当ノードの情報を削除する。この処理は、すなわち、削除対象ノードの入力773−2に登録されているノード識別ID773−1を持つノードの出力773−3のノード識別IDを、削除対象ノードの出力773−3に登録されているノード識別IDに書き換え、削除対象ノードの出力773−3に登録されているノード識別ID773−1を持つノードの入力773−2のノード識別IDを、削除対象ノードの入力773−2に登録されているノード識別IDに書き換えてから、削除対象ノードの情報を削除することである。
次に、ステップS1806において、フロー抽象化処理部107は、選択したノードがフローの最後のノードであるかを確認する。フロー抽象化処理部107は、最後のノードである場合、ステップS1807に処理を移し、最後のノードでない場合、ステップS1803に処理を戻す。
次に、ステップS1807において、フロー抽象化処理部107は、選択したフローが最後のフローであるかを確認する。フロー抽象化処理部107は、最後のフローである場合、ステップS1808に処理を移し、最後のフローでない場合、ステップS1802に処理を戻す。
最後に、ステップS1808において、フロー抽象化処理部107は、結果を返し、処理を終了する。例えば、フロー抽象化処理部107は、抽象フローリスト1710(抽象フローリスト617)をフロー簡略化処理部106に渡す。
図19は、フロー分割処理部108が、フロー抽象化処理部107において抽象化したフローを、フローの始点または終点のノードが分岐しないフローの組に分割する処理に係るフローチャートの一例を示す図である。図17Cに示す抽象化後のフロー1720を図17Dに示す分割フロー1730に変換する処理に該当する。以下の処理は、フロー簡略化処理部106において、フロー分割処理部108が呼び出されたことを契機に実行される。
ここで、ユーザ140がフローテンプレートマネージャ100に登録されているフローテンプレートを参考に新しいアプリケーションの開発を行う際には、予め登録されているアプリケーションが複数の入力または出力を持っていたとしても、そのうちの1つだけの入力または出力を使いたい場合と、複数を組み合わせて使いたい場合とが存在する。そこで、フローを分割してから検索することで両方の場合に対応可能となる。分割したフローの情報は、分割フローリスト618に登録される。
まず、ステップS1901において、フロー分割処理部108は、フロー抽象化処理部107の処理で作成した抽象フローリスト617からフローID771(抽象化されたフロー)を1つ選択する。
次に、ステップS1902において、フロー分割処理部108は、選択したフローの始点となる始点ノード1721を1つ選択する。ここで、始点ノード1721とは、入力773−2を持たないノードを指す。
次に、ステップS1903において、フロー分割処理部108は、選択したフローの終点となる終点ノード1723を1つ選択する。ここで、終点ノード1723とは、出力773−3を持たないノードを指す。
次に、ステップS1904において、フロー分割処理部108は、ステップS1902で選択した始点ノード1721からステップS1903で選択した終点ノード1723へのフローを抜粋し、分割フローリスト618に登録する。始点ノード1721から終点ノード1723への道のりに、一度分岐してから合流するような経路が存在する場合は、分岐ごとに登録してもよいし、まとめて1つのフローとして登録してもよいし、その両方を登録してもよい。
次に、ステップS1905において、フロー分割処理部108は、ステップS1903で選択した終点ノード1723が最後の終点ノードであるかを確認する。フロー分割処理部108は、最後の終点ノードである場合、ステップS1906に処理を移し、最後の終点ノードでない場合、ステップS1903に処理を戻す。
次に、ステップS1906において、フロー分割処理部108は、ステップS1902で選択した始点ノード1721が最後の始点ノードであるかを確認する。フロー分割処理部108は、最後の始点ノードである場合、ステップS1907に処理を移し、最後の始点ノードでない場合、ステップS1902に処理を戻す。
次に、ステップS1907において、フロー分割処理部108は、ステップS1901で選択したフローが最後のフローであるかを確認する。フロー分割処理部108は、最後のフローである場合、ステップS1908に処理を移し、最後のフローでない場合、ステップS1901に処理を移す。
最後に、ステップS1908において、フロー分割処理部108は、結果を返し、処理を終了する。例えば、フロー分割処理部108は、分割フローリスト618をフロー簡略化処理部106に渡す。
以上では、フロー簡略化処理部106が行う処理の一例として、フローテーブル112が保持するフローを、フロー抽象化処理部107において抽象化した後、フロー分割処理部108において分割する処理について述べた。しかしながら、フローの簡略化方法は、上記に限らず、フロー簡略化処理部106は、フロー抽象化処理部107を行って抽象化したフローを作成するだけでもよいし、フロー分割処理部108を行ってフローを分割するだけでもよい。
図20は、フロー類似度算出処理部110が、フロー類似関係探索処理部109の処理結果によってフロー間に類似関係が認められたペアについて、フローの類似度を算出し、該当するフローテンプレートを類似フローテンプレートとして表示するかを判断する処理に係るフローチャートの一例を示す図である。以下の処理は、フローテンプレートマネージャ100の類似フロー検索処理部103において、フロー類似度算出処理部110が呼び出されたことを契機に実行される。
まず、ステップS2001において、フロー類似度算出処理部110は、類似フローテンプレートリスト619から類似する簡略化フローのペアを1つ選択する。
次に、ステップS2002において、フロー類似度算出処理部110は、選択した簡略化フローのペアのフロー類似度794を算出する。
類似度の算出方法の一例として、簡略化フローの始点ノード1721と終点ノード1723に注目して類似度を算出する方法がある。ユーザ140がフローテンプレートマネージャ100に登録されているフローテンプレートを参考に新しいアプリケーションの開発を行う際には、入力したいデータと欲しい結果とが決まっており、欲しい結果が得られる処理内容を参考にしたい場合が多いと考えられる。そこで、フローの始点と終点とに注目して類似度を計算することで、より目的に沿った検索結果が得られると期待できる。
始点ノード1721と終点ノード1723とに注目して類似度を算出する方法として、例えば、簡略フローのペアにおいて、始点ノード1721と中間ノード1722と終点ノード1723との全てが一致する場合に類似度を最も高くし(最も高い第1の類似度)、始点ノード1721と終点ノード1723との両方が一致する場合に類似度を次に高くし(第1の類似度の次に高い第2の類似度)、始点ノード1721と終点ノード1723とのどちらか一方が一致する場合には類似度を少し下げ(第2の類似度の次に高い第3の類似度)、始点ノード1721と終点ノード1723との両方が一致しない場合には類似度を最も低くする(第3の類似度の次に高い第4の類似度)ことが考えられる。
このとき、始点ノード1721と終点ノード1723との中間に存在する中間ノード1722が一致している割合によって類似度を変化させてもよい。例えば、フロー類似度算出処理部110は、一致している割合が高いほど、類似度を高くする。さらに、ノード重要度リスト616を参照し、重要度762に応じて類似度を変化させてもよい。例えば、フロー類似度算出処理部110は、重要度が高いほど、類似度を高くする。
なお、ここで、ノードの一致を確認する際には、ノードテーブル121のノードID801(抽象フローリスト617のノードID772、分割フローリスト618のノードID783)の完全な一致であってもよいし、ノードテーブル121のノードカテゴリID802、外部サービスID805等を活用して、類似度にバイアスを掛けてもよい。
類似度の算出方法の他の例として、ステップS1505で簡略化フローの類似関係を確認する際に用いた手法において類似度が取得可能な場合はこれを利用してもよいし、簡略化フローの始点ノード1721と終点ノード1723とに注目して算出した類似度と組み合わせてもよい。
次に、ステップS2003において、フロー類似度算出処理部110は、フロー類似度794を事前に定めた閾値と比較して検索結果として表示するかどうかの判定を行い、その結果を検索結果表示判定795に格納する。
次に、ステップS2004において、フロー類似度算出処理部110は、選択した簡略化フローのペアが最後のペアであるかを確認する。フロー類似度算出処理部110は、最後のペアである場合、ステップS2005に処理を移し、最後のペアでない場合、ステップS2001に処理を戻す。
最後に、ステップS2005において、フロー類似度算出処理部110は、結果を返す。例えば、フロー類似度算出処理部110は、類似フロー検索処理部103に類似フローテンプレートリスト619を渡す。
本実施の形態によれば、例えば、ビジュアルプログラミングツールで開発されたアプリケーションのフローテンプレートを検索する際に、テキスト情報とフロー情報とに基づく関連フローテンプレートの提示が可能となる。これによって、フローテンプレートに付随したテキストに登録されていない情報をアプリケーションから補うことができ、よりユーザの目的に適したフローテンプレートを提示することが可能となる。
(2)第2の実施の形態
第1の実施の形態では、ユーザ140がフローテンプレート一覧画面300の検索語入力窓302に検索語を入力したことを契機としてフローテンプレートの検索を行う例を述べた。しかしながら、検索の過程においては、所定の処理(利用ノード抽出処理部101による利用ノードリスト613の作成、類義語算出処理部104による単語の類似関係の算出処理による単語の類似関係の作成、類似フロー検索処理部103におけるノードの重要度の計算処理によるノード重要度リスト616の作成、フロー抽象化処理部107による抽象フローリスト617の作成、フロー分割処理部108による分割フローリスト618の作成、フロー類似関係探索処理部109におけるフロー類似関係の探索による類似フローテンプレートリスト619の類似フローテンプレートID793の登録、フロー類似度算出処理部110におけるフローの類似度算出処理による類似フローテンプレートリスト619のフロー類似度794および検索結果表示判定795の登録など)には時間がかかるため、検索結果のユーザ140への提示が遅くなってしまう。
これを改善するため、上述のような時間がかかる処理を事前に行ってその処理結果をフローテンプレートマネージャ100の記憶装置610に保持しておき、検索時に参照することで、検索語の入力から検索結果の提示までにかかる時間を短縮できる。処理結果を保持する場所はフローテンプレートマネージャ100の記憶装置610上だけでなく、ネットワークを介してアクセス可能なデータベースを設け、当該データベースに保持してもよいし、端末210の記憶装置600に保持してもよい。
本実施の形態では、検索語を用いない処理を事前に行う。より具体的には、適用できる処理としては、利用ノード抽出処理部101による利用ノードリスト613の作成、類義語算出処理部104による単語の類似関係の算出処理による単語の類似関係の作成(ステップS1201〜ステップS1205)、類似フロー検索処理部103におけるノードの重要度の計算処理によるノード重要度リスト616の作成(ステップS1502)、フロー抽象化処理部107による抽象フローリスト617の作成、フロー分割処理部108による分割フローリスト618の作成、フロー類似関係探索処理部109におけるフロー類似関係の探索による類似フローテンプレートリスト619の類似フローテンプレートID793の登録(ステップS1505)、フロー類似度算出処理部110におけるフローの類似度算出処理による類似フローテンプレートリスト619のフロー類似度794および検索結果表示判定795の登録(ステップS1506)などが挙げられる。
例えば、利用ノード抽出処理部101による利用ノードリスト613の作成は、新しいフローテンプレートがフローテンプレートテーブル111に追加されたことを契機に行うことができる。また、既存のフローテンプレートが更新されたことを契機に行ってもよい。また、一日一回、数日に一回、毎週一回、毎月一回などのように、利用ノードリスト613の更新頻度を予め定めておき、そのタイミングで利用ノード抽出処理部101を実行してもよい。他にも、深夜、休日などのフローテンプレートマネージャ100のユーザ140が少ない時間帯などを利用ノード抽出処理部101の実行を許可する時間として定めておき、フローテンプレートテーブル111に新しいフローテンプレートが追加されたタイミングまたは更新されたタイミングから一番近い実行許可時間に利用ノードリスト613の更新を行うことが考えられる。
類義語算出処理部104による単語の類似関係の算出処理による単語の類似関係の作成、類似フロー検索処理部103におけるノードの重要度の計算処理によるノード重要度リスト616の作成、フロー抽象化処理部107による抽象フローリスト617の作成、フロー分割処理部108による分割フローリスト618の作成、フロー類似関係探索処理部109におけるフロー類似関係の探索による類似フローテンプレートリスト619の類似フローテンプレートID793の登録、フロー類似度算出処理部110におけるフローの類似度算出処理による類似フローテンプレートリスト619のフロー類似度794および検索結果表示判定795の登録は、利用ノードリスト613が作成されたことを契機として、検索語に入力を待たず事前に行うことが可能である。
ただし、フロー抽象化処理部107による抽象フローリスト617の作成、フロー分割処理部108による分割フローリスト618の作成を含めた、フロー簡略化処理部106は、ノードの重要度の計算処理の結果を使う場合、ノードの重要度の計算処理によるノード重要度リスト616の作成のあとに実行しなければならない。なお、フロー分割処理部108による分割フローリスト618の作成において抽象フローリスト617を用いる場合、フロー抽象化処理部107による抽象フローリスト617の作成のあとにフロー分割処理部108による分割フローリスト618の作成を行わなくてはならない。同様に、フロー類似関係探索処理部109におけるフロー類似関係の探索による類似フローテンプレートリスト619の類似フローテンプレートID793の登録は、フロー簡略化処理部106による分割フローリスト618の作成のあとに、フロー類似度算出処理部110におけるフローの類似度算出処理による類似フローテンプレートリスト619のフロー類似度794および検索結果表示判定795の登録は、フロー類似関係探索処理部109におけるフロー類似関係の探索による類似フローテンプレートリスト619の類似フローテンプレートID793の登録のあとに実行しなければならない。これらの制約が守られていれば、上記の処理は全て事前に行ってもよいし、その途中までを事前に行っておき、残りの処理は検索語の入力を契機として行ってもよい。
なお、第1の実施の形態では、類似フロー検索処理部103がステップS1505においてフロー類似関係探索処理部109を呼び出す前に、ステップS1504においてテキスト検索処理部102の出力結果である表示フローテンプレートリスト615からフローテンプレートを1つ選択し、ステップS1505で選択したフローテンプレートに対する類似フローを探索したあと、ステップS1506でフロー類似度算出処理部110において探索結果の類似フロー間の類似度を算出している。
しかしながら、テキスト検索処理部102が表示フローテンプレートリスト615を作成するためにはユーザ140が入力した検索語が必要であるため、続くフロー類似関係探索処理部109およびフロー類似度算出処理部110での処理が事前にできない。
そこで、事前計算により検索時間の短縮を行う場合には、類似フロー検索処理部103のステップS1504は行わず、全てのフローに対してフロー類似関係探索処理部109およびフロー類似度算出処理部110での処理を行い、その結果を保持しておくものとする。
また、上記の処理以外であっても、ユーザ140がフローテンプレート一覧画面300の検索語入力窓302に入力する検索語を用いなくても行える処理については、検索語の入力を待たずに事前に処理を実行しておき、その結果を検索時に呼び出す形をとってもよい。
本実施の形態によれば、時間がかかる所定の処理を事前に行い、処理結果を記憶装置に保持しておき、検索時に参照することで、検索語の入力から検索結果の提示までにかかる時間を短縮することができる。
(3)第3の実施の形態
第1の実施の形態および第2の実施の形態では、テキストによるフローテンプレートの検索結果と、フローの類似性の検索結果とから得られた、テキスト検索によるフローテンプレートと、テキスト検索によるフローテンプレートのフローに類似したフローを持つフローテンプレートとが全てフローテンプレート一覧画面300に表示されることを想定していた。しかしながら、これではフローテンプレート一覧画面300に表示されるフローテンプレートが膨大になってしまい、ユーザ140が新しいアプリケーションの参考にするフローテンプレートを見つけることが困難となる可能性がある。
この問題を解決するために、例えば、フローテンプレート一覧画面300には、テキストによるフローテンプレートの検索結果を表示し、フローテンプレート301をマウスでクリックすると、クリックしたフローテンプレートの情報に加え、図21のように、類似フローテンプレートの情報を閲覧可能なフローテンプレート情報表示画面2100が開くようにGUIを設計する。
このとき、フローテンプレート一覧画面300におけるフローテンプレートの表示順は、ユーザ140が表示オプション選択画面310のソート順311で選択した順に従うものとする。例えば、ユーザ140がおすすめ順を選択した場合には、表示フローテンプレートリスト615のスコア752が高い順にソートされる。スコア752の値はGUI上でユーザ140が参照できてもよいし、できなくてもよい。
フローテンプレート情報表示画面2100は、フローテンプレートの情報取得とフローテンプレートのデータのダウンロードの実行のほかに、類似フローテンプレートの情報を閲覧することができる画面の一例である。ユーザ140は、フローテンプレート名2110、フローテンプレートカテゴリ2120等を参照できる。フローテンプレート概要画面2130からは、ユーザ140は、当該フローテンプレートの概要を参照できる。さらに、説明画面2140では、ユーザ140は、当該フローテンプレートの内容、開発の背景、目的、適用場面例などの詳細説明を参照でき、また、フロー画像画面2150および関連資料2160からは、ユーザ140は、フロー画像情報の参照、ドキュメント等のコンテンツの取得ができる。また、ユーザ140は、類似フロー一覧画面2170では、フローテンプレート一覧画面300で選択したフローテンプレートのフローに類似したフローを持つ類似フローテンプレート2171が参照できる。類似フロー表示領域2172におけるフローテンプレートの表示順は、ユーザ140が表示オプション選択画面310のソート順311で選択した順に従うものとする。例えば、ユーザ140がおすすめ順を選択した場合には、類似フローテンプレートリスト619のフロー類似度794が高い順にソートされる。フロー類似度794の値はGUI上でユーザ140が参照できてもよいし、できなくてもよい。
なお、ユーザ140が類似フローテンプレート2171をクリックすると、フローテンプレートテーブル111の情報と類似フローテンプレートリスト619の情報とを参照して、そのフローテンプレートについてのフローテンプレート情報表示画面2100が表示される。また、フローテンプレートテーブル111の情報のみを参照し、類似フローテンプレート情報を持たないフローテンプレート情報表示画面320のようなものが表示されてもよい。
また、ユーザ140は、ダウンロードボタン2180をクリックすると、類似フローテンプレートのデータをダウンロードできる。ダウンロードしたデータをビジュアルプログラミング実行環境にデプロイすることにより、アプリケーションを動作させることができる。
また、上記のほかに、フローテンプレート一覧画面300上にテキスト情報より検索されたフローテンプレートを表示する領域と、フロー情報より検索された類似フローテンプレートを表示する領域との2つの領域を設けて、テキスト情報より検索されたフローテンプレートをユーザ140がクリックすると類似フローテンプレートが表示されてもよいし、その両方でもよい。なお、フローテンプレートおよび類似フローテンプレートの表示順は、ユーザ140が表示オプション選択画面310のソート順311で選択した順に従うものとする。
本実施の形態によれば、ユーザは、所望のフローテンプレートのデータを容易に取得できるようになる。
(4)他の実施の形態
なお、上述の実施の形態においては、本発明をテンプレート検索システムに適用するようにした場合について述べたが、本発明はこれに限らず、この他種々のシステム、装置、方法、プログラムに広く適用することができる。
また、上述の実施の形態において、「記憶装置」は、メモリ部とPDEV部の少なくとも一部とのうちの少なくとも1つ(典型的には少なくともメモリ部)である。
また、上述の実施の形態において、「メモリ部」は、1以上のメモリであり、典型的には主記憶デバイスでよい。メモリ部における少なくとも1つのメモリは、揮発性メモリであってもよいし不揮発性メモリであってもよい。
また、上述の実施の形態において、「PDEV部」は、1以上のPDEVであり、典型的には補助記憶デバイスでよい。「PDEV」は、物理的な記憶デバイス(Physical storage DEVice)を意味し、典型的には、不揮発性の記憶デバイス、例えばHDD(Hard Disk Drive)又はSSD(Solid State Drive)である。
また、上述の実施の形態において、「制御装置」は、1以上のプロセッサである。少なくとも1つのプロセッサは、典型的には、CPU(Central Processing Unit)のようなマイクロプロセッサであるが、GPU(Graphics Processing Unit)のような他種のプロセッサでもよい。少なくとも1つのプロセッサは、シングルコアでもよいしマルチコアでもよい。少なくとも1つのプロセッサは、処理の一部又は全部を行うハードウェア回路(例えばFPGA(Field-Programmable Gate Array)又はASIC(Application Specific Integrated Circuit))といった広義のプロセッサでもよい。
また、上述の実施の形態において、「プログラム」を主語として処理を説明する場合があるが、プログラムは、制御装置によって実行されることで、定められた処理を、適宜に記憶装置(例えばメモリ)及び/又はインターフェース部(例えば通信ポート)等を用いながら行うため、処理の主語がプロセッサとされてもよい。プログラムを主語として説明された処理は、制御装置あるいはその制御装置を有する装置が行う処理としてもよい。また、制御装置は、処理の一部又は全部を行うハードウェア回路(例えばFPGA(Field-Programmable Gate Array)またはASIC(Application Specific Integrated Circuit))を含んでもよい。プログラムは、プログラムソースから計算機のような装置にインストールされてもよい。プログラムソースは、例えば、プログラム配布サーバまたは計算機が読み取り可能な記録媒体(例えば非一時的な記録媒体)であってもよい。また、以下の説明において、2以上のプログラムが1つのプログラムとして実現されてもよいし、1つのプログラムが2以上のプログラムとして実現されてもよい。
また、上述の実施の形態において、各テーブルの構成は一例であり、1つのテーブルは、2以上のテーブルに分割されてもよいし、2以上のテーブルの全部または一部が1つのテーブルであってもよい。
また、上述の実施の形態において、説明の便宜上、XXテーブル、XXリスト、XXファイルを用いて各種のデータを説明したが、データ構造は限定されるものではなく、XX情報などと表現してもよい。
また、上記の説明において、各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、SSD(Solid State Drive)等の記憶装置、または、ICカード、SDカード、DVD等の記録媒体に置くことができる。
本発明は、例えば、以下の特徴的な構成を有する。
テンプレート(例えば、フローテンプレート)の情報(例えば、フローテンプレートテーブル111、フローテーブル112、コンテンツテーブル612等)と、上記テンプレートで利用されるノードの情報(例えば、ノードテーブル121、ノードカテゴリテーブル622、外部サービステーブル623)とを対応付けて管理するテンプレート検索システム(例えば、テンプレート検索システム1)であって、上記テンプレート検索システムにより管理されるノードの情報から、入力された検索語の類義語、および/または、上記検索語に係るテンプレート(例えば、検索語の類義語が紐づくテンプレート、検索語が紐づくテンプレートのフローに一致または類似するフローのテンプレート、検索語の類義語が紐づくテンプレートのフローに一致または類似するフローのテンプレート)に含まれるノードの繋がりを示すフローを算出し、上記テンプレート検索システムにより管理されるテンプレートの情報から、算出した類義語が紐づくテンプレート、および/または、算出したフローに対応するフローのテンプレートを特定する処理部(例えば、フローテンプレートマネージャ100、処理部)と、上記処理部により特定されたテンプレートの情報を出力する出力部(例えば、フローテンプレート出力部130、出力部)と、を備えることを特徴とする。
上記構成によれば、類義語が紐づくテンプレート、および/または、検索語に係るテンプレートのフローに対応するフローのテンプレートが、検索語に対応するテンプレートに類似するテンプレートとして検索される。例えば、ユーザの背景、知識などに差があって、利用する検索語の語句が異なっていたとしても、検索語に対応するテンプレートに類似するテンプレートが検索されるので、ユーザは、目的に沿ったテンプレートを得ることができるようになる。
上記処理部は、上記テンプレート検索システムにより管理されているテンプレートで利用されるノードを抽出し(例えば、ステップS1201、ステップS1501)、抽出したノードの情報を、ノードの情報を管理するノード情報管理部から取得する、ことを特徴とする。
上記構成によれば、例えば、ノード情報管理部が管理する大量のノードの情報からテンプレートの検索で利用するノードの情報を選択的に取得でき、利用するノードの情報を厳選することが可能となる。
上記テンプレート検索システムは、テンプレートを説明する単語を含むテキスト情報(例えば、フローテンプレート説明704)、および/または、ノードを説明する単語を含むテキスト情報(例えば、ノード説明文804、カテゴリ名812、外部サービスの説明文)を管理し(例えば、ステップS1201〜ステップS1204)、上記処理部は、上記テンプレート検索システムにより管理されるテキスト情報に含まれる単語に対して上記検索語との類似関係を判定して上記検索語の類義語を算出する(例えば、ステップS1205、ステップS1206)、ことを特徴とする。
上記構成によれば、テンプレートのテキスト情報、および/または、ノードのテキスト情報に含まれる単語を対象として、類義語が求められる。例えば、テンプレートの説明文から漏れている単語があったとしても、ノードの説明文からも類義語が求められるので、目的に沿ったテンプレートをユーザが取得することができなくなってしまう機会を低減することができる。
上記処理部は、上記テンプレート検索システムにより管理されるテンプレートで利用されるノードのうち、重要な処理を行う所定のノード(例えば、ノード重要度リスト616の判定763が「Ture」のノード、使用頻度の低いノード、フロー内で特徴的な処理を行う可能性が高いカテゴリに属するノード、外部サービスの呼び出しを行うノード)を対象として上記検索語の類義語を算出する、ことを特徴とする。
上記構成によれば、例えば、重要な処理を行わないノードの類義語(不要データ)を排除することで、検索の精度を高めることができるようになる。
上記処理部は、上記テンプレート検索システムにより管理されるテキスト情報に含まれる単語に対して上記検索語との類似度を算出し、算出した類似度が上位所定数の単語、算出した類似度が閾値を超える単語、または、算出した類似度が上位所定数の単語であって算出した類似度が閾値を超える単語を類義語として算出する(ステップS1206)、ことを特徴とする。
上記構成によれば、例えば、検索語に関連性が高い類義語が求められるので、検索の精度をより高めることができるようになる。
上記処理部は、上記検索語に係るテンプレート(例えば、検索語が紐づくテンプレート、類義語が紐づくテンプレート、検索語および当該検索語の類義語が紐づくテンプレート)のフローと、上記テンプレート検索システムにより管理されるテンプレートのフローとを比較して、上記検索語に係るテンプレートのフローに類似するフローのテンプレートを特定する、ことを特徴とする。
ここで、テンプレートの説明文、ノードの説明文においては、ユーザの意図によって、単語が省略され得るが、テンプレートのフローは、省略されることはない。よって、上記構成によれば、例えば、説明文があまり登録されていない場合であっても、例えば、検索語に係るテンプレートのフローに類似するフローのテンプレートが検索されるので、ユーザは、目的に沿ったテンプレートを得ることができる。
上記テンプレート検索システムは、テンプレートのテキスト情報(例えば、フローテンプレート名702、フローテンプレート概要703、またはフローテンプレート説明704など、)を管理し、上記処理部は、上記テンプレート検索システムにより管理されるテキスト情報から上記検索語が含まれるテンプレートを特定し、特定したテンプレートで利用されるノードの繋がりを示すフローと、上記テンプレート検索システムにより管理されるテンプレートのフローとを比較して、特定したテンプレートのフローに類似するフローのテンプレートを特定する(例えば、ステップS1402、ステップS1403)、ことを特徴とする。
上記構成によれば、テンプレートのテキスト情報、および/または、ノードのテキスト情報に含まれる単語を対象として、検索語が紐づくテンプレートが求められる。例えば、テンプレートの説明文から漏れている単語があったとしても、ノードの説明文からも検索語が紐づくテンプレートが求められるので、目的に沿ったテンプレートをユーザが取得することができなくなってしまう機会を低減することができる。
上記テンプレート検索システムは、テンプレートのテキスト情報(例えば、フローテンプレート名702、フローテンプレート概要703、またはフローテンプレート説明704など、)を管理し、上記処理部は、上記テンプレート検索システムにより管理されるテキスト情報から上記検索語の類義語が含まれるテンプレートを特定し、特定したテンプレートのフローと、上記テンプレート検索システムにより管理されるテンプレートのフローとを比較して、特定したテンプレートのフローに類似するフローのテンプレートを特定する(例えば、ステップS1402、ステップS1403)、ことを特徴とする。
上記構成によれば、テンプレートのテキスト情報、および/または、ノードのテキスト情報に含まれる単語を対象として、類義語が紐づくテンプレートが求められる。例えば、テンプレートの説明文から漏れている単語があったとしても、ノードの説明文からも類義語が紐づくテンプレートが求められるので、目的に沿ったテンプレートをユーザが取得することができなくなってしまう機会を低減することができる。
上記処理部は、上記テンプレート検索システムにより管理されるテンプレートで利用されるノードのうち、重要な処理を行う所定のノードを抽出してフローを生成し(例えば、ステップS1801〜ステップS1808)、生成したフローを用いてフローの比較を行う、ことを特徴とする。
上記構成によれば、例えば、重要な処理を行わないノードをフローから排除することで、重要な処理を行わないノードによりテンプレートが検索されなくなってしまう事態を回避でき、検索の精度を高めることができるようになる。
上記処理部は、上記テンプレート検索システムにより管理されるテンプレートで利用されるノードの繋がりを示すフローを、1の入力のノードと1以上の出力のノードとを含むフロー、および/または、1以上の入力のノードと1の出力のノードとを含むフローに分割してフローを生成し(例えば、ステップS1901〜ステップS1908)、生成したフローを用いてフローの比較を行う、ことを特徴とする。
上記構成によれば、フローを分割することで、部分的な検索が可能となる。例えば、ユーザが入力したいデータが決まっている場合、ユーザが得たいデータが決まっている場合などにおいて、入力および/または出力ごとにフローを分割することで、ユーザの目的に沿ったテンプレートをより適切に検索することができる。
上記処理部は、上記検索語に係るテンプレートで利用されるノードの繋がりを示すフローと、上記テンプレート検索システムにより管理されるテンプレートのフローであって、上記検索語に係るテンプレートで利用されるノードに類似するノードを含むフローとの類似関係を判定し、上記検索語に係るテンプレートのフローに類似するフローのテンプレートを特定する(例えば、ステップS1505)、ことを特徴とする。
上記構成によれば、例えば、ノードの類似性を加味してフローが類似するテンプレートを検索できるようになるので、ユーザは、目的に沿ったテンプレートを得ることができるようになる。
上記処理部は、上記検索語に係るテンプレートのフローと、上記テンプレート検索システムにより管理されるテンプレートのフローとの類似度を算出し(例えば、ステップS1506)、上記出力部は、上記処理部により算出された類似度に応じてテンプレートの情報を出力する(例えば、ステップS1404)、ことを特徴とする。
上記構成によれば、例えば、類似度の高いテンプレート、すなわちユーザの目的に沿ったテンプレートが優先的に出力されるので、ユーザは、所望のテンプレートを容易に得ることができるようになる。
上記処理部は、上記検索語に係るテンプレートのフローと、上記テンプレート検索システムにより管理されるテンプレートのフローとにおいて、始点のノードと、終点のノードと、上記始点のノードおよび上記終点のノードの間にある中間のノードとの全てが一致する場合、最も高い第1の類似度を設定し、上記始点のノードおよび上記終点のノードが一致する場合、上記第1の類似度より低い第2の類似度を設定し、上記始点のノードまたは上記終点のノードが一致する場合、上記第2の類似度より低い第3の類似度を設定し、上記始点のノードと上記終点のノードとの両方が一致しない場合、上記第3の類似度より低い第4の類似度を設定する(例えば、ステップS2002)、ことを特徴とする。
ここで、ユーザが入力したいデータが決まっている場合、ユーザが得たいデータが決まっている場合がある。このような場合、上記構成によれば、フローの始点と終点とに着目して類似度が計算されるので、例えば、ユーザは、所望のテンプレートをより容易に得ることができるようになる。
上記出力部は、上記処理部により特定されたテンプレートの情報を表示装置(例えば、端末210の入出力装置540)に表示する、ことを特徴とする。
上記構成によれば、テンプレートの情報が表示されるので、例えば、ユーザは、表示されたテンプレートを確認し、目的に沿ったテンプレートを得ることができるようになる。
上記処理部は、下記の(A)〜(C)に示す1以上の設定を行う、ことを特徴とする。
(A)特定したテンプレートのテキスト情報に含まれる類義語の数が多いほど出力の優先順位を高く設定
(B)上記テキスト情報に含まれる類義語の類似度が高いほど出力の優先順位を高く設定
(C)上記テキスト情報に含まれる類義語が格納されている項目が所定の項目であるときに出力の優先順位を高く設定
上記構成によれば、例えば、類義語との関係性が強いテンプレート、すなわちユーザの目的に沿ったテンプレートが優先的に出力されるので、ユーザは、目的に沿ったテンプレートを容易に得ることができるようになる。
また上述した構成については、本発明の要旨を超えない範囲において、適宜に、変更したり、組み替えたり、組み合わせたり、省略したりしてもよい。