(58)【調査した分野】(Int.Cl.,DB名)
前記表示制御部は、前記ジョブ定義一覧から選択されたジョブ定義に従って実行するジョブの出力を入力として利用可能な1つ以上のジョブ定義を第1の後続ジョブ候補として前記UI画面にさらに表示させ、
前記ジョブ実行部は、前記第1の後続ジョブ候補からジョブ定義がさらに選択された場合、前記ジョブ定義一覧から選択されたジョブ定義に従ってジョブを実行した後に、該ジョブの出力を入力として、前記第1の後続ジョブ候補から選択されたジョブ定義に従ってジョブを実行する
請求項1に記載のジョブ実行制御装置。
前記ジョブ実行部は、実行済みジョブのジョブ定義に対して、該実行済みジョブの入力として利用した他の実行済みジョブのジョブ定義と、ジョブの実行が成功したか否かを表す情報とを対応付けた入力ジョブ定義履歴をさらに記録し、
前記表示制御部は、前記入力ジョブ定義履歴に基づいて、前記ジョブ定義一覧から選択されたジョブ定義に従って実行したジョブが成功したときの入力として利用した実績のあるジョブ定義を特定し、特定したジョブ定義に従って実行された実行済みジョブを前記入力候補として前記UI画面に表示させる
請求項1または2に記載のジョブ実行制御装置。
前記ジョブ実行部は、前記入力候補のうち複数の実行済みジョブが選択された場合、選択された複数の実行済みジョブの出力を各々入力として、前記ジョブ定義一覧から選択されたジョブ定義に従ってジョブの実行を複数回繰り返す
請求項1乃至5のいずれか一項に記載のジョブ実行制御装置。
前記表示制御部は、実行中もしくは実行待ちのジョブを含む複数の実行済みジョブをノードとし、各ノードを前記複数の実行済みジョブの間の入出力関係を表すエッジで接続したジョブ履歴グラフを前記UI画面に表示させ、該ジョブ履歴グラフのノードとして表示されたいずれかの実行済みジョブが選択されると、選択された実行済みジョブの出力を入力として利用可能な1つ以上のジョブ定義を第2の後続ジョブ候補として前記UI画面に表示させ、
前記ジョブ実行部は、前記第2の後続ジョブ候補からジョブ定義が選択された場合、前記ジョブ履歴グラフから選択された実行済みジョブの出力を入力として、前記第2の後続ジョブ候補から選択されたジョブ定義に従ってジョブを実行する
請求項1乃至7のいずれか一項に記載のジョブ実行制御装置。
前記ジョブ履歴グラフの一部の範囲が指定された場合に、指定された範囲に含まれる各ノードに対応する複数のジョブ定義と各ジョブ定義の入出力関係とを表すジョブ定義グラフを作成するジョブ定義グラフ作成部をさらに備え、
前記表示制御部は、前記ジョブ定義グラフが作成されると、前記ジョブ定義一覧を前記UI画面に表示させる際に、前記ジョブ定義グラフを含む前記ジョブ定義一覧を表示させ、
前記ジョブ実行部は、前記ジョブ定義一覧から前記ジョブ定義グラフが選択された場合は、該ジョブ定義グラフおよび該ジョブ定義グラフに含まれる複数のジョブ定義に従って複数のジョブを順次実行する
請求項8に記載のジョブ実行制御装置。
前記ジョブ実行履歴に基づいて、順次実行された複数のジョブに対応するジョブ定義群のパターンを所定の基準に従って抽出し、抽出したパターンに含まれる複数のジョブ定義と各ジョブ定義の入出力関係とを表すジョブ定義グラフを作成するジョブ定義グラフ作成部をさらに備え、
前記表示制御部は、前記ジョブ定義グラフが作成されると、前記ジョブ定義一覧を前記UI画面に表示させる際に、前記ジョブ定義グラフを含む前記ジョブ定義一覧を表示させ、
前記ジョブ実行部は、前記ジョブ定義一覧から前記ジョブ定義グラフが選択された場合は、該ジョブ定義グラフおよび該ジョブ定義グラフに含まれる複数のジョブ定義に従って複数のジョブを順次実行する
請求項1乃至8のいずれか一項に記載のジョブ実行制御装置。
【発明を実施するための形態】
【0007】
以下、実施形態のジョブ実行制御装置、ジョブ実行制御方法およびプログラムについて、図面を参照して詳細に説明する。
【0008】
<実施形態の概要>
実施形態のジョブ実行制御装置は、一例として、ネットワークを利用したサーバ・クライアントシステムのサーバとして実現することができる。この場合、ジョブ実行制御装置は、ユーザが利用するクライアント端末に搭載されたブラウザを介して、ユーザ操作を受け付けるUI(User Interface)画面をクライアント端末の表示部に表示させ、このUI画面を利用したユーザ操作に応じてジョブを実行する。
【0009】
実施形態のジョブ実行制御装置が実行するジョブの処理内容は、ジョブ定義に記述されている。ジョブ定義は、ジョブに付加される識別子であるジョブタイプ、外部から入力を受け取る入力引数、処理内容を示すスクリプトなどから構成される。ジョブの処理結果は、実行されたジョブごとに個別に用意されるディレクトリ(ワークディレクトリ)にファイルとして出力される。入力引数は、UI画面を利用したユーザ操作に応じて与えられる。入力引数の種別としては、他の実行済みジョブの出力、もしくは、文字列やファイルパスなどの具体的な値がある。入力引数が他のジョブの出力である場合、スクリプトにはそのジョブのワークディレクトリが渡される。
【0010】
実施形態のジョブ実行制御装置は、UI画面を利用したユーザ操作に応じて与えられる入力引数および指定されたジョブ定義のスクリプトを用いてジョブを実行して、出力をワークディレクトリに格納するとともに、ジョブ実行履歴を記録する。ジョブ実行履歴は、実行済みジョブ(実行待ちや実行中のジョブを含む)のジョブ定義、入力として与えられた引数、出力結果、完了時間、そのジョブの状態(実行不可、実行待ち、実行中、中止、完了、失敗など)などを含む。ジョブ実行履歴は、上述のワークディレクトリおよびそれに含まれるファイル群とは別に、データベース上に記録されて蓄積される。
【0011】
以下では、音声認識用の辞書の作成や評価などを行う一連のジョブを題材として、実施形態のジョブ実行制御装置の構成および動作の具体例について説明する。音声認識用の辞書は、音響に関する特徴量を解析する音響モデルや、発話されたテキスト内に含まれる固有の名詞などを表すユーザ単語などから作成され、音声認識エンジンが音声をテキスト化するために用いられる。ユーザ単語は必須ではなく、作成済みの辞書に対してユーザ単語を後から追加してもよい。
【0012】
音響モデルは、音声とそれを人手でテキストに変換した書き起こしの組を元に作成される。ユーザ単語は、音声に関連する文書から自然言語解析によって抽出された固有表現を元に作成される。音声と書き起こしの組は、辞書の性能評価用データとしても用いられ、音声認識結果と書き起こしの文字正解率が評価結果として使われる。なお、実施形態のジョブ実行制御装置が扱うことができるジョブは、以下の説明で例示するものに限らない。
【0013】
<第1の実施形態>
図1は、本実施形態のジョブ実行制御装置10の機能的な構成例を示すブロック図である。ジョブ実行制御装置10は、
図1に示すように、表示制御部11と、ジョブ実行部12と、ジョブ実行履歴検索部13と、ジョブ定義グラフ作成部14と、ジョブ定義蓄積部15と、ジョブ実行履歴蓄積部16と、ジョブ結果蓄積部17とを備える。
【0014】
表示制御部11は、ユーザ操作を受け付けるUI画面の表示を制御する。UI画面の具体例については、詳細を後述する。また、表示制御部11は、UI画面を利用したユーザ操作に応じた操作情報をジョブ実行部12やジョブ定義グラフ作成部14に受け渡す機能を持つ。
【0015】
ジョブ実行部12は、UI画面を利用したユーザ操作に応じてジョブを実行するとともに、ジョブ実行履歴を記録してジョブ実行履歴蓄積部16に格納する。
【0016】
ジョブ実行履歴検索部13は、UI画面で後述のジョブ履歴グラフを表示したり、入力候補となる実行済みジョブを表示したりするために、ジョブ実行履歴蓄積部16に蓄積されたジョブ実行履歴を検索する。
【0017】
ジョブ定義グラフ作成部14は、UI画面で表示されるジョブ履歴グラフからユーザが一部の範囲を指定した場合に、その範囲に含まれる実行済みジョブに対応するジョブ定義群と各ジョブ定義の入出力関係を表すジョブ定義グラフを作成する。
【0018】
ジョブ定義蓄積部15は、事前に作成されたジョブ定義を蓄積する。また、ジョブ定義グラフ作成部14によってジョブ定義グラフが作成されると、そのジョブ定義グラフもジョブ定義蓄積部15に格納される。
【0019】
ジョブ定義の一例を
図2に示す。この
図2に示すジョブ定義は、関連文書登録ジョブのジョブ定義である。ジョブ定義は、主に、‘type’、‘input’、‘script’の3つの情報を含む。‘type’以下に、ジョブに付加される識別子の情報として識別子そのものを表す‘name’と、UI画面上での表示名である‘description’が記述されている。‘input’以下に、入力として与える引数として、引数名である‘documents_dir’と、その引数の情報として引数のタイプを表す‘type’およびUI画面上での表示名である’description‘が記述されている。引数の‘type’には、ファイルのパスを入力とする‘path’、他のジョブの出力(処理結果)を入力とする‘job’、文字列を入力とする‘string’などが存在する。‘script’以下に、そのジョブで実行する処理が記述されている。
図2のジョブ定義では、bashで記述されたコマンドで‘script’が記述されている。‘$documents_dir’や‘$workdir’などは変数であり、対応する入力引数、そのジョブのワークディレクトリのパスで置換されてから実行が行われる。
【0020】
図3にユーザ単語作成ジョブのジョブ定義を示す。ユーザ単語作成ジョブの‘documents_data_job’引数の‘type’は‘job’であり、他のジョブの出力を入力として受け取ることが示されている。また、その際に受け取ることが可能なジョブタイプを指定するための‘job_type’の記述がある。
【0021】
図4に辞書精度評価ジョブのジョブ定義を示す。このジョブ定義では、複数の入力引数が‘input’として記述してある。また、‘type’が‘job’の引数が複数のジョブタイプを受け取ることが可能な場合、それらの配列が記述される。また、‘output’以下に、そのジョブの処理結果を出力するためのbashスクリプトが記述されている。‘output’の記述を持つジョブ定義に従ってジョブを実行した場合、‘output’内のスクリプトを実行した標準出力結果がそのジョブの出力として記録される。この
図4のジョブ定義では、‘script’内のevalコマンドが出力するファイル‘precision.json’を標準出力に出力することを示している。
【0022】
図5に辞書作成ジョブのジョブ定義を示す。辞書作成ジョブは、辞書精度評価ジョブと同様に複数の入力を受け付けるジョブである。
図5に示すジョブ定義では、‘user_words_data_job’引数には‘optional:true’という指定がされており、これによりこの引数は任意の引数であり、入力を与えなくてもジョブの実行が可能であることを示している。
【0023】
ジョブ実行部12は、以上のようなジョブ定義に‘input’として記述された入力引数が入力として与えられると、そのジョブ定義に従ってジョブを実行することができる。
【0024】
ジョブ実行履歴蓄積部16は、上述のジョブ実行履歴を蓄積する。ジョブ実行履歴蓄積部16に蓄積されるジョブ実行履歴の一例を
図6に示す。ジョブ実行履歴は、例えば
図6に示すように、実行済みジョブ(実行待ちや実行中のジョブを含む)を一意に特定するID(ジョブID)、その実行済みジョブのジョブ定義、入力、出力、完了時間、状態などを含む。
【0025】
ジョブ定義は、そのジョブ定義に記述された‘type’の‘name’で識別される。完了時間はジョブの完了日時が記録されるが、
図6では日付部分だけを示している。状態は、ジョブの状態を表し、ジョブの入力が揃わないために実行できないことを示す実行不可、ジョブの実行を待機していることを示す実行待ち、ジョブの実行が開始されたが完了していないことを示す実行中、ジョブの実行を中止したことを示す中止、ジョブの実行が完了したことを示す完了、ジョブの実行に失敗したことを示す失敗などがある。
【0026】
入力は、各入力引数の値をJSONで示したものである。
図7に関連文書登録ジョブにおける入力例を示す。この
図7の例では、‘documents_dir’引数に対して‘/work/marketing/meetings/’というpathが指定されている。
図8に辞書精度評価ジョブにおける入力例を示す。この
図8の例では、‘type’が‘job’の各引数に対して、ジョブIDで入力が指定されている。
【0027】
出力は、ジョブ定義に‘output’が記述されている場合にその‘output’から出力される標準出力結果であり、入力と同様にJSONで表される。
図9に辞書精度評価ジョブにおける出力例を示す。この
図9の例では、文字正解率が‘precision’というプロパティ名で示されている。
【0028】
ジョブ結果蓄積部17は、ジョブ実行部12により実行されたジョブの処理結果(出力)を蓄積する。ジョブの処理結果は、ジョブ結果蓄積部17に作成されたワークディレクトリにファイルとして出力され、ジョブ結果蓄積部17に蓄積される。
【0029】
次に、本実施形態のジョブ実行制御装置10の動作を説明する。本実施形態のジョブ実行制御装置10は、上述のように、UI画面を利用したユーザ操作に応じてジョブを実行する。ジョブの実行は、入力が揃った実行待ち状態のジョブから順次実行される。ジョブの入力として他のジョブの出力を利用する場合、他のジョブの実行が完了するまではそのジョブは実行不可状態となる。以下では、実行待ち状態のジョブが他のジョブの出力を入力として利用する場合を想定し、ジョブ実行時におけるジョブ実行制御装置10の動作を説明する。
【0030】
図10は、本実施形態のジョブ実行制御装置10によるジョブ実行時の処理手順の一例を示すフローチャートである。この
図10のフローチャートで示す一連の処理は、ジョブ実行制御装置10のジョブ実行部12により一定時間ごとに繰り返し実行される。
【0031】
図10のフローチャートで示す処理が開始されると、ジョブ実行部12は、まずジョブ実行履歴蓄積部16に蓄積されたジョブ実行履歴を参照し、実行待ち状態のジョブ(実行待ちジョブ)があるかどうかを確認する(ステップS101)。そして、実行待ちジョブがなければ(ステップS101:No)、ジョブ実行履歴内で実行不可状態となっているジョブを実行待ち状態に変更し(ステップS102)、処理を終了する。
【0032】
一方、実行待ちジョブがある場合は(ステップS101:Yes)、ジョブ実行部12は、その実行待ちジョブの入力に使われる他のジョブ(入力ジョブ)が完了状態かどうかを確認する(ステップS103)。そして、入力ジョブが完了していなければ(ステップS103:No)、実行待ちジョブの状態を実行不可に変更し(ステップS104)、ステップS101に戻って以降の処理を繰り返す。
【0033】
一方、入力ジョブが完了している場合は(ステップS103:Yes)、ジョブ実行部12は、実行待ちジョブの状態を実行中に変更し(ステップS105)、ジョブ結果蓄積部17内にワークディレクトリを作成する(ステップS106)。そして、ジョブ実行部12は、ジョブの実行に必要な入力を取得し(ステップS107)、ジョブ定義に記述されたスクリプト中の入力変数をステップS107で取得した値に置き換える(ステップS108)。その後、ジョブ実行部12は、スクリプトを実行し(ステップS109)、出力を取得する必要がある場合は取得動作を行う(ステップS110)。
【0034】
その後、ジョブ実行部12は、ジョブの状態を完了に変更し(ステップS111)、ステップS101に戻って以降の処理を繰り返す。なお、スクリプトの実行に失敗した場合は、ジョブの状態を失敗に変更する。ジョブの入力や出力は、必要に応じてジョブ実行履歴に反映される。スクリプトの実行に関しては、この
図10のフローチャートで示す処理と並行に実行することで、同時に複数のスクリプトを実行してもよい。
【0035】
次に、ジョブの実行に関わるユーザ操作を受け付けるUI画面と、UI画面を利用したユーザ操作の具体例について説明する。UI画面の表示は、上述のように、表示制御部11によって制御される。本実施形態では、表示制御部11により表示制御されるUI画面として、ジョブ定義一覧UI、ジョブ実行UI、ジョブ履歴UI、ジョブ詳細UI、後続ジョブ実行UIなどを想定する。
【0036】
図11は、ジョブ定義一覧UI20の一例を示す図である。ジョブ定義一覧UI20では、
図11に示すように、ジョブ定義一覧、具体的には、ジョブ定義蓄積部15に蓄積されたジョブ定義の‘type’の‘description’の一覧が表示される。
【0037】
図11に示すジョブ定義一覧UI20で表示されているジョブ定義のうち、関連文書登録は、認識を行う対象の音声に関連する発表資料などの文書を登録するジョブ(関連文書登録ジョブ)のジョブ定義である。関連文書は、音声認識精度の向上に必要な固有表現の抽出のために用いられる。音声登録は、音響モデル作成や評価データに必要となる音声を登録するジョブ(音声登録ジョブ)のジョブ定義である。書き起こし登録は、登録された音声とそれに対応する書き起こしテキストの組みを登録するジョブ(書き起こし登録ジョブ)のジョブ定義である。ユーザ単語登録は、辞書の作成時や評価時に使うユーザ単語を登録するジョブ(ユーザ単語登録ジョブ)のジョブ定義である。ユーザ単語は、標準単語辞書に含まれない固有表現からなる。
【0038】
書き起こし作成は、音声を入力として音声認識を用いて対応するテキストを作成しそれと音声の組みを書き起こしとするジョブ(書き起こし作成ジョブ)のジョブ定義である。ユーザ単語作成は、関連文書からの固有表現抽出を用いてユーザ単語を作成するジョブ(ユーザ単語作成ジョブ)のジョブ定義である。音響モデル作成は、書き起こしを入力として音響モデルを作成するジョブ(音響モデル作成ジョブ)のジョブ定義である。辞書作成は、音響モデルおよびユーザ単語を入力として音声認識用の辞書を作成するジョブ(辞書作成ジョブ)のジョブ定義である。
【0039】
辞書精度評価は、辞書および書き起こしを入力として精度評価を行うジョブ(辞書精度評価ジョブ)のジョブ定義である。精度は、書き起こし中の音声を辞書を用いて音声認識した結果と書き起こしテキストを比較することで算出される。辞書配備は、入力された辞書を特定のサーバへ配備するジョブ(辞書配備ジョブ)のジョブ定義である。配備状況テストは、配備された辞書を用いた音声認識動作が行えるかをテストするジョブ(配備状況テストジョブ)のジョブ定義である。評価レポート作成は、辞書精度評価ジョブの結果を入力としユーザが見やすい形のレポートを作成するジョブ(評価レポート作成ジョブ)のジョブ定義である。評価レポート送付は、レポートを特定のユーザへメールなどを用いて送付するジョブ(評価レポート送付ジョブ)のジョブ定義である。
【0040】
ジョブ定義一覧UI20では、例えば
図11に示すように、各ジョブ定義に対応するノードが表示され、ユーザがいずれかのノードをクリックするとそのノードに対応するジョブ定義が選択される。そして、選択されたジョブ定義に従ってジョブを実行するためのジョブ実行UIへと画面遷移する。
【0041】
図12は、ジョブ実行UI30の一例を示す図であり、
図11のジョブ定義一覧UI20からユーザ単語作成ジョブのジョブ定義が選択された場合の例を示している。ジョブ実行UI30では、
図12に示すように、ジョブ定義一覧UI20から選択されたジョブ定義のノードとともに、このジョブ定義に従って実行するジョブの入力として利用可能な実行済みジョブ群が入力候補31として表示される。
図12に示すジョブ実行UI30では、ユーザ単語作成ジョブの入力引数として必要な文書データジョブを選択するために、実行済みの関連文書登録ジョブが入力候補31として表示されている。入力候補31に含まれる各実行済みジョブは、ジョブ定義一覧UI20から選択されたジョブ定義と同様に、ノードによって示される。
【0042】
入力候補31として表示される実行済みジョブは、ジョブ実行履歴検索部13がジョブ実行履歴蓄積部16を検索することで得られる。検索により、入力ジョブの‘job_type’をフィルタとして完了日時が新しい順に規定数分だけのジョブ実行履歴が取得され、そのジョブ実行履歴によって示される実行済みジョブが入力候補31としてジョブ実行UI30上に表示される。規定数分よりも古い実行済みジョブを表示するためのボタンなどを備えていてもよい。なお、‘type’が‘job’以外の入力が必要な場合は、‘path’に対してはファイル選択フォーム、‘string’に対してはテキストボックスなど、それら入力を行うためのUIが別途表示される。
【0043】
また、ジョブ実行UI30では、ジョブ定義一覧UI20から選択されたジョブ定義に従って実行したジョブの出力を入力として利用可能なジョブ定義群が、後続ジョブ候補32(第1の後続ジョブ候補)として表示される。
図12に示すジョブ実行UI30では、ユーザ単語作成ジョブの出力を入力として利用可能なジョブ定義である辞書精度評価と辞書作成とが後続ジョブ候補32として表示されている。後続ジョブ候補32に含まれるジョブ定義は、ジョブ定義一覧UI20から選択されたジョブ定義や、入力候補31に含まれる各実行済みジョブと同様に、ノードによって示される。
【0044】
ユーザはこのジョブ実行UI30上で、例えばマウスを用いたドラッグ&ドロップ操作などにより、入力候補31に含まれるいずれかの実行済みジョブのノードと、ジョブ定義一覧UI20から選択されたジョブ定義のノードとを接続することにより、ジョブ定義一覧UI20から選択されたジョブ定義の入力を設定することができる。また、後続ジョブを実行したい場合には、同様の操作により、ジョブ定義一覧UI20から選択されたジョブ定義のノードと後続ジョブ候補32に含まれるいずれかのジョブ定義のノードとを接続することにより、実行する後続ジョブを選択してその入力を設定することができる。
【0045】
図13は、入力候補31に含まれる2017-1-10に完了した関連文書登録ジョブのノードと、ジョブ定義一覧UI20から選択されたジョブ定義(ユーザ単語作成)のノードと、後続ジョブ候補32に含まれる辞書精度評価のノードとを接続した状態のジョブ実行UI30を示している。後続ジョブとして選択した辞書精度評価は、ユーザ単語作成ジョブの出力のほかに辞書データジョブと評価データジョブの2つの引数が必要とされるため、後続ジョブの入力候補33a,33bとして、実行済みの辞書作成ジョブ群と実行済みの書き起こし登録ジョブ群とが新たに表示されている。
【0046】
図14は、入力候補33aに含まれる2017-1-11に完了した辞書作成ジョブのノードおよび入力候補33bに含まれる2016-12-26に完了した書き起こし登録のノードを、後続ジョブとして選択した辞書精度評価のノードに接続した状態のジョブ実行UI30を示している。この状態では、ユーザ単語作成ジョブの入力の設定と後続ジョブである辞書精度評価ジョブの入力の設定とがすべて完了したため、ジョブ実行UI30上で表示される「実行」ボタン35をクリックすると、設定された入力を用いてユーザ単語作成ジョブおよび辞書精度評価ジョブが順次実行されることになる。
【0047】
ジョブ履歴UIは、ジョブ履歴グラフを表示するUIである。ジョブ履歴グラフとは、入出力関係を持つ複数の実行済みジョブ(実行中もしくは実行待ちのジョブを含む)をノードとし、各ノードをエッジで接続したグラフである。各ノード間のエッジは、それらのノードに対応する実行済みジョブ間の入出力関係を表す。
【0048】
図15は、ジョブ履歴UI40の一例を示す図である。ジョブ履歴UI40では、
図15に示すように、ジョブ履歴グラフ41が表示される。ジョブ履歴グラフ41の各ノードには、対応する実行済みジョブの‘type’の‘description’および完了時間が表示される。ノードに対応するジョブが実行中もしくは実行待ちの場合は、完了時間に代えてそのジョブの状態が表示される。
【0049】
ジョブ履歴UI40は、例えば、ユーザがログインした後に最初に表示されるUI画面として利用できる。この場合、ジョブ履歴グラフ41に含まれる各ノードは、例えば、ジョブ実行履歴の完了時間が最新の実行済みジョブを一つ取得し、その実行済みジョブの入力として利用した他の実行済みジョブを取得し、さらにその実行済みジョブの入力として利用した他の実行済みジョブを取得するという動作を、画面内にノードを配置するスペースがなくなるまで行うことで決定される。また、画面のドラッグなどで表示範囲を変更し、完了時間がさらに古い過去のノードを表示させることもできる。また、ユーザによる日時の指定を受け付けて、完了時間が指定された日時に最も近い実行済みジョブのノードを中央に表示するよう調整できる構成としてもよい。また、ジョブ履歴UI40では、ジョブ履歴グラフ41のほかに「ジョブ実行」ボタン42が表示され、「ジョブ実行」ボタン42をクリックすることでジョブ定義一覧UI20を呼び出すことができる。
【0050】
図16は、ジョブ履歴UI40、ジョブ定義一覧UI20およびジョブ実行UI30を利用してジョブを実行する際のユーザの操作手順の一例を示すフローチャートである。本実施形態のジョブ実行制御装置10は、ユーザがアカウント情報を用いてログインすることで使用が開始される。
【0051】
ユーザがログインすると(ステップS201)、まず、ジョブ履歴UI40が表示される(ステップS202)。このジョブ履歴UI40上でユーザが「ジョブ実行」ボタン42をクリックすると、ジョブ定義一覧UI20が呼び出される(ステップS203)。
【0052】
次に、ジョブ定義一覧UI20に表示されたジョブ定義一覧からユーザが任意のジョブ定義を選択すると(ステップS204)、ジョブ実行UI30が表示される(ステップS205)。そして、ユーザがこのジョブ実行UI30上で必要な入力を選択して「実行」ボタン35をクリックすると(ステップS206)、ジョブが実行される(ステップS207)。このように、ジョブ実行UI30上でのユーザ操作に応じてジョブが実行される場合、ジョブの実行開始とともにジョブ履歴UI40の表示に戻り、このジョブ履歴UI40で、実行中もしくは実行待ちのジョブを起点としたジョブ履歴グラフ41が表示される。
【0053】
本実施形態のジョブ実行制御装置10は、上述のように、クライアント端末に搭載されたブラウザ上で動作することを想定している。したがって、ユーザが任意のタイミングでブラウザを閉じる操作を行うことで、本実施形態のジョブ実行制御装置10の使用を中止することができる。
【0054】
ジョブ履歴UI40上のジョブ履歴グラフ41に含まれるいずれかのノードがクリックされた場合は、そのノードに対応する実行済みジョブの入力やワークディレクトリなどを確認できるジョブ詳細UIへと画面遷移する。ジョブ詳細UIの一例を
図17に示す。
図17に示すジョブ詳細UI50は、
図15に示したジョブ履歴UI40上のジョブ履歴グラフ41から2017-1-6に完了した書き起こし登録ジョブのノードが選択された場合に表示されるジョブ詳細UIの例である。
【0055】
ジョブ詳細UI50では、
図17に示すように、ジョブ履歴グラフ41から選択された実行済みジョブの入力やワークディレクトリに加え、「後続ジョブ実行」ボタン51が表示される。この「後続ジョブ実行」ボタン51がクリックされると、ジョブ詳細UI50で表示した実行済みジョブの出力を入力として利用して他のジョブを実行するための後続ジョブ実行UIに画面遷移する。
【0056】
図18は、後続ジョブ実行UI60の一例を示す図である。後続ジョブ実行UI60では、
図18に示すように、ジョブ履歴グラフ41から選択された実行済みジョブのノードとともに、その実行済みジョブの出力を入力として利用可能なジョブ定義群が、後続ジョブ候補61(第2の後続ジョブ候補)として表示される。
図18に示す後続ジョブ実行UI60では、書き起こし登録ジョブの出力を入力として利用可能なジョブ定義である音響モデル作成と辞書精度評価とが後続ジョブ候補61として表示されている。
【0057】
後続ジョブ候補61に含まれるジョブ定義は、ジョブ履歴グラフ41から選択された実行済みジョブと同様に、ノードによって示される。ユーザはこの後続ジョブ実行UI60上で、例えばマウスを用いたドラッグ&ドロップ操作などにより、ジョブ履歴グラフ41から選択された実行済みジョブのノードと、後続ジョブ候補61に含まれるいずれかのジョブ定義のノードとを接続することで、実行する後続ジョブを選択してその入力を設定することができる。そして、後続ジョブの入力が設定されると「実行」ボタン62の操作が可能となり、「実行」ボタン62をクリックすると後続ジョブが実行される。
【0058】
また、ジョブ履歴UI40上でジョブ履歴グラフ41の一部の範囲を選択する操作が行われた場合、ジョブ定義グラフ作成部14により、選択された範囲に対応するジョブ定義グラフが作成される。ジョブ定義グラフは、一連のジョブ群を一回のジョブ実行操作で実行するためのものであり、ジョブ履歴グラフ41の選択された範囲に含まれる各ノードに対応するジョブ定義群と、各ジョブ定義の入出力関係とを表している。
【0059】
図19は、ジョブ履歴グラフ41の一部の範囲が選択された状態のジョブ履歴UI40を示している。ユーザは、例えばマウスを用いたドラッグ操作によりジョブ履歴グラフ41の所望の範囲(例えば
図19の破線で囲まれた領域)を選択することができる。ジョブ履歴グラフ41の一部の範囲を選択する操作は、例えばキーボードのシフトキーを押しながら複数のノードをクリックするなど、他の方法を用いてもよい。ジョブ履歴グラフ41の一部の範囲が選択されると、ジョブ履歴UI40上に「ジョブ定義グラフ作成」ボタン43が表示される。そして、この「ジョブ定義グラフ作成」ボタン43がクリックされると、選択された範囲に含まれる各ノードに対応するジョブ定義群とそれらの入出力関係とを表すジョブ定義グラフが作成される。
【0060】
ジョブ定義グラフのデータ構造の一例を
図20に示す。ジョブ定義グラフは、ジョブ履歴グラフ41から選択された範囲に含まれる各ノードに対応するジョブ定義群のリストとして定義される。ジョブ定義グラフのデータは、例えば
図20に示すように、各ノードに対応するジョブ定義と、そのノードへの入力に利用されるノードのIDの配列と、そのノードからの出力を利用するノードのIDの配列とを含む。
【0061】
ジョブ定義グラフが作成されると、そのジョブ定義グラフのデータがジョブ定義蓄積部15に格納される。その後、上述のジョブ定義一覧UI20を表示する際は、ジョブ定義蓄積部15からジョブ定義グラフのデータが読み出され、ジョブ定義一覧UI20上で、ジョブ定義グラフを含むジョブ定義一覧が表示される。ジョブ定義グラフを含むジョブ定義一覧を表示するジョブ定義一覧UI20の一例を
図21に示す。この
図21に示すジョブ定義一覧UI20では、ジョブ定義のほかに、ジョブ定義グラフ作成部14により作成されたジョブ定義グラフが選択できるようになっている。
【0062】
ジョブ定義一覧UI20からジョブ定義グラフが選択された場合に表示されるジョブ実行UI30の一例を
図22に示す。この
図22に示すジョブ実行UI30は、ジョブ定義一覧UI20からジョブ定義が選択された場合に表示されるジョブ実行UI30(
図12参照)と同様であるが、ジョブ定義グラフの各ノードに対して入力として利用可能な実行済みジョブ群のノードが、それぞれ入力候補31a,31b,31c,31dとして表示される。入力候補31aは音響モデル作成ジョブの入力として利用可能な実行済みジョブ群、入力候補31bは辞書作成ジョブの入力として利用可能な実行済みジョブ群、入力候補31cおよび入力候補31dは辞書精度評価ジョブの入力として利用可能な実行済みジョブ群をそれぞれ示している。
【0063】
また、ジョブ定義グラフの末尾のノードの出力を入力として利用可能なジョブ定義グラフがある場合、そのジョブ定義グラフが後続ジョブ候補32として表示される。
図22に示すジョブ実行UI30では、辞書精度評価ジョブの出力を入力として利用可能な2つのジョブ定義グラフが、後続ジョブ候補32として表示されている。このジョブ実行UI30上で上述した方法によりノード間を接続することにより、一連のジョブを順次実行することが可能となる。
【0064】
以上、具体的な例を挙げながら詳細に説明したように、本実施形態のジョブ実行制御装置10は、ジョブ定義一覧UI20によりジョブ定義一覧を表示し、ジョブ定義一覧UI20からジョブ定義が選択されると、選択されたジョブ定義の入力として利用可能な実行済みジョブ群を入力候補31としてジョブ実行UI30により表示する。そして、入力候補31からいずれかの実行済みジョブが選択されると、その実行済みジョブの出力を入力として、ジョブ定義一覧UI20から選択されたジョブ定義に従ってジョブを実行する。したがって、本実施形態のジョブ実行制御装置10によれば、様々な出力を持つジョブ群から選択されたジョブとそのジョブの出力を入力とするジョブとを簡便な操作で接続して実行することができる。
【0065】
また、本実施形態のジョブ実行制御装置10は、ジョブ定義一覧UI20から選択されたジョブ定義に従って実行するジョブの出力を入力として利用可能なジョブ定義群を、ジョブ実行UI30上で後続ジョブ候補32として表示する。そして、後続ジョブ候補32からいずれかのジョブ定義が選択されると、ジョブ定義一覧UI20から選択されたジョブ定義に従ってジョブを実行した後、そのジョブの出力を入力として後続ジョブ候補32から選択されたジョブ定義に従ってジョブを実行する。したがって、本実施形態のジョブ実行制御装置10によれば、連続した複数のジョブを効率よく実行することができる。
【0066】
また、本実施形態のジョブ実行制御装置10は、ジョブ履歴UI40によりジョブ履歴グラフ41を表示し、ジョブ履歴グラフ41のいずれかのノードが選択されると、そのノードに対応する実行済みジョブの詳細をジョブ詳細UI50により表示し、その実行済みジョブの出力を入力として利用可能なジョブ定義群を、後続ジョブ実行UI60上で後続ジョブ候補61として表示する。そして、後続ジョブ候補61からいずれかのジョブ定義が選択されると、ジョブ履歴グラフ41から選択された実行済みジョブの出力を入力として後続ジョブ候補61から選択されたジョブ定義に従ってジョブを実行する。したがって、本実施形態のジョブ実行制御装置10によれば、実行済みジョブ群の入出力関係をユーザに的確に把握させながら、いずれかの実行済みジョブに対して後続ジョブを簡便な操作で接続して実行することができる。
【0067】
また、本実施形態のジョブ実行制御装置10は、ジョブ履歴UI40上で表示したジョブ履歴グラフ41から一部の範囲が選択されると、その範囲に対応するジョブ定義グラフを生成し、ジョブ定義一覧UI20上でジョブ定義グラフを含むジョブ定義一覧を表示する。そして、ジョブ定義一覧UI20からジョブ定義グラフが選択されると、ジョブ定義が選択された場合と同様にジョブ実行UI30上でのユーザ操作を通じて、ジョブ定義グラフに従った一連のジョブを実行する。したがって、本実施形態のジョブ実行制御装置10によれば、連続した複数のジョブを効率よく実行することができる。
【0068】
<第2の実施形態>
次に、第2の実施形態について説明する。上述の第1の実施形態では、あるジョブの入力として利用可能な実行済みジョブを判断するために、ジョブ定義の‘input’で‘type’が‘job’の引数についてその‘job_type’を指定する必要があった。これに対し本実施形態では、ジョブ実行履歴とともに入力ジョブ定義履歴を記録しておき、この入力ジョブ定義履歴を用いて入力として利用可能な実行済みジョブを判断することで、ジョブ定義において‘job_type’の明示的な指定を不要とする。
【0069】
入力ジョブ定義履歴は、実行済みジョブのジョブ定義に対して、その実行済みジョブの入力として利用した他の実行済みジョブのジョブ定義と、ジョブの実行が成功したか否かを表す情報とを対応付けたものである。入力ジョブ定義は、ジョブ実行部12により記録されてジョブ実行履歴蓄積部16に蓄積される。
【0070】
図23は、ジョブ実行履歴蓄積部16に蓄積される入力ジョブ定義履歴の一例を示す図である。入力ジョブ定義履歴は、例えば
図23に示すように、実行済みジョブの各ジョブ定義および‘type’が‘job’の入力引数に対し、ジョブ実行成否履歴のIDの配列を対応付けたデータ構造とすることができる。ジョブ実行成否履歴は、実際に入力として利用された実行済みジョブとその入力を利用して実行された実行済みジョブとの組み合わせごとに、ジョブの実行が成功したか否かを表した情報である。
【0071】
ジョブ実行成否履歴の一例を
図24に示す。ジョブ実行成否履歴は、例えば
図24に示すように、入力として利用された実行済みジョブのIDである入力ジョブIDと、その実行済みジョブのジョブタイプと、その実行済みジョブを入力として実行した実行済みジョブのIDである実行ジョブIDと、実行に成功したか失敗したかを示す実行結果とを含む。なお、
図24に例示するジョブ実行成否履歴は、入力ジョブのジョブタイプおよび実行ジョブの実行結果を含む構成であるが、これらの情報はジョブ実行履歴から取得可能なため、必ずしもジョブ実行成否履歴に含まれていなくてもよい。
【0072】
入力ジョブ定義履歴を用いることで、ジョブ定義一覧UI20から選択されたジョブ定義の入力引数に対応するジョブタイプを推定し、ジョブ実行UI30上で入力候補31として表示する実行済みジョブ群を判断できる。例えば、入力ジョブ定義履歴から対応するジョブ実行成否履歴を検索し、ジョブ実行成否履歴の中の最新の履歴を一定数取得する。そして、取得した履歴の中で実行に成功した実績のあるジョブタイプを、ジョブ定義一覧UI20から選択されたジョブ定義の入力引数に対応するジョブタイプと判断する。そして、このジョブタイプに該当するジョブ定義に従って実行された実行済みジョブ群を入力候補31として、ジョブ実行UI30上で表示する。
【0073】
なお、最新の履歴から推定する以外の方法として、ジョブ実行成否履歴全体での特定のジョブタイプにおける実行成功率を算出し、その数値が一定数以上のものを、ジョブ定義一覧UI20から選択されたジョブ定義の入力引数に対応するジョブタイプと判断してもよい。また、対応するジョブ実行成否履歴が存在していない場合は、ジョブタイプでのフィルタリングはせずに、ジョブ実行履歴から最新の実行済みジョブ数件を入力候補31として表示してもよい。
【0074】
本実施形態によれば、ジョブ定義の‘input’で‘type’が‘job’の引数について、その‘job_type’をジョブ定義上で明示的に指定していなくても、あるジョブの入力として利用可能な実行済みジョブを適切に判断することができるので、ジョブ定義を事前に作成する際の手間を軽減しながら、上述の第1の実施形態と同様の効果を得ることができる。
【0075】
<第3の実施形態>
次に、第3の実施形態について説明する。本実施形態では、ジョブ実行UI30上の入力候補31から実行済みジョブを選択するための補助情報として、実行済みジョブの処理結果(出力)の質を表すスコアの概念を導入する。そして、入力候補31となる実行済みジョブ群を各実行済みジョブのスコアに応じた表示形態でジョブ実行UI30上に表示する。
【0076】
図25は、スコアを算出可能なジョブ定義の一例を示す図であり、辞書精度評価ジョブのジョブ定義を示している。この
図25に例示するジョブ定義では、‘score’で出力JSON中のどのプロパティ名の内容をそのジョブのスコアとして採用するかを指定している。また、そのスコアが各引数の入力からどの程度由来するものかを示す‘score_impact’を入力の引数内に記述できる。ある実行済みジョブを入力として実行したジョブからスコアが算出された場合、そのスコアに対して‘score_impact’内の数値を乗算したものが、入力として利用した実行済みジョブのスコアとなる。ある実行済みジョブに対し、そのジョブのジョブ定義内の‘score’からも、その実行済みジョブを入力とする他のジョブのジョブ定義内の‘score_impact’からもスコアが算出可能な場合は、‘score’から算出されるスコアを優先する。
【0077】
実行済みジョブに対して算出されたスコアは、例えば、ジョブ実行履歴に付加して記録することができる。
図26は、スコアを含むジョブ実行履歴の一例を示す図であり、
図6に示したジョブ実行履歴に対してスコアが付加された例を示している。なお、
図26では、入力、出力、完了時間および状態の記載は省略している。
【0078】
実行済みジョブに対してスコアが算出される場合、ジョブ実行UI30上で入力候補31として表示される実行済みジョブ群を各実行済みジョブのスコアに応じた表示形態で表示することができる。この場合のジョブ実行UI30の一例を
図27に示す。この
図27に例示するジョブ実行UI30は、
図22に示したジョブ実行UI30と同様の構成であるが、音響モデル作成ジョブの入力候補31a内の実行済みジョブ群、辞書作成ジョブの入力候補31b内の実行済みジョブ群、辞書精度評価ジョブの入力候補31c内の実行済みジョブ群および入力候補31d内の実行済みジョブ群が、それぞれ、スコアが高い実行済みジョブが右、スコアが低い実行済みジョブが左となるように配置されている。なお、スコアに応じた表示形態は、
図27に示すような表示位置を用いるものに限らず、色や濃度や明るさなどの他の表示形態によってスコアを表すものであってもよい。
【0079】
また、入力候補31の中で他の実行済みジョブと比較してスコアが低いものをユーザが入力として選択した場合に、
図28に示すような警告UI70を表示してもよい。以上のように、実行済みジョブ群のスコアを認識できるジョブ実行UI30を表示したり、スコアが低い実行済みジョブが選択された場合に警告UI70を表示したりすることで、作業に不慣れなユーザが、新たに実行するジョブの入力として質の悪い実行済みジョブを選択してしまうリスクを低減することができる。
【0080】
また、スコアが算出可能なジョブに対する入力として、同じ入力候補31内の複数の実行済みジョブを同時に選択できるようにしてもよい。
図27では、辞書精度評価ジョブの入力候補31cに含まれる2つの実行済みジョブがともに、辞書精度評価ジョブの入力として選択された例を示している。スコアが算出可能なジョブに対する入力として複数の実行済みジョブが同時に選択された場合は、それぞれを入力としてジョブの実行が複数回繰り返される。そして、例えばスコアが最も高い処理結果がジョブの出力として採用される。あるいは、入力が異なるジョブを複数のジョブとして別々に扱うようにしてもよい。
【0081】
本実施形態によれば、ジョブ実行UI30を表示する際に、入力候補31となる実行済みジョブ群を各実行済みジョブのスコアに応じた表示形態で表示するので、入力として利用する実行済みジョブをより的確に選択させることができる。
【0082】
<第4の実施形態>
次に、第4の実施形態について説明する。上述の第1の実施形態では、ジョブ履歴UI40上で表示されるジョブ履歴グラフ41からジョブ定義グラフとして切り出す範囲をユーザが指定する構成であったが、本実施形態では、ジョブ定義グラフ作成部14がジョブ実行履歴に基づいてジョブ定義グラフを自動で作成する。すなわち、本実施形態のジョブ定義グラフ作成部14は、ジョブ実行履歴蓄積部16を参照して、順次実行された複数のジョブに対応するジョブ定義群のパターンを所定の基準に従って抽出し、抽出したパターンに含まれる複数のジョブ定義と各ジョブ定義の入出力関係とを表すジョブ定義グラフを作成する。
【0083】
図29は、ジョブ実行履歴から把握される実行済みジョブ群の入出力関係をグラフ化して示す図であり、辞書精度評価ジョブに繋がる実行済みジョブ群の入出力関係を表す3つのグラフを例示している。本実施形態では、ジョブ定義グラフを作成するにあたり、まず、
図29に例示するような実行済みジョブ群の入出力関係を表すグラフから、順次実行された実行済みジョブのジョブ定義の系列をジョブフロー系列として抽出する。
図29に例示したグラフから抽出されたジョブフロー系列を
図30に示す。
図30において、ID=1のジョブフロー系列とID=2のジョブフロー系列は、
図29の左側のグラフから抽出されたジョブフロー系列であり、ID=3のジョブフロー系列とID=4のジョブフロー系列は、
図29の中央のグラフから抽出されたジョブフロー系列であり、ID=5のジョブフロー系列とID=6のジョブフロー系列は、
図29の右側のグラフから抽出されたジョブフロー系列である。
【0084】
本実施形態では、以上のように抽出されたジョブフロー系列から、例えば既存の頻出部分系列パターン抽出手法を用いて、系列内に頻出するジョブ定義群のパターンを抽出する。
図30に示すジョブフロー系列から得られる最も頻度が高いパターンは、「音響モデル作成→辞書作成→辞書精度評価」であり、6つのジョブフロー系列のうちの3つの系列において出現しており、出現確率は50%である。抽出対象となるパターンの閾値として例えば出現確率50%以上が規定されていた場合、このパターンが抽出対象となり、ジョブ定義グラフとして自動的に登録される。
【0085】
ジョブ定義グラフとして登録するジョブ定義群のパターンの抽出には、出現確率以外の条件を用いてもよい。例えば、上述の第3実施形態のように実行済みジョブに対してスコアを算出する場合は、順次実行された実行済みジョブのスコア平均が基準値以上となるジョブ定義群のパターンを抽出してもよい。また、順次実行された実行済みジョブの数(グラフとして表したときのノードの数)が基準値以上となるジョブ定義群のパターンを抽出してもよい。また、一連の実行済みジョブ群の実行を指示したユーザの情報を含めてジョブ実行履歴を記録する構成とした場合には、操作に熟練した特定のユーザの指示に応じて順次実行された実行済みジョブ群を表すジョブ定義群のパターンを抽出してもよい。
【0086】
なお、上述したジョブフロー系列からジョブ定義グラフとして登録するジョブ定義群のパターンを抽出する方法では、ジョブ定義が直列に並ぶジョブ定義グラフしか作成できないが、
図29に例示したようなグラフから既存のグラフマイニング手法を用いて頻出する部分グラフを見つけてそれをジョブ定義グラフとしてもよい。この場合は、1つのジョブ定義の入力として複数のジョブ定義が繋がるジョブ定義グラフを作成することも可能となる。
【0087】
本実施形態によれば、ジョブ実行履歴をもとにジョブ定義グラフが自動的に作成されるので、ユーザの操作負担を軽減することができる。
【0088】
<補足説明>
上述した実施形態のジョブ実行制御装置10は、例えば、一般的なコンピュータを構成するハードウェアと、コンピュータで実行されるプログラム(ソフトウェア)との協働により実現することができる。例えば、コンピュータが所定のプログラムを実行することによって、上述した表示制御部11、ジョブ実行部12、ジョブ実行履歴検索部13、ジョブ定義グラフ作成部14などの機能的な構成要素を実現することができる。また、コンピュータが備えるストレージデバイスを用いて、上述したジョブ定義蓄積部15、ジョブ実行履歴蓄積部16、ジョブ結果蓄積部17などを実現することができる。
【0089】
図31は、実施形態のジョブ実行制御装置10のハードウェア構成例を示すブロック図である。実施形態のジョブ実行制御装置10は、例えば
図31に示すように、CPU(Central Processing Unit)やGPU(Graphics Processing Unit)などのプロセッサ101と、RAM(Random Access Memory)やROM(Read Only Memory)などの内部メモリ102と、HDD(Hard Disk Drive)やSDD(Solid State Drive)などのストレージデバイス103と、入力デバイス106やディスプレイ107などの周辺機器を接続するための入出力I/F104と、クライアント端末などの外部機器と通信を行う通信I/F105と、を備えた通常のコンピュータのハードウェア構成を有する。そして、例えば、プロセッサ101が内部メモリ102を利用しながら、ストレージデバイス103や内部メモリ102などに格納されたプログラムを実行することで、上述の機能的な構成要素を実現することができる。
【0090】
すなわち、実施形態のジョブ実行制御装置10の機能的な構成要素として示した各部は、コンピュータにより実行されるプログラムに含まれ、コンピュータが備える1以上のプロセッサ(
図31のプロセッサ101)がこのプログラムを実行することにより、上述した各部がRAMなどの主記憶(
図31の内部メモリ102)上に作成される。
【0091】
コンピュータにより実行される上記プログラムは、例えば、磁気ディスク(フレキシブルディスク、ハードディスクなど)、光ディスク(CD−ROM、CD−R、CD−RW、DVD−ROM、DVD±R、DVD±RW、Blu−ray(登録商標)Discなど)、半導体メモリ、またはこれに類する記録媒体に記録されて提供される。なお、プログラムを記録する記録媒体は、コンピュータが読み取り可能な記録媒体であれば、その記憶形式は何れの形態であってもよい。また、上記プログラムを、コンピュータに予めインストールするように構成してもよいし、ネットワークを介して配布される上記のプログラムをコンピュータに適宜インストールするように構成してもよい。
【0092】
なお、実施形態のジョブ実行制御装置10は、上述した機能的な構成要素の一部または全部を、ASIC(Application Specific Integrated Circuit)やFPGA(Field-Programmable Gate Array)などの専用のハードウェアにより実現する構成であってもよい。
【0093】
また、実施形態のジョブ実行制御装置10は、複数台のコンピュータを通信可能に接続したネットワークシステムとして構成し、上述した機能的な構成要素を複数台のコンピュータに分散して実現する構成であってもよい。また、実施形態のジョブ実行制御装置10は、クラウドシステム上で動作する仮想マシンであってもよい。また、実施形態のジョブ実行制御装置10は、ネットワークを利用したサーバ・クライアントシステムのサーバとして実現する例に限らず、ユーザが利用するパーソナルコンピュータなどの情報処理装置により実現してもよい。
【0094】
以上、本発明の実施形態を説明したが、この実施形態は例として提示したものであり、発明の範囲を限定することは意図していない。この新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。